ウェブ・オントロジー言語OWL

RDFモデルとRDFスキーマによるリソースの叙述という基本ツールを使って、ウェブに存在するものごとの分類体系(クラス)やその関係、さらにはそれを推論していくためのルールを定義するオントロジー言語OWLが2004年2月にW3C勧告となりました。セマンティック・ウェブでは、各地で独自に定義される語彙を関連づけ、相互運用できるようにするためにオントロジーが重要になります。オントロジーで表現された知識を利用して、エージェントが高度な検索などを行うことが期待されています。

※OWLを含む体系的な解説『RDF/OWL入門』を上梓しました。

オントロジーとは

オントロジー(ontology)は、アリストテレス以来の「存在論」を指す哲学用語として知られていますが、その意味が転じて(拡張されて)、対象とする世界に存在するものごとを体系的に分類し、その関係を記述するものとして、言語学や人工知能研究に取り込まれてきました。ウェブでのオントロジーとは、バーナーズ=リーらの言葉を借りれば、「分類体系」と「推論ルール集」、です。W3Cの「ウェブ・オントロジー言語の要件」[WEBONT-REQ]は、次のように述べています。

An ontology defines the terms used to describe and represent an area of knowledge. Ontologies are used by people, databases, and applications that need to share domain information ... Ontologies include computer-usable definitions of basic concepts in the domain and the relationships among them ... They encode knowledge in a domain and also knowledge that spans domains. In this way, they make that knowledge reusable.

RDFスキーマは基本的なクラスとプロパティ定義の手段を提供していますが[RDFS]、様々な領域で、コンピュータ(エージェント)が自動的に相互動作・運用できるようにするには、より詳細で厳密な意味と関係の記述が必要になります。特にウェブにおいては、あちこちで独自に語彙や知識ベースが構築されうるので、これら相互の関係を示し、統合や相互利用ができるような仕組みがとても重要です。オントロジーは、セマンティック・ウェブをグローバルで誰もが利用可能なものにするための要となる部分なのです。

ウェブ・オントロジーのユースケース

「ウェブ・オントロジー言語の要件」では、次のようなユースケースを示してオントロジーの活用範囲を描いています。

  • ポータルサイトにおいて、それぞれの分野のオントロジーが整備され、作者がそれを利用したメタ情報を提供することでより精密な検索が可能になる(語彙セットと推論機構)
  • マルチメディアのように、テキストよりさらに機械的な意味処理が困難な情報について、その形式や内容に関連するオントロジーを使って確実な探索を行う(階層関係、部分全体関係、デフォルト知識の記述)
  • 企業イントラネットで、異なる部門のオントロジーや用語集を連動させ、他部署の資料を検索したり、新しい付加価値を生む(多重継承、部分全体関係、時間順序の記述、異なる文書のインターフェイス)
  • 飛行機の設計など巨大なドキュメントの場合、オントロジーを用いて各分野の文書を横断検索したり、設計上の制約条件を調べたりする(一貫性チェックの制約条件、クラスとインスタンス、N項関係)
  • セマンティック・ウェブの知的エージェントが、社会活動のプランを組み立てるため、利用者の嗜好と各地で提供されるサービスなどを照らし合わせ、ランク付けサービスなども利用して推薦メニューをつくる(サービスの発見、複数のオントロジーの変換と統合利用)
  • ユビキタスコンピューティングの世界で、モバイルデバイスが、オントロジーを利用して様々な環境下で自動的に適切な設定を行い、必要なサービスを利用できる(サービスの発見)

W3Cのウェブ・オントロジー言語OWL

ウェブ・オントロジー言語に求められる共有性、発展性、相互運用性、矛盾の検出といった要件を満たすものとして、W3Cのワーキンググループで開発されているのが、OWLという言語です(Web Ontology Languageの略ならばWOLとなるはずですが、発音のしやすさと智恵の象徴フクロウとの語呂合わせなどから、OWLという名前となった模様)。これは「用語・語彙とそこに含まれる各要素の関連の明確な表現」を目的としており、これまでに開発されてきたオントロジー言語[DAML+OIL]の改良版となっています。

