| 19 October 2009
The Registry implements a simple, yet elegant two layer data model consisting of Entity and Property objects. Each metadata concept is represented in the Registry by an Entity. Each Entity has an ID that is unique in the context of the Registry instance. In addition, each Entity is associated with a Space and has a type and a name. The tuple Space, Type and Name is also unique within the Registry instance.
Entity
The entity typing scheme is also simple and each Entity is "tagged" with a type listed in the Dictionary (see later). Other than providing a representation and an identity the Entity does not store any metadata and instead this is provided for by decorating Entity instances with Property instances which together form a parent-child relationship (an Entity having zero or more Properties).
Property
Property objects are more complex than their parents in that they have type, name and values. By values it is meant that a Property can take one of 4 representations: flag, string, number and reference. Flag is the most simple form and is represented by the existence of a Property with a type and name. String values are unicode and can store large values for which the underlying implementation switches between VARCHAR and TEXT representation. Number values are stored as BIGDECIMAL(30,10). The final form of a Property value is as an entity-reference which in the case of the Registry is arguably the most important form. As its name suggests a referential property can point to any other Entity within the Registry and underpins the relationship model within the Registry.
The combination of typed property reference with typed entities provides a simple yet expressive foundation on which to implement other metamodels. An example is provided in the diagram below which illustrates a small extract of the metamodel for a Java class.



