UDM: Universal Data Model


'Universal Data Model' (UDM) is a package that provides uniform access to models using a meta-programmable interface.

The UDM approach is summarized on the figure below.

UDM uses a metamodel in the style of (GME) UML class diagrams as the metamodel for data. This UDM-metamodel could be automatically generated from a GME metamodel. The UML class diagram model is then converted into a XML file by a model interpreter, called the 'UDM diagram file', which is just a compact representation of the same. The UDM.exe tool translates this diagram file into C++ code and an XML schema file (.DTD or .XSD). The XML schema file defines the structure of XML files that can contain models compatible with the metamodel. The C++ code implements a number C++ classes that represent the model objects, and provide an API for model creation and modification. The generated C++ code implements a domain- (metamodel-) specific API to the access model objects, and relies on a 'generic model API' that is implemented by various UDM back-end libraries. The UDM backends are as follows:

  • MEM: implements the model objects as in-memory, binary objects that could be serialized into binary files.
  • XML: implements the model objects as XML DOM trees, that could be serialized as XML files (compliant with the generated XML schema)
  • MGA: implements the model objects as GME objects, that are stored as GME project files.
  • CORBA: implements the model objects as generic binary objects that could be used as arguments in CORBA interface methods (hence marshalled and un-marshalled by CORBA).

The model objects could be transparently accessed via the generated API-s, or via the generic API-s.

UDM is used in GReAT, and tools are available for serializing the content of UDM model containers into arbitrary text.

UDM can be downloaded from here.

 Publications related to UDM are available here.