1

私は Protégé を初めて使用するので、非常に基本的な質問があります。私はクラスChildParent. Childサブクラスを持っていGirlます。

child1は typeGirlchild2持ち、 typeChildを持ち、 typeの両方annaを持ちます。さらに、関係があり、それ以上の特徴はありません。peterParentanna isParentOf child1peter isParentOf child2

ParentOfGirlと同等になるようにクラスを定義したいと思いますParent and isParentOf only Girl。推論器はannaがこの新しい型を持っていると推測すると思いますが、そうではありません。

親は複数の子を持つことができるため、Inverse functionalプロパティを追加しました。次に、タイプを持つリレーションにisParentOfも追加すると、が対称である必要はありません。SymmetricannaParentOfGirlisParentOf

対称性のない上記のセマンティクスを見ると、次のようになります。

ParentOfGirl ≡ {アンナ、ピーター} ⋂ { x ∊ owl:Thing | if ∀y (x, y) ∊ isParentOf then y ∊ Girl}

child1 ∊ 子供と child1 ∊ 女の子

isParentOf ≡ {(アンナ、子1)、(ピーター、子2)}

次にはに関連するchild1タイプの唯一の個体であり、タイプ も持っています。この場合、推論者は関係を右から左にしか見ることができないように思えます。さらに、child2 との関係がなければ、それも含まれると思います。しかし、これも起こりません。ChildannaGirlisParentOfannapeterParentOfGirl

なぜ推論器 (ペレットまたは HermiT) はそれannaが であると 認識しないのParentOfGirlですか?

4

1 に答える 1

1

@AKSW はコメントで正しいです。推論者は、親に女の子しかいないかどうかを判断できません。たとえば、個体にタイプを追加することによって、この機能をアサートする必要があります。

この場合、このアサーションは求める推論と同等になりますが、これはあまり良い回避策ではありません。

forall を some に変更すると、少なくとも 1 人の女の子の親を見つけることができます。これはターゲット クラスのスーパークラスであり、アプリケーションに役立つ可能性があります。

于 2016-10-08T12:22:19.277 に答える