I am trying understand cases where vacuous entailment occurs due to use of universal quantification in Protege. That is, axioms of the form:
A rel *only* B
Here is my setup:
I have created an ontology that (more or less) follows the one described in this Ontogenesis article:
http://ontogenesis.knowledgeblog.org/1260
It consists of an owns
relation and two high level disjoint classes: person
and pet
.
Under the pet class, I have three primitive disjoint classes: dog
, elephant
, and newt
.
Below the person class, I have a defined class pet owner
, defined as follows:
'pet owner' equivalent_to person and (owns only pet)
Lastly, I have created and individual person, named person 1
, that does not own any pets.
Universal quantification:
My understanding of universal quantification is that the only
quantifier describes those individuals that only have relationships to individuals of a specific class. This entails that individuals that do not have any relationships to another individual would also be described by universal quantification.
In my example, I thought person 1
would be inferred to be a pet owner
, since person 1
does not own
any pets
or stand in any other relationships. However, when I run the reasoner (HermiT and Pellet), this does not turn out to be the case. Person 1
is not inferred to be a member of pet owner
.
So, it seems that I am not understanding universal quantification. Can someone please help me?
The problem here is that you didn't take into account Open World Assumption (OWA). By OWA the ontology only contains facts that are known; there might be other facts. If you say nothing about the things person 1
owns, it doesn't mean that it owns nothing. It might own other things, that are not in the ontology. So your universal restriction may prevent someone to be a pet owner (in case they own something that is not a pet, and the corresponding axiom is in the ontology). To make someone a pet owner, you might 'close' the information about it, e.g. saying that known pets are the only things that person owns. For this you may use owns only {pet1, pet2, pet3}
construction.