この標準仕様書(TS)は,2004年2月にWorld Wide Web Consortium (W3C)から公表されたWeb Ontology Language, Referenceを翻訳し,技術的内容を変更することなく作成した標準仕様書(TS)である。
ウェブオントロジ言語OWLは,ワールドワイドウェブ上のオントロジを公開し,共有するための意味マーク付け言語とする。OWLはRDF[Resource Description Framework(資源記述の枠組み)]の語い(彙)拡張として開発され,DAML+OILウェブオントロジ言語から派生した。この標準仕様書(TS)は,OWL言語構成要素の完全集合の構造化された非形式的な記述を含み,OWLオントロジを構築したいOWL利用者のための参照として役立つことが意図されている。
この標準仕様書(TS)は,OWLのRDF/XML交換構文を用いて,OWLのすべてのモデル化基本要素について,非形式的ではあるが,体系的及び簡潔な規定を与える。
この標準仕様書(TS)には,OWL言語の利用者のための機能一覧手引としての役割がある。
この標準仕様書(TS)は,W3Cオントロジ作業グループによって作成されているOWL,すなわちウェブオントロジ言語に関する規定の一つの構成要素である。OWL 概要(TS X 7251)の規定一覧には,多様な各部及びそれらがどのようにまとまりをなしているかが記述されている。OWLに不慣れな読者は,最初にOWL 概要(TS X 7251) [OWL Overview]を参考にするのがよく,次に,もっと進んだこの言語の使用法の説明及び例を見るために,OWL 手引(TS X 7252) [OWL Guide]を参考にするのがよい。
この標準仕様書(TS)では,読者がRDFの基本概念 [RDF Concepts]に精通し,RDF/XML構文 [RDF/XML Syntax]及びRDFスキーマ [RDF Vocabulary]の実用知識をもっていることを前提としている。
OWL言語構成要素の厳密な構文に関する参照(規定)は,OWL 意味論及び抽象構文(TS X 7254) [OWL S&AS] にある。その規定は,モデル論的な意味論の形式で, 言語構成要素の意味の正確な定義をも含んでいる。OWLオントロジの一貫性などの概念は,その規定で示されている。
OWL言語の利用事例及び要件は,OWL要件規定 [OWL Requirements]に記述されている。OWLツールの試験事例,例えば,論理的帰結試験,一貫性試験などは,試験規定 [OWL Test Cases]で指定されている。
OWL 概要(TS X 7251) [OWL Overview],及びそれに続いてOWL 手引(TS X 7252) [OWL Guide]にも示されているとおり,OWL言語は,実装者及び言語の利用者に役に立つと思われる二つの固有な部分集合を提供する。OWL Liteは,簡単な実装のために設計され,利用者がOWLを使いはじめるときに役立つ機能の部分集合を提供するために設計された。OWL DLは,既存の記述論理が用いられてきた分野を支援するために設計され,推論システムに関して,望ましい計算特性をもつ言語部分集合を提供するために設計された。OWL DLのDLは“記述論理”を表す。こらの部分集合と区別するために,OWL Fullと呼ばれる完全なOWL言語が存在し,OWL DLに課している制約の幾つかを緩和する。 これによって,多くのデータベース及び知識表現システムに有益な機能が提供されるが,逆に記述論理推論機構の制約に違反してしまう。
備考 RDF文書は,特にOWL DL又はOWL Liteにおいて構成されるのでなければ, 一般にOWL Fullの様式になる。
OWL Full及びOWL DLは,OWL言語構成要素の同一の集合を支援する。両者の相違は,それらの機能の幾つかを使用する際及びRDFの機能を使用する際の制限にある。OWL Fullを使用することによって,OWLとRDFスキーマとを自由に混ぜることができる。RDFスキーマと同様に,OWL Fullもクラス,特性,個体及びデータ値を厳密に分離することを強制しない。OWL DLは,RDFと混ぜることに制約を課し,クラス,特性,個体及びデータ値が互いに素であることを要求する。OWL DL下位言語が存在する主な理由は,これまでにソフトウェアツールとして開発されてきた強力な推論システムが,OWL DLに要求される制限によって制約を受けるオントロジを支援するためである。 OWL FullとOWL DLとの相違を形式的に定義するために,読者は,OWL 意味論及び抽象構文(TS X 7254) [OWL S&AS]を参照されたい。8.2 OWL DLでは,OWL FullとOWL DLとの相違が要約されている。
OWL Liteは,OWL言語構成要素の部分集合だけを支援するOWL DLの下位言語である。OWL Liteは,OWLを支援したいが,比較的単純な言語機能の基本集合から始めたいソフトウェアツールの開発者を特に対象としている。OWL Liteは,OWL DLと同じ意味論の制限を遵守するので,推論エンジンに対してある望ましい特性を保証することを可能にする。OWL Liteで使用できる言語構成要素は,8.3で要約されている。OWL Liteが支援するOWL言語構成要素の部分集合をより形式的に記述するためには,OWL 意味論及び抽象構文(TS X 7254) [OWL S&AS]を参照されたい。
備考 RDFの利用者がOWLに移行する際には,OWL Liteが単にRDFスキーマを拡張したものではないことを意識していることが望ましい。OWL Liteは,OWL DLの軽量版であり,例えば,RDF語い(彙)の使用に制約(例えばクラス,特性等が互いに素である)を課している。OWL Fullは,RDFとの互換性を最大限に引き出すことを目的に設計されているため,RDF利用者は違和感無く使い始めることができる。OWL DL又はOWL Liteのいずれかを選択する場合には,OWL及びRDFの構成要素を使用する際に,推論支援のようなOWL DL/Liteの利点が,OWL DL/Liteの制限より重要であるかどうかを考慮することが望ましい。
備考 OWL Liteは,この標準仕様書(TS)では,OWL DLの幾つかの追加制限として定義されている。すなわち,別の方法で明示されない場合は,OWL DLの構成要素もOWL Liteの一部である。8.3は,これらのOWL Liteの追加制限を要約している。
OWLオントロジは,RDFグラフ [RDF Concepts]であり,同様にRDFの三つ組の集合である。あらゆるRDFグラフと同様に,OWLオントロジグラフも,RDF/XML構文規定(改訂版) [RDF/XML Syntax]で記述されるとおり,多くの異なる構文形式で書くことができる。現在の規定は,OWL 手引の規定の場合と同様に,三つ組を表現するために,RDF/XMLのある特定の構文形式を使用する。しかし,OWLオントロジの意味は,RDFグラフだけによって決定される。したがって,これらが,結果として,基礎となるRDFの三つ組の集合が同一となる限り,他のRDF/XMLの構文形式を使用して差し支えない。これらの他の構文形式は,この規定で使用される構文形式と全く同じ意味をもつ。
結果として同じRDFの三つ組となる,別の構文形式の簡単な例として,次のRDF/XML構文を考える。
<owl:Class rdf:ID="Continent"/>
次のRDF/XML構文は,RDFの三つ組の同じ集合を符号化し,その結果,同じ意味をもつ。
<rdf:Description rdf:about="#Continent"> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/> </rdf:Description>
OWLは,RDF [RDF Semantics]の語い(彙)を拡張している。したがって,いかなるRDFグラフも,OWL Fullオントロジを形成する。さらに,OWLがRDFグラフに提供した意味には,RDFがそのグラフに提供した意味が含まれる。したがって,OWL Fullオントロジは,任意のRDFの内容を含むことができ,それは,RDFによる取扱いと一致した方法で取扱われる。OWLは,特定のRDFの三つ組に追加的な意味を割り当てる。OWL 意味論及び抽象構文(TS X 7254) [OWL S&AS]は,どの三つ組がどんな意味を割り当てられ,その意味が何であるかを厳密に指定する。
備考 前述のとおり,OWL DL及びOWL Liteは,RDF語い(彙)を拡張するが,同時に,この語い(彙)の使用に制限をも課す。そのため,RDFの文書は,特にOWL DL又はOWL Liteにおいて構成されるのでなければ,一般にOWL Fullの様式になる。
可読性のため,この標準仕様書(TS)における例は,XML実体&rdf;
, &rdfs;
, &owl;
及び(XMLスキーマデータ型
に関する)&xsd;
が,附属書
Bと同じ方法で定義されることを前提としている。
対応する名前空間rdf:
, rdfs:
, owl:
及びxsd:
についても同じ前提が成立する。
この規定における例は,OWL言語構成要素を用いた図として提供される。それらは,一つの一貫性のあるオントロジを形成しない。拡張された例については,読者は,OWL 手引(TS X 7252) [OWL Guide]を参照されたい。
複数の文書に現れる個体について,オントロジ的情報を表現するOWLの能力は,原則的な方法で,様々な情報源からのデータを結合することを支援する。基礎的な意味論は,このデータに関する推論を行うための機能を提供するが,これによって予期せぬ結果が生じる可能性がある。特に,owl:sameAs
を用いた等価性を表現する能力を使用することによって,表面上は異なる個体が実際には同一であると言明することができる。同様に,owl:InverseFunctionalProperty
を使用すれば,個体を互いに結合させることができる。例えば,SocialSecurityNumber
(社会保障番号)などの特性がowl:InverseFunctionalProperty
である場合,二つの別々の個体は,この特性の値が同じであるため,同一であると推論できる。これらの方法で個体が同一であると決定する場合,異なる情報源から得たそれらに関する情報を統合できる。この集約を使用すれば,どの単一の情報源でも直接表現されていない事実を決定できる。
複数の情報源からの情報を結合するセマンティクウェブの能力は,多くのアプリケーションで使用できる魅力的で強力な機能である。しかし,複数の情報源からのデータを統合する能力は,OWLの推論の能力と組み合わされると,誤用される可能性がある。データ保護法のある国,特にEUにおいては,これらの処理に関する法的に有効な理由がなければ,このように結合された情報を生成し又は処理することは,違法にさえなり得る。そのため,他の情報源又はオントロジと結合される可能性のあるあらゆる種類の個人データとともにOWLを使用する場合は,細心の注意を払わなければならない。 安全性を確保するための詳細は,この作業グループの活動範囲外と考えられる。さまざまな安全性確保及び個人し(嗜)好保護を伴うこれらの課題に言及するには,他所で現在行われている活動に期待したい。その活動の例としては,SAML 及びP3Pを参照されたい。
この規定には,追加情報を含む附属書集がある。
この規定では,言語構成要素の定義に添付されたリンクは,OWL 意味論及び抽象構文 [OWL S&AS]へのアクセスを提供する。附属書Aは,各言語構成要素について,手引並びに意味論及び抽象構文の規定の対応する節への組織的なリンクを含む。
附属書Bには,OWL言語構成要素のためのRDFスキーマが含まれる。このスキーマは,オントロジの開発者及びツールの開発者にとって有用な参照点となり得るOWL語い(彙)についての情報を提供する。OWLクラス及び特性に関してそのスキーマが提供する制限は,参考であって,完全なものではない。このスキーマは,OWL Full,OWL DL及びOWL Liteを区別しない。慣習的にクラス名は大文字で始まり,特性名は小文字で始まる。したがって,owl:Ontology
はクラスであり,owl:imports
は特性である。
備考
OWLのRDFスキーマのファイルは,オントロジの中に明示的に(つまりowl:imports
を使って)取り込まれることは想定していない。このスキーマは,参考の状態をもち,RDF/XML構文で使用されるクラス及び特性を提供することを意図している。このスキーマを取り込む人は,結果として得たオントロジをOWL Fullオントロジであると考えなければならない。
附属書Cは,OWLに組込みのクラス及び特性について,OWLの語い(彙)の概要を表で示す。特性については,領域及び値域も示す。
DAML+OILを知っている読者のために,附属書Dは,DAML+OILとOWLとの間の多くの変更点を列挙している。
最後に,附属書Eは,RDFでOWL DLオントロジを指定するための実際的な指針集を提供している。
OWLで記述される情報は,オントロジの中に集められ,ワールドワイドウェブ中の文書として記録することができる。OWLの一面であるオントロジの取込みは,ウェブ中にOWLオントロジを記録するこの能力に依存する。
一つのOWL文書は,(一般に一つ以下の)オプションのオントロジヘッダに加えて,任意の数のクラス公理,特性公理及び個体に関する事実から構成される。 “公理”がOWL 意味論及び抽象構文の規定で使用される形式的な用語であることに注意されたい。 これらの公理は,OWL 手引及びOWL 概要の規定では,もう少し非形式的に“定義”と呼ばれている。
備考 OWLは,OWL構成要素に何の順序も強制しない。オントロジを書く人は,オントロジヘッダを冒頭に置くなどの,何らかの種類の順序付けを用いそうであるが,これは意味には全く影響を与えない。 ソフトウェアツールは,いかなる順序も想定する必要はない。
ほとんどのRDF文書と同様に,OWL符号は,rdf:RDF
要素の下位要素でなければならない。この囲み要素は,一般に,XML名前空間及び基底の宣言をもつ。OWLオントロジの文書は,複数の実体宣言で始まることも多い。この種の情報の典型的な例については,OWL 手引(TS X 7252) [OWL
手引]で示されているワイン及び食物オントロジの例を参照されたい。
OWLの組込み語い(彙)は,すべて次のOWL名前空間から来ている。
http://www.w3.org/2002/07/owl#
これは,慣習的に,名前空間名owl
に関連する。組込み語い(彙)を除き,オントロジがこの名前空間からの名前を使用しないことを推奨する。OWLツールの開発者は,この名前空間から他の名前が使用される場合,警告を発してもよいが,そうでない場合は,通常どおり継続するのが望ましい。
ウェブオントロジ作業グループは,OWL文書に関する分離されたMIME型を要求しなかった。
その代わりに,RDFコア作業グループが要求するMIME型,すなわちapplication/rdf+xml
[RDF
Concepts],又はXMLのMIME型application/xml
の使用を推奨する。
ファイル拡張子としては,.rdf
又は.owl
のいずれかの使用を推奨する。
クラスは,類似する特徴をもつ資源をグループ化するための抽象化機構を提供する。RDFのクラスと同様に,すべてのOWLクラスは,クラスの拡張と呼ばれる個体の集合と関連付けされる。クラスの拡張の中の個体は,そのクラスのインスタンスと呼ばれる。クラスは,概念的意味すなわち基礎となる概念をもつ。これは,そのクラスの拡張に関係しているが,等しくはない。したがって,二つのクラスは,同じクラス拡張をもってもよいが,異なるクラスであり得る。
この規定の中で,“個体のクラス..”などの表現を使用する場合,これは,“個体を含むクラス拡張をもつクラス...”と読むことが望ましい。
備考 OWL Lite及びOWL DLでは,個体が同時にクラスではあることはあり得ない。すなわち,クラス及び個体は,互いに素な領域を形成する(特性及びデータ値も含め,互いに素である)。OWL Fullでは,RDFスキーマの自由度が許容されている。したがって,クラスは別の(メタ)クラスのインスタンスとして動作してもよい。
OWLクラスは,“クラス記述”によって記述される。クラス記述は“クラス公理”に結合できる。ここでは,ますクラス記述を示し,それからクラス公理に移る。
クラス記述は,クラス公理の基本構築ブロックに関して,この標準仕様書(TS)並びにOWL 意味論及び抽象構文の規定で用いられる用語とする。(クラス公理は,OWL 概要及びOWL 手引の規定では非形式的にクラス定義と呼ばれている。)クラス記述は,クラス名によるか,又は名前付けされない匿名クラスのクラス拡張を指定することによってかのいずれかで,OWLクラスを記述する。
OWLは,クラス記述の6種類の型を区別する。
最初の型は,構文上URI参照として表現されるクラス名を通じてクラスを記述するという意味で特別である。他の五つの型のクラス記述は,クラスの拡張に制約を課すことによって,匿名クラスを記述する。
2番目から6番目の型のクラス記述は,それぞれ次のクラスを示す。 2番目の型は,列挙された個体を厳密に含むクラス,3番目の型は,特定の特性制限を満たすすべての個体のクラス,4,5,6番目の型は,クラス記述のブール結合を満たすクラスである。 積集合は論理積演算子と考えられ,和集合は論理和演算子と考えられ,補集合は論理否定演算子と考えられる。後の四つのクラス記述の型は,結果として入れ子のクラス記述となる。したがって,理論的には任意の複雑なクラス記述が可能であるが,実際には,入れ子の段数は制限されることが多い。
型1のクラス記述は,構文上,rdfs:Class
の下位クラスであるowl:Class
の名前付けされたインスタンスとして表現される。
<owl:Class rdf:ID="Human"/>
これは,三つ組"ex:Human rdf:type owl:Class ."
を表明することになる。ここで,ex:
は,関連するオントロジの名前空間とする。
備考 OWL Lite及びOWL DLでは,owl:Class
(又はowl:Restriction
)は,すべてのクラスの記述で使用されなければならない。
備考 owl:Class
は,rdfs:Class
の下位クラスとして定義される。OWL用のクラスの構成要素を別にもつ根拠は,OWL DL及びOWL Liteの制限にある。すなわち,その制限によれば,すべてのRDFSのクラスが正当なOWL DLのクラスであるとは限らない。
OWL Fullでは,これらの制限は存在しないため,owl:Class
及びrdfs:Class
は,OWL Fullでは等価である。
他の五つのクラス記述の形式は,RDFの三つ組の集合から成る。ここで空ノードは記述されているクラスを表現し,その空ノードは,値がowl:Class
であるrdf:type
特性をもつ。
備考 列挙,積集合,和集合又は補集合のクラス記述に対して,RDF識別子が提供される場合,これは,クラス記述ではなく,完備なクラスに関する特別な種類のクラス公理であると考えられる。詳細については,3.2.3を参照されたい。
備考 この規定では,読み易さを考慮して,“クラス記述によって記述されたクラス”を表すために,短縮表現“クラス記述”を使用することがある。厳密にいえば,型2~6のクラス記述の場合には,これらは異なる。すなわち,クラスは,対応する空ノードによって表現され,クラス記述は,この空ノードをその主語としてもつ三つ組によって表現される。
二つのOWLクラス識別子,すなわち,owl:Thing
クラス及びowl:Nothingクラスは,予め定義されている。owl:Thing
のクラス拡張は,すべての個体の集合とする。owl:Nothing
のクラス拡張は,空集合とする。したがって,すべてのOWLクラスは,owl:Thing
の下位クラスであり,owl:Nothing
はすべてのクラスの下位クラスである。下位クラスの関係の意味については,rdfs:subClassOf
の節を参照されたい。
“列挙”の種類のクラス記述は,owl:oneOf特性を用いて定義される。このOWLに組込みの特性の値は,そのクラスのインスタンスである個体のリストでなければならない。これは,網羅的にそのインスタンスを列挙することによってクラスを記述することを可能にする。
owl:oneOf
を用いて記述されたクラスのクラス拡張は,列挙された個体だけを,多くもなく少なくもなく,厳密に含む。個体のリストは,典型的には,リスト要素の集合を書き下ろすための便利な短縮表現を提供するRDFの構成要素rdf:parseType="Collection"
の支援を用いて,表現される。例えば,すべての大陸のクラスを定義するRDF/XML構文を次に示す。
<owl:Class> <owl:oneOf rdf:parseType="Collection"> <owl:Thing rdf:about="#Eurasia"/> <owl:Thing rdf:about="#Africa"/> <owl:Thing rdf:about="#NorthAmerica"/> <owl:Thing rdf:about="#SouthAmerica"/> <owl:Thing rdf:about="#Australia"/> <owl:Thing rdf:about="#Antarctica"/> </owl:oneOf> </owl:Class>
訳注 ここで,"#Eurasia", "#Africa"等のリテラルが何の説明もなく用いられている。文脈からして,Eurasiaはユーラシア大陸,Africaはアフリカ大陸,NorthAmericaは北米大陸,SouthAmericaは南米大陸,Australiaはオーストラリア大陸,Antarcticaは南極大陸のことであろうと見当はつくが,その定義はなされていない。このような定義を行うのが,そもそもオントロジの役割である。このように,リテラルに英語の意味を暗黙のうちに期待する記述が この後も現れるので注意する必要がある。その場合は,リテラルに続いて訳語を括弧の中に示す。
RDF/XMLの構文<owl:Thing rdf:about="..."/>
はある個体を表す。すべての個体が,定義上,owl:Thing
のインスタンスであることを思い出されたい。
データ型に関する節では,owl:oneOf
構成要素の別の使用,すなわち,データ値の列挙を定義することが示される。
備考 列挙は,OWL Liteでは使用できない。
特性の制限は,特別な種類のクラス記述とする。特性の制限は,匿名クラス,すなわち制限を満たすすべての個体から成るクラスを記述する。OWLは,値の制約及びメンバ数の制約の2種類の特性の制限を区別する。
値の制約は,この特定のクラス記述に適用される際に,特性の値域に制約を課す。例えば,特性 adjacentTo
(隣接する)の値が,あるRegion
(地域)であることが望ましい個体を表したい場合には,クラス公理の中でこれを使用する。Region
(地域)そのもののクラス公理に使用することすらあるかもしれない。これは,特性が使用されるすべての状況に適用されるrdfs:range
とは異なることに注意されたい。
メンバ数の制約は,この特定のクラス記述の文脈において,特性が取ることができる値の個数に制約を課す。例えば,一つのサッカーチームについて,hasPlayer
(選手がいる)特性は11個の値をもつことを示したいことがある。一つのバスケットボールチームについては,同じ特性は5個だけの値をもつ。
OWLは,大域的な特性のメンバ数を定義するための構成要素の限定された集合をも提供する。すなわち,owl:FunctionalProperty及びowl:InverseFunctionalPropertyを提供する。それぞれの特性の節を参照されたい。
特性の制限は,次の一般的な形式をもつ。
<owl:Restriction> <owl:onProperty rdf:resource="(some property)" /> (precisely one value or cardinality constraint, see below) </owl:Restriction>
クラスowl:Restrictionは,owl:Class
の下位クラスとして定義される。制限クラスは,owl:onProperty特性を使用して,その制限を特定の特性と結合する三つ組を厳密に1個だけもたなければならない。制限クラスは,値の制約,又は着目する特性に関するメンバ数の制約(例えば,その特性のメンバ数が厳密に1であるという制約)を表す三つ組も厳密に1個だけもたなければならない。
データ型特性(値がデータリテラルである特性)及びオブジェクト特性(値が個体である特性)の両方に,特性の制限を適用することができる。この違いに関する詳細な情報については,特性の節を参照されたい。
値の制約owl:allValuesFromは,OWLに組込みの特性であり,制限クラスをクラス記述又はデータの値域のいずれかに結合する。owl:allValuesFrom
制約を含む制限は,着目する特性のすべての値が,そのクラス記述のクラス拡張の要素であるか,又は指定されたデータの値域内のデータ値であるかのいずれかである,すべての個体から成るクラスを記述するために, 用いられる。言い換えれば,この制約は,(x, y)の対が当該の特性Pのインスタンスであれば,それぞれyはそのクラス記述のインスタンスであるか,又はそのデータ値域の中の値であるということが成立する個体xから成るクラスを定義する。
簡単な例を次に示す。
<owl:Restriction> <owl:onProperty rdf:resource="#hasParent" /> <owl:allValuesFrom rdf:resource="#Human" /> </owl:Restriction>
この例は,hasParent
(親をもつ)特性がクラスHuman
(人)の値だけをもつすべての個体から成る匿名のOWLのクラスを記述している。このクラス記述は,この特性が常にこのクラスに属する値をもつということを言明せず,この匿名の制限クラスのクラス拡張に属する個体については,これは真であることに注意されたい。
備考 OWL Liteでは,owl:allValuesFrom
の目的語として使用できるクラス記述の唯一の型はクラス名である。
owl:allValuesFrom
制約は,述語論理の全称量化子に類似している。すなわち,記述されているクラスの各インスタンスについて,特性Pのすべての値がその制約を満たしていなければならない。全称量化子とowl:allValuesFrom
が対応するということは,特性Pの値を全くもたない個体について,特性Pのowl:allValuesFrom
制約が自明に満たされていることを意味することにも注目されたい。何故そうなるかを理解するために,Pのすべての値が型Tをもつ必要があり,それらの値が存在しないとき,この制約は自明に真であることを,owl:allValuesFrom
制約が要求することに注意されたい。
値の制約owl:someValuesFromは,OWLに組込みの特性であり,制限クラスをクラス記述又はデータの値域に結合する。
owl:someValuesFrom
制約を含む制限は,当該の特性の少なくとも一つの値が,そのクラス記述のインスタンスであるか,又はデータの値域の中のデータ値であるかのいずれかである,すべての個体から成るクラスを記述する。言い換えれば,この制約は,(x, y)の対が特性Pのインスタンスとなるy(そのクラス記述のインスタンスであるか,又はそのデータの値域のなかの値であるかのいずれか)が少なくとも一つ存在する個体xから成るクラスを定義する。このとき,y'がクラス記述又はデータの値域に属さないPの他のインスタンス(x, y')が存在していてもよい。
内科医(#Physician)である少なくとも一人の親をもつ個体のクラスを定義する例を次に示す。
<owl:Restriction> <owl:onProperty rdf:resource="#hasParent" /> <owl:someValuesFrom rdf:resource="#Physician" /> </owl:Restriction>
owl:someValuesFrom
制約は,述語論理の存在量化子に類似している。すなわち,定義されているクラスの各インスタンスについて,その制約を満たすPの値が少なくとも一つ存在している。
備考 OWL Liteでは,owl:someValuesFrom
の目的語として使用できるクラス記述の唯一の型はクラス名である。
値の制約owl:hasValueは,OWLに組込みの特性であり,制限クラスを値Vに結合する。値Vは,個体又はデータ値のいずれかであり得る。owl:hasValue
制約を含む制限は,当該の特性が意味論的にVに等しい少なくとも1個の値をもつ,すべての個体から成るクラスを記述する。このとき,この特性は他の値ももってよい。
備考 データ型について,“意味論的に等しい”とは,リテラルの字句表現が同じ値に写像されることを意味する。個体の場合,これは,それらが同じURI参照をもつか,又は同じ個体(owl:sameAsを参照されたい。)であると定義されているかのいずれかを意味する。
備考 値の制約owl:hasValue
は,OWL Liteには含まれない。
Clinton
(クリントン)という個体を親としてもつ(hasParent)個体から成るクラスを記述した例を次に示す。
<owl:Restriction> <owl:onProperty rdf:resource="#hasParent" /> <owl:hasValue rdf:resource="#Clinton" /> </owl:Restriction>
OWLでは,RDFの場合と同様に,クラスのどのインスタンスも,特定の特性に関する任意の個数(0以上)値をもってよいことを前提としている。特性を(少なくても一つ)必須にするために,その特性に対して特定の個数の値だけを使用可能するために,又は特性が現れてはならないことを主張するために,メンバ数の制約を使用できる。OWLは,一つのクラスの文脈内で局所的に特性のメンバ数を制限するために,三つの構成要素を提供する。
備考 OWL Liteでは,三つの型すべてのメンバ数の制約を使用できるが,“0”又は“1”の値をもつ場合に限られている。
メンバ数の制約owl:maxCardinalityは,OWLに組込みの特性であり,制限クラスを,XMLスキーマのデータ型nonNegativeInteger
の値空間に属するデータ値に結合する。owl:maxCardinality
制約を含む制限は,当該の特性について,多くともN個の意味論的に異なる値(個体又はデータ値)をもつすべての個体から成るクラスを記述する。ここで,Nはメンバ数の制約の値とする。構文上,このメンバ数の制約は,対応するrdf:datatype
属性をもつRDF特性要素として表現される。
次の例は,多くとも二人の親をもつ(hasParent)個体から成るクラスを記述する。
<owl:Restriction> <owl:onProperty rdf:resource="#hasParent" /> <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">2</owl:maxCardinality> </owl:Restriction>
RDFデータ型付けは,6.においてより詳細に示されている。
メンバ数の制約owl:minCardinalityは,OWLに組込みの特性であり,XMLスキーマのデータ型nonNegativeInteger
の値空間に属するデータ値に制限クラスを結合する。owl:minCardinality
制約を含む制限は,当該の特性について,少なくともN個の意味論的に異なる値(個体又はデータ値)をもつすべての個体から成るクラスを記述する。ここで,Nは,メンバ数の制約の値とする。構文上,このメンバ数の制約は,対応するrdf:datatype
属性をもつRDF特性要素として表現される。
次の例は,少なくとも二人の親をもつ(hasParent)個体から成るクラスを記述する。
<owl:Restriction> <owl:onProperty rdf:resource="#hasParent" /> <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">2</owl:minCardinality> </owl:Restriction>
1以上のowl:minCardinality
は,
そのクラスのすべてのインスタンスがその特性に関して値をもたなければならないことを意味することに注意されたい。
メンバ数の制約owl:cardinalityは,OWLに組込みの特性であり,
XMLスキーマのデータ型nonNegativeInteger
の範囲に属するデータ値に制限クラスを結合する。owl:cardinality
制約を含む制限は,当該の特性について,厳密にN個の意味論的に異なる値(個体又はデータ値)をもつすべての個体から成るクラスを記述する。ここで,Nはメンバ数の制約の値とする。構文上,このメンバ数の制約は,対応するrdf:datatype
属性をもつRDF特性要素として表現される。
この構成要素は,同じ値で一致する1対のowl:minCardinality
制約及びowl:maxCardinality
制約によって常に,置換できるため,実際に冗長である。この構成要素は,利用者にとって便利な短縮表現として含まれている。
次の例は,厳密に二人の親をもつ(hasParent)個体から成るクラスを記述する。
<owl:Restriction> <owl:onProperty rdf:resource="#hasParent" /> <owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">2</owl:cardinality> </owl:Restriction>
この3.1.3の三つの型のクラス記述は,記述論理で使用される,より高度なクラスの構成子を表現する。これらは,クラスに対するAND演算子,OR演算子及びNOT演算子を表現するものとみなすことができる。三つの演算子は,積集合,和集合及び補集合という標準的な集合演算の名前をもつ。これらの言語構成要素は,入れ子になったクラスの記述を一つ(補集合)又はそれ以上(和集合,積集合)含むという特徴も共有する。
owl:intersectionOf特性は,クラスをクラス記述のリストに結合する。owl:intersectionOf
文は,クラス拡張が,そのリストにあるすべてのクラス記述のクラス拡張に属する個体を厳密に含むクラスを記述する。
次に例を示す。
<owl:Class> <owl:intersectionOf rdf:parseType="Collection"> <owl:Class> <owl:oneOf rdf:parseType="Collection"> <owl:Thing rdf:about="#Tosca" /> <owl:Thing rdf:about="#Salome" /> </owl:oneOf> </owl:Class> <owl:Class> <owl:oneOf rdf:parseType="Collection"> <owl:Thing rdf:about="#Turandot" /> <owl:Thing rdf:about="#Tosca" /> </owl:oneOf> </owl:Class> </owl:intersectionOf> </owl:Class>
この例では,owl:intersectionOf
の値は,二つのクラス記述,すなわち二つの列挙のリストである。両者とも二つの個体をもつクラスを記述している。Tosca
(トスカ)がどちらの列挙にも共通する唯一の個体であるため,結果として,積集合は,一つの個体すなわちTosca
(トスカ)をもつクラスとなる。
備考 これは,三つの個体がすべて異なることを前提としている。実際OWLでは,定義によって,これは真ではない。OWLは“一意名”仮定をもたないため,異なるURI参照が同じ個体を表すこともある。5.では,個体の同等性及び相違性について制約するためのOWL言語構成要素を示している。
備考 この例では,列挙を使用して,この言語構成要素の意味が何であるかを明らかにしている。より典型的な例については, OWL 手引(TS X 7252) [OWL Guide]を参照されたい。
備考 OWL Liteでは,owl:intersectionOf
を使用する際に制限がある。これは,この規定において後述される。3.2.3を参照されたい。
owl:intersectionOf
は,論理積に類似するものとみなすことができる。
owl:unionOf特性は,クラスをクラス記述のリストに結合する。owl:unionOf
文は,クラスの拡張が,リストにあるクラス記述のクラスの拡張の少なくとも一つに現れる個体を含む匿名クラスを記述する。
次に例を示す。
<owl:Class> <owl:unionOf rdf:parseType="Collection"> <owl:Class> <owl:oneOf rdf:parseType="Collection"> <owl:Thing rdf:about="#Tosca" /> <owl:Thing rdf:about="#Salome" /> </owl:oneOf> </owl:Class> <owl:Class> <owl:oneOf rdf:parseType="Collection"> <owl:Thing rdf:about="#Turandot" /> <owl:Thing rdf:about="#Tosca" /> </owl:oneOf> </owl:Class> </owl:unionOf> </owl:Class>
このクラス記述は,クラスの拡張が三つの個体,すなわちTosca
(トスカ),Salome
(サロメ)及びTurandot
(トゥーランドット)を含むクラスを記述する。ここで,これらはすべて異なることを前提としている。
備考 owl:unionOf
は,OWL Liteには含まれない。
owl:unionOf
は,論理和に類似している。
owl:complementOf特性は,正確に一つのクラス記述にクラスを結合する。owl:complementOf
文は,その文の目的語であるクラス記述のクラスの拡張に属さない個体を,クラス拡張が厳密に含むクラスを記述する。owl:complementOf
は,論理否定に類似する。すなわち,クラスの拡張は,補集合クラスのクラス拡張に属さない個体から構成される。
補集合の使用例として,“肉(Meat)でない”という表現は次のように書ける。
<owl:Class> <owl:complementOf> <owl:Class rdf:about="#Meat"/> </owl:complementOf> </owl:Class>
このクラス記述の拡張は,クラスMeat
(肉)に属さないすべての個体を含む。
備考 owl:complementOf
は,OWL Liteには含まれない。
クラス記述は,クラス公理を通してクラスを定義するための構築ブロックを形成する。クラス公理の最も単純な形式は,型1のクラス記述である。これは,クラス識別子をもつowl:Class
を使用して,あるクラスの存在を言明する。
例えば,次のクラス公理は,URI参照#Human
(人)があるOWLクラスの名前であると宣言している。
<owl:Class rdf:ID="Human"/>
これは正しいOWLの文であるが,クラスHuman
(人)について多くを知らせるものではない。クラス公理は,典型的には,クラスの必要及び/又は十分な特徴を言明する追加の構成要素を含む。OWLは,クラス記述をクラス公理に結びつけるための次の三つの言語構成要素を含む。
rdfs:subClassOf
によって,あるクラス記述のクラスの拡張が,別のクラス記述のクラスの拡張の部分集合であると言うことができる。owl:equivalentClass
によって,あるクラス記述が別のクラス記述と厳密に同一のクラスの拡張をもつと言うことができる。owl:disjointWith
によって,あるクラス記述のクラスの拡張が,別のクラス記述のクラスの拡張と共通する要素をもたないと言うことができる。構文上,これら三つの言語構成要素は,クラス記述を領域及び値域の両方としてもつ特性である。これらの特性については,以降の小節でさらにその詳細を示す。
さらに,OWLは,列挙又は集合演算子型のクラス記述が命名されるクラス公理を使用することができる。これらのクラス公理は,owl:equivalentClass
文をもつクラス公理と意味論的に等価とする。そのため,これらについては,その小節の後半で示すことにする。3.2.3 owl:equivalentClassを使用しない完全クラスの公理を参照されたい。
公理のスキーマ: クラス記述
rdfs:subClassOf
クラス記述
rdfs:subClassOf
構成要素は,RDFスキーマ [RDF
Vocabulary]の一部として定義されている。OWLにおけるその意味は,全く同一である。すなわち,クラス記述C1がクラス記述C2の下位クラスとして定義される場合,C1のクラスの拡張に含まれている個体の集合は,C2のクラスの拡張に含まれている個体の集合の部分集合でなければならない。あるクラスは,定義によってそれ自体の下位クラスである。(その部分集合は,完全集合であり得るので。)
次に例を示す。
<owl:Class rdf:ID="Opera"> <rdfs:subClassOf rdf:resource="#MusicalWork" /> </owl:Class>
このクラス公理は,Opera
(オペラ)及びMusicalWork
(音楽作品)という名前を通して記述される二つのOWLのクラスの間に,下位クラスの関係を宣言している。下位クラスの関係は,一つのクラスに属するための必要条件を提供する。この場合,個体がオペラであるためには,音楽作品でもある必要がある。
備考 OWL Liteでは,rdfs:subClassOf
文の主語は,クラス識別子でなければならない。
目的語は,クラス識別子か特性の制限のいずれかでなければならない。
どのクラスについても,subClassOf公理は幾つ存在してもよい。例えば,クラスOpera
(オペラ)について,次の公理を追加できる。
<owl:Class rdf:about="#Opera"> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#hasLibrettist" /> <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality> </owl:Restriction> </rdfs:subClassOf> </owl:Class>
このクラス公理は,特性の制限を含む。この例では,Opera
(オペラ)は,匿名のOWLクラスの下位クラスであり(owl:Restriction
がowl:Class
の下位クラスであることを思い出されたい。),それは,そのクラス拡張として,特性hasLibrettist
(台本作家がいる)が少なくとも一つの値をもつすべての個体の集合をもつということが明言されている。したがって,オペラは少なくとも一人の台本作家をもたなければならない。
クラス記述が入れ子になる場合には,クラス公理はさらに複雑になりうる。例えば,owl:allValuesFrom
文又はowl:someValuesFrom
文をもつ特性の制限は,どのクラス記述を指示してもよい。次の例を検討する。
<owl:Class rdf:ID="TraditionalItalianOpera"> <rdfs:subClassOf rdf:resource="#Opera"/> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#hasOperaType"/> <owl:someValuesFrom> <owl:Class> <owl:oneOf rdf:parseType="Collection"> <owl:Thing rdf:about="#OperaSeria"/> <owl:Thing rdf:about="#OperaBuffa"/> </owl:oneOf> </owl:Class> </owl:someValuesFrom> </owl:Restriction> </rdfs:subClassOf> </owl:Class>
この例は,owl:oneOf
構成要素の使用を示す。このクラス公理は,伝統的イタリアオペラ(traditional Italian opera)とは,オペラセリア(opera seria)又はオペラブッファ(opera buffa)のいずれかをオペラ型(opera type)としてもつオペラ(opera)のクラスの下位クラスであると定義している。ここで,追加のメンバ数の制約はないので,それは,実際にはどちらの値も取り得る。
OWL 手引の規定 [OWL
Guide]には,もっと多くの例を見ることができる。下位クラスの公理は,不完全な定義を提供する。すなわち,下位クラスの公理は,ある個体がクラスに属するかどうかを決定するために,必要ではあるが十分ではない条件を表現する。次の小節では,必要かつ十分な条件を定義するために,OWLがowl:equivalentClass
構成要素を提供していることを示す。これらの公理への足掛りとして,次の例を検討する。
<owl:Class rdf:ID="Operetta"> <rdfs:subClassOf rdf:resource="#MusicalWork"/> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#hasLibrettist" /> <owl:minCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minCardinality> </owl:Restriction> </rdfs:subClassOf> <rdfs:subClassOf> <owl:Class> <owl:complementOf rdf:resource="#Opera"/> </owl:Class> </rdfs:subClassOf> </owl:Class>
このクラス公理は,オペレッタ(operetta)は,音楽作品(musical work)であり,少なくとも一人の台本作家(librettist)をもち,オペラ(opera)ではないことを言明している。下位クラス関係を使用することによって,台本作家(librettist)をもちオペラ(opera)ではない別の音楽作品(musical works)がある可能性を残したままにしている。オペレッタ(operetta)が,厳密に,台本作家(librettist)がいるがオペラ(opera)ではない音楽作品であることを言いたい場合には,owl:equivalentClass
構成要素を用いる必要がある。
公理のスキーマ: クラス記述
owl:equivalentClass
クラス記述
クラス公理は,複数のowl:equivalentClass文を含んでもよい。owl:equivalentClass
は,組込みの特性であり,それはクラス記述を別のクラス記述に結合する。このクラス公理の意味は,関与する二つのクラス記述が同一のクラスの拡張をもつこととする。すなわち,両方のクラスの拡張は,厳密に個体の同一集合を含む。
最も簡単な形式では,equivalentClass公理は,これらのクラスの拡張に関して,二つの名前付きクラスの等価性を言明する。次に例を示す。
<owl:Class rdf:about="#US_President"> <equivalentClass rdf:resource="#PrincipalResidentOfWhiteHouse"/> </owl:Class>
備考 owl:equivalentClass
の使用が,クラスの同等性を意味することはない。クラスの同等性は,複数のクラスが同一の概念的意味をもつ(同じ概念を示す)ことを意味する。前述の例では,“President of the US (合衆国大統領)”の概念は,ある地所の主たる在住者の概念と関連付けされるが,この二つの概念が同等であるわけではない。実際のクラスの同等性は,owl:sameAs
構成要素を用いた表現だけで示される。これは,クラスを個体として取扱うことを要求するため,クラスの同等性は,OWL Fullだけで表現され得る。
owl:equivalentClass
を用いた公理は,型1のクラス記述(クラス識別子)を型2のクラス記述(列挙)に結合することによって,列挙クラスを定義するのに用いることもできる。次に例を示す。
<owl:Class rdf:ID="DaPonteOperaOfMozart"> <owl:equivalentClass> <owl:Class> <owl:oneOf rdf:parseType="Collection"> <Opera rdf:about="#Nozze_di_Figaro"/> <Opera rdf:about="#Don_Giovanni"/> <Opera rdf:about="#Cosi_fan_tutte"/> </owl:oneOf> </owl:Class> </owl:equivalentClass> </owl:Class>
このクラス公理は,“Da Ponte operas of Mozart (ダ ポンテ台本,モーツァルト作曲のオペラ)”という音楽学ではよく知られた主題を表現するオペラから成るクラスを定義している。equivalentClass構成要素を使用することによって,クラスの要素であるために必要かつ十分な条件を言明することができる。この場合,多くもなく少なくもなく三つの個体の列挙で構成されている。
備考 OWL DLは,owl:equivalentClass
文の主語及び目的語として使用できるクラス記述の型について,何の制約も課さない。OWL Liteでは,主語はクラス名でなければならず,目的語は,クラス名又は特性の制限のいずれかでなければならない。
備考 原則として,異なるクラス記述の型をequivalentClass文の主語として使用できるが,実際には,通常,その主語は何らかのクラス識別子である。これは,3.2.2の例についても真である。
同じクラスについて,複数のequivalentClass公理をもつことができる。しかし,これには注意を要する。両方の公理が導く結論は同じ,すなわち,全く同じクラスの拡張でなければならない。例えば,モーツァルトの“ダ ポンテ オペラ”に関して,別のequivalentClass公理を次に示す。
<owl:Class rdf:about="#DaPonteOperaOfMozart"> <owl:equivalentClass> <owl:Class> <owl:intersectionOf rdf:parseType="Collection"> <owl:Restriction> <owl:onProperty rdf:resource="#hasComposer"/> <owl:hasValue rdf:resource="#Wolfgang_Amadeus_Mozart"/> </owl:Restriction> <owl:Restriction> <owl:onProperty rdf:resource="#hasLibrettist"/> <owl:hasValue rdf:resource="#Lorenzo_Da_Ponte"/> </owl:Restriction> </owl:intersectionOf> </owl:Class> </owl:equivalentClass> </owl:Class>
これは,モーツァルトのダ ポンテ オペラのクラスの拡張が,モーツァルトが作曲し,ダ ポンテが歌劇台本を書いたオペラと厳密に一致することを言明している(備考 積集合は“AND”の意味とする。)。この公理は,実際に,前の公理と全く同じインスタンスをもつクラスを定義している。
備考 “A subClassOf B”形式の公理を,Aのクラスの拡張が単なる任意の部分集合ではなく,実際はBのクラスの拡張と同じ集合であることを意味する“A equivalentClass B”に“格上げ”したい場合は,(B subClassOf A)形式の第二のsubClassOf公理を追加することができる。これは,定義によって,これら二つのクラスの拡張を等価にし,したがって,“A equivalentClass B”と同じ意味をもつ。これらのsubClassOfの“循環”は明示的に使用可能である。OWLは,分散環境で使えるため,これは便利な機能となり得る。
公理のスキーマ: owl:oneOf
を用いる型2,又はowl:intersectionOf
, owl:unionOf
若しくはowl:complementOf
を用いる型4~6の名前付けされたクラス記述
OWLを使用すると,利用者は,列挙又は集合演算子型のクラス記述に名前を与えることによって,クラス公理を定義することができる。このクラス公理は,クラスの要素であるための必要十分条件を定義する。次に例を示す。
<owl:Class rdf:ID="DaPonteOperaOfMozart"> <owl:oneOf rdf:parseType="Collection"> <owl:Thing rdf:about="#Nozze_di_Figaro"/> <owl:Thing rdf:about="#Don_Giovanni"/> <owl:Thing rdf:about="#Cosi_fan_tutte"/> </owl:oneOf> </owl:Class>
このクラス公理は,クラスDaPonteOperaOfMozart
(ダ ポンテ台本,モーツァルト作曲のオペラ)のクラスの拡張が,列挙によって厳密に定義されると解釈されなければならない。
このクラス公理は,追加のowl:equivalentClass
文を含む前節の最初のオペラの例に意味論的には等価とする。owl:intersectionOf
, owl:unionOf
及びowl:complementOf
を用いて,この型の公理を構築することもできる。和集合を用いた例を次に示す。
<owl:Class rdf:ID="LivingBeing"> <owl:unionOf rdf:parseType="Collection"> <owl:Class rdf:about="#Plant"/> <owl:Class rdf:about="#Animal"/> </owl:unionOf> </owl:Class>
このクラス公理は,LivingBeing
(生物)のクラスの拡張が,Plant
(植物)及びAnimal
(動物)のクラスの拡張の和集合に厳密に一致することを言明している。
備考 OWL Liteは,この型のクラス公理のうち,owl:intersectionOf
特性を用いて構築されるものだけを含む。intersectionOfリストの値は,クラス識別子及び/又は特性の制限でなければならない。したがって,列挙,補集合及び和集合を使用する“完備なクラス”公理は,OWL Liteでは使用できない。
公理のスキーマ: クラス記述
owl:disjointWith
クラス記述
クラス公理は,複数のowl:disjointWith文をも含んでよい。owl:disjointWith
は,領域及び値域としてクラス記述を用いるOWLに組込みの特性である。各owl:disjointWith
文は,含まれる二つのクラス記述のクラスの拡張は,共通の個体をもたないことを表明している。rdfs:subClassOf
を用いた公理と同様に,二つのクラスが互いに素であると宣言することは,部分的な定義である。すなわち,これによって,必要であるが十分ではない条件がクラスに課される。
クラスが互いに素であることのよくある例を次に示す。
<owl:Class rdf:about="#Man"> <owl:disjointWith rdf:resource="#Woman"/> </owl:Class>
これ[訳注: Man(男性)とWoman(女性)とが互いに素であること]が実際に真であるかどうかは,生物学者が決める問題である。下位クラス階層でのクラスが互いに素であることの通常の使用例を次に示す。
<owl:Class rdf:about="#MusicDrama"> <owl:equivalentClass> <owl:Class> <owl:unionOf rdf:parseType="Collection"> <owl:Class rdf:about="#Opera"/> <owl:Class rdf:about="#Operetta"/> <owl:Class rdf:about="#Musical"/> </owl:unionOf> </owl:Class> </owl:equivalentClass> </owl:Class> <owl:Class rdf:about="#Opera"> <rdfs:subClassOf rdf:resource="#MusicDrama"/> </owl:Class> <owl:Class rdf:about="#Operetta"> <rdfs:subClassOf rdf:resource="#MusicDrama"/> <owl:disjointWith rdf:resource="#Opera"/> </owl:Class> <owl:Class rdf:about="#Musical"> <rdfs:subClassOf rdf:resource="#MusicDrama"/> <owl:disjointWith rdf:resource="#Opera"/> <owl:disjointWith rdf:resource="#Operetta"/> </owl:Class>
ここでは,上位クラスについて,互いに素である完備な下位クラスの集合を定義するために,
owl:disjointWith
文をowl:unionOf
とともに使用している。自然言語では,次のとおり。すべてのMusicDrama
(楽劇)は,Opera
(オペラ)か,Operetta
(オペレッタ)か,Musical
(ミュージカル)かのいずれか(下位クラスの分割は完備)であり,一つの下位クラス,例えばOpera
(オペラ)に属している個体は,別の下位クラス,例えばMusical
(ミュージカル)(互いに素である,又は重複のない下位クラス)に属することはできない。これは,多くのデータモデル化記法で使用される通常のモデル化記法である。
備考 OWL Liteでは,owl:disjointWith
を使用できない。
OWLは,オントロジの開発者が定義したいであろう特性について,次の二つの主な範ちゅう(疇)を区別する。
備考 OWLには,注記特性(owl:AnnotationProperty
)及びオントロジ特性(owl:OntologyProperty
)の概念もある。これらは,意味論的な理由によって,OWL DLで必要とされる。7.及びOWL 意味論及び抽象構文の規定(TS X 7254) [OWL
S&AS]を参照されたい。
オブジェクト特性は,OWLに組込みのクラスowl:ObjectPropertyのインスタンスとして定義される。データ型特性は,OWLに組込みのクラスowl:DatatypePropertyのインスタンスとして定義される。owl:ObjectProperty
及びowl:DatatypeProperty
のどちらも,RDFのクラス
rdf:Property
の下位クラスとする。附属書Bを参照されたい。
備考 OWL Fullでは,オブジェクト特性及びデータ型特性は互いに素ではない。データ値を個体として扱うことができるため,データ型特性は,事実上,オブジェクト特性の下位クラスとなる。OWL Fullでは,owl:ObjectProperty
はrdf:Property
と等価である。
実際には,これは,主にowl:InverseFunctionalProperty
の使い方に影響を及ぼす。8.1のOWL Fullの特徴付けも参照されたい。
特性公理は,特性の特徴を定義する。最も簡単な形式では,特性公理は単にある特性の存在だけを定義する。次に例を示す。
<owl:ObjectProperty rdf:ID="hasParent"/>
これは,その値が個体でなければならないという制限をもつ特性を定義している。
特性公理が,特性に追加的な特徴を定義することも多い。OWLは,特性公理について,次の構成要素を支援する。
rdfs:subPropertyOf
,
rdfs:domain
及びrdfs:range
owl:equivalentProperty
及びowl:inverseOf
owl:FunctionalProperty
及びowl:InverseFunctionalProperty
owl:SymmetricProperty
及びowl:TransitiveProperty
次の小節では,特性公理の様々な型をより詳細に示す。
備考 この4.では,“クラスの拡張”と類似した意味で“特性の拡張”という用語を使用している。特性の拡張は,その特性と関連付けされたインスタンスの集合である。特性のインスタンスは,単一の要素ではなく,特性の文の主語-述語の対である。リレーショナルデータベースの用語では, 特性のインスタンスを二項関係(すなわち特性)の“組”と呼ぶ。
4.1にある構成要素は,RDFスキーマ規定 [RDF Vocabulary]で詳細に示されている。この4.1の記述は,これらの構成要素の概要を提供し,OWL固有の側面及び例を幾つか紹介する。
rdfs:subPropertyOf
公理は,その特性がある他の特性の下位特性であることを定義している。形式的には,これは,P1がP2の下位特性であれば,P1の特性の拡張(対の集合)はP2の特性の拡張(同様に組の集合)の部分集合でなければならないことを意味する。
次に例を示す。
<owl:ObjectProperty rdf:ID="hasMother"> <rdfs:subPropertyOf rdf:resource="#hasParent"/> </owl:ObjectProperty>
これは,特性 "hasMother"(母親がいる)の特性の拡張に含まれるすべてのインスタンス(対)が,特性 "hasParent"(親がいる)の特性の拡張のメンバでもあることを言明している。
下位特性公理は,データ型特性にもオブジェクト特性にも適用することができる。
備考 OWL DLでは,下位特性の文の主語及び目的語は,両方ともデータ型特性であるか,両方ともオブジェクト特性であるかのいずれかでなければならない。
一つの特性については,複数のrdfs:domain
公理を定義することができる。構文上,rdfs:domain
は,組込みの特性であり,特性(rdf:Property
クラスのあるインスタンス)をクラス記述に結合する。rdfs:domain
公理は,これらの特性の文の主語が指示されたクラス記述のクラスの拡張に属さなければならないことを表明している。
複数のrdfs:domain
公理を使用することは可能であり,それらは,論理積として解釈されなければならない。すなわち,これらは,特性の領域をクラス記述の積集合に属する個体に制限する。複数のクラスが領域として活動できると言いたい場合には,owl:unionOf
形式のクラス記述を使用しなければならない。例えば,特性hasBankAccount
(銀行口座をもつ)の領域はPerson
(人)又はCorporation
(法人)のいずれかであり得ると言いたいとき,次のことを言う必要がある。
<owl:ObjectProperty rdf:ID="hasBankAccount"> <rdfs:domain> <owl:Class> <owl:unionOf rdf:parseType="Collection"> <owl:Class rdf:about="#Person"/> <owl:Class rdf:about="#Corporation"/> </owl:unionOf> </owl:Class> </rdfs:domain> </owl:ObjectProperty>
備考 OWL Liteでは,rdfs:domain
の値はクラス識別子でなければならない。
一つの特性については,複数のrdfs:range
公理を定義することができる。構文上,rdfs:range
は,組込みの特性であり,特性(クラス rdf:Property
のあるインスタンス)をクラス記述又はデータの値域のいずれかに結合する。rdfs:range
公理は,この特性の値がクラス記述のクラスの拡張又は指定されたデータの値域のデータ値に属さなければならないことを表明している。
複数の値域制限は,この特性の値域が,すべての値域の積集合(すなわち,クラス記述のクラスの拡張の積集合,又はデータの値域の積集合)であると言明しているものとして,解釈される。rdfs:domain
と同様に,
owl:unionOf
形式のクラス記述を使用することによって,複数の別の値域を指定することができる。前節を参照されたい。
クラス記述に関する節で示した値の制約のいずれとも異なり,rdfs:range
制限は大域的であることに注意されたい。owl:allValuesFrom
などの値の制約は,クラス記述の中で使用され,そのクラスに適用される際にその特性だけに強制される。
一方で,rdfs:range
制限は,それが適用されるクラスに関係なく,特性に適用される。したがって,rdfs:range
の使用には注意することが望ましい。
備考 OWL Liteでは,rdfs:range
の目的語として使用可能なクラス記述の型は,クラス名だけとする。
owl:equivalentProperty
構成要素は,二つの特性が同じ特性の拡張をもつことを言明するために使用できる。構文上は,owl:equivalentProperty
は,OWLに組込みの特性であり,領域としても値域としてもrdf:Property
を用いる。
備考 特性の等価性は,特性の同等性と同じではない。等価な特性は,同一の“値”,すなわち,同一の特性の拡張をもつが,異なる概念的な意味をもってもよい。すなわち,異なる概念を示してもよい。特性の同等性は,owl:sameAs
構成要素を用いて表現しなければならない。これは,特性を個体として扱うことを要求するため,これらの公理はOWL Fullだけで使用できる。
特性は,領域から値域までの方向をもつ。実際には,人は車を所有し,車は人に所有されるなどの,双方向での関係定義が便利であることが多い。owl:inverseOf構成要素を使用すると,特性間のこの逆の関係を定義することができる。
構文上,owl:inverseOf
は,OWLに組込みの特性であり,その領域及び値域としてowl:ObjectProperty
をもつ。P1 owl:inverseOf P2
形式の公理は,P1の特性の拡張のすべての(x, y)の対について,P2の特性の拡張の(y, x)の対が一つ存在し,逆も成立することを表明している。したがって,owl:inverseOf
は,対称的な特性とする。
次に例を示す。
<owl:ObjectProperty rdf:ID="hasChild"> <owl:inverseOf rdf:resource="#hasParent"/> </owl:ObjectProperty>
関数的な特性は,各インスタンスxに関して,1個だけの(一意の)値yをもつことができる特性とする。すなわち,(x, y1)の対及び(x, y2)の対がこの特性の両方のインスタンスである,二つの異なる値y1及びy2が存在することはあり得ない。オブジェクト特性及びデータ型特性のどちらも,“関数的”として宣言することができる。この目的のため,OWLは,
組込みのクラスowl:FunctionalPropertyを
RDFクラスrdf:Property
の特別な下位クラスとして定義する。
次の公理は,husband
(夫である)特性が関数的であること,すなわち,1人の女性(woman)は1人以下の夫(husband)をもつことができることを言明している。この例は,オントロジの文化依存性を示す好例である。
<owl:ObjectProperty rdf:ID="husband"> <rdf:type rdf:resource="&owl;FunctionalProperty" /> <rdfs:domain rdf:resource="#Woman" /> <rdfs:range rdf:resource="#Man" /> </owl:ObjectProperty>
通常どおり,構文の変形はある。上の例は,意味論的には,次の例と等価である。
<owl:ObjectProperty rdf:ID="husband"> <rdfs:domain rdf:resource="#Woman" /> <rdfs:range rdf:resource="#Man" /> </owl:ObjectProperty> <owl:FunctionalProperty rdf:about="#husband" />
特性が逆関数的であると宣言される場合,特性文の目的語は,一意に主語(ある個体)を決定する。もっと形式的には,Pがowl:InverseFunctionalProperty
であると表明する場合,これは,ある値yが単一のインスタンスxについてPの値でしかあり得ないことを表明している。すなわち,(x1, y)及び(x2, y)の両方の対がPのインスタンスとなる,二つの異なるインスタンスx1及びx2が存在することはあり得ない。
構文的には,逆関数的特性公理は,その特性が,OWLに組込みのクラスowl:InverseFunctionalProperty(これは,OWLクラスowl:ObjectProperty
の下位クラスとする。)のインスタンスであることを宣言することによって指定される。
備考 OWL Fullでは,データ型特性はオブジェクト特性の下位クラスであるので,データ型特性について逆関数的特性を定義することができる。OWL DLでは,オブジェクト特性及びデータ型特性は互いに素である。そのため,データ型特性について逆関数的特性を定義することはできない。8.1及び8.2も参照されたい。
逆関数的特性の典型的な例を次に示す。
<owl:InverseFunctionalProperty rdf:ID="biologicalMotherOf"> <rdfs:domain rdf:resource="#Woman"/> <rdfs:range rdf:resource="#Human"/> </owl:InverseFunctionalProperty>
この例は,biologicalMotherOf
(生物学上の母親である)文の各目的語(ある人(human))について,主語(ある女性(woman))を一意に識別できなければならないことを言明している。逆関数的特性は,データベースのキーの概念に似ている。
関数的特性との一つの違いは,逆関数特性の場合,追加のオブジェクト特性公理又はデータ型特性公理が必す(須)でないこととする。すなわち,逆関数特性は,定義によってオブジェクト特性とする。
owl:FunctionalProperty
及びowl:InverseFunctionalProperty
は,大域的なメンバ数制約を指定することに注意されたい。すなわち,特性がどのクラスに適用されても,メンバ数制約は有効でなければならない。これは,特性の制限に含まれるメンバ数制約とは異なる。後者はクラス記述であり,そのクラスに適用される場合に,その特性に強制されるだけとする。
特性Pを推移的特性であると定義すると,これは,次のことを意味する。すなわち,(x, y)の対がPのインスタンスであり,(y, z)の対もPのインスタンスであれば,(x, z)の組もPのインスタンスであると推論できる。
構文上は,owl:ObjectProperty
の下位クラスとして定義される組込みのOWLクラスowl:TransitivePropertyのインスタンスにすることによって,特性を推移的であると定義する。
推移的特性の典型的な例は,部分と全体とのある関係を表す特性である。例えば,region(地域)の間のsubRegionOf
(部分地域である)特性が推移的であると言いたいとする。
<owl:TransitiveProperty rdf:ID="subRegionOf"> <rdfs:domain rdf:resource="#Region"/> <rdfs:range rdf:resource="#Region"/> </owl:TransitiveProperty>
ここから,OWLの推論機構は,ChiantiClassico
(キァンティクラシコ),Tuscany
(トスカーナ)及びItaly
(イタリア)が地域であり,かつChiantiClassico
(キァンティクラシコ)がTuscany
(トスカーナ)の部分地域であり,かつTuscany
(トスカーナ)がItaly
(イタリア)の部分地域であるとき,ChiantiClassico
(キァンティクラシコ)もItaly
(イタリア)の部分地域であることを推論できなければならない。
owl:TransitiveProperty
はowl:ObjectProperty
の下位クラスであるため,次の構文上の変形は前述の例に等価であることに注意されたい。
<owl:ObjectProperty rdf:ID="subRegionOf"> <rdf:type rdf:resource="&owl;TransitiveProperty"/> <rdfs:domain rdf:resource="#Region"/> <rdfs:range rdf:resource="#Region"/> </owl:ObjectProperty>
備考 OWL DLは,推移的特性に関しては,その特性自体又はその上位特性について,局所的なメンバ数制約又は大域的なメンバ数制約を宣言せず,その特性の逆特性又はその上位特性についても,局所的なメンバ数制約又は大域的なメンバ数制約を宣言しないことを要求する。
対称的特性は,(x, y)の対がPのインスタンスであれば,(y, x)の対もPのインスタンスであることが成立する特性である。構文上は,owl:ObjectProperty
の下位クラスである組込みのOWLクラスowl:SymmetricProperty
のインスタンスにすることによって,特性を対称的と定義する。
対称的特性のよくある例は,friendOf
(友達である)関係である。
<owl:SymmetricProperty rdf:ID="friendOf"> <rdfs:domain rdf:resource="#Human"/> <rdfs:range rdf:resource="#Human"/> </owl:SymmetricProperty>
対称的特性の領域及び値域は同じとする。
個体は,“事実”とも呼ばれる個体公理を用いて定義される。事実の二つの型を示す。
多くの事実は,典型的には,個体のクラスへの帰属関係及び個体の特性値を示す文とする。例として,クラスOpera
のあるインスタンスに関する次の文の集合を考える。
<Opera rdf:ID="Tosca"> <hasComposer rdf:resource="#Giacomo_Puccini"/> <hasLibrettist rdf:resource="#Victorien_Sardou"/> <hasLibrettist rdf:resource="#Giuseppe_Giacosa"/> <hasLibrettist rdf:resource="#Luigi_Illica"/> <premiereDate rdf:datatype="&xsd;date">1900-01-14</premiereDate> <premierePlace rdf:resource="#Roma"/> <numberOfActs rdf:datatype="&xsd;positiveInteger">3</numberOfActs> </Opera>
この例は,クラスOpera
(オペラ)のインスタンスである,個体Tosca
(トスカ)に関する多くの事実を含む。Tosca
(トスカ)は,Giacomo Puccini(ジアコモ プッチーニ)によって作曲された(hasComposer)。オペラには3人の台本作家が存在する(hasLibrettist)。特性premiereDate
(初演日)は,オペラをXMLスキーマデータ型date
(日付)をもつ型付けされたリテラルに結合する。データ型に関するXMLスキーマ規定[XML
Schema Datatypes]には,このデータ型の構文及び意味論についての関連情報が含まれる。
個体公理は,必ずしも,名前付けされた個体に関するものである必要はない。すなわち,個体公理は,匿名の個体を表すこともできる。例として,次のRDF/XMLの断片を検討する。この例は,クラスMeasurement
(身体測定)の匿名のインスタンスに関する幾つかの事実を定義している。そのインスタンスは,観察下の主題,観察事象,観察値及び観察時間などの事実が列挙される量的な観察である。
<Measurement> <observedSubject rdf:resource="#JaneDoe"/> <observedPhenomenon rdf:resource="#Weight"/> <observedValue> <Quantity> <quantityValue rdf:datatype="&xsd;float">59.5</quantityValue> <quantityUnit rdf:resource="#Kilogram"/> </Quantity> </observedValue> <timeStamp rdf:datatype="&xsd;dateTime">2003-01-24T09:00:08+01:00</timeStamp> </Measurement>
この個体公理には,二つの匿名個体が含まれている。すなわち,何らかのMeasurement
(身体測定)及び何らかのQuantity
(量)である。
自然言語では,対象物Jane Dow(某女性)について,事象Weight
(体重)の測定値が何らかの量であり,キログラム(kilogram)単位を使用して値(value)59.5をもつ。測定時刻(measurementのtime)は2003年1月24日,午前9時8秒すぎであり,時間帯はUTC+1(アムステルダム,ベルリン,パリの冬時間)である。従来どおり,float
及びdateTime
はXMLスキーマのデータ型であり,その構文論上及び意味論上の詳細は,関連するXMLスキーマ規定 [XML
Schema Datatypes]にある。
多くの言語は,いわゆる“一意名”の仮定をもつ。すなわち,異なる名前が世界中の異なる事物を参照する。ウェブ上では,こんな仮定は不可能である。例えば,多くの異なる方法で(すなわち,異なるURI参照を用いて),同じ人物を表すことができる。このため,OWLはこの仮定を用いない。二つのURI参照が同じ個体又は異なる個体を参照するという明示的な言明がされているのでない限り,OWLツールは,原則としてどちらかの状態が可能であると仮定しなければならない。
OWLは,個体の同一性についての事実を言明するために,三つの構成要素を提供する。
owl:sameAs
は,二つのURI参照が同じ個体を表すことを言明するために使用される。owl:differentFrom
は,二つのURI参照が異なる個体を表すことを言明するために使用される。owl:AllDifferent
は,個体のリストがすべて異なることを言明するためのイディオムを提供する。OWLに組込みの特性owl:sameAsは,個体を個体に結合する。このようなowl:sameAs
文は,二つのURI参照が,実際に同じ事物を表すことを示す。すなわち,個体は同じ“同一性”をもつ。
“人”などの個体については,この概念は比較的簡単に理解できる。例えば,次の二つのURI参照が実際に同じ人物を表すことを言明することができる。
<rdf:Description rdf:about="#William_Jefferson_Clinton"> <owl:sameAs rdf:resource="#BillClinton"/> </rdf:Description>
owl:sameAs
文は,複数のオントロジ間の対応付けを定義する際に使用されることが多い。すべての人が,同じ名前を使用して個体を表すことを前提とするのは非現実的である。そのためには,遠大な構想が必要となり,ウェブの精神には反する。
OWL Fullでは,クラスを(メタ)クラスのインスタンスとして扱うため,クラスの同等性を定義するために,owl:sameAs
構成要素を使用することができ,したがって,二つの概念は概念的に同じ意味をもつことを示す。次に例を示す。
<owl:Class rdf:ID="FootballTeam"> <owl:sameAs rdf:resource="http://sports.org/US#SoccerTeam"/> </owl:Class>
この公理をヨーロッパのスポーツオントロジの一部と想定できる。ここでは,二つのクラスを個体として,この場合はクラスowl:Class
のインスタンスとして扱う。これによって,何らかのヨーロッパのスポーツオントロジの中のクラスFootballTeam
(フットボールのチーム)が,
あるアメリカのスポーツオントロジの中のクラスSoccerTeam
(サッカーのチーム)と同じ概念を表示することを言明することができる。次の文との違いに注意されたい。
<footballTeam owl:equivalentClass us:soccerTeam />
上の文は,二つのクラスは同じクラスの拡張をもつが,概念は(必ずしも)同じではないことを言明している。
備考 URI参照の比較の詳細については,RDF概念規定 [RDF Concepts]のRDF URI参照に関する節を参照されたい。
OWLに組込みのowl:differentFrom特性は,個体を個体に結合する。owl:differentFrom
文は,二つのURI参照が異なる個体を表すことを示す。
次に例を示す。
<Opera rdf:ID="Don_Giovanni"/> <Opera rdf:ID="Nozze_di_Figaro"> <owl:differentFrom rdf:resource="#Don_Giovanni"/> </Opera> <Opera rdf:ID="Cosi_fan_tutte"> <owl:differentFrom rdf:resource="#Don_Giovanni"/> <owl:differentFrom rdf:resource="#Nozze_di_Figaro"/> </Opera>
これは,三つの異なるオペラ(opera)が存在することを言明している。
一意名仮定が成り立つオントロジについては,すべての個体を1対で互いに素であると宣言しなければならないため,owl:differentFrom
を使用すると,文の数が多くなってしまうと思われる。
これらの状況を改善するために,OWLは,構成要素owl:AllDifferentの形式の特別のイディオムを提供している。owl:AllDifferent
は,特性owl:distinctMembersが定義される特別な組込みOWLクラスであり,owl:AllDifferent
のインスタンスを個体のリストに結合する。これらの文によって意図されている意味は,リストにあるすべての個体が互いにすべて異なるということである。
次に例を示す。
<owl:AllDifferent> <owl:distinctMembers rdf:parseType="Collection"> <Opera rdf:about="#Don_Giovanni"/> <Opera rdf:about="#Nozze_di_Figaro"/> <Opera rdf:about="#Cosi_fan_tutte"/> <Opera rdf:about="#Tosca"/> <Opera rdf:about="#Turandot"/> <Opera rdf:about="#Salome"/> </owl:distinctMembers> </owl:AllDifferent>
これは,これらの六つのURI参照がすべて異なるオペラ(opera)を示すことを言明している。
備考 owl:distinctMembers
は,便宜上追加された特別な構文構成要素であり,常にowl:AllDifferent
個体とともに,その主語として使用されなければならない。
この規定の多くの箇所で,データ値の範囲を指定するためのデータ値域の概念を見てきた。OWLは,次の三つの型のデータ値域の指定方法を可能にする。
owl:oneOf
構成要素を使用する列挙データ型データ型に関するソフトウェアツールによる支援の最低水準は,6.3に示されている。
OWLは,RDFのデータ型付け方式を利用し,それは,XMLスキーマデータ型 [XML Schema Datatypes]を参照するための機構を提供する。詳細な記述については,[RDF Concepts]などのRDFの規定を参照されたい。読者の便宜を図るため,ここでは,RDFデータ型の使用方法の概要を提供する。
データ値は,RDFスキーマクラスrdfs:Literal
のインスタンスとする。リテラルは,プレーン(データ型なし)又は型付けのいずれかであり得る。データ型は,クラスrdfs:Datatype
のインスタンスとする。RDF/XMLでは,リテラルの型が,rdf:datatype
属性によって指定される。その属性の値は,次の一つであることを推奨する。
http://www.w3.org/2001/XMLSchema#NAMEここで“NAME”は,下記の条件付きで,[XML Schema Datatypes]の3.で定義されるとおり,単純なXMLスキーマ組込みのデータ型の名前でなければならない。
rdf:XMLLiteral
のURI参照。このデータ型は,XMLの内容をRDF/OWL文書に取り込むために使用される。このデータ型のURI参照を次に示す。
http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteralこのデータ型の詳細については,RDF概念規定 [RDF Concepts]を参照されたい。
RDF意味論規定 [RDF Semantics, 5.]は,次の単純な組込みのXMLスキーマのデータ型の使用を推奨している。
xsd:string
及びxsd:stringから派生した次のデータ型。xsd:normalizedString
,
xsd:token
,
xsd:language
,
xsd:NMTOKEN
,
xsd:Name
及びxsd:NCName
。xsd:boolean
。xsd:decimal
, xsd:float
,
xsd:double
及びxsd:decimalから派生したすべての型 (
xsd:integer
,
xsd:positiveInteger
.
xsd:nonPositiveInteger
,
xsd:negativeInteger
,
xsd:nonNegativeInteger
,
xsd:long
,
xsd:int
,
xsd:short
,
xsd:byte
,
xsd:unsignedLong
,
xsd:unsignedInt
,
xsd:unsignedShort
,
xsd:unsignedByte
)。xsd:dateTime
,
xsd:time
,
xsd:date
,
xsd:gYearMonth
,
xsd:gYear
,
xsd:gMonthDay
,
xsd:gDay
及びxsd:gMonth
。xsd:hexBinary
,
xsd:base64Binary
及びxsd:anyURI
。
備考 アプリケーションがrdfs:Datatype
のインスタンスを定義することによってそれ自体のデータ型を定義することは,推奨はしないが,規定違反ではない。これらのデータ型は“認知されない”が,“サポートされないデータ型”と類似の方法で扱われる。OWLツールがこれらをどのように扱うのがよいかについての詳細は,6.3を参照されたい。
データ型を使用する場合は,たとえあるデータ型の値域をもつと特性を定義しても,RDF/XMLは,その特性を使用する度にデータ型の指定を要求することに注意されたい。その1例として,以前にMeasurement
の例で使用した特性の宣言を挙げられる。
<owl:DatatypeProperty rdf:about="#timeStamp"> <rdfs:domain rdf:resource="#Measurement"/> <rdf:range rdf:resource="&xsd;dateTime"/> </owl:DatatypeProperty> <Measurement> <timeStamp rdf:datatype="&xsd;dateTime">2003-01-24T09:00:08+01:00</timeStamp> </Measurement>
RDFデータ型に加えて,OWLは,データ値の範囲を定義するための一つの追加構成要素,すなわち列挙データ型を提供する。このデータ型の書式は,owl:oneOf
構成要素を使用する。これは,列挙クラスを記述するためにも使用される。列挙データ型の場合,owl:oneOf
の主語は,クラスowl:DataRange
の空ノードであり,目的語はリテラルのリストとする。残念なことに,リテラルのリストの指定にrdf:parseType="Collection"
のイディオムを使用することはできない。これは,RDFがコレクションにRDFノード要素のリストであることを要求するためである。そのため,基本的なリスト構成要素rdf:first
, rdf:rest
及びrdf:nil
を用いて,データ値のリストを指定しなければならない。
備考 列挙データ型は,OWL Liteの一部ではない。
次の例では,特性tennisGameScore
(テニスの得点)の値域が整数値のリスト{0, 15, 30, 40}に指定されている。
<owl:DatatypeProperty rdf:ID="tennisGameScore"> <rdfs:range> <owl:DataRange> <owl:oneOf> <rdf:List> <rdf:first rdf:datatype="&xsd;integer">0</rdf:first> <rdf:rest> <rdf:List> <rdf:first rdf:datatype="&xsd;integer">15</rdf:first> <rdf:rest> <rdf:List> <rdf:first rdf:datatype="&xsd;integer">30</rdf:first> <rdf:rest> <rdf:List> <rdf:first rdf:datatype="&xsd;integer">40</rdf:first> <rdf:rest rdf:resource="&rdf;nil" /> </rdf:List> </rdf:rest> </rdf:List> </rdf:rest> </rdf:List> </rdf:rest> </rdf:List> </owl:oneOf> </owl:DataRange> </rdfs:range> </owl:DatatypeProperty>
ツールは,データ型の推論の支援の観点から,多様化してよい。最低でも,ツールはXMLスキーマのデータ型xsd:string
及びxsd:integer
のデータ型の推論を支援しなければならない。OWL Fullのツールは,rdf:XMLLiteral
も支援しなければならない。支援されないデータ型については,字句上で同一のリテラルを等しいと考えるのが望ましい。それに対して,字句上で異なるリテラルは,等しいか,等しくないかはわからないであろう。認知されないデータ型は,支援されないデータ型と同じ方法で扱うのが望ましい。
OWL Fullでは,オントロジにおける注記に関して何の制約も課されない。OWL DLでは,次の条件を満たす場合に限り,クラス,特性,個体及びオントロジヘッダに関して,注記を使用することができる。
dc:creator
がデータ特性であると同時に注記特性であることはできない。AnnotationPropertyID rdf:type owl:AnnotationProperty .
五つの注記特性が,OWLによって事前定義されている。それらを次に示す。
owl:versionInfo
rdfs:label
rdfs:comment
rdfs:seeAlso
rdfs:isDefinedBy
OWL DLでの注記特性の正当な使用例を次に示す。
<owl:AnnotationProperty rdf:about="&dc;creator"/> <owl:Class rdf:about="#MusicalWork"> <rdfs:label>Musical work</rdfs:label> <dc:creator>N.N.</dc:creator> </owl:Class>
この例では,&dc;
及びdc:
は,それぞれダブリンコアURI及び名前空間を示すと仮定している。したがって,OWL DLで,ダブリンコア特性を注記特性として使用する場合は,
明示的な型付けの三つ組が必す(須)となる。これによって,OWL DL推論機構は,注記を意味論的に正しい方法で扱うことが確実となる。詳細については,OWL 意味論及び抽象構文(TS X 7254) [OWL
S&AS]を参照されたい。
いったんdc:creator
を注記特性として定義すると,OWL DLは,次に示すとおり値域制約などの特性公理を使用できない。
<-- This is illegal in OWL DL --> <owl:AnnotationProperty rdf:about="&dc;creator"> <rdfs:range rdf:resource="&xsd;string"/> </owl:AnnotationProperty>
注記特性の文で,リテラルの値の型をまだ指定できることに注意されたい。
<Opera rdf:about="#Tosca"> <dc:creator rdf:datatype="&xsd;string">Giacomo Puccini</dc:creator> </Opera>
オントロジを記述する文書は,典型的に,そのオントロジ自体に関する情報を含む。オントロジは資源であるので,それは,OWL及びその他の名前空間からの特性を使用して記述されてもよい。次に例を示す。
<owl:Ontology rdf:about=""> <owl:versionInfo> ... </owl:versionInfo> <rdfs:comment>...</rdfs:comment> <owl:imports rdf:resource="..."/> </owl:Ontology>
これは通常,オントロジヘッダと呼ばれ,典型的に,RDF/XML文書の冒頭近くに記述される。
<owl:Ontology rdf:about="">
この行は,このブロックが現在のオントロジを記述することを言明している。さらに正確にいえば,この行は,現在の基底URIがクラスowl:Ontology
のインスタンスを識別することを言明している。<rdf:RDF>
要素のxml:base
属性を使用して,文書の冒頭で,基底URIを定義することを推奨する。
オントロジヘッダの1例を次に示す。
<owl:Ontology rdf:about=""> <owl:versionInfo>v 1.17 2003/02/26 12:56:51 mdean</owl:versionInfo> <rdfs:comment>An example ontology</rdfs:comment> <owl:imports rdf:resource="http://www.example.org/foo"/> </owl:Ontology>
7.3及び7.4では,ヘッダ内で通常使用される様々な型の文を示す。
備考 オントロジ取込み構成要素owl:imports
並びにオントロジ版管理構成要素owl:priorVersion, owl:backwardCompatibleWith
及びowl:incompatibleWithは,OWL組込みのクラス
owl:OntologyProperty
のインスタンスとして,OWLの語い(彙)で定義される。owl:OntologyProperty
のインスタンスは,その領域及び値域として,クラスowl:Ontology
をもたなければならない。それは,owl:OntologyProperty
の他のインスタンスを定義することが認められている。OWL DLでは,オントロジ特性に対して,7.1の注記特性に指定される制約と同じ制約が課される。
owl:imports
文は,定義を含む別のOWLオントロジを参照する。参照されるオントロジの意味は,取込みを行うオントロジの意味の一部であるとみなされる。各参照は,オントロジがどこから取り込まれているかを指定するURI (Uniform Resource Identifier, 統一資源識別子)から構成されている。構文上,owl:imports
は,領域及び値域としてクラスowl:Ontology
をもつ特性である。
owl:imports
文は推移的である。すなわち,オントロジAがBを取り込み,BがCを取り込めば,AはBもCも取り込む。オントロジをそれ自体に取り込むことは,空動作と考えられるため,オントロジAがBを取り込み,BがAを取り込むならば,それらは等価であるとみなされる。
OWLツールが取り込まれたオントロジを読込まなければならないか,そうでないかは,ツールの目的に依存することに注意されたい。ツールが完全な一貫性の検査器を含む完全な推論機構であれば,取り込まれたオントロジをすべて読込まなければならない。例えば単純なエディタ,不完全な推論機構などの他のツールは,取り込まれたオントロジの幾つかだけを読込むという選択をしてよく,全く読込まないという選択すらしてよい。
owl:imports及び名前空間宣言は冗長にみえるかもしれないが,それらは実際には異なる目的を果たしている。名前空間宣言は,識別子を参照する短縮表現を提供するだけである。それらは,URIに位置付けされる文書の意味を暗黙的に含まない。一方,owl:importsは,取り込まれた文書から識別子を参照するための短縮表現の記法を提供しない。そのため,取り込まれたそれぞれのオントロジに対応する名前空間宣言をもつことは多い。
備考 owl:imports
は,owl:OntologyProperty
のインスタンスとする。
owl:versionInfo
文は,一般的に,この版についての情報を提供する文字列,例えばRCS/CVSのキーワードを,その目的語としてもっている。この文は,RDF(S)のモデル論によって提供される意味以外に,そのオントロジの論理的な意味に寄与することはない。
この特性は,典型的に,オントロジに関する文の作成に使用されるが,それは,どんなOWL構成要素に適用されてもよい。例えば,owl:versionInfo
文をOWLクラスに添付することができる。
備考 owl:versionInfo
は,owl:AnnotationProperty
のインスタンスとする。
owl:priorVersion
文は,別のオントロジの参照を含む。これは,指定されたオントロジを,この文を含むオントロジの前の版として識別する。これは,RDF(S)のモデル論によって提供された意味以外に,このモデル論的な意味論において,意味をもたない。しかし,版情報によってオントロジを整理するために,ソフトウェアがそれを使用してもよい。
owl:priorVersion
は,領域及び値域としてクラスowl:Ontology
をもつOWLに組込みの特性とする。
備考 owl:priorVersion
は,owl:OntologyProperty
のインスタンスとする。
owl:backwardCompatibleWith
文は,別のオントロジの参照を含む。これは,指定されたオントロジを,この文を含むオントロジの前の版として識別し,さらに,それと下位互換性があることを示す。特に,これは,以前の版からのすべての識別子が,新しい版において,同じ意図された解釈をもつことを示している。したがって,オントロジを用いる文書を作成する人にとっては,単に名前空間宣言及びowl:imports
文を更新して,新しい版のURLを参照するようにするだけで,この新しい版のオントロジに移行するように文書を変更することが,安全にできるというヒントになる。owl:backwardCompatibleWith
が二つの版に対して宣言されない場合,互換性を仮定してはならない。
owl:backwardCompatibleWith
には,RDF(S)のモデル論が提供する意味以外には,
このモデル論的な意味論においては,何の意味もない。
owl:backwardCompatibleWith
は,領域及び値域としてクラスowl:Ontology
をもつOWLに組込みの特性とする。
備考 owl:backwardCompatibleWith
は,owl:OntologyProperty
のインスタンスとする。
owl:incompatibleWith
文は,別のオントロジの参照を含む。これは,この文を含むオントロジは参照されるオントロジの後の版であるが,それとの下位互換性がないことを示している。基本的に,これは,オントロジの作成者が,そのオントロジを用いる文書は,変更が必要であるかどうかを検査することなしには,新しい版のオントロジに移行することは不可能であるということを,オントロジを用いる文書の作成者に明示したい場合に用いられる。
owl:incompatibleWith
は,RDF(S)のモデル論が提供する意味以外には,このモデル論的な意味論においては,何の意味ももたない。
owl:incompatibleWith
は,領域及び値域として,クラスowl:Ontology
をもつOWLに組込みの特性とする。
備考 owl:backwardCompatibleWith
は,owl:OntologyProperty
のインスタンスとする。
非推奨は,一般に,版管理ソフトウェアで使用される機能であり,下位互換性のために特定の機能を残してはおくが,将来的にはその機能を段階的に廃止することを示している。非推奨については,例として,Javaプログラミング言語を参照されたい。ここでは,固有の識別子をowl:DeprecatedClass型又はowl:DeprecatedProperty型であるといい,その場合,owl:DeprecatedClass
はrdfs:Class
の下位クラスであり,owl:DeprecatedProperty
はrdf:Property
の下位クラスとする。ある用語を非推奨とすると,そのオントロジを用いる新しい文書で,その用語を使用しないのが望ましいことを意味する。これによって,オントロジは,古い語い(彙)を段階的に廃止する間,下位互換性を維持することができる。したがって,下位互換性と組み合わせて使用する場合に限り,非推奨は意味をもつ。結果として,古いデータ及びアプリケーションを新しい版へ移行することがより簡単になり,それによって,新しい版の導入を促進することができる。RDF(S)のモデル論が提供する以外には,このモデル論的な意味論では,これは何の意味ももたない。しかし,OWLのマーク付けの検査の際,作成支援ツールは,それを使用して,利用者に警告を与えてもよい。
例を次に示す。
<owl:Ontology rdf:about=""> <rdfs:comment>Vehicle Ontology, v. 1.1</rdfs:comment> <owl:backwardCompatibleWith rdf:resource="http://www.example.org/vehicle-1.0"/> <owl:priorVersion rdf:resource="http://www.example.org/vehicle-1.0"/> </owl:Ontology> <owl:DeprecatedClass rdf:ID="Car"> <rdfs:comment>Automobile is now preferred</rdfs:comment> <owl:equivalentClass rdf:resource="#Automobile"/> <!-- note that equivalentClass only means that the classes have the same extension, so this DOES NOT lead to the entailment that Automobile is of type DeprecatedClass too --> </owl:DeprecatedClass> <owl:Class rdf:ID="Automobile" /> <owl:DeprecatedProperty rdf:ID="hasDriver"> <rdfs:comment>inverse property drives is now preferred</rdfs:comment> <owl:inverseOf rdf:resource="#drives" /> </owl:DeprecatedProperty> <owl:ObjectProperty rdf:ID="drives" />
導入では,OWLの三つの下位言語を簡単に示した。この8.では,OWLの3“種”の違いについて,参考仕様が提供される。意味論及び抽象構文の規定 [OWL S&AS]は,相違の形式的な説明を提供している。
OWL Fullは,実際には,下位言語ではない。OWL Fullには,すべてのOWL言語の構成要素が含まれており,自由に,制限無く,RDF構成要素を使用することができる。OWL Fullでは,資源owl:Class
は,rdfs:Class
と等価とする。これは,OWL DL及びOWL Liteとの違いである。OWL DL及びLiteでは,owl:Class
は,rdfs:Class
の固有の下位クラスとする。すなわち,これは,すべてのRDFクラスがOWL DL及びOWL FullのOWLクラスとは限らないことを意味する。OWL Fullを使用することによって,クラスを個体としても扱うことができる。例えば,クラス名としても個体名としても働く“Fokker-100”(フォッカー100型飛行機)という識別子をもつことは,OWL Fullでは完全に正当である。このとき,クラス名であれば,世界中を飛ぶ飛行機Fokker-100の集合を意味し,個体名であれば,例えば,クラスAirplaneType
(飛行機型)のインスタンスとなる。
OWL Fullでは,すべてのデータ値を個体の領域の一部でもあると考える。実際,OWL Fullでは,個体の世界は,すべての資源から構成される。すなわち,owl:Thing
は,rdfs:Resource
と等価とする。これは,オブジェクト特性及びデータ型特性が互いに素ではないことを意味する。OWL Fullでは,owl:ObjectProperty
は,rdf:Property
と等価とする。その結果,データ型特性は,事実上,オブジェクト特性の下位クラスとなる。ただし,owl:ObjectProperty
及びowl:DatatypeProperty
は,両方ともrdf:Property
の下位クラスであるという事実は,これに矛盾しないことに注意されたい。
OWL Fullは,典型的には,OWLの表現力をRDFの柔軟性及びメタモデル機能に組み合わせたいと考える人に有用である。しかし,OWL Fullの機能を使用すると,OWL DL及びOWL Liteが推論機構に提供することができる保証を幾つか失うことになる。これについては,8.2を参照されたい。
備考 RDF文書は,特にOWL DL又はOWL Liteの形式になるように構築されない限り,それらは,一般的に,OWL Fullの形式になる。
備考 したがって,OWL Fullでは,owl:Thing
はrdfs:Resource
と等価であり,owl:Class
はrdfs:Class
と同等であり,owl:ObjectProperty
はrdf:Property
と等価とする。
OWL DLは,OWLの下位言語であり,OWL言語構成要素の使用について幾つかの制約がある。次にこれらの制約を簡単に示す。
最後の制約は,参照するすべてのクラス及び特性は,それぞれOWLクラス又は特性として,明示的に型付けされることを意味する。例えば,あるオントロジが次の構成要素を含む場合を考える。
<owl:Class rdf:ID="C1"> <rdfs:subClassOf rdf:resource="#C2" /> </owl:Class>
この場合,このオントロジ,又はこのオントロジに取り込まれるオントロジは,C2
に対して,owl:Class
の三つ組を含まなければならない。
OWL DLのこれらの制約は,任意の集まりに見えるかもしれないが,実際にはそうではない。これらの制約は,記述論理の推論機構の領域の研究成果に基づいており,記述論理ではオントロジの開発者又は利用者に推論支援を提供するために,これらの制限が必要とされる。特に,OWL DLの制限は,現在の研究が,OWLの推論機構用に決定可能な推論手続きが存在し得ることを保証できる,最大限のOWL Fullの部分集合を提供している。
備考 附属書Eは,RDFでOWL DLオントロジを指定するための実際的な指針集を提供している。
OWL Liteは,OWL DLがOWL言語構成要素の使用に関して課すすべての制約に従う。さらに,OWL Liteは,次の使用を禁止している。
OWL Liteは,次をも要求する。
owl:equivalentClass
の三つ組の主語はクラス名であり,owl:equivalentClass
の三つ組の目的語はクラス名又は制限であること。rdfs:subClassOf
の三つ組の主語はクラス名であり,rdfs:subClassOf
の三つ組の目的語はクラス名又は制限であること。owl:intersectionOf
を,クラス名及び制限だけを含む,長さが1より大きいリストだけで使用すること。
備考 OWL Liteにおけるowl:intersectionOf
の正当な使用の原型となる例をここに示す。
<owl:Class rdf:ID="Woman"> <owl:intersectionOf rdf:parseType="Collection"> <owl:Class rdf:about="#Female"/> <owl:Class rdf:about="#Human"/> </owl:intersectionOf> </owl:Class/>
owl:allValuesFrom
及びowl:someValuesFrom
の三つ組の目的語は,クラス名又はデータ型名であること。rdf:type
の三つ組の目的語はクラス名又は制限であること。rdfs:domain
の三つ組の目的語はクラス名であること。 rdfs:range
の三つ組の目的語はクラス名又はデータ型名であること。OWL Liteの表現力制限の背景には,それらの制限が,ツール開発者が支援するのに比較的直接的である,言語機能の有用な最小の部分集合を提供するという考えが存在する。OWL Liteの言語構成要素は,下位クラス階層の構築,すなわち,下位クラス及び特性の制限の基本を提供する。さらに,OWL Liteでは,特性を選択可能にしたり,又は必す(須)にしたりできる。これらの制限によって,OWL Liteは,OWL DLよりも複雑さの低い水準に位置することになる。これは,OWL Lite用の完全な推論機構の効率に前向きな影響を与えることができる。
OWL Liteの語い(彙)だけしか支援しないが,それ以外ではOWL DLの制限を緩和する実装は,一貫性及び複雑性に関して,ある程度の計算可能性の主張をすることができない。しかし,これらの実装は,RDFSのモデル,データベース,マーク付けツール,又はその他の非推論ツールとのOWLシステムの相互運用性を提供する際に有用であることもある。ウェブオントロジ作業グループは,この潜在的に有用な部分集合のための名前を提供していない。