I am half way reading the OWL2 primer and is having problem understanding the universal quantification
The example given is
EquivalentClasses(
:HappyPerson
ObjectAllValuesFrom( :hasChild :HappyPerson )
)
It says somebody is a happy person exactly if all their children are happy persons. But what if John Doe has no children can he be an instance of HappyPerson? What about his parent?
I also find this part very confusing, it says:
Hence, by our above statement, every childless person would be qualified as happy.
but wouldn't it violate the ObjectAllValuesFrom() constructor?
I think the primer actually does quite a good job at explaining this, particularly the following:
Natural language indicators for the usage of universal quantification are words like “only,” “exclusively,” or “nothing but.”
To simplify this a bit further, consider the expression you've given:
HappyPerson ≡ ∀ hasChild . HappyPerson
This says that a HappyPerson
is someone who only has children who are also HappyPerson
(are also happy). Logically, this actually says nothing about the existence of instances of happy children. It simply serves as a universal constraint on any children that may exist (note that this includes any instances of HappyPerson
that don't have any children).
Compare this to the existential quantifier, exists (∃):
HappyPerson ≡ ∃ hasChild . HappyPerson
This says that a HappyPerson
is someone who has at least one child that is also a HappyPerson
. In constrast to (∀), this expression actually implies the existence of a happy child for every instance of a HappyPerson
.
The answer, albeit initially unintuitive, lies in the interpretation/semantics of the ObjectAllValuesFrom
OWL construct in first-order logic (actually, Description Logic). Fundamentally, the ObjectAllValuesFrom
construct relates to the logical universal quantifier (∀), and the ObjectSomeValuesFrom
construct relates to the logical existential quantifier (∃).