2017-02-08 4 views
0

owl:Class Personowl:Class Fruitがあるとします。それ以外に我々はowl:ObjectProperty loves(ドメイン:Person、範囲:Fruit)を持っています。両方のクラスにはいくつかのインスタンスがあります。OWL:個人とある範囲の個人との関係を事前に定義することは可能ですか?

クラスPersonの1つの特定のインスタンスが、その人物と他のすべてのFruitインスタンスとの間のすべての愛関係を手動で定義することなく、リンゴ(Fruitのインスタンス)以外のすべての果物を好きであると表現することは可能ですかリンゴを除く)?

より抽象的なレベル:インスタンスとインスタンスの範囲(クラスレベルまたはインスタンス自体のいずれか)の間の関係を定義することは可能ですか?

+1

かもしれませんfication](http://stackoverflow.com/questions/16989042/owl-2-rolification)に役立ちます。 –

答えて

1

「apple」が「fruit」または「apple」のインスタンスであるかどうかは、「fruit」のサブクラスであるかどうかによって決まります。リンゴのインスタンスがたくさんあるので、「リンゴ」はクラスであると言うのが理にかなっています。しかし、Ignazioは "apple"がインスタンスであり、彼の答えが受け入れられた解決法を提示して以来、私は "apple"がインスタンスであると仮定して始めます。 。この:bobはリンゴが好きではない人の識別子であると仮定すると(:Fruitあると:appleではありませんすべてが:bobにより、必要な愛されていることを言っている注

:Fruit a owl:Class . 
:apple a :Fruit . 
:Person a owl:Class . 
:bob a :Person . 
:loves a owl:ObjectProperty . 
[ a owl:Class; 
    owl:intersectionOf (
    :Fruit 
    [ a owl:Class; owl:complementOf [a owl:Class; owl:oneOf (:apple)] ] 
) 
] rdfs:subClassOf [ 
    a owl:Restriction; 
    owl:onProperty [ owl:inverseOf :loves ]; 
    owl:hasValue :bob 
] . 

:次に、あなたがあなたが望むものを達成することができますこれはまさにOPが望んでいるものをモデル化しないIgnazioのソリューション、異なる

さて、りんごのクラスが存在する場合、その解決策は次のようになります。

あなたは[roliをを
:Fruit a owl:Class . 
:Apple rdfs:subClassOf :Fruit . 
:Person a owl:Class . 
:bob a :Person . 
:loves a owl:ObjectProperty . 
[ a owl:Class; 
    owl:intersectionOf (
    :Fruit 
    [ a owl:Class; owl:complementOf :Apple ] 
) 
] rdfs:subClassOf [ 
    a owl:Restriction; 
    owl:onProperty [ owl:inverseOf :loves ]; 
    owl:hasValue :bob 
] . 
+0

私の本来の目的は、リンゴをフルーツのインスタンスとして見ることでした。しかし、それはクラスであると仮定することが理にかなっていることがわかります。両方の方法を説明していただきありがとうございます! – phil155

+0

私はProtégéで提案したことをするのに苦労しています。(AppleがFruitのインスタンスであると仮定して):タイプに「個体を愛しています。果物のいくつかの例がありますが、それらはすべて別個の個体ですが、推論主義者は単一の愛関係を推論していません。タイプ:「果物のみを愛している」は、いかなる推論ももたらさない。私がここで紛失しているものに関するアイデア?あなたの助けが高く評価されています! :) – phil155

+1

Protégé5を使用している場合は、クラス「Fruit」を選択します。 "Description"領域には、 "General class axioms"がなければなりません。丸で囲んだ+をクリックして、新しく開いたボックスに以下のテキストを追加します: 'フルーツと(not({apple}))SubClassOf逆の(愛する)値のボブ'。次にOKを押します。 –

2

あなたの説明には1つの制限が適用されます。あなたの質問の最初の部分のクラスから1つのインスタンスを除外するには、フルーツクラスとOneOf(Apple)の否定を交差させて、それを使用してアップルの嫌悪感をあなたのラブプロパティの範囲アサーションとして宣言します。

関連する問題