フル規格のOWLには、記述論理をベースにタイプの区別を厳密にして決定可能性を確保するOWL DLと、クラスを個体とみなすことができるなど実用的なオントロジー構築を念頭においたOWL Fullがあります。また、より実装しやすいOWL DLのサブセットであるOWL Liteも合わせて提供されます。

2004年2月に勧告となったのは、言語要件[WEBONT-REQ]に加え、概要を示すOverview[OWLF]、言語レファレンス[OWLREF]、抽象構文[OWLAS]、ガイド[OWLGUIDE]およびテストケース[OWLTEST]の合計6文書です。これらの文書から要点を抜粋して、OWLの概略を紹介します。以下、名前空間接頭辞owl:rdf:rdfs:はそれぞれOWL, RDF, RDFスキーマの名前空間URIを示すものとします。

OWLの基本構成

OWLのオントロジーは、RDFのトリプルの集合で構成されます。OWL言語仕様では、どんなRDFトリプルがOWLの語彙を構成し、それによって何を意味するかを定義します。OWLは一般にRDFのXML構文によって記述され、次のような構成要素を含みます(いずれも、0回以上任意の数記述できます)。

  1. バージョン情報と他のオントロジーのインポートを記述するヘッダ
  2. クラスを定義するクラス公理
  3. プロパティを定義するプロパティ公理
  4. 個体 (Individual):クラスのインスタンスによる事実の記述

1. オントロジー・ヘッダ

ヘッダはowl:Ontology要素として記述し、バージョン情報と他のオントロジーのインポートを示すことができます。さらに、OWL以外のRDF要素、例えばDublin Coreを使ったメタデータなどを埋め込んでも構いません(が、これらはowl:AnnotationPropertyであることを明示しなければなりません)。owl:versionInfo要素の内容は任意の文字列で、オントロジーの意味には無関係です。

[例1]

<owl:Ontology rdf:about="">
 <owl:versionInfo>webont.html, v.0.9; 2002-08-25 Exp</owl:versionInfo>
 <owl:imports rdf:resource="http://www.w3.org/2002/07/owl"/>
 <dc:creator>KANZAKI, Masahide</dc:creator>
</owl:Ontology>
...
<owl:AnnotationProperty rdf:about="http://purl.org/dc/elements/1.1/creator"/>
...

owl:imports要素は、目的語として示されたオントロジーのグラフを取り込んで、主語オントロジーのグラフに加えます。オントロジーを再利用することができ、拡張性や相互運用性のために重要な機能です。

ほかにオントロジーヘッダで記述できるプロパティとしては、owl:priorVersionowl:backwardCompatibleWithowl:incompatibleWithがあります。

2. クラス公理

“ウェブに存在するもの”の概念であるクラスはowl:Class要素によって表現し、次の要素でクラス公理を構成します(定義される=owl:Classの主語となる=クラスをCで表します。)。owl:Classrdfs:Classのサブクラスです。

OWLクラス要素の内容となる構成要素
構成要素 意味
rdfs:subClassOf 参照クラスのサブクラスとして、Cの必要条件(部分公理)を形成
owl:disjointWith 参照クラスとは分離している(共通インスタンスがない)というCの必要条件(部分公理)を形成
owl:equivalentClass 参照クラスと同じインスタンスを持つクラスという、Cの必要十分条件(完全公理)を形成
owl:oneOf Cは列挙されたクラス表現のうちひとつのインスタンスを持つ(OWL Liteでは使えない)。クラス公理としては、インスタンスとなる個体を全て列挙する必要十分条件(完全公理)を形成
クラス式の組み合わせ Cはクラス名、クラスの列挙、プロパティの制約条件、もしくはこれらの論理的組み合わせと同等である。匿名クラス(owl:Restriction)をつくり、上記のプロパティによってowl:Classに結びつけて公理を形成する

