Domanda

Sono curioso di miscelazione subClassOf e equivalentClass in una descrizione della classe, e come un ragionatore comporterei.

In particolare, se ho sia un equivalentClass e un'asserzione subClassOf per la stessa classe, fare entrambe le cose l'equivalentClass e le condizioni subClassOf devono essere soddisfatti per un individuo di classificare in questa classe, o solo l'equivalentClass?

O si tratta di una cattiva pratica?

Ad esempio (dichiarazioni omesso):

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

Voglio assicurare che in caso di sotto, :x è classificato come :Foo, perché entrambe le affermazioni equivalentClass e subClassOf sono soddisfatti:

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

Ma :y non è, perché il subClassOf non è soddisfatto:

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

Grazie,

Jonathan

È stato utile?

Soluzione

I don't completely understand your question but I'll try to clarify some things. First of all, the following axioms seem irrelevant for your question (and the second is redundant anyway because owl:Thing is any property's range):

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

The other thing is that the EquivalentClasses-axioms can be seen as a syntactic sugar for SubClassOf-axioms, e.g.

EquivalentClasses(C1 C2)

is logically equivalent to

SubClassOf(C1 C2)
SubClassOf(C2 C1)

So you can rewrite your EquivalentClasses as:

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

This would maybe simplify understanding of what entailments your ontology makes.

Now, if you say:

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

I am assuming that you want to say:

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

This entails that :x is both :Foo and :Sna, which is certainly possible because :Foo is a subclass of :Sna.

When you say

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

I assume that you mean:

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

This is a logical inconsistency because :y is entailed to be a :Foo (which is a subclass of :Sna), but at the same time :y is asserted to be in a class that is disjoint from :Sna.

Note also that we didn't use the knowledge that

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

which followed from the EquivalentClasses-axiom.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top