Figure 1: Quantum Entanglement
For a fuller treatment of this topic, see the whitepaper: Quantum Entanglement, Flipping Out and Inverse Properties.
An OWL object property is a way that two individuals can be related to each other. Direction is important. For example, consider the two relationships:
- being a parent: Michael has Joan as a parent, but Joan has Michael as a child.
- guaranteeing a loan: the US government guarantees a loan, but the loan is guaranteed by the US government.
The direction corresponds to which party you are taking the perspective of, the parent or child, the guarantor, or the thing being guaranteed. From the perspective of the child we might assert the triple:
Michael :hasParent Joan. Note that if Michael has Joan as a parent, then it is necessarily true that Joan has Michael as a child – and vice versa. So asserting any triple results in the implicit assertion of an inverse triple. It’s a bit like quantumly entangled particles, you cannot make a change to one w/o immediately affecting the other.
The property from the perspective of the other individual is called the inverse property. OWL provides a way to do refer to it in a triple. For example,
Joan :inverse(hasParent) Jennifer uses the hasParent property from Joan’s perspective to directly assert she has another child.
Figure 2: Property with anonymous inverse
If we wish, we can give the inverse property a name. Two good candidates are: hasChild, and parentOf.
Figure 3: Property with named inverse
The question naturally arises: when should you create an explicit named inverse property? There is no universal agreement on this issue, and at Semantic Arts, we have gone back and forth. Initially, we created them as a general rule, but then we noticed some down sides, so now we are more careful. Below are four downsides of using named inverses (roughly in order of growing importance). The first two relate to ease of learning and understanding the ontology. The last two relate inference and triple stores.
- Names: It can be difficult to think of a good name for the inverse, so you might as well just use the syntax that explicitly says it is the inverse. It will likely be easier to understand.
- Cluttered property hierarchy: Too many inverses can significantly clutter up the property hierarchy, making it difficult to find the property you need, and more generally, to learn and understand what properties there are in the ontology, and what they mean.
- Slower Inference: Too many named inverses can significantly slow down inference
- More Space: If you run inference and materialize the triples, a named inverse will double the number of triples that use a given property
So our current practice is to not create inverses unless we see a compelling reason to do so, and it is clear that those benefits outweigh the downsides.