Mischen equivalentClass und SubClass in OWL
-
12-10-2019 - |
Frage
Ich bin neugierig auf subClassOf und equivalentClass in einer Klasse Beschreibung Mischen und wie ein reasoner verhalten würde.
Insbesondere dann, wenn ich sowohl eine equivalentClass und eine subClassOf Behauptung für die gleiche Klasse haben, tun sowohl die equivalentClass und die subClassOf Bedingungen müssen für einen einzelnen zu erfüllenden in eingestuft werden, dass die Klasse, oder nur die equivalentClass?
Oder ist dies eine schlechte Praxis?
Zum Beispiel (Erklärungen weggelassen):
ObjectPropertyRange(:format :Bar)
ObjectPropertyRange(:format owl:Thing)
EquivalentClass(:Foo ObjectSomeValuesFrom(:format :Bar))
SubClassOf(:Foo :Sna)
Ich möchte sicherstellen, dass unten im Fall :x
als :Foo
eingestuft, da beide die equivalentClass und subClassOf Behauptungen erfüllt sind:
ClassAssertion(:x :Sna)
ObjectPropertyAssertion(:format :x :someBar)
Aber :y
ist nicht, weil die subClassOf nicht erfüllt ist:
ClassAssertion(:y :NotASna)
ObjectPropertyAssertion(:format :y :someOtherBar)
Danke,
Jonathan
Lösung
Das verstehe ich nicht ganz Ihre Frage, aber ich werde versuchen, einige Dinge zu klären. Zunächst einmal scheinen die folgenden Axiome irrelevant für Ihre Frage (und die zweite ist überflüssig, weil ohnehin owl:Thing
jede Eigenschaft des Bereichs):
ObjectPropertyRange(:format :Bar)
ObjectPropertyRange(:format owl:Thing)
Die andere Sache ist, dass die EquivalentClasses
-Axiome als syntaktischer Zucker für SubClassOf
-Axiome zu sehen sind, z.
EquivalentClasses(C1 C2)
ist logisch äquivalent zu
SubClassOf(C1 C2)
SubClassOf(C2 C1)
So können Sie Ihre EquivalentClasses
umschreiben kann:
SubClassOf(ObjectSomeValuesFrom(:format :Bar) :Foo)
SubClassOf(:Foo ObjectSomeValuesFrom(:format :Bar))
Dies würde vielleicht vereinfachen zu verstehen, was Ihre Folgerungen Ontologie macht.
Wenn Sie jetzt sagen:
ClassAssertion(:x :Sna)
ObjectPropertyAssertion(:format :x :someBar)
Ich gehe davon aus, dass Sie sagen wollen:
ClassAssertion(:x :Sna)
ClassAssertion(:someBar :Bar)
ObjectPropertyAssertion(:format :x :someBar)
Dies hat zur Folge, dass :x
sowohl :Foo
und :Sna
, was sicherlich möglich ist, weil :Foo
eine Unterklasse von :Sna
ist.
Wenn Sie sagen,
ClassAssertion(:y :NotASna)
ObjectPropertyAssertion(:format :y :someOtherBar)
Ich gehe davon aus, dass Sie nach:
ClassAssertion(:y :NotASna)
ClassAssertion(:someOtherBar :Bar)
DisjointClasses(:NotASna :Sna)
ObjectPropertyAssertion(:format :y :someOtherBar)
Dies ist eine logische Inkonsistenz, da :y
brachte eine :Foo
zu sein (die eine Unterklasse von :Sna
ist), aber zugleich :y
behauptet wird in einer Klasse zu sein, die disjunkt :Sna
ist.
Beachten Sie auch, dass wir nicht das Wissen genutzt haben, dass
SubClassOf(:Foo ObjectSomeValuesFrom(:format :Bar))
, die aus dem EquivalentClasses
-Axiom gefolgt.