Common Warehouse Metamodel in EMF

Der Common-Warehouse-Metamodel-Standard (CWM) wurde von der Object Management Group (OMG) festgelegt. CWM ist ein Standard für Metadaten in Data-Warehouse- und Business-Intelligence-Anwendungen. CWM benutzt die Meta-Object-Facility (MOF) als Grundlage. MOF wird auch in anderen Standards der OMG benutzt, wie z. B. UML.

Mein Ziel war es, CWM zu lernen. Es ist sehr schwierig CWM nur durch Lesen der Spezifikation zu erlernen. Hier ist ein interaktiver Editor am besten. Leider gab es zum Zeitpunkt dieses Artikels keinen Open-Source-Editor für CWM. Es gab eine MOF-Datenbank, das Metadata Repository (MDR). Diese hatte aber keine Editor-Möglichkeiten. Anmerkung 2011: MDR gibt es scheinbar nicht mehr als separates Paket.

Also entschloss ich mich, das CWM/MOF-Modell zu EMF zu transformieren und daraus wiederum mit den Bordmitteln des Eclipse Modelling Frameworks (EMF) einen interaktiven Editor für Eclipse zu generieren.

Der Editor ist in einem frühem Entwicklungsstadium, kann aber für Experimente und für das Erlernen von CWM benutzt werden.

Die Abbildung von MOF auf EMF Ecore

In [1,2] wird eine Abbildung von MOF zu EMF beschrieben. Diese Artikel wollte ich als Grundlage benutzten, fand aber die in diesen Artikeln beschriebe E-MORF-Software nicht im Web. Daher schrieb ich eine XSLT-Transformation, die in der folgenden Tabelle beschrieben wird.

MOF Element EMF Element EMF Tag
XMI.content ecore:EPackage ecore:EPackage
Model:Attribute ecore:EReference or ecore:EAttribute eStructuralFeatures
Model:Class ecore:EClass eClassifiers
Model:DataType ecore:EEnum or ecore:EDataType eClassifiers
Model:Package eSubpackages
Model:Reference ecore:EReference eStructuralFeatures

Ich habe die CMW 1.1-XML-Specifikation zu Ecore/EMF transformiert.

Der folgende Screenshot zeigt einen kleinen Ausschnitt aus dem EMF-Ecore-Modell.

Model of CWM in EMF Ecore

Ein Editor für CWM in EMF

Aus dem Ecore-Model habe ich einen EMF-Editor generiert. Der folgende Screenshot zeigt den "New Wizard". Für jedes "Subpackage" von CWM gibt es ein Model zur Auswahl. Meistens ist das "CWM Model" die beste Auswahl.

New Wizard of CWM in EMF Ecore

Der nächste Screenshot zeigt die zur Verfügung stehenden "Subpackages" und durch die hohe Anzahl kann man auch schon einen ersten Eindruck von der Komplexität von CWM bekommen. In diesem Beispiel soll eine relationale Datenbank modelliert werden und der "relational container" wird ausgewählt.

New children nodes for the relational package of CWM

Der nächste Screenshot zeigt eine Auswahl aus den für relationale Datenbanken zur verfügung stehenden Meta-Metadaten.

Elemente in "relational package"

Es gibt noch eine Reihe von offenen Punkten.

Spätere Anmerkung: Aus Zeitgründen wurde der Code seit 2009 nicht weiterentwickelt. Der Code ist auf github verfügbar.

Referenzen