上記をRDFのトリプルにあてはめれば、Cが主語、要素名URIが述語、“参照クラス”が目的語となります。例えば、“「雄」というクラスは「動物」のサブクラスで「雌」とは分離している”という定義をする場合は、次のように記述できます。

[例2]

<owl:Class rdf:ID="Male">
 <rdfs:subClassOf rdf:resource="#Animal"/>
 <owl:disjointWith rdf:resource="#Female"/>
</owl:Class>

equivalentClassは2つのクラスの「インスタンスが同じ」であること表しますが、必ずしも「意味が同じ」ということは示しません。同一のクラスであることは、OWL Fullの場合は(クラスを個体と見なして)owl:sameAsで表現できますが、この方法はOWL DL/Liteでは使えません。

プロパティの制約条件

そのクラスが持つプロパティの制約条件を課すことで、クラスの定義を精密化することができます。ウェブ・オントロジーのプロパティは、一般にプロパティ要素によってグローバルな(特定のクラスに属さない)ものとして定義されますが、そのプロパティを特定のクラスとともに使うときに、この条件によってより詳細な制約を与えることが可能です。たとえば、「color」という一般概念としてのプロパティは様々な値を持つことが可能ですが、これを「交通信号」というクラスに応用する場合は、「赤、黄、青」のいずれかに限定をする、といった具合です。

プロパティの制約は、owl:Restriction要素を用い、その中に対象となるプロパティ(P)を示すowl:onProperty要素と、以下の制約要素を1つだけ記述します。owl:Restrictionowl:Classのサブクラスで、この制約は匿名のクラスを定義します。

