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

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top