附属書E(規定) OWL DLオントロジのための経験則

OWL抽象構文及び意味論規定 [OWL S&AS] は,RDFの三つ組の対応付けとともに, 抽象構文に関して,OWLオントロジの特徴付けを提供する。

次の規則は,RDFグラフがDLオントロジであるための条件の非形式的な特徴づけを与える。 これは,S&ASで提供される特徴付けに取って代わることを意図したものではないが, 代わりに,幾つかの一般的な助言を提供する。 すなわち,これらの指針を遵守すれば,OWL DLオントロジを作成しやすくなることを意図している。 さらに,これは,三つ組表現を抽象構文によって近い何かに変える方法を知らせることを意図したものでもない。

語い(彙)を散らかさないこと

組込みの特性及びクラスは,再定義されてはならない。 一般に,これは,OWL,RDF,又はRDFS名前空間の中の事物が, 三つ組の主語として現れてはならないことを意味する。

明示的な型付けの提供

すべてのものが型1をもたねばならない。 あらゆるURI参照xをクラスが期待される場所で使用する場合, グラフは,次を言明する三つ組を含まねばならない。

x rdf:type owl:Class

同様に, 特性pをオブジェクト特性が期待される場所で使用する場合, 次の三つ組2が存在しなければならない。

p rdf:type owl:ObjectProperty

特性qをデータ特性が期待される場所で使用する場合, 次の三つ組が存在しなければならない。

q rdf:type owl:DatatypeProperty

特性oをオントロジ特性が期待される場所で使用する場合, それは,組込み式のオントロジ特性, owl:imports, owl:priorVersion, owl:backwardCompatibleWith及びowl:incompatibleWithのいずれかであるか, 若しくは次の三つ組が存在しなければならない。

o rdf:type owl:OntologyProperty

特性aを注記特性が期待される場所で使用する場合, それは,組込み式の注記特性owl:versionInfo, rdfs:label, rdfs:comment, rdfs:seeAlso及びrdfs:isDefinedByのいずれか であるか,若しくは次の三つ組が存在しなければならない。

a rdf:type owl:AnnotationProperty

オントロジに現れるあらゆる個体は, 少なくとも一つの指定された型をもたねばならない。 すなわち,個体iに対して, 次の三つ組が存在しなければならない。

i rdf:type c

この場合,cowl:Classであるか, 又はowl:Restrictionである。

名前の分離

クラス,特性(オブジェクト,データ型,オントロジ及び注記)及び個体のURI参照は互いに素でなければならない。 したがって,次の種類の事物をもつことはできない。

x rdf:type owl:Class
x rdf:type owl:ObjectProperty

特に,これは,インスタンスとしてのクラス, すなわち次を使用できないことを意味する。

x rdf:type owl:Class
y rdf:type owl:Class
x rdf:type y

上の記述は有効なOWL DLではない。 ここで,一般的な規則を次に示す。 三つ組を用いるグラフにノードxが存在する場合を検討する。

x rdf:type owl:Class

この場合, xは,述語rdf:type3をもつ 他のいかなる三つ組の主語としても現れてはならない。

制限

ノードxrdf:type owl:Restrictionをもつ場合, 次のとおりでなければならない。

クラス公理

rdfs:subClassOfowl:equivalentClass又は owl:disjointWithを述語にもつ三つ組については, その三つ組のすべてについて, 主語も述語もowl:Class又はowl:Restrictionでなければならない。 次の例を検討する。

x rdfs:subClassOf y

上の記述の場合, グラフは次のうちの一つを含まなければならない。

x rdf:type owl:Class

又は

x rdf:type owl:Restriction.

さらに次のうちの一つを含まなければならない。

y rdf:type owl:Class

又は

y rdf:type owl:Restriction

特性公理

rdfs:subPropertyOf又は owl:equivalentPropertyを述語にもつ三つ組の場合, その三つ組のいずれについても,主語と述語は同じ型をもたねばならない。 その場合, 型は,owl:ObjectProperty 又は owl:DatatypePropertyのいずれかでなければならない。 次の例を検討する。

p owl:equivalentProperty q

上の記述の場合,グラフは次のいずれかを含まなければならない。

p rdf:type owl:ObjectProperty
q rdf:type owl:ObjectProperty.

又は

p rdf:type owl:DatatypeProperty
q rdf:type owl:DatatypeProperty.

rdfs:domainを述語にもつ三つ組は, その主語としてowl:ObjectProperty又は owl:DatatypePropertyをもち, その目的語として owl:Class又はowl:Restrictionをもたなければならない。

rdfs:rangeを述語にもつ三つ組は, その主語として,owl:ObjectPropertyowl:DatatypePropertyのいずれかをもたねばならない。 前者の場合では,三つ組の目的語が owl:Class又はowl:Restrictionでなければならず, 後者の場合では,目的語が XMLスキーマのデータ型,rdfs:Literal,又は owl:DataRange型でデータ値域を指定する owl:oneOfのいずれかでなければならない。

owl:inverseOf三つ組の主語も目的語も owl:ObjectProperty型をもたなければならない。

個体公理

owl:sameAs又は owl:differentFromを述語にもつ三つ組の場合, そのいずれについても,主語及び述語は個体でなければならない。

owl:sameAsを介して二つのクラスを関係付けることと, owl:equivalentClassを介して二つのクラスを関係付けることは全く別物であることに注意されたい。 前者は,二つのオブジェクトが事実上同じことを意味し, 実際には インスタンスとしてのクラスの1例となる。 そのため,このオントロジはOWL DLで記述できる範囲から外れてしまう。 後者は,要素のコレクションなど, その二つのクラスの拡張が等しいことを表明したものである。

ノードxrdf:type owl:AllDifferentをもつ場合,次のとおりでなければならない。

ブールクラス表現

ブール演算子(AND,OR,NOT)は, OWLでは,owl:intersectionOf, owl:unionOf及びowl:complementOfを使用して表現される。

owl:complementOf三つ組の主語は owl:Classでなければならず,目的語は, owl:Classowl:Restrictionのいずれかでなければならない。

owl:unionOf又はowl:intersectionOf 三つ組の主語はowl:Classでなければならず, 目的語は,整形式のrdf:Listでなければならない。 その要素はすべてowl:Classowl:Restrictionの いずれかとなる。 これらを明示的に表現するためには, 拡張されたrdf:Listsを使用するか, RDF-XMLが使用されていれば, rdf:parseType="Collection"属性を使用するかすればよい。

<owl:Class>
 <owl:intersectionOf rdf:parseType="Collection">
  <owl:Class rdf:about="x"/>
  <owl:Class rdf:about="y"/>
 </owl:intersectionOf>
</owl:Class>

owl:Classが空ノードである場合, すなわち,クラスが名前付けされていない場合は, それは,owl:intersectionOf, owl:unionOf又はowl:complementOfを述語としてもつ 一つ以下の三つ組の主語となることしかできない。 クラスが名前付けされている場合は, これらの三つ組をいくらでも使用することができる。

列挙

owl:oneOfを述語としてもつ三つ組の主語は いずれもowl:Classowl:DataRangeのいずれかでなければならない。 前者の場合,目的語は整形式のrdf:Listでなければならず, その要素はすべて個体となる。 後者の場合,目的語は整形式のrdf:Listでなければならず, その要素はすべてデータリテラルとなる。 さらに,ブール演算子と同様に, rdf:parseType="Collection"を使用することができる。

オントロジ特性及び注記特性

オントロジを述語としてもつ三つ組の主語及び述語は いずれもオントロジでなければならない。 例えば, ノードxにおいて次のような三つ組がなければならない。

x rdf:type owl:Ontology

注記特性の述語をもつ三つ組の主語はいずれも名前付き, すなわち無名ノードではないクラス,特性,個体又はオントロジでなければならない。 注記特性の述語をもつ三つ組の目的語は, 個体,データリテラル又は任意のURI参照でなければならない。

OWL,RDF及びRDFSの語い(彙)に含まれる述語を除けば, 注記特性が,クラス又は特性を主語としてもつ三つ組で現れねばならない 唯一の述語である。

注記特性及びオントロジ特性そのものは, 型付けされねばならず, rdf:typeを述語にもつ三つ組の主語又は注記特性の主語として以外に, 三つ組の主語又は目的語としてあらわれてはならない。

構造共有の回避

一般に,OWL 意味論及び抽象構文の記述は, RDF表現での構造共有を認めない。 これは,事実上,何らかの記述を表現するRDFのグラフの匿名ノードは, 三つ組の目的語として,ただ一度だけしか現れてはならないことを意味する。 次の例を検討する。

x1 rdf:type owl:Class
x1 rdfs:subClassOf _:y
x2 rdf:type owl:Class
x2 rdfs:subClassOf _:y
_:y rdf:type owl:Class
_:y owl:complementOf z

上の記述は避けるのが望ましい。 注意を要するが,ごくまれにこれが容認される例も幾つか存在する。 しかし,一般に,クラス記述を一箇所以上で使用する場合は, 常に,グラフは別の空ノードを使用するのが望ましい。

孤立空ノードの回避

一般に,グラフの中に現れる空ノードは, 名前付けされない個体を表現するか, 次のうちの厳密に一つであるかのいずれかである。

孤立空ノード, すなわち三つ組の目的語ではないノードは, 一般に,上に記述した owl:AllDifferentの場合以外では使用できない。

基底の事実

オントロジは, 個体の特性を表明する三つ組など, 基底の事実の表明を含んでもよい。 これらの表明で使用される特性は, owl:ObjectProperty又は owl:DatatypePropertyでなければならない。 これらの三つ組の主語はいずれも個体でなければならなず, それは型付けされねばならない。 目的語は,特性がowl:ObjectPropertyである場合は個体の参照, 特性がowl:DatatypePropertyである場合はデータリテラルである。

OWL Lite

OWL Liteの文書は, OWL DLの文書と同じ規則に従わねばならなず,さらに幾つもの追加の制限がある。 これらの制限は主に許可される語い(彙)に関してのものである。 OWL Liteの文書では,次の語い(彙)をいずれも使用してはならない。

owl:equivalentClassを述語にもつ三つ組の目的語又は主語となるオブジェクトはいずれも空ノードであってはならない。

owl:minCardinality, owl:maxCardinality又は owl:cardinalityを述語にもつ三つ組の目的語はいずれも, 整数0又は1を表すデータリテラルでなければならない。

OWL Liteでowl:intersectionOfを使用する場合は, 若干ではあるが,さらに複雑である。 述語を,任意の表現の形成に使用してはならないが, 完全なクラス定義を表現するためには必要とされる。 上の制限から,owl:intersectionOfを述語にもつ三つ組の主語は いずれもowl:Classでなければならないことがわかる。 OWL Liteでは,このクラスを名前付けしなければならない, すなわち,主語が空ノードであってはならないというさらに強い制限が存在する。

その他の規則

owl:Thingの使用には注意されたい。 例えば,次のOWL-RDFの断片を検討する。

<owl:Class rdf:about="#A">
  <rdfs:subClassOf>
    <owl:Thing/>
  </rdfs:subClassOf>
</owl:Class>

この断片は, owl:Thingの下位クラスであるクラスAを記述しているのではなく, 実際には, owl:Thingのある匿名インスタンスの下位クラスであるクラス Aを記述している。 したがって,これは,インスタンスとしてのクラスの使用であり, OWL DLの範囲外である。 上で行おうとしているようなowl:Thingの下位クラスの効果は, 次によって得られる。

<owl:Class rdf:about="#A">
  <rdfs:subClassOf>
    <owl:Class rdf:about="http://www.w3.org/2002/07/owl#Thing"/>
  </rdfs:subClassOf>
</owl:Class>

owl:Classrdfs:Classとを混同しないように注意されたい。 次は,cが適切な型を提供されないという事実によって, DLの範囲にはない

c rdf:type rdfs:Class

備考

[1] すべてを型付けするという必要性は, 当然,OWL,RDF又はRDFS名前空間からの事物には適用されない。

[2] 厳密に言えば,特性が owl:TransitivePropertyowl:SymmetricProperty又は owl:InverseFunctionalPropertyであると定義される場合, これは必要ではない。

[3] ここで例外となるものを次に示す。

x rdf:type rdfs:Class
x rdf:type owl:Class
p rdf:type rdf:Property
p rdf:type owl:ObjectProperty

又は

q rdf:type rdf:Property
q rdf:type owl:DatatypeProperty

さらに,制限に関する例外を次に示す。

x rdf:type owl:Restriction
x rdf:type rdfs:Class
x rdf:type owl:Class