Yes, this is all normal. OWL has an open world assumption, and does not have a unique name assumption. Taken together, this means that given two names (e.g. Move_faster
and Eat_faster
), an OWL reasoner cannot make any assumptions as to whether these names actually denote the same individual.
The ontology you describe is not inconsistent, because it's possible that Move_faster
and Eat_faster
are actually the same thing (indeed, an OWL reasoner will make exactly that conclusion), in which case it will still be true that Boots
fulfills exactly one Need
. The only way to create an inconsistency here is to add the assertion Move_faster owl:differentFrom Eat_faster
.
Similarly, if Boots
fulfills nothing in your ontology, an OWL reasoner will simply assume that there is some unnamed Need
that Boots
does fulfill. This is the open-world assumption at work.
Boots
fulfilling something which is not (known to be) a Need
is also not an inconsistency, because the fulfills exactly 1 Need
restriction says nothing about things an instance of that class might fulfill which aren't members of Need
. You would need to add an allValuesFrom
restriction to make this an inconsistency - and even then, it's only inconsistent if the thing fulfilled is known to be a member of a class which is disjoint from Need
.