質問

クラスの説明でサブクラスフと同等のクラスを混ぜることと、推論者がどのように動作するかに興味があります。

具体的には、同じクラスの同等のクラスとサブクラソーの両方のアサーションの両方を持っている場合、同等のクラスとサブクラソフ条件の両方を行う必要があります。

それともこれは悪い習慣ですか?

たとえば(宣言省略):

ObjectPropertyRange(:format :Bar)
ObjectPropertyRange(:format owl:Thing)
EquivalentClass(:Foo ObjectSomeValuesFrom(:format :Bar))
SubClassOf(:Foo :Sna)

以下のケースでそれを確実にしたい、 :x に分類されます :Foo, 、同等のクラスとサブクラソフの両方のアサーションが満たされているためです。

ClassAssertion(:x :Sna)
ObjectPropertyAssertion(:format :x :someBar)

だが :y サブクラスフが満たされていないため、そうではありません。

ClassAssertion(:y :NotASna)
ObjectPropertyAssertion(:format :y :someOtherBar)

ありがとう、

ジョナサン

役に立ちましたか?

解決

私はあなたの質問を完全には理解していませんが、いくつかのことを明確にしようとします。まず第一に、次の公理はあなたの質問とは無関係に思えます(そして、2番目はとにかく冗長です。 owl:Thing 任意のプロパティの範囲です):

ObjectPropertyRange(:format :Bar)
ObjectPropertyRange(:format owl:Thing)

もう1つはそれです EquivalentClasses- アシオムは、構文砂糖と見なすことができます SubClassOf-axioms、例

EquivalentClasses(C1 C2)

論理的に同等です

SubClassOf(C1 C2)
SubClassOf(C2 C1)

だからあなたはあなたを書き直すことができます EquivalentClasses なので:

SubClassOf(ObjectSomeValuesFrom(:format :Bar) :Foo)
SubClassOf(:Foo ObjectSomeValuesFrom(:format :Bar))

これは、あなたのオントロジーが何を伴うかについての理解を簡素化するかもしれません。

さて、あなたが言うなら:

ClassAssertion(:x :Sna)
ObjectPropertyAssertion(:format :x :someBar)

私はあなたが言いたいと思っています:

ClassAssertion(:x :Sna)
ClassAssertion(:someBar :Bar)
ObjectPropertyAssertion(:format :x :someBar)

これにはそれが伴います :x 両方 :Foo:Sna, 、それは確かに可能です :Foo のサブクラスです :Sna.

あなたが言う時

ClassAssertion(:y :NotASna)
ObjectPropertyAssertion(:format :y :someOtherBar)

私はあなたが意味すると思います:

ClassAssertion(:y :NotASna)
ClassAssertion(:someOtherBar :Bar)
DisjointClasses(:NotASna :Sna)
ObjectPropertyAssertion(:format :y :someOtherBar)

これは論理的な矛盾です :y aになることが必要です :Foo (これはのサブクラスです :Sna)、 しかし同時に :y 恥をかいているクラスにいると主張されています :Sna.

また、その知識を使用しなかったことにも注意してください

SubClassOf(:Foo ObjectSomeValuesFrom(:format :Bar))

から続いた EquivalentClasses-公理。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top