[
OsEATools |
MetaModel |
Overview |
Base-principles and requirements |
Model-objects |
Entities |
Relations |
Models |
Categories ]
Metamodel: Relations
A
relation represents a perceived relationship between any two entities.
A
relation-type is a template (‘class’) for a specific type of relation.
(Relations are always binary, between
two entities. An apparent n-ary relation is logically a cluster of relations of the same type of which one end of each relation connects in the same way to the same entity.)
A relation is always descriptive. It may optionally also imply semantics of relationship, to be verified within a model-type and model-instance.
Each end of the relation identifies the entity-type(s) to which it may connect, by specifying the matching ‘linkable’ connection-interface. Since these connection-interfaces may occur at any level in the entity-type stack, a relation may be linked to any entity-type which includes the respective connection anywhere in its stack – hence a relation does not need to be defined on a per-entity-type level, thus minimising the number of relations that need to be defined on adding a new entity-type to the metamodel repository.
A relation-type may also specify that it may
not be connected to a given connection-type. (To support modal-logics, it should also be possible to allow or prevent connection based on property-values within the entity-type or its instances: this principle should be included within the metamodel design, but may be left for implementation at a later stage.)
A relation-type is constructed as a stack of subclasses, equivalent to the subclass stack for entity-types. A relation-type may therefore be configured to connect with any combination of the presence and/or absence (and/or, at a later stage, computed modal-logic) of connections within the entity-type stack.
As for entity-types, each member of the relation-type subclass-stack may carry any number of its own properties and/or display-methods. Likewise an instance of a relation may be reconverted back to a relation-type.
In certain cases, a relation-type may connect to instances of another relation-type rather than to an entity-type. (This is required for some model-types such as Object Role Modeling [ORM].) To support this, a relation-type may optionally expose its own ‘linkable’ connection-interface property, exactly as for entity-types.
[
OsEATools |
MetaModel |
Overview |
Base-principles and requirements |
Model-objects |
Entities |
Relations |
Models |
Categories ]