OWLクラス要素内のプロパティ制約要素
制約方法 制約 意味
値の範囲を示す owl:allValuesFrom 主語クラスの全てのインスタンスについて、Pの全ての値が目的語クラスのインスタンスことを示す。述語論理の∀に相当。(DAML+OILではtoClass
owl:someValuesFrom 主語クラスの全てのインスタンスについて、Pの少なくともひとつの値は、参照クラスあるいはデータタイプ値のインスタンスである。述語論理の∃に相当(DAML+OILではhasClass)。
owl:hasValue 主語クラスの全てのインスタンスについて、Pの値のうち、少なくともひとつは参照クラスあるいはデータタイプ値に等しい。OWL Liteでは使用しない。
出現回数の制約 owl:minCardinality Pの最小出現回数。OWL Liteでは0もしくは1のみ。
owl:maxCardinality Pの最大出現回数。OWL Liteでは0もしくは1のみ。
owl:cardinality Pは指定された回数だけ必ず出現する。上記2つの値が一致する特殊なケース。OWL Liteでは0もしくは1のみ。

“「人」というクラスは「動物」のサブクラスで、「本名」というプロパティの値は1つだけである”と定義するなら、次のようになります。

[例3]

<owl:Class rdf:ID="Person">
 <rdfs:subClassOf rdf:resource="#Animal"/>
 <rdfs:subClassOf>
  <owl:Restriction>
   <owl:onProperty rdf:resource="#hasRealName"/>
   <owl:cardinality>1</owl:cardinality>
  </owl:Restriction>
 </rdfs:subClassOf>
</owl:Class>

“「本名」というプロパティの値は1つ”という匿名クラスは、人間を表すための必要条件ではあっても十分条件ではないので、rdfs:subClassOfによって部分公理を形成します(制約の内容がそのクラスの必要十分条件になる場合はowl:equivalentClassを用います)。

クラスの論理的組み合わせ

クラスは、別のクラスのインスタンスの和集合、差集合などの論理的な組み合わせとしても定義できます。ただしOWL Liteでは利用できません。以下Cは主語クラスのインスタンスの集合を表します。

OWLクラス要素内のクラスの論理的組み合わせ
プロパティ 意味
owl:intersectionOf Cは一連のクラスのインスタンスの共通部分に一致する。論理積あるいは∩に相当。
owl:unionOf Cは一連のクラスのインスタンスの和集合に一致する。論理和あるいは∪に相当。
owl:complementOf Cは一連のクラスインスタンス集合に属さない全てのオブジェクトに一致する。論理差(論理否定)に相当するが、オブジェクトのみに限定される。

「好物」というクラスを「にんじんとピーマン以外」という具合に定義するなら、次のようになります。

[例4]

<owl:Class rdf:ID="FavoriteFoods">
 <owl:complementOf>
  <owl:Class>
   <owl:unionOf rdf:parseType="Collection">
    <owl:Class rdf:about="#Carrot"/>
    <owl:Class rdf:about="#GreenPepper"/>
   </owl:unionOf>
  </owl:Class>
 </owl:complementOf>
</owl:Class>

3. プロパティ公理

プロパティは、ウェブに存在するものの“関係を定義”する部分になります。前節のクラス要素内のプロパティの制約は、あるプロパティがそのクラスと共に用いられる際のローカルな制約を定義しますが、プロパティ要素はそのプロパティそのものをグローバルに定義します(つまりどんなクラスとでも自由に使える)。

プロパティには、個体(オブジェクト)を別の個体(オブジェクト)と関連づける個体値型プロパティと、オブジェクトをデータ型値に結びつけるデータ値型プロパティがあります。両者はそれぞれowl:ObjectProperty要素、owl:DatatypeProperty要素で定義します。また、特別なプロパティとしてオントロジーの管理情報を記述するowl:OntologyProperty、オントロジーの注釈に用いるowl:AnnotationPropertyがあります。OWLでのプロパティは、必ずこの4つのどれかのタイプを持たなければなりません(個体の記述に用いるのは個体値型もしくはデータ値型のみ)。

個体値型プロパティ、データ値型プロパティの基本的な公理は次の構成要素で記述します(これらはクラスのプロパティ制約と異なり、対象主語クラスを問わないグローバルな性質となります)。

プロパティ要素内の制約要素
構成要素 意味
rdfs:subPropertyOf Pは参照プロパティのサブプロパティ。RDFS参照。
rdfs:range Pの目的語は、参照クラスのインスタンスである。RDFS参照。
rdfs:domain Pの主語は、参照クラスのインスタンスである。RDFS参照。
owl:equivalentProperty Pは参照プロパティと同じインスタンス(主語、目的語リソースの組み合わせ)を持つ。
owl:inverseOf Pは参照プロパティと反対の関係を表現する。

「子供がいる」というプロパティは「親がいる」の反対の関係を示しますから、次のように定義できます。

[例5]

<owl:ObjectProperty rdf:ID="hasChild">
 <owl:inverseOf rdf:resource="#hasParent"/>
</owl:ObjectProperty>

さらに、プロパティの論理的な性質(タイプ)を示すことで、その関係を利用した推論などを可能にします。

プロパティの論理性質を表すクラス
クラス名URI 意味
owl:TransitiveProperty 「子孫」プロパティのように、P(x,y)とP(y,z)が真ならP(x,z)も真であるという具合に関係が推移していくプロパティ。
owl:SymmetricProperty 「夫婦」プロパティのように、P(x,y)⇔P(y,x)が成り立つプロパティ
owl:FunctionalProperty 「本名」のように値が唯一に定まるプロパティ。
owl:InverseFunctionalProperty 「ISBN」のように、その値から主語が特定できるようなプロパティ。

“「子孫がいる」というプロパティは推移プロパティでかつ「祖先がいる」の反対の関係”という定義は、次のように表現できます。

[例6]

<owl:TransitiveProperty rdf:ID="hasOffspring">
 <owl:inverseOf rdf:resource="#hasAncestor"/>
</owl:TransitiveProperty>

4. 個体による事実の記述

ここまでで述べてきたクラスやプロパティの定義(抽象構文では公理 (Axiom) と呼んでいます)は、用語集、推論などを行うためのルール集のような役割を果たします。これを用いて、(ウェブに)実際に存在するものを具体的に描くのがインスタンスということになります。抽象構文ではこのインスタンスを記述する部分を事実 (Fact)と呼んでいます。

我々がメタデータを提供する時は、自ら「公理」を定義することは少なく、通常はどこかで定義されている用語集やルールを用いて、自分が事実として持っている情報を「インスタンス」として示すでしょう。Dublin Coreの語彙を用いて自分のウェブページのメタ情報を提供するなどは、その端的な例です(普通のウェブ文書でも、自分でDTDを書かず、HTMLを使って情報をマーク付けします)。

OWLでは、インスタンスすなわち「個体 (Individual)」は、必ず何かのクラスに属します。通常はそのクラス名による型付ノード要素の内容に、次のようなプロパティを記述して表現します。

個体を定義する要素
構成要素 意味
owl:sameAs 2つの個体が同一であることを示す
owl:differentFrom 2つの個体が別物であることを示す
owl:AllDifferent 列挙した一連の個体が互いに別物であることを示すクラス。
rdf:type 個体は参照クラスのインスタンスである。複数指定可
その他のプロパティ要素 個体のプロパティを示す。複数指定可

ウェブ上では、異なるURIが同じリソースを表すことは珍しくありません。異なる名前が異なる個体を指すという前提=unique names assumption=を持てないシステムでは、同一性や違いを明示することは論理的な推論のために重要になってきます。

個体を記述する例をひとつ挙げてみましょう。

[例7]

<ex:Novelist rdf:ID="Lewis_Carroll">
 <owl:sameAs rdf:resource="#Charles_Lutwidge_Dodgson"/>
 <ex:isAuthorOf rdf:resource="#Alice_in_Wonderland"/>
</ex:Novelist>

一般に、オントロジーを再利用可能にするためには、公理(クラス、プロパティ定義)と事実(インスタンスの記述)は分離された別々の文書となるでしょう。ある知識領域(ドメイン)の「公理」を定義したオントロジーをもとに、個々の文書の作者(あるいはサービスの提供者)が「事実」を記したオントロジー/RDFを提供していくわけです。

「事実」だけを記述した“オントロジー”でも、「公理」を記述した他のオントロジーをimportしたり、さらに他の個体との関係をowl:sameAsなどで示すことで、推論などを行うことができます。

参照文献

[WEBONT-REQ]
Jeff Heflin, OWeb Ontology Language (OWL) Use Cases and Requirements, , W3C Recommendation
<http://www.w3.org/TR/webont-req/>
[OWLF]
Deborah L. McGuinness and Frank van Harmelen, Web Ontology Language (OWL): Overview, , W3C Recommendation
<http://www.w3.org/TR/owl-features/>
[OWLREF]
Mike Dean and Guuns Schreiber (ed.), OWL Web Ontology Language 1.0 Reference, , W3C Recommendation
<http://www.w3.org/TR/owl-ref/>
[OWLAS]
Peter F. Patel-Schneider, Ian Horrocks and Patric Hayes, OWL Web Ontology Language 1.0 Semantics and Abstract Syntax, , W3C Recommendation
<http://www.w3.org/TR/owl-semantics/>
[OWLGUIDE]
Michael K. Smith, et al., Web Ontology Language (OWL) Guide Version 1.0, , W3C Recommendation
<http://www.w3.org/TR/owl-guide/>
[OWLTEST]
Jeremy J. Carroll and Jos De Roo,, Web Ontology Language (OWL) Test Cases, , W3C Recommendation
<http://www.w3.org/TR/owl-test/>
[OWL-SCHEMA]
W3C Web-Ontology Working Group, RDF Schema for OWL, , Revision 1.2
<http://www.w3.org/2002/07/owl>
[DAML+OIL]
Dan Connolly, et al., DAML+OIL (March 2001) Reference Description, , W3C Note
<http://www.w3.org/TR/daml+oil-reference>
[RDF/XML]
Dave Beckett, RDF/XML Syntax Specification (Revised), , W3C Recommendation
<http://www.w3.org/TR/rdf-syntax-grammer>
[RDFS]
Dan Brickley and R.V. Guha, RDF Vocabulary Description Language 1.0: RDF Schema, , W3C Recommendation
<http://www.w3.org/TR/rdf-schema/>