フクロウ内の同等のクラスとサブクラスの混合
-
12-10-2019 - |
質問
クラスの説明でサブクラスフと同等のクラスを混ぜることと、推論者がどのように動作するかに興味があります。
具体的には、同じクラスの同等のクラスとサブクラソーの両方のアサーションの両方を持っている場合、同等のクラスとサブクラソフ条件の両方を行う必要があります。
それともこれは悪い習慣ですか?
たとえば(宣言省略):
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
-公理。