ODL element definition
ODL elements are defined on two different levels. The type level is a sort of meta-level, which defines common data types, i.e. the structure of data instances. Properties refer to type instantiations, i.e. each property represents an instance of a type in a certain context. Properties do have a type and types may consist of properties (which do have a type again etc.).
Since types and properties may refer to each other recursively, OSI allows referring to types in a property definition, which are not yet defined. OSI does not allow to refer to properties, which have not been defined before (e.g. in expressions).
Since ODABA allows defining global collections (extents), a list of ODL elements may start with a type definition but also with a property definition.
odl_definition |= type_dcl | view_dcl | interface_dcl | class_dcl | const_dcl | extent_dcl