5. クラス要素章でも説明したようにクラス要素では、クラス間の関係などクラスに関する詳しい情報を記述します。 クラス間の関係3章ではrdfs:subClassOf、owl:equivalentClass、owl:disjointWithでクラス間の関係を表す方法を説明しました。それ以外にクラスの関係を表す方法としてブール組み合わせを使う方法があり、それには次の3つがあります。
owl:unionOf、owl:intersectionOfは二つ以上の参照クラスを必要とするので、記述する際には rdf:parseType="Collection" 属性を使います。例を以下に示します。 例1:クラスのブール組み合わせ1
<owl:Class rdf:ID="Person">
<rdfs:subClassOf rdf:resource="#Mammal" />
<owl:unionOf rdf:parseType="Collection">
<owl:Class rdf:about="#Men" />
<owl:Class rdf:about="#Women" />
</owl:unionOf>
</owl:Class>
上の例は哺乳類(Mammal)クラスのサブクラスである人間(Person)クラスは、男(Men)クラスと女(Women)クラスの和集合であるということを表しています。 例2:クラスのブール組み合わせ2
<owl:Class rdf:ID="Women">
<owl:intersectionOf rdf:parseType="Collection">
<owl:Class rdf:ID="Human" />
<owl:Class>
<owl:complementOf>
<owl:Class rdf:ID="Men" />
</owl:complementOf>
</owl:Class>
</owl:intersectionOf>
</owl:Class>
例の中の匿名クラスは、Menクラスに属さないすべてのインスタンスを含むクラスを表しています。これだけでは人ではない「会社」や「消しゴム」などのインスタンスも含んでしまうため、Humanクラスとの共通部分をとることで定義します。 つまりこの例で女(Women)クラスは、人間(Human)クラスに属するものの中で男(Men)クラスに属さないものが属するクラスである、と定義していることになります。 列挙型クラスクラスを定義する際にowl:oneOfプロパティを使って定義することができます。このowl:oneOfプロパティは、そのクラスに属するインスタンスを列挙したものだけに限るときに使います。このインスタンスは他のクラスのインスタンスである必要があります。 例3:oneOfによるクラス定義
<owl:Class rdf:ID="TrafficLightColor">
<owl:oneOf rdf:parseType="Collection">
<Color rdf:ID="Red" />
<Color rdf:ID="Blue" />
<Color rdf:ID="Yellow" />
</owl:oneOf>
</owl:Class>
上の例は交通信号の色は赤、青、黄色のみで他にはないということを表しています。 クラスにおけるプロパティ制約あるクラス(C)に対してプロパティ(P)の制限をつける機能がOWLにはあります。たとえば自動車(Automobile)クラスのインスタンスにhasDriverプロパティはひとつしかない、などという制約をつけることも可能です。このような制約は以下の6種類つけることができます。
上で紹介した制約を、以下のようにowl:Restriction要素の中に記述します。 例4:プロパティ制約の記述
<owl:Class rdf:ID="C">
<rdfs:subClassOf>または<rdfs:equivalentClass>
<owl:Restriction>
<owl:onProperty rdf:resource="P" />
<<ここに制約条件を書く>>
</owl:Restriction>
</rdfs:subClassOf>または</rdfs:equivalentClass>
</owl:Class>
owl:Restriction要素はowl:Classのサブクラスであるため、制約条件をつくるということはowl:Restrictionの匿名クラスをつくることと等価となります。 上の制約条件の例をいくつか示しておきます。 例5:サッカーチーム(SoccerTeam)クラスでのplayerプロパティは最低11必要
<owl:Class rdf:ID="SoccerTeam">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#player" />
<owl:minCardinality>11</owl:minCardinality>
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
例6:音楽(Music)クラスでのhasMakerプロパティの値は常に作曲者(composer)クラスのインスタンス
<owl:Class rdf:ID="Music">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#hasMaker"/>
<owl:allValuesFrom rdf:resource="#composer"/>
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
例7:milkTeaクラスでのmakeFromプロパティの値のうち少なくとも一つはmilkクラスのインスタンス
<owl:Class rdf:ID="milkTea">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#makeFrom"/>
<owl:someValuesFrom rdf:resource="#milk"/>
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
例8:四次元グループ(4DG)クラスのhasEmployeeプロパティの値のうち少なくともひとつはTaroYojigenである
<owl:Class rdf:ID="4DG">
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="hasEmployee" />
<owl:hasValue rdf:resource="TaroYojigen" />
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
例8は噛み砕くと、四次元グループに属する会社にはそれぞれ少なくとも一人は「四次元太郎」という人が働いている、ということになります。 非推奨クラス、非推奨プロパティ4章でも少しとりあげましたが、バージョンが次のものに更新されるときに使われなくなる可能性のある語彙を、owl:DeprecatedClassとowl:DeprecatedPropertyで記述し、非推奨とします。 例9:DeprecatedClass、DeprecatedProperty <owl:DeprecatedClass rdf:ID="Car"> <rdf:comment> Automobile is now preffered</rdf:comment> </owl:DeprecatedClass> <owl:DeprecatedProperty rdf:ID="hasDriver"> <rdf:comment> Drives is now preffered</rdf:comment> </owl:DeprecatedProperty> この例ではCarクラスとhasDriverプロパティを定義して、自動車を表すクラスはCarよりもAutomobileが望ましいという場合と、hasDriverよりもDrivesとして人間を主語とするほうが望ましい場合を考えています。このときこのクラスやプロパティを非推奨とし、以降使用してはいけないことを表します。このDeprecatedClass、DeprecatedPropertyは後方互換性と組み合わせることにより意味をなします。 |
![]()
![]()
|