Mescolando equivalentClass e SubClass in OWL
-
12-10-2019 - |
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
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.