0

次のようなクラス階層があります。

Thing
  - ClassA
    -ClassC
    -ClassD
  - ClassB
    -ClassC
    -ClassE

クラス C は ClassA と ClassB の両方のサブクラスですが、ClassD と ClassE は ClassA または ClassB のサブクラスにすぎません

ここで、ClassA と ClassB のサブクラスの交差に相当するクラスを指定したいと思います。以下は機能しません。

NamedClass a owl:Class
NamedClass owl:equivalentClass (ClassA and ClassB)

その理由は、この種の規則が個人を分類するために推論者によって使用されるためです。つまり、タイプ ClassA および ClassB の個人 Ind1 があった場合、タイプ NamedClass にも分類されます。これは私が欲しいものではありません。ClassC 自体を NamedClass のサブクラスにしたい。

これはルール (SPIN など) を使用して達成できることはわかっていますが、ルールなしで実行できますか?

4

2 に答える 2

2

F を含む最初の階層から始めましょう。ただし、F が A と B の共通部分に相当することを宣言する前に:

ここに画像の説明を入力

次に、(A と B) を F と同等のクラスとして追加します。 Protégé は、交差する各クラスの下にある交差の同等またはサブクラスをレンダリングするのに十分スマートであるため、ここで F が 2 つの場所に表示されます。

ここに画像の説明を入力

推論者もその関係を確認できます。ここでは、Pellet をオンにして、DL クエリに F を入力し、サブクラスを要求しました。案の定、C は F のサブクラスです。

ここに画像の説明を入力

コピーして貼り付けることができるオントロジーは次のとおりです。

@prefix :      <http://stackoverflow.com/q/22221549/1281433/> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl:   <http://www.w3.org/2002/07/owl#> .
@prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

:ontology a owl:Ontology .

:A a owl:Class .
:B a owl:Class .
:C a owl:Class ; rdfs:subClassOf  :A , :B .
:D a owl:Class ; rdfs:subClassOf  :A .
:E a owl:Class ; rdfs:subClassOf  :B .
:F a owl:Class ;
     owl:equivalentClass [ a owl:Class ;
                           owl:intersectionOf  ( :A :B ) ] .
于 2014-03-06T13:33:15.600 に答える
0

はい、OWL を使用して、あるクラスが他の 2 つのクラスの共通部分として定義されることを定義できます。OWL 2 Primerを確認してください。

私が助けてくれることを願っています!

PS より高度なルールをモデルに適用する場合は、w3c の推奨事項である SWRL を使用することを勧めします。

于 2014-03-06T11:05:43.697 に答える