To jest stara wersja strony!
Brudnopis
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]
reprezentację obiektów i atrybutów,
powiązania między obiektami (w tym samym pliku lub międzyplikowe),
referencje do innych obiektów poprzez wykorzystanie identyfikatorów,
wersjonowanie obiektów i ich definicji,
walidację dokumentów XMI przy pomocy DTD i XML Schema.
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
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 dwóch klas powiązanych asocjacją
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>
Źródła
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 |
Źródła