The Xplain data dictionary is self-describing (meta data model). Its kernel contains three interrelated types, as shown below:
The DDL statements are:
base name (A40). base domain (A80). base kind (A14)= aggregation, specialisation. base role (A40). type type = name, representation. type attribute = composite_type, type, kind. type role attribute = [attribute], role.
These data model definitions contain the relevant inherent constraints:
- Both composite and base types occur as instances of the first type definition.
- An attribute is defined as a relationship between two types, one being composite and the other being composite or base. Kind is related to the two abstractions supported in the data model, its domain includes the values aggregation and generalization (denoted by square brackets in type definitions).
- A role attribute is considered as a special attribute with a role, an example is attribute composite_type with role: composite.
Aggregation and generalization abstractions are essential in semantic data models. The basic structure of the meta model confirms this. It consists of three interrelated types, with two relationships: between type and attribute and between attribute and role attribute. It is curious to see that the first concerns aggregation, the other generalization.