Relations
A relation is best defined as a 3-tuple: (RelationRolon, SubjectRolon, ObjectRolon), where
- RelationRolon is a Rolon which defines a type of relationship,
- SubjectRolon is the Rolon to which the relation is added and
- ObjectRolon is the Rolon to which the subject is connected.
When adding a relation,
- The working context references the Subject Rolon,
- The alternate context references the Object Rolon and
- The RelationRolon is selected from a list of writable relations within the context of the Subject Rolon.
When removing a relation,
- The working context references the Subject Rolon,
- The alternate context references the Object Rolon and
- The RelationRolon is selected from a list of relations connecting the subject and object.
Adding a relation creates up to five (5) links:
- The RelationRolon must have a link to the SubjectRolon,
- Under the Relations element in the SubjectRolon there must be a link to the RelationRolon,
- Under the link to the RelationRolon in the SubjectRolon a link is added to the ObjectRolon,
- Under the InverseRelations element in the ObjectRolon there must be a link to the RelationRolon and
- Under the link to the RelationRolon in the ObjectRolon a link is added to the SubjectRolon.
Note that the sixth possible link, from the RelationRolon to the ObjectRolon, is NOT implemented.
Relation Rolons always reside under a Relations Rolon and can be defined for any Realm.
The scope of a Relation is determined by the current context but is only used when adding a relation and when doing a relation search.
Relation Rolons are also qualifiers, however they can only be used as a qualifier if they have a Qualifiers parent Rolon.