Metamodel

A metamodel is a precise definition of the metatypes and features needed for creating semantic models. Metamodeling is supported in MDWorkbench using EMF (http://www.eclipse.org/emf).

MDWorkbench enables you to define text generators and model transformators using text templates and rulesets based on metamodels. Rules are defined using metamodel types and features, and are executed on instances of a metamodel, which are models.

MDWorkbench comes with predefined metamodels: UML 1.3 and UML 2.1 (http://www.uml.org). But due to its open architecture, you can add additional metamodels, as well as model connectors to connect MDWorkbench with external tools and files.

Each metamodel in MDWorkbench has a unique identifier (e.g. uml21), used to reference the metamodel in rulesets and text templates. The identifier of the metamodel is visible in the Properties view (Window > Show View > Properties) when the metamodel is selected in the Models view.

MOF-compliant metamodels

For those of you that are familiar with OMG (Object Management Group) MOF (Meta Object Facility), you may be wondering how MDWorkbench metamodels relates to it.

Actually, EMF started out as an implementation of the MOF specification but evolved from there based on the experience we gained from implementing a large set of tools using it. EMF can be thought of as a highly efficient Java implementation of a core subset of the MOF API. However, to avoid any confusion, the MOF-like core meta model in EMF is called Ecore. In the current proposal for MOF 2.0, a similar subset of the MOF model, which it calls EMOF (Essential MOF), is separated out. There are small, mostly naming differences between Ecore and EMOF; however, EMF can transparently read and write serializations of EMOF.

Here is the complete class hierarchy of the Ecore model (shaded boxes are abstract classes):


Ecore metamodel

Related concepts
Model

Related tasks
Browsing a metamodel