XML Metadata Interchange (XMI) to standard dla wymiany metadanych przy użyciu XMLa.
XMI może być używany dla jakichkolwiek metadanych, których metamodel da się wyrazić w specyfikacji MOF. Metamodel jest zapisywany w postaci XML Document Type Definitions (DTD), zaś model jest zapisywany w XMI zgodnie z regułami określonymi w specyfikacji mapowania XMI (XMI Mapping Specification).
Najczęściej XMI jest używany jako format zapisu i wymiany modeli UMLa pomiędzy różnymi narzędziami (jest to możliwe, gdyż UML jest oficjalnie zdefiniowany w metamodelu UML zgodnym z MOF).
XMI może zostać użyty także do zapisu aplikacji (np. Java, C++), komponentów (np. EJB), baz danych (np. CWM).
XMI może definiować: [za: 1]
Należy podkreślić, że w obecnej postaci służy zapisowi modelu, a nie diagramów,
gdyż nie determinuje postaci wizualnej wykraczającej poza formalną treść modelu. [ 2 ]
Uproszczony przykład reprezentacji klasy zapisanej przy pomocy XMLa: [schemat za: 3]
Reprezentacja powyższej klasy w XMI wygenerowana przy użyciu StarUML:
<?xml version = "1.0" encoding = "UTF-8"?> <XMI xmi.version = "1.1" xmlns:UML="href://org.omg/UML/1.3"> <XMI.content> <UML:Model xmi.id="UMLModel" name="Design Model"> <UML:Class xmi.id="UMLClass" name="Osoba" visibility="public" namespace="UMLModel"> <UML:Classifier.feature> <UML:Attribute xmi.id="UMLAttribute.6" name="imie" owner="UMLClass"/> <UML:Attribute xmi.id="UMLAttribute.7" name="nazwisko" owner="UMLClass"/> <UML:Attribute xmi.id="UMLAttribute.8" name="pesel" owner="UMLClass"/> </UML:Classifier.feature> </UML:Class> </UML:Model> </XMI.content> </XMI>
Przykład dokumentu XMI dla dwóch klas powiązanych asocjacją z zaznaczonymi rolami i licznością (dokument wygenerowany przy użyciu StarUML):
<?xml version = "1.0" encoding = "UTF-8"?> <XMI xmi.version = "1.1" xmlns:UML="href://org.omg/UML/1.3"> <XMI.header> <XMI.metamodel xmi.name = "UML" xmi.version = "1.3"/> </XMI.header> <XMI.content> <UML:Model xmi.id="UMLProject.1"> <UML:Namespace.ownedElement> <UML:Package xmi.id="UMLPackage.2" name="Package1" namespace="UMLProject.1"> <UML:Namespace.ownedElement> <UML:Class xmi.id="UMLClass.3" name="Firma" namespace="UMLPackage.2" participant="UMLAssociationEnd.6"/> <UML:Class xmi.id="UMLClass.4" name="Osoba" namespace="UMLPackage.2" participant="UMLAssociationEnd.7"/> <UML:Association xmi.id="UMLAssociation.5" name="" namespace="UMLPackage.2"> <UML:Association.connection> <UML:AssociationEnd xmi.id="UMLAssociationEnd.6" name="pracodawca" aggregation="none" targetScope="instance" visibility="public" ordering="unordered" isNavigable="true" association="UMLAssociation.5" type="UMLClass.3"> <UML:AssociationEnd.multiplicity> <UML:Multiplicity xmi.id="X.8"> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id="X.9" lower="1" upper="-1" multiplicity="X.8"/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:AssociationEnd.multiplicity> </UML:AssociationEnd> <UML:AssociationEnd xmi.id="UMLAssociationEnd.7" name="pracownik" aggregation="none" targetScope="instance" visibility="public" ordering="unordered" isNavigable="true" association="UMLAssociation.5" type="UMLClass.4"> <UML:AssociationEnd.multiplicity> <UML:Multiplicity xmi.id="X.10"> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id="X.11" lower="-1" upper="-1" multiplicity="X.10"/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:AssociationEnd.multiplicity> </UML:AssociationEnd> </UML:Association.connection> </UML:Association> </UML:Namespace.ownedElement> </UML:Package> </UML:Namespace.ownedElement> </UML:Model> </XMI.content> </XMI>
XMI jest ogólnoświatowym standardem zdefiniowanym normą:
ISO/IEC 19503:2005 Information technology -- XML Metadata Interchange (XMI).
1. http://www.omg.org/docs/formal/03-05-02.pdf
2. http://www.zsk.ict.pwr.wroc.pl/zsk/repository/dydaktyka/wzsr/mda.pdf
3. http://www.openmdx.org/documents/introduction/htmlsingle/openMDX_Introduction.html#F-OMG-MDA-2
MetaObject Facility (MOF) to specyfikacja definiująca zasady opisu języka modelowania (tzw. metamodel) dla wszystkich specyfikacji tworzonych przez Object Management Group (OMG). MOF sprawia, że wywodzące się z niej specyfikacje są kompatybilne ze sobą. Definiuje również standard przechowywania metamodeli oraz modeli.
Poniższy diagram ukazuje relacje między modelem, metamodelem, a językiem [za 2]:
MOF umożliwia budowanie własnych języków modelowania specyficznych dla wybranej kategorii
zastosowań lub definiowanie rozszerzeń do istniejących języków modelowania. Ponieważ zarówno
same rozszerzenia, jak i ewentualne nowe języki są zgodne ze specyfikacją MOF, dlatego też stają się
automatycznie dostępne do dalszego wykorzystania w systemach współpracujących z repozytorium modeli MOF. [ 3 ]
Specyfikacja MOF została zaprojektowana jako najwyższa warstwa w hierarchii metamodeli OMG. Hierarchia ta posiada 4 warstwy:
Każda warstwa reprezentuje różne poziomy danych lub meta danych.
Warstwa w hierarchii: | Co zawiera warstwa: | Przykłady: [za 3] |
---|---|---|
specyfikacja języka modelowania (metamodelu) | Meta-Object Facility (MOF) | |
model metadanych (specyfikacja języka) | specyfikacja SQL, specyfikacja UML, specyfikacja XML | |
metadane, czyli opis formatu i znaczenia danych | schemat bazy danych, model klas, definicja dokumentu XML (DTD) | |
rzeczywiste dane, które chcemy opisać | dane w bazie danych, instancje obiektów, dokument XML |
Przykład hierarchii dla książki [stworzony na podstawie przykładu z niemieckiej wikipedii: 4]:
Najwyższą warstwą, znajdującą się na najwyższym poziomie abstrakcji tej architektury, jest model specyfikacji języka modelowania MOF, czyli meta-metamodel.
Na tym poziomie można stworzyć repozytorium opisu języków modelowania.
Repozytorium to umożliwia systemom wzajemne poznanie struktur i semantyk w celu nawiązania
współpracy. Jeśli podczas modelowania systemu, wykorzystano język modelowania, którego opis
umieszczono w repozytorium, wówczas inny system może poznać sposób opisu tego modelu, a co za
tym idzie odczytać sam model w celu rozpoczęcia współdziałania.
Celem istnienia repozytorium MOF jest zapewnienie systemom możliwości odkrycia i manipulowania
metadanymi. Poprzez możliwość wymiany meta informacji uzyskuje się semantyczną wymianę danych,
co prowadzi do łatwiejszej integracji systemów. Powstają już rozwiązania pozwalające na realizację
dostępu, składowania i specyfikowania meta informacji. Jednym z nich jest Java API for Metadata (JMI). [ 3 ]
Specyfikacja MOF posługuje się także dodatkowymi technikami specyfikowania. Gdyby chcieć je umieścić na diagramie hierarchii, należałoby dodać nową (wirtualną) warstwę, zawierającą dodatkowe techniki specyfikacji. Poniższy rysunek [za: 2] pokazuje zależności między MOF, a dodatkowymi technikami specyfikowania:
OMG zdefiniowało 2 warianty MOF:
MOF jest ogólnoświatowym standardem zdefiniowanym normą:
ISO/IEC 19502:2005 Information technology -- Meta Object Facility (MOF).