| Previous | Table of Contents | Next | 
   This Clause describes the model that defines the MOF. The MOF provides a set of modeling elements, including the rules for
            their use, with which to construct models. Specifically, the MOF modeling elements support development of metamodels. This
            focus enables the MOF to provide a more domain-specific modeling environment for defining meta-models instead of a general-purpose
            modeling environment. 
   A well-designed modeling tool or facility should be based on a meta-model that represents the modeling elements and the rules
            provided by the tool or facility. 
   Every meta-model is also a model. If the MOF Model described in this sub clause is the meta-model for the MOF, where is the
            model for this meta-model? Formally, the MOF is defined in itself; that is, the modeling elements defined in the MOF Model
            and provided by the MOF are used to define the MOF Model itself. In essence, the MOF Model is its own meta-model. However,
            this circular definition does not support presentation of the model. Therefore, this specification describes the MOF narratively
            and through the use of UML notation, tables, and Object Constraint Language (OCL) expressions. 
   Note that the use of UML notation is a convenience to the designers of the MOF and to the readers of the MOF specification.
            The semantics of the MOF Model are completely defined in the MOF specification and do not depend on the semantics of any other
            model. The MOF interfaces used to manipulate meta-models are dependent on CORBA in that these interfaces are specified using
            CORBA IDL. 
   A significant amount of the MOF Model syntax and semantics definition is constraint-based. This specification describes the
            constraint expressions as clearly as possible. In addition, the specification provides a reference to the OCL expression that
            defines each constraint. 
   The OCL, which is defined in the UML 1.4 specification (http://www.omg.org/technology/documents/formal/uml.htm), provides
            a small set of language elements used to define expressions. As an expression language, OCL cannot change the state of objects;
            however, it can express constraints (including invariants, preconditions, and post-conditions). OCL expressions use operations
            defined in the MOF Model with the attribute isQuery set to TRUE. (Such operations do not change the state of the object.)
            To ensure complete specification of constraints, this document provides OCL definitions for MOF-defined operations used in
            OCL expressions. In addition, to avoid ambiguity or misinterpretation this specification uses OCL to define a few of the most
            complex concepts of the MOF Model. 
   The interfaces through which the MOF is utilized are generated from the MOF Model. However, these interfaces do not provide
            the semantic information necessary to determine the behavior of their operations. Therefore, it is essential to understand
            the MOF in terms of its model and related semantics, not just its interfaces.