So, here is something with OWL / Protégé I can't quite understand:
Let's say I have a class Clazz
which is an enumerated class containing only the individuals I1
and I2
. I then create a third individual I3
and declare it to be of type Clazz
.
If I now start a reasoner, I would expect it to infer a sameIndividualAs
between all (or at least some) of the indidivuals. This is not the case, I tested with both Hermit and Pellet reasoners.
If I explicitly state the three individuals to be different from each other, the ontology becomes inconsistent. Can anyone tell me why the individuals are not showing up to be sameIndividualAs
in Protégé in the first case?
As there is no unique name assumption in OWL, the ontology is consistent until it is explicitly asserted that the manually typed individual is owl:differentFrom
all of the individuals defining the class (the set restricted with owl:oneOf
). If that's not asserted, in case there is more than one individual, the only inference that can be made is that, in your case, I1
and I2
are members of the class Clazz
. I3
should be the same as one of the individuals, but there is no information to decide as which. You can remove this ambiguity by making Clazz
defined as owl:oneOf :I1
. Then there will be no ambiguity and sufficient information to infer that :I3 owl:sameAs :I1
.