Search code examples
owlprotegedlquery

SuperProperty Of Chaining


Imagine that given the following two relations:
a(x,y)
b(y,z)
we could derive that:
c(x,z)
then this can be explicitly expressed in Protégé by adding a SuperProperty Of (Chain) for the c property like this:
a o b SubPropertyOf c

With that expressed, imagine that we only know:
a(x,y)
c(x,z)
how can we explicitly express that we therefore also know:
b(y,z)
and this would again be with a SuperProperty Of (Chain), but for the b property?

I first thought to try:
a o inverse(c) SubPropertyOf b

This Protégé didn't like, saying there was a circle. Now I'm just very confused.


Solution

  • The correct expression for the b(y,z) would be inverse(a) o c SubPropertyOf b, as you want to express that the property path from y to z corresponds to b. If you have only this axiom this should give you necessary inference. However, you could not use it together with the first axiom, a o b SubPropertyOf c. In this case, you 'define' c via b in the axiom with direct properties and the b via c in the axiom with inverse property. So you have to know c to define c. This kind of loops are disallowed in OWL 2 DL, that's why Protege tells you about cyclical definitions. All in all, you can only have one of these axioms, but not both of them at the same time.