HasSubtype Referencesare used to define subtypes of ReferenceTypes. It is not required to provide the HasSubtype Referencefor the supertype, but it is required that the subtype provides the inverse Referenceto its supertype. The following rules for subtyping apply.

  1. The semantic of a ReferenceType(e.g. “spans a hierarchy”) is inherited to its subtypes and can be refined there (e.g. “spans a special hierarchy”). The DisplayName, and also the InverseNamefor non-symmetric ReferenceTypes, reflect the specialization.
  2. If a ReferenceTypespecifies some constraints (e.g. “allow no loops”) this is inherited and can only be refined (e.g. inheriting “no loops” could be refined as “shall be a tree – only one parent”) but not lowered (e.g. “allow loops”).
  3. The constraints concerning which NodeClassescan be referenced are also inherited and can only be further restricted. That is, if a ReferenceType“A” is not allowed to relate an Objectwith an ObjectType, this is also true for its subtypes.
  4. A ReferenceTypeshall have exactly one supertype, except for the References ReferenceTypedefined in 7.2as the root type of the ReferenceTypehierarchy. The ReferenceTypehierarchy does not support multiple inheritances.