mmx metadata framework
...the DNA of your data
MMX metadata framework is a lightweight implementation of OMG Metadata Object Facility built on relational database technology. MMX framework
is based on three general concepts:
Metamodel | MMX Metamodel provides a storage mechanism for various knowledge models. The data model underlying the metadata framework is more abstract in nature than metadata models in general. The model consists of only a few abstract entities... see more.
Access layer | Object oriented methods can be exploited using inheritance to derive the whole data access layer from a small set of primitives created in SQL. MMX Metadata Framework provides several diverse methods of data access to fulfill different requirements... see more.
Generic transformation | A large part of relationships between different objects in metadata model are too complex to be described through simple static relations. Instead, universal data transformation concept is put to use enabling definition of transformations, mappings and transitions of any complexity... see more.

MMX G4 Design Rationale

July 11, 2010 14:00 by mmx

The primary goals for the next major revision (G4) of MMX Metadata Framework are:

  • OMG MOF compliance, providing facilities to map metamodels created in MOF to MMX Data Model and realize those metamodels in MMX Repository;
  • XML Schema compliance, providing methodology for realization of any metamodel expressed as an XML Schema;
  • support for very basic workflow functionality directly in Core MMX Metamodel;
  • inclusion of Dublin Core attributes and simplified RBAC support directly in MMX Core Metamodel.  

Changes from G3 to G4 in MMX Physical Data Model

Data column Change Comments


remove UML association types (association, aggregation, composition) are supported via containment_ind and reliance_ind flags in G4
md_relation_type.semantic_type_cd remove Semantics of a relationship is expressed directly in relationship type in G4
remove Deprecated. Not supported in G4.
md_relation_type.containment_ind add Indicates that this is a 'contains' association ('aggregation' in UML terms).
md_relation_type.reliance_ind add Indicates that this is an 'owns' or 'relies on' association ('composition' in UML terms). Note that an 'owns' association is also a 'contains' association so to properly indicate an UML composition both flags should contain True. 
md_property_type.domain_cd change Refers to an Enumeration class in metamodel. Replaces domain_type_cd from G3, that combined the meaning of both domain_cd and datatype_cd. 
md_property_type.datatype_cd add Refers to one of the Datatype classes in Core Metamodel. 
md_object.public_ind add Indicates that the object is publicly visible and RBAC permissions for the object are not to be checked. 
md_object.mutable_ind add Indicates that the object can be changed. False would freeze the object. 
md_object.workflow_num add Can be used to tag an object with a workflow state. Note that there are no universal states defined: an application is free to interpret this figure however it chooses to.
md_object.security_id remove Deprecated. Simplified RBAC implementation in G4 does not provide support for RBAC Object concept, G4 RBAC API functions realize this functionality in a more direct way instead. 
md_poperty.domain_id remove Deprecated. In G4 Enumerations are tracked on M2 level.
md_property.value_id add In MOF, a property can be used to identify an object instance. In that case this field would contain object_id of an object. 

Note 1. Enumerations are treated as Core Metamodel classes derived from DataType class and are realized on M2 level. EnumLiterals are realized as instances of one particular Enumeration class and are therefore stored on M1 level, ie. md_object.object_type_cd points to an object_type_cd on M2 level (md_object_type.object_type_cd).

Note 2. Core Metamodel provides very simple facilities to implement basic workflow functionality. These simple facilities come in form of state_ind, public_ind, mutable_ind and workflow_num fields of md_object table that, in combination with published_, edited_, created_ and changed_ timestamps are sufficient to handle basic workflow management needs. The details of a specific workflow implementation are left to an application developers.

Note 3. A simplified, 'low-calorie' RBAC implementation is part of Core Metamodel. User, Role and Permission are implemented as classes of RBAC metamodel. However, RBAC Object is realized as a property of a Permission object. This allows Permissions with multiple Objects, and both class-based (referring a class in M2) and object-based (referring a concrete object in M1) permissions are possible, even in mixed manner. Similarly, RBAC Operation is realized as a property of a Permission object, with enumerated value list stored in M1 as EnumLiterals. Again, interpretation of these Operation tokens is up to an application 'owning' those operations. Finally, in addition to standard RBAC features classes Privilege and Pattern provide additional functionality required to build easy-to-use permission management applications. Privilege acts as a template for Permission objects, Pattern as a template for Role objects.

Relational Database Metamodel

November 2, 2008 12:50 by marx
Probably the best and most comprehensive metamodel covering all of the aspects and details of a relational database instance is the one found in the Eclipse Project docs. The model is based on SQL-92, is MOF2 compliant and is “capable of representing all non-syntactic aspects of SQL92 Data Definition Language (at the ‘intermediate’ conformance level)”. The model is submitted by IBM as part of forthcoming OMG IMM specification. IMM (Information Management Metamodel) is the new moniker for CWM (Commaon Warehouse Metamodel) as the ‘Warehouse’ word was not digestable for some and replaces the long due CWM 2.0.

MMX Framework provides full implementation of the model as defined in OMG specs. It includes 80 classes (both abstract and concrete). One open issue is the form of a URI reference used to link back to a relational database object. There is no common agreement on this; actually a W3C incubator group W3C RDB2RDF XG is just about to release a recommendation that should cover this topic as well.

MMX Knowledge Model

September 29, 2008 12:35 by marx

MMX Metamodel provides a storage mechanism for various knowledge models. The data model underlying the metadata framework is more abstract in nature than metadata models in general. The model consists of only a few abstract entities, most remarkably, OBJECT, RELATION, EXPRESSION and PROPERTY. The rest of the entities and relationships are 'hidden' behind these root objects and can be derived (inherited) by typifying those. Most of the structure of the data model normally exposed in ER diagram is therefore actually stored as data (meta-metadata). 

MMX Metamodel can be seen as a general-purpose storage mechanism for different knowledge models, eg. Frame system, Description Logic (RDF). Data models for these knowledge models are instantiated inside MMX Metadata Model by defining a set of classes (MD_OBJECT TYPE records) and relations (MD_RELATION_TYPE records) between them. MMX Metamodel corresponds to M3 level (metametamodel) in MOF terms housing both M2 (metamodel) and M1 (model) levels. An arbitrary number of different data models can exist inside MMX Metadata Model simultaneously with relationships between them. Each of these data models constitutes a hierarchy of classes where the hierarchy might denote an instance relationship, a whole-part relationship or some other form of generic relationship between hierarchy members (see Construction of Controlled Vocabularies).  

Several metadata models are predefined in MMX Metamodel, eg:

However, any other type of data model can be described in MMX, eg.

  • Business process elements (business rules, mappings, transformations, computational methods);
  • Data processing events (schedule, batch, task);
  • Data acquisition and transformation processes (container, step, extract, transform, load);
  • Data demographics, statistics and quality measures, etc., 
until the following conditions are fulfilled:
  • Each and every class is part of a primary hierarchy, implemented through parent key;
  • Every hierarchy has a root class denoting the data model;
  • Hierarchies need not be balanced;
  • Members of a hierarchy need not belong to the same class;

There are 2 basic methods of implementing a hierarchy that can be mixed:

  • a hierarchy of objects with different type: object type would infer an implicit name for a group (level);
  • a hierarchy of objects of the same type: no implicit names for levels are provided;


External references to MD_OBJECT and MD_RELATION metaobjects are referenced with URI-s that have different meaning in context of different metamodels. For external well-defined Internet resources this reference takes the form of a URL. In RDF context these references might refer to RDF vocabularies defined elsewhere. In cases of technical metadata (eg. relational model, file system, etc.) where standard URI schemes are not available new unregistered URI-s have to be be used.

Model Architecture

MMX Data Model is based on principles and guidelines of EAV (Entity-Attribute-Value) or EAV/CR (Entity-Attribute-Value with Classes and Relationships) Modelling technique suitable for modelling highly heterogenous data with very dynamic nature. Unlike in traditional ER design, data element names in EAV are stored as data instead of column names and data can only be interpreted with the help of metadata. Therefore modifications to schema on 'data' level can easily be done without physical modifications by just modifiying corresponding metadata.