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.
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.