Both of these inferences can be applied as attribute settings on relationship (Object) properties in the domain model editor:
- Symmetric properties are set with Is Symmetric
- Inverse properties are set with Is InverseOf
These attributes can be added, edited or removed only if the Class being modified has no instance data associated with it.
A symmetric property can only be added to a Class where the range of that property is the same Class or a subclass of it. The property should not be an inverseOf property.
To add a symmetric property, on a data property set the Is Symmetric attribute:
When adding data for a Class that has a symmetric property, the inverse relationship will automatically be added (inferred) to the Concept instances referenced by this property.
In the following example, Concept Jim has a symmetric property hasSpouse. Adding the Concept Jane to that property...
… automatically adds hasSpouse -> Jim to the Concept Jane:
Inverse Relationship Properties
Inverse relationships can only be added to properties which share each other's classes as their range or subClass definition. In other words, an inverseOf relationship can be added to property A on Class A, where the range of property A is Class B whose own property (B) has a range of Class A or is a subclass of Class A.
To add an inverse relationship property to an object property, select the property for the Class in range from the Is InverseOf dropdown. In the example below teaches, a property of Person, is selected as the inverse relationship of Subject -> specialist:
This step will also add the reciprocal inverse relationship to the referenced Class’s property, in this case specialist is automatically selected as Is InverseOf on Person -> teaches.
When adding data to a property with an inverse relationship, the Is InverseOf property will also be inferred on the referenced Concept. In the example, adding Jane to the specialist property of the Concept Science…
… means that Science is automatically added to the teaches property on the Concept Jane.
To remove an inverse relationship from a property, select the None option from the Is InverseOf dropdown. This will also remove the reciprocal relationship from the referenced inverseOf Class.