Protege reverse object properties

313 Views Asked by At

I am trying to define two reverse object properties.

The object properties are :

  • hasChild
  • hasParent

As it's obvious if JOHN hasParent ANNA, then ANNA hasChild JOHN. This seems to be accomplished by using Protege's InverseOf but then if we assume ANNA is Happy, The below DL Query:

hasChild only Happy

returns JOHN too. The reasoner explains that hasChild is inverseOf hasParent. Can someone help me clear things up? Thanks in advance!

1

There are 1 best solutions below

0
Ignazio On

hasChild only Happy is a universal restriction without accompanying existential restriction. Under Open World assumption, these universal restrictions end up including all individuals defined, because for all includes the cases where there is no filler for the property.

To verify if this is the case, create a named classe defined as hasChild only Happy and check which classes are equivalent to it. Most likely, you'll find owl:Thing in the results. therefore, all individuals will be answers to that query.

To avoid this, add hasChild some Happy to your query, so that there must be a filler before the inference can be drawn.

However, notice that you want the parent to be happy. Maybe you meant to reverse the direction and say hasParent only Happy?