Suppose you have the following situation:
Car -- hasEngine --> Engine
Engine -- hasPiston --> Piston
How can I specify in owl that this situation implies the existence of this relationship
Car -- hasPart --> Piston
and also the opposite implied relationship ?
Piston -- partOf --> Car
My point is not to solve that specific problem, it's more of this kind: if you have a given set S of relationships, how can you express can you infer a connected relationship which holds true only if S is true for all the relationships ?
Another example, this time on instances. suppose you want to define that when this triples are present in your rdf graph:
Person -- hasFood --> Tomato
Tomato -- freshness --> Rotten
the existence of this triple is automatically inferred
Hospital -- expectedPatient --> Person
how would you specify this behavior in owl ?