Reputation: 505
I'm currently creating an Ontology about Inventions in Protégé 4.
I declared :
fulfills
Invention
and Need
Still on Protégé, my class Invention is defined by the following assertion :
Invention subClassOf fulfills exactly 1 Need
This means I don't want any individual of type Invention
which doesn't fulfills
a Need
or more than one.
To test this assertion, I created an individual of type Invention called Boots
and two individuals of type Need called respectively Move_faster
and Eat_faster
.
I asserted that Boots fulfills Move_faster
and Boots fulfills Eat_faster
, which should break my consistency because an Invention is supposed to fulfill only one Need.
But, when I launch HermiT reasoner, my ontology is still consistent, and even when :
Boots
fulfills nothingBoots
fulfills any individual which is not a Need
Is it normal ?
Thanks
Upvotes: 2
Views: 814
Reputation: 13941
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
.
Upvotes: 6