<?xml version="1.0" encoding="UTF-8"?>
<!-- <!DOCTYPE XMI SYSTEM 'Model1311.DTD' > -->
<XMI xmi.version="1.1" xmlns:Model="omg.org/mof.Model/1.3" timestamp="Mon May 06 16:42:16 2002">
 <XMI.header>
  <XMI.documentation>
   <XMI.exporter>Unisys.JCR.1</XMI.exporter>
   <XMI.exporterVersion>1.3.2</XMI.exporterVersion>
  </XMI.documentation>
  <XMI.metamodel xmi.name="org.omg.mof.Model" xmi.version="1.3"/>
 </XMI.header>
<XMI.content>
<!-- ==================== Core    [Package] ==================== -->
<Model:Package xmi.id="a3A6600C5031F" name="Core" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
  <Model:ModelElement.annotation>The Core metamodel depends on no other packages.

The ObjectModel Core metamodel contains basic metamodel classes and associations used by all other CWM metamodel packages, including other ObjectModel packages

OCL Representation of Core Constraints

Operations

The operation allFeatures results in a Set containing all Features of the Classifier itself and all its inherited Features.
   allFeatures : Set(Feature);
   allFeatures = self.feature-&gt;union(self.parent.oclAsType(Classifier).allFeatures)

The operation allAttributes results in a Set containing all Attributes of the Classifier itself and all its inherited Attributes.
   allAttributes : set(Attribute);
   allAttributes = self.allFeatures-&gt;select(f | f.oclIsKindOf(Attribute))

The operation specification yields the set of Classifiers that the current Classifier realizes.
   specification: Set(Classifier)
   specification = self.clientDependency-&gt;
   select(d | d.stereotype.name = "realization"
      and d.supplier.oclIsKindOf(Classifier)).supplier.oclAsType(Classifier)

The operation parent returns a Set containing all direct parents of a Classifier.
   parent : Set(Classifier);
   parent = self.generalization.parent

The operation allParents returns a Set containing all the Classifiers inherited by this Classifier (the transitive closure), excluding the Classifier itself.
   allParents : Set(Classifier);
   allParents = self.parent-&gt;union(self.parent.allParents)

The operation allContents returns a Set containing all ModelElements contained in the Classifier together with the contents inherited from its parents.
   allContents : Set(ModelElement);
   allContents = self.contents-&gt;union(self.parent.allContents-&gt;
   select(e | e.elementOwnership.visibility = #public or 
      e.elementOwnership.visibility = #protected))

The operation supplier results in a Set containing all direct suppliers of the ModelElement.
   supplier : Set(ModelElement);
   supplier = self.clientDependency.supplier

The operation allSuppliers results in a Set containing all the ModelElements that are suppliers of this ModelElement, including the suppliers of these Model Elements. This is the transitive closure.
   allSuppliers : Set(ModelElement);
   allSuppliers = self.supplier-&gt;union(self.supplier.allSuppliers)

The operation contents results in a Set containing all ModelElements contained by the Namespace.
   contents : Set(ModelElement)
   contents = self.ownedElement -&gt; union(self.namespace.contents)

The operation allContents results in a Set containing all ModelElements contained by the Namespace.
   allContents : Set(ModelElement);
   allContents = self.contents

The operation allVisibleElements results in a Set containing all ModelElements visible outside of the Namespace.
   allVisibleElements : Set(ModelElement)
   allVisibleElements = self.allContents -&gt; select(e |
      e.elementOwnership.visibility = #public)

The operation allSurroundingNamespaces results in a Set containing all surrounding Namespaces.
   allSurroundingNamespaces : Set(Namespace)
   allSurroundingNamespaces =
      self.namespace-&gt;union(self.namespace.allSurroundingNamespaces)

The operation contents results in a Set containing the ModelElements owned by or imported by the Package.
   contents : Set(ModelElement)
   contents = self.ownedElement-&gt;union(self.importedElement)

The operation allImportedElements results in a Set containing the ModelElements imported by the Package.
   allImportedElements : Set(ModelElement)
   allImportedElements = self.importedElement

The operation allContents results in a Set containing the ModelElements owned by or imported by the Package.
   allContents : Set(ModelElement)
   allContents = self.contents

Constraints

[C-3-1] A Constraint cannot be applied to itself.
context Constraint inv:
not self.constrainedElement-&gt;includes (self)

[C-3-2] A DataType cannot contain any other ModelElements.
context DataType inv:
self.ownedElement-&gt;isEmpty

[C-3-3] Tags associated with a model element (directly via a property list or indirectly via a stereotype) must not clash with any meta attributes associated with the model element.
context ModelElement inv:
-- cannot be specified with OCL</Model:ModelElement.annotation>
  <Model:Namespace.contents>
    <!-- ==================== Core.org.omg.mof.idl_prefix=org.omg.cwm.objectmodel    [Tag] ==================== -->
    <Model:Tag xmi.id="G.837" name="org.omg.mof.idl_prefix=org.omg.cwm.objectmodel" annotation="" tagId="org.omg.mof.idl_prefix" elements="a3A6600C5031F">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.cwm.objectmodel</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Core.org.omg.xmi.namespace=CWM    [Tag] ==================== -->
    <Model:Tag xmi.id="G.838" name="org.omg.xmi.namespace=CWM" annotation="" tagId="org.omg.xmi.namespace" elements="a3A6600C5031F">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CWM</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Core.org.omg.mof.idl_substitute_name=CoreModule    [Tag] ==================== -->
    <Model:Tag xmi.id="G.839" name="org.omg.mof.idl_substitute_name=CoreModule" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a3A6600C5031F">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CoreModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Core.com.urep.jcr.java_prefix=org.omg.java.cwm.objectmodel    [Tag] ==================== -->
    <Model:Tag xmi.id="G.840" name="com.urep.jcr.java_prefix=org.omg.java.cwm.objectmodel" annotation="" tagId="com.urep.jcr.java_prefix" elements="a3A6600C5031F">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.java.cwm.objectmodel</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Core.Element    [Class] ==================== -->
    <Model:Class xmi.id="a327A5C330208" name="Element" isRoot="false" isLeaf="false" isAbstract="true" visibility="public_vis" isSingleton="false">
      <Model:ModelElement.annotation>An element is an atomic constituent of a model. In the metamodel, an Element is the top metaclass in the metaclass hierarchy. Element is an abstract metaclass.
</Model:ModelElement.annotation>
    </Model:Class>
    <!-- ==================== Core.ModelElement    [Class] ==================== -->
    <Model:Class xmi.id="a327A5C7301CC" name="ModelElement" isRoot="false" isLeaf="false" isAbstract="true" visibility="public_vis" isSingleton="false" supertypes="a327A5C330208">
      <Model:ModelElement.annotation>A model element is an element that is an abstraction drawn from the system being modeled.

In the metamodel, a ModelElement is a named entity in a Model. It is the base for all modeling metaclasses in the CWM. All other modeling metaclasses are either direct or indirect subclasses of ModelElement.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Core.ModelElement.name    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a335D4BA70064" name="name" annotation="An identifier for the ModelElement within its containing Namespace." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FCF03C0">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Core.ModelElement.visibility    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3717C111037E" name="visibility" annotation="Specifies extent of the visibility of the ModelElement within its owning Namespace." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3A705EFD0201">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Core.ModelElement.clientDependency    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A6722070063" name="clientDependency" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A646F00E6" referencedEnd="a33FFE57B03B3">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Core.ModelElement.constraint    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A6722040380" name="constraint" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A649B000A" referencedEnd="a33EA67BB010F">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Core.ModelElement.importer    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A4247EA0376" name="importer" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A5D19033E" referencedEnd="a3A423EFE02DA">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Core.ModelElement.namespace    [Reference] ==================== -->
        <Model:Reference xmi.id="a396A41850138" name="namespace" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a32B69F3A0118" referencedEnd="a3A2C18630036">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Core.ModelElement.taggedValue    [Reference] ==================== -->
        <Model:Reference xmi.id="a3BB4EC020043" name="taggedValue" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a337A4EF7002C" referencedEnd="a33E901E10028">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Core.com.urep.jcr.mof.object_name=true    [Tag] ==================== -->
    <Model:Tag xmi.id="G.841" name="com.urep.jcr.mof.object_name=true" annotation="" tagId="com.urep.jcr.mof.object_name" elements="a335D4BA70064 a33E901140334">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">true</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Core.Namespace    [Class] ==================== -->
    <Model:Class xmi.id="a32B69F3A0118" name="Namespace" isRoot="false" isLeaf="false" isAbstract="true" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:ModelElement.annotation>A namespace is a part of a model that contains a set of ModelElements each of whose
names designates a unique element within the namespace. 

In the metamodel, a Namespace is a ModelElement that can own other ModelElements, such as Classifiers. The name of each owned ModelElement must be unique within the Namespace. Moreover, each contained ModelElement is owned by at most one Namespace. The concrete subclasses of Namespace may have additional constraints on which kind of elements may be contained. 

Namespace is an abstract metaclass.

Note that explicit parts of a model element, such as the features of a Classifier, are not modeled as owned elements in a namespace. A namespace is used for unstructured contents such as the contents of a  package, or a class declared inside the scope of another class.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Core.Namespace.ownedElement    [Reference] ==================== -->
        <Model:Reference xmi.id="a396A44E502DE" name="ownedElement" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A5C7301CC" referencedEnd="a3A2C186203A1">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Core.Classifier    [Class] ==================== -->
    <Model:Class xmi.id="a32989FB2023D" name="Classifier" isRoot="false" isLeaf="false" isAbstract="true" visibility="public_vis" isSingleton="false" supertypes="a32B69F3A0118">
      <Model:ModelElement.annotation>A classifier is an element that describes structural and behavioral features; it comes in several specific forms, including class, data type, interface, component, and others that are defined in other metamodel packages.

Classifier is often used as a type.

In the metamodel, a Classifier may declare a collection of Features, such as Attributes, Operations and Methods. It has a name, which is unique in the Namespace enclosing the Classifier. Classifier is an abstract metaclass.

Classifier is a child of Namespace. As a Namespace, a Classifier may declare other Classifiers nested in its scope. Nested Classifiers may be accessed by other Classifiers only if the nested Classifiers have adequate visibility. There are no data value or state consequences of nested Classifiers, i.e., it is not an aggregation or composition.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Core.Classifier.isAbstract    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A6CAF830372" name="isAbstract" annotation="An abstract Classifier is not instantiable." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Core.Classifier.feature    [Reference] ==================== -->
        <Model:Reference xmi.id="a396A45340213" name="feature" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a32989F9700FE" referencedEnd="a32B5D7EF03DD">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Core.Class    [Class] ==================== -->
    <Model:Class xmi.id="a3298A02900FE" name="Class" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a32989FB2023D">
      <Model:ModelElement.annotation>A class is a description of a set of objects that share the same attributes, operations, methods, relationships, and semantics. A class may use a set of interfaces to specify collections of operations it provides to its environment. In the metamodel, a Class describes a set of objects sharing a collection of Features that are common to the set of objects.

The purpose of a Class is to declare a collection of Features that fully describe the structure and behavior of objects. Some Classes may not be directly instantiated. These Classes are said to be abstract and exist only for other Classes to inherit and reuse the Features declared by them. No object may be a direct instance of an abstract Class, although an object may be an indirect instance of one through a subclass that is non-abstract.

A Class acts as the namespace for various kinds of contained elements defined within its scope, including classes, interfaces and associations (note that this is purely a scoping construction and does not imply anything about aggregation). The contained classes can be used as ordinary classes in the container class. If a class inherits another class, the contents of the ancestor are available to its descendents if the visibility of an element is public or protected; however, if the visibility is private, then the element is not visible and therefore not available in the descendant.</Model:ModelElement.annotation>
    </Model:Class>
    <!-- ==================== Core.DataType    [Class] ==================== -->
    <Model:Class xmi.id="a3298A036025B" name="DataType" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a32989FB2023D">
      <Model:ModelElement.annotation>A data type is a type whose values have no identity (i.e., they are pure values). Data types include primitive built-in types (such as integer and string) as well as definable enumeration types.

In the metamodel, a DataType defines a special kind of Classifier in which operations are all pure functions (i.e., they can return data values but they cannot change data values, because they have no identity). For example, an "add" operation on a number with another number as an argument yields a third number as a result; the target and argument are unchanged.

A DataType is a special kind of Classifier whose instances are primitive values, not objects. For example, integers and strings are usually treated as primitive values. A primitive value does not have an identity, so two occurrences of the same value cannot be differentiated. Usually, DataTypes are used for specification of the type of an attribute or parameter.</Model:ModelElement.annotation>
    </Model:Class>
    <!-- ==================== Core.Package    [Class] ==================== -->
    <Model:Class xmi.id="a327A5D19033E" name="Package" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a32B69F3A0118">
      <Model:ModelElement.annotation>A package is a grouping of model elements.

In the metamodel, Package is a subclass of Namespace. A Package contains ModelElements such as Packages and Classifiers. A Package may also contain Constraints and Dependencies between ModelElements of the Package.

The purpose of the package construct is to provide a general grouping mechanism. In fact, its only semantics is to define a namespace for its contents. The package construct can be used for organizing elements for any purpose; the criteria to use for grouping elements together into one package are not defined.

A package owns a set of model elements, with the implication that if the package is removed from the model, so are the elements owned by the package. Elements with names, such as classifiers, that are owned by the same package must have unique names within the package, although elements in different packages may have the same name.

There may be relationships between elements contained in the same package, and between an element in one package and an element in a surrounding package at any level. In other words, elements see all the way out through nested levels of packages.

Elements in peer packages, however, are encapsulated and are not a priori visible to each other. The same goes for elements in contained packages, i.e. packages do not see "inwards".

Elements owned by a Package can be made available to other Packages by importing
them. Although any ModelElement may be imported by a Package, imported
ModelElements are typically other Packages. When an element is imported by a
package it extends the namespace of that package. Thus the elements available in a
Package consists of its owned and imported ModelElements.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Core.Package.importedElement    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A24439702FF" name="importedElement" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A5C7301CC" referencedEnd="a3A423EFE025D">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Core.Subsystem    [Class] ==================== -->
    <Model:Class xmi.id="a33CD6DE5030C" name="Subsystem" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5D19033E a32989FB2023D">
      <Model:ModelElement.annotation>A subsystem is a grouping of model elements that represents a behavioral unit in a physical system. A subsystem offers interfaces and has operations.

In the metamodel, Subsystem is a subclass of both Package and Classifier. As such it may have a set of Features.

The purpose of the subsystem construct is to provide a grouping mechanism for specifying a behavioral unit of a physical system. Apart from defining a namespace for its contents, a subsystem serves as a specification unit for the behavior of its contained model elements.

The contents of a subsystem is defined in the same way as for a package, thus it
consists of owned elements and imported elements, with unique names within the
subsystem.</Model:ModelElement.annotation>
    </Model:Class>
    <!-- ==================== Core.Model    [Class] ==================== -->
    <Model:Class xmi.id="a327A5D1E0032" name="Model" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5D19033E">
      <Model:ModelElement.annotation>A model captures a view of a physical system. It is an abstraction of the physical system, with a certain purpose. The model completely describes those aspects of the physical system that are relevant to the purpose of the model, at the appropriate level of detail.

In the metamodel, Model is a subclass of Package. It contains a containment hierarchy of ModelElements that together describe the physical system. A Model also contains a set of ModelElements that represents the environment of the system. 

Different Models can be defined for the same physical system, where each model represents a view of the physical system defined by its purpose and abstraction level, e.g. an analysis model, a design model, an implementation model. Typically different models are complementary and defined from the perspectives (viewpoints) of different system stakeholders.</Model:ModelElement.annotation>
    </Model:Class>
    <!-- ==================== Core.Feature    [Class] ==================== -->
    <Model:Class xmi.id="a32989F9700FE" name="Feature" isRoot="false" isLeaf="false" isAbstract="true" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:ModelElement.annotation>A feature is a property, like attribute or operation, which is encapsulated within a Classifier.

In the metamodel, a Feature declares a structural or behavioral characteristic of an instance of a Classifier or of the Classifier itself. Feature is an abstract metaclass.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Core.Feature.ownerScope    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a31653E23032A" name="ownerScope" annotation="Specifies whether the Feature appears in every instance of the Classifier or whether it appears only once for the entire Classifier." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD7020032A">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Core.Feature.owner    [Reference] ==================== -->
        <Model:Reference xmi.id="a396A45E803C8" name="owner" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a32989FB2023D" referencedEnd="a32B5D7EF03D3">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Core.StructuralFeature    [Class] ==================== -->
    <Model:Class xmi.id="a3298F1A403BF" name="StructuralFeature" isRoot="false" isLeaf="false" isAbstract="true" visibility="public_vis" isSingleton="false" supertypes="a32989F9700FE">
      <Model:ModelElement.annotation>A structural feature refers to a static feature of a model element.

In the metamodel, a StructuralFeature declares a structural aspect of a Classifier that is typed, such as an attribute. For example, it specifies the multiplicity and changeability of the StructuralFeature. StructuralFeature is an abstract metaclass.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Core.StructuralFeature.changeability    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3163DE07014A" name="changeability" annotation="Specifies whether the value may be modified after the object is created." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F820208">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Core.StructuralFeature.multiplicity    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a32B6AEA8032B" name="multiplicity" annotation="The possible number of data values for the feature that may be held by an instance. The cardinality of the set of values is an implicit part of the feature. In the common case in which the multiplicity is 1..1, then the feature is a scalar (i.e., it holds exactly one value)." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FC5001E">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Core.StructuralFeature.ordering    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A6F5A180348" name="ordering" annotation="Specifies whether the set of instances is ordered. The ordering must be determined and maintained by Operations that add values to the feature. This property is only relevant if the multiplicity is greater than one." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a36619BC301D6">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Core.StructuralFeature.targetScope    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a335A35E5028A" name="targetScope" annotation="Specifies whether the targets are ordinary Instances or are Classifiers." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD7020032A">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Core.StructuralFeature.type    [Reference] ==================== -->
        <Model:Reference xmi.id="a396A463C0232" name="type" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a32989FB2023D" referencedEnd="a316437C003B6">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Core.Attribute    [Class] ==================== -->
    <Model:Class xmi.id="a3A6F62780143" name="Attribute" annotation="An Attribute describes a named slot within a classifier that may hold a value." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3298F1A403BF">
      <Model:Namespace.contents>
        <!-- ==================== Core.Attribute.initialValue    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A6F62980289" name="initialValue" annotation="An Expression specifying the value of the attribute upon initialization. It is meant to be evaluated at the time the object is initialized. (Note that an explicit constructor may supersede an initial value.)" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33CFA00203A2">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Core.org.omg.mof.idl_substitute_name=UmlAttribute    [Tag] ==================== -->
    <Model:Tag xmi.id="G.842" name="org.omg.mof.idl_substitute_name=UmlAttribute" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a3A6F62780143">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">UmlAttribute</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Core.Constraint    [Class] ==================== -->
    <Model:Class xmi.id="a327A649B000A" name="Constraint" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:ModelElement.annotation>A constraint is a semantic condition or restriction expressed in text.

In the metamodel, a Constraint is a BooleanExpression on an associated ModelElement(s) which must be true for the model to be well formed. This restriction can be stated in natural language, or in different kinds of languages with well-defined semantics. Certain Constraints are predefined, others may be user defined. Note that a Constraint is an assertion, not an executable mechanism.

The specification is written as an expression in a designated constraint language. The language can be specially designed for writing constraints (such as OCL), a programming language, mathematical notation, or natural language. If constraints are to be enforced by a model editor tool, then the tool must understand the syntax and semantics of the constraint language. Because the choice of language is arbitrary, constraints can be used as an extension mechanism.

The constraint concept allows new semantics to be specified linguistically for a model element. In the metamodel a Constraint directly attached to a ModelElement describes semantic restrictions that this ModelElement must obey.
</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Core.Constraint.body    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a32866F630244" name="body" annotation="A BooleanExpression that must be true when evaluated for an instance of a system to be well-formed. A boolean expression defining the constraint. Expressions are written as strings in a designated language. For the model to be well formed, the expression must always yield a true value when evaluated for instances of the constrained elements at any time when the system is stable (i.e., not during the execution of an atomic operation)." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33CFA9DA01D6">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Core.Constraint.constrainedElement    [Reference] ==================== -->
        <Model:Reference xmi.id="a396A47950000" name="constrainedElement" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A5C7301CC" referencedEnd="a33EA67BB010E">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Core.org.omg.mof.idl_substitute_name=UmlConstraint    [Tag] ==================== -->
    <Model:Tag xmi.id="G.843" name="org.omg.mof.idl_substitute_name=UmlConstraint" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a327A649B000A">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">UmlConstraint</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Core.Dependency    [Class] ==================== -->
    <Model:Class xmi.id="a327A646F00E6" name="Dependency" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:ModelElement.annotation>A dependency states that the implementation or functioning of one or more elements requires the presence of one or more other elements.

In the metamodel, a Dependency is a directed relationship from a client (or clients) to a supplier (or suppliers) stating that the client is dependent on the supplier (i.e., the client element requires the presence and knowledge of the supplier element).

A dependency specifies that the semantics of a set of model elements requires the presence of another set of model elements. This implies that if the source is somehow modified, the dependents probably must be modified. The reason for the dependency can be specified in several different ways (e.g., using natural language or an algorithm) but is often implicit.

Whenever the supplier element of a dependency changes, the client element is potentially invalidated. After such invalidation, a check should be performed followed by possible changes to the derived client element. Such a check should be performed after which action can be taken to change the derived element to validate it again.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Core.Dependency.kind    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A6C9FD2027C" name="kind" annotation="Contains a description of the nature of the dependency relationship between the client and supplier. The list of possible values is open-ended. However, CWM predefines the values &quot;Abstraction&quot; and &quot;Usage&quot;." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Core.Dependency.client    [Reference] ==================== -->
        <Model:Reference xmi.id="a396A4B0D0213" name="client" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A5C7301CC" referencedEnd="a33FFE57B0395">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Core.Dependency.supplier    [Reference] ==================== -->
        <Model:Reference xmi.id="a396A4B10002E" name="supplier" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A5C7301CC" referencedEnd="a335C0D7A02A8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Core.Expression    [Class] ==================== -->
    <Model:Class xmi.id="a33CFA00203A2" name="Expression" annotation="In the metamodel an Expression defines a statement which will evaluate to a (possibly empty) set of instances when executed in a context. An Expression does not modify the environment in which it is evaluated. An expression contains an expression string and the name of an interpretation language with which to evaluate the string." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C330208">
      <Model:Namespace.contents>
        <!-- ==================== Core.Expression.body    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a33E12E870203" name="body" annotation="The text of the expression expressed in the given language." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Core.Expression.language    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a33E12E5F01CA" name="language" annotation="Names the language in which the expression body is represented. The interpretation of the expression depends on the language. If the language name is omitted, no interpretation for the expression can be assumed. In general, a language name should be spelled and capitalized exactly as it appears in the document defining the language. For example, use COBOL, not Cobol; use Ada, not ADA; use PostScript, not Postscript." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FCF03C0">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Core.BooleanExpression    [Class] ==================== -->
    <Model:Class xmi.id="a33CFA9DA01D6" name="BooleanExpression" annotation="In the metamodel BooleanExpression defines a statement which will evaluate to an instance of Boolean when it is evaluated." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a33CFA00203A2"/>
    <!-- ==================== Core.ProcedureExpression    [Class] ==================== -->
    <Model:Class xmi.id="a363559050190" name="ProcedureExpression" annotation="In the metamodel ProcedureExpression defines a statement which will result in a change to the values of its environment when it is evaluated." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a33CFA00203A2"/>
    <!-- ==================== Core.Multiplicity    [Class] ==================== -->
    <Model:Class xmi.id="a33DD6FC5001E" name="Multiplicity" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C330208">
      <Model:ModelElement.annotation>In the metamodel a Multiplicity defines a non-empty set of non-negative integers. A set which only contains zero ({0}) is not considered a valid Multiplicity. Every Multiplicity has at least one corresponding String  representation.
</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Core.Multiplicity.range    [Reference] ==================== -->
        <Model:Reference xmi.id="a396A3FA7038A" name="range" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a33E93BD00075" referencedEnd="a33FF95B90378">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Core.MultiplicityRange    [Class] ==================== -->
    <Model:Class xmi.id="a33E93BD00075" name="MultiplicityRange" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C330208">
      <Model:ModelElement.annotation>In the metamodel a MultiplicityRange defines a range of integers. The upper bound of the range cannot be below the lower bound. The lower bound must be a nonnegative integer. The upper bound must be a nonnegative integer or the special value unlimited, which indicates there is no upper bound on the range. 
</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Core.MultiplicityRange.lower    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a33E93BE902E8" name="lower" annotation="Specifies the positive integer lower bound of the range." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Core.MultiplicityRange.upper    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a33E93BFA0329" name="upper" annotation="Specifies the upper bound of the range, which is a positive integer or the special value unlimited indicating no upper bound is defined." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3635582D03D4">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Core.MultiplicityRange.multiplicity    [Reference] ==================== -->
        <Model:Reference xmi.id="a396A403D006D" name="multiplicity" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a33DD6FC5001E" referencedEnd="a33FF95B90300">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Core.Stereotype    [Class] ==================== -->
    <Model:Class xmi.id="a3A24417902EF" name="Stereotype" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:ModelElement.annotation>The stereotype concept provides a way of branding (classifying) model elements so that they behave as if they were instances of new virtual metamodel constructs. These model elements have the same structure (attributes, associations, operations) as similar non-stereotyped model elements of the same kind. The stereotype may specify additional constraints and required tagged values that apply to model elements. In addition, a stereotype may be used to indicate a difference in meaning or usage between two model elements with identical structure.

In the metamodel the Stereotype metaclass is a subclass of ModelElement. Tagged Values and Constraints attached to a Stereotype apply to all ModelElements branded by that Stereotype.

A stereotype keeps track of the base class to which it may be applied. The base class is a class in the metamodel (not a user-level modeling element) such as Class, Association, etc. If a model element is branded by an attached stereotype, then the CWM base class of the model element must be the base class specified by the stereotype or one of the subclasses of that base class.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Core.Stereotype.baseClass    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A24427E031E" name="baseClass" annotation="Specifies the name of a modeling element to which the stereotype applies, such as Class, Association, Constraint, etc. This is the name of a metaclass, that is, a class from the metamodel itself rather than a user model class." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FCF03C0">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Core.Stereotype.extendedElement    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A2444AD00AD" name="extendedElement" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A5C7301CC" referencedEnd="a3A2442F90292">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Core.Stereotype.requiredTag    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A2444AB0234" name="requiredTag" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a337A4EF7002C" referencedEnd="a3A2446850021">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Core.Stereotype.stereotypeConstraint    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A244510011B" name="stereotypeConstraint" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A649B000A" referencedEnd="a3A2D210E0353">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Core.TaggedValue    [Class] ==================== -->
    <Model:Class xmi.id="a337A4EF7002C" name="TaggedValue" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C330208">
      <Model:ModelElement.annotation>A tagged value allows information to be attached to any model element in the form of a "tagged value" pair (i.e., name = value). The interpretation of tagged value semantics is intentionally beyond the scope of CWM. It must be determined by user or tool conventions. It is expected that tools will define tags to supply information needed for their operations beyond the basic semantics of CWM. Such information could include code generation options, model management information, or user-specified semantics.

Even though TaggedValues are a simple and straightforward extension technique, their use restricts semantic interchange of metadata to only those tools that share a common understanding of the specific tagged value names.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Core.TaggedValue.tag    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a33E901140334" name="tag" annotation="Contains the name of the TaggedValue. This name determines the semantics that are applicable to the contents of the value attribute." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FCF03C0">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Core.TaggedValue.value    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a337A50700273" name="value" annotation="Contains the current value of the TaggedValue." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Core.TaggedValue.modelElement    [Reference] ==================== -->
        <Model:Reference xmi.id="a396A5262037A" name="modelElement" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A5C7301CC" referencedEnd="a33E901E003D4">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Core.TaggedValue.stereotype    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A24459D01C7" name="stereotype" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A24417902EF" referencedEnd="a3A2446850030">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Core.org.omg.mof.idl_substitute_name=umlValue    [Tag] ==================== -->
    <Model:Tag xmi.id="G.844" name="org.omg.mof.idl_substitute_name=umlValue" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a337A50700273">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">umlValue</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Core.Any    [DataType] ==================== -->
    <Model:DataType xmi.id="a37AB1FF90221" name="Any" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
      <Model:ModelElement.annotation>The Any data type is used to indicate that an attribute or parameter may take values from any of the available data types. In CWM, the set of data types an Any attribute or parameter may assume includes the data types and enumerations described in this chapter plus any available instances of the Classifier class. 

There is no default value for data type Any.</Model:ModelElement.annotation>
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcAny/>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== Core.Boolean    [DataType] ==================== -->
    <Model:DataType xmi.id="a33DD6F650276" name="Boolean" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
      <Model:ModelElement.annotation>Boolean defines an enumeration that denotes a logical condition.

The default for data type Boolean is false.</Model:ModelElement.annotation>
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcBoolean/>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== Core.Float    [DataType] ==================== -->
    <Model:DataType xmi.id="a384FE9DE02A2" name="Float" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
      <Model:ModelElement.annotation>The Float data type is used to indicate that an attribute or parameter may take on floating point numeric values. The number of significant digits and other representational details are implementation defined. 

The default for the Float data type is the value 0.0.</Model:ModelElement.annotation>
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcFloat/>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== Core.Integer    [DataType] ==================== -->
    <Model:DataType xmi.id="a33DD6FD7021C" name="Integer" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
      <Model:ModelElement.annotation>Integer represents the predefined type of integers. An instance of Integer is an element in the (infinite) set of integers (..., -2, -1, 0, 1, 2, ...). 

The default for Integer is 0.</Model:ModelElement.annotation>
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcLong/>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== Core.Name    [DataType] ==================== -->
    <Model:DataType xmi.id="a33DD6FCF03C0" name="Name" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
      <Model:ModelElement.annotation>Name defines a token which is used for naming ModelElements and similar usages. Each Name has a corresponding String representation. For purposes of exchange a name should be represented as a String.

The default for the Name data type is an empty string.</Model:ModelElement.annotation>
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcAlias xmi.tcName="Name">
          <XMI.CorbaTypeCode>
            <XMI.CorbaTcString xmi.tcLength="0"/>
          </XMI.CorbaTypeCode>
          </XMI.CorbaTcAlias>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== Core.String    [DataType] ==================== -->
    <Model:DataType xmi.id="a33DD702401B8" name="String" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
      <Model:ModelElement.annotation>String defines a piece of text. Strings do not normally have a defined length; rather, they are considered to be arbitrarily long (practical limits on the length of Strings exist, but are implementation dependent). When String is used as the type of an Attribute, string length sometimes can be specified (see the Relational and Record packages for examples).

The default for the String data type is an empty string.</Model:ModelElement.annotation>
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcString xmi.tcLength="0"/>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== Core.Time    [DataType] ==================== -->
    <Model:DataType xmi.id="a3A09E1C0001E" name="Time" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
      <Model:ModelElement.annotation>Time defines a statement which will define the time of occurrence of an event. The specific format of time expressions is not specified here and is subject to implementation considerations.

There is no default for the Time data type.</Model:ModelElement.annotation>
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcAlias xmi.tcName="Time">
          <XMI.CorbaTypeCode>
            <XMI.CorbaTcString xmi.tcLength="0"/>
          </XMI.CorbaTypeCode>
          </XMI.CorbaTcAlias>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== Core.UnlimitedInteger    [DataType] ==================== -->
    <Model:DataType xmi.id="a3635582D03D4" name="UnlimitedInteger" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
      <Model:ModelElement.annotation>UnlimitedInteger defines a data type whose range is the nonnegative integers augmented by the special value "unlimited". It is used for the upper bound of multiplicities.

The default for an UnlimitedInteger is the special value "unlimited".</Model:ModelElement.annotation>
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcAlias xmi.tcName="UnlimitedInteger">
          <XMI.CorbaTypeCode>
            <XMI.CorbaTcLong/>
          </XMI.CorbaTypeCode>
          </XMI.CorbaTcAlias>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== Core.ChangeableKind    [DataType] ==================== -->
    <Model:DataType xmi.id="a33DD6F820208" name="ChangeableKind" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcEnum xmi.tcName="ChangeableKind">
          <XMI.CorbaTcEnumLabel xmi.tcName="ck_changeable"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="ck_frozen"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="ck_addOnly"/>
          </XMI.CorbaTcEnum>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== Core.org.omg.xmi.enumerationUnprefix=ck_    [Tag] ==================== -->
    <Model:Tag xmi.id="G.845" name="org.omg.xmi.enumerationUnprefix=ck_" annotation="" tagId="org.omg.xmi.enumerationUnprefix" elements="a33DD6F820208">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">ck_</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Core.OrderingKind    [DataType] ==================== -->
    <Model:DataType xmi.id="a36619BC301D6" name="OrderingKind" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
      <Model:ModelElement.annotation>In the metamodel OrderingKind defines an enumeration that specifies how the elements of a set are arranged. Used in conjunction with elements that have a multiplicity in cases when the multiplicity value is greater than one. The ordering must be determined and maintained by operations that modify the set.

The default value is ok_unordered.</Model:ModelElement.annotation>
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcEnum xmi.tcName="OrderingKind">
          <XMI.CorbaTcEnumLabel xmi.tcName="ok_unordered"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="ok_ordered"/>
          </XMI.CorbaTcEnum>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== Core.org.omg.xmi.enumerationUnprefix=ok_    [Tag] ==================== -->
    <Model:Tag xmi.id="G.846" name="org.omg.xmi.enumerationUnprefix=ok_" annotation="" tagId="org.omg.xmi.enumerationUnprefix" elements="a36619BC301D6">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">ok_</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Core.ScopeKind    [DataType] ==================== -->
    <Model:DataType xmi.id="a33DD7020032A" name="ScopeKind" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
      <Model:ModelElement.annotation>In the metamodel ScopeKind defines an enumeration that denotes whether a feature belongs to individual instances or an entire classifier.

The default value is sk_instance.</Model:ModelElement.annotation>
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcEnum xmi.tcName="ScopeKind">
          <XMI.CorbaTcEnumLabel xmi.tcName="sk_instance"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="sk_classifier"/>
          </XMI.CorbaTcEnum>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== Core.org.omg.xmi.enumerationUnprefix=sk_    [Tag] ==================== -->
    <Model:Tag xmi.id="G.847" name="org.omg.xmi.enumerationUnprefix=sk_" annotation="" tagId="org.omg.xmi.enumerationUnprefix" elements="a33DD7020032A">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">sk_</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Core.VisibilityKind    [DataType] ==================== -->
    <Model:DataType xmi.id="a3A705EFD0201" name="VisibilityKind" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
      <Model:ModelElement.annotation>In the metamodel VisibilityKind defines an enumeration that denotes how the element to which it refers is seen outside the enclosing name space.

The default value is vk_public.</Model:ModelElement.annotation>
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcEnum xmi.tcName="VisibilityKind">
          <XMI.CorbaTcEnumLabel xmi.tcName="vk_public"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="vk_protected"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="vk_private"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="vk_package"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="vk_notapplicable"/>
          </XMI.CorbaTcEnum>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== Core.org.omg.xmi.enumerationUnprefix=vk_    [Tag] ==================== -->
    <Model:Tag xmi.id="G.848" name="org.omg.xmi.enumerationUnprefix=vk_" annotation="" tagId="org.omg.xmi.enumerationUnprefix" elements="a3A705EFD0201">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">vk_</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Core.ClassifierFeature    [Association] ==================== -->
    <Model:Association xmi.id="a32B5D7EE02FF" name="ClassifierFeature" annotation="The ClassifierFeature association provides a composite aggregation containment relationship between Classifiers and the Features they own. The feature end of the association is ordered allowing preservation of the ordering of Features within their owning Classifier. A Feature can be owned by at most one Classifier. The optional character of ownership is intended as a convenience to tools, allowing them to create Features prior to linking them to their owning Classifier." isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a32B5D7EF03D3" name="owner" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a32989FB2023D">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a32B5D7EF03DD" name="feature" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a32989F9700FE">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Core.DependencyClient    [Association] ==================== -->
    <Model:Association xmi.id="a33FFE57902A2" name="DependencyClient" annotation="The DependencyClient association links Dependency instances with ModelElements that act as clients in the represented dependency relationship." isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a33FFE57B0395" name="client" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a327A5C7301CC">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a33FFE57B03B3" name="clientDependency" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a327A646F00E6">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Core.DependencySupplier    [Association] ==================== -->
    <Model:Association xmi.id="a335C0D770302" name="DependencySupplier" annotation="The DependencySupplier association links Dependency instances with ModelElements that act as suppliers in the represented dependency relationship." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a335C0D7A02A8" name="supplier" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a327A5C7301CC">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a335C0D7A02E4" name="supplierDependency" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a327A646F00E6">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Core.ElementConstraint    [Association] ==================== -->
    <Model:Association xmi.id="a33EA67B702EE" name="ElementConstraint" annotation="The ElementConstraint association provides linkages between ModelElements and the Constraint instances that constrain their state. Note that a Constraint instance may not simultaneously participate in both the ElementConstraint and the StereotypeConstraint associations." isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a33EA67BB010E" name="constrainedElement" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a327A5C7301CC">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a33EA67BB010F" name="constraint" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a327A649B000A">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Core.org.omg.mof.idl_substitute_name=umlConstraint    [Tag] ==================== -->
    <Model:Tag xmi.id="G.849" name="org.omg.mof.idl_substitute_name=umlConstraint" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a33EA67BB010F">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">umlConstraint</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Core.ElementOwnership    [Association] ==================== -->
    <Model:Association xmi.id="a3A2C18610353" name="ElementOwnership" annotation="The ElementOwnership association identifies ModelElements owned by Namespaces. ModelElements may be owned by at most one Namespace. Refer to the above discussion of the Namespace class for more information on the nature of the ownership relationship between Namespaces and ModelElements." isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A2C186203A1" name="ownedElement" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a327A5C7301CC">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A2C18630036" name="namespace" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a32B69F3A0118">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Core.ImportedElements    [Association] ==================== -->
    <Model:Association xmi.id="a3A423EFD02DA" name="ImportedElements" annotation="The ImportedElements association identifies ModelElements that a Package instance imports from other Namespaces. Although any ModelElement may be imported by a Package, imported ModelElements are typically other Packages or aggregate Classifiers, such as Class instances." isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A423EFE025D" name="importedElement" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a327A5C7301CC">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A423EFE02DA" name="importer" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a327A5D19033E">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Core.RangeMultiplicity    [Association] ==================== -->
    <Model:Association xmi.id="a33FF95B90061" name="RangeMultiplicity" annotation="The RangeMultiplicity association identifies the set of MultiplicityRange instances that specify the lower and upper bounds of individual cardinality ranges defined by a Multiplicity instance. A MultiplicityRange instance must be owned by a single Multiplicity instance." isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a33FF95B90300" name="multiplicity" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a33DD6FC5001E">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a33FF95B90378" name="range" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a33E93BD00075">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Core.StereotypeConstraints    [Association] ==================== -->
    <Model:Association xmi.id="a3A2D210D02D6" name="StereotypeConstraints" annotation="The StereotypeConstraints association links Stereotypes with Constraints that further restrict the states that a stereotyped ModelElement may assume. A Constraint instance may not simultaneously participate in both the StereotypeContraints association and the ElementConstraint association." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A2D210E0353" name="stereotypeConstraint" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a327A649B000A">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A2D210E0372" name="constrainedStereotype" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a3A24417902EF">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Core.StereotypedElement    [Association] ==================== -->
    <Model:Association xmi.id="a3A2442F80244" name="StereotypedElement" annotation="The StereotypedElement association links Stereotypes with the ModelElements to which they apply. " isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A2442F90292" name="extendedElement" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a327A5C7301CC">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A2442F902FF" name="stereotype" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A24417902EF">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Core.StereotypeTaggedValues    [Association] ==================== -->
    <Model:Association xmi.id="a3A24468302EF" name="StereotypeTaggedValues" isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:ModelElement.annotation>The StereotypeTaggedValues association links Stereotypes with the set of TaggedValues they require.

TaggedValues cannot simultaneously participate in both the TaggedElement and StereotypeTaggedValues associations.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A2446850021" name="requiredTag" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a337A4EF7002C">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A2446850030" name="stereotype" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a3A24417902EF">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Core.StructuralFeatureType    [Association] ==================== -->
    <Model:Association xmi.id="a316437BF0352" name="StructuralFeatureType" annotation="The StructuralFeatureType association identifies the Classifier instance that defines the type of particular StructuralFeatures. A StructuralFeature instance must have a Classifier instance that defines its type." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a316437C002DA" name="structuralFeature" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3298F1A403BF">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a316437C003B6" name="type" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a32989FB2023D">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Core.TaggedElement    [Association] ==================== -->
    <Model:Association xmi.id="a33E901DD001E" name="TaggedElement" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:ModelElement.annotation>The TaggedElement association links TaggedValues with the ModelElements that own them.

TaggedValues cannot simultaneously participate in both the TaggedElement and StereotypeTaggedValues associations.

</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a33E901E003D4" name="modelElement" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a327A5C7301CC">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a33E901E10028" name="taggedValue" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a337A4EF7002C">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
  </Model:Namespace.contents>
</Model:Package>
<!-- ==================== Behavioral    [Package] ==================== -->
<Model:Package xmi.id="a3A6342A4000B" name="Behavioral" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
  <Model:ModelElement.annotation>The Behavioral metamodel depends on the following package:

   org.omg::CWM::ObjectModel::Core

The Behavioral metamodel collects together classes and associations that describe the behavior of CWM types and provides a foundation for recording the invocations of defined behaviors. The elements of the Behavioral metamodel are shown in the following figure.

OCL Representation of Behavioral Constraints

Operations

The operation hasSameSignature checks if the argument has the same signature as the instance itself.
   hasSameSignature ( b : BehavioralFeature ) : Boolean;
   hasSameSignature (b) =
   (self.name = b.name) and
   (self.parameter-&gt;size = b.parameter-&gt;size) and
   Sequence{ 1..(self.parameter-&gt;size) }-&gt;forAll( index : Integer |
   b.parameter-&gt;at(index).type =
   self.parameter-&gt;at(index).type and
   b.parameter-&gt;at(index).kind =
   self.parameter-&gt;at(index).kind   )

The operation allOperations results in a Set containing all Operations of the Classifier itself and all its inherited Operations.
   allOperations : Set(Operation);
   allOperations = self.allFeatures-&gt;select(f | f.ockIsKindOf(Operations))

The operation allMethods results in a Set containing all Methods of the Classifier itself and all its inherited Methods.
   allOperations : Set(Method);
   allMethods = self.allFeatures-&gt;select(f | f.ockIsKindOf(Method))

Constraints

[C-4-1] All Parameters should have a unique name.
context BehavioralFeature inv:
self.parameter-&gt;forAll(p1, p2 | p1.name = p2.name implies p1 = p2)

[C-4-2] The type of the Parameters should be included in the Namespace of the Classifier.
context BehavioralFeature inv:
self.parameter-&gt;forAll( p | self.owner.namespace.allContents-&gt;includes (p.type) )

[C-4-3] The number of arguments must be the same as the number of parameters of the Operation.
context CallAction inv:
self.actualArgument-&gt;size = self.operation.parameter-&gt;size

[C-4-4] An Interface can only contain Operations.
context Interface inv:
self.allFeatures-&gt;forAll( f | f.oclIsKindOf( Operation ) )

[C-4-5] An Interface cannot contain any ModelElements.
context Interface inv:
self.allContents-&gt;isEmpty

[C-4-6] All Features defined in an Interface are public.
context Interface inv:
self.allFeatures-&gt;forAll( f | f.visibility = #public )

[C-4-7] If the realized Operation is a query, then so is the Method.
context Method inv:
self.specification-&gt;isQuery implies self.isQuery</Model:ModelElement.annotation>
  <Model:Namespace.contents>
    <!-- ==================== Behavioral.org.omg.mof.idl_prefix=org.omg.cwm.objectmodel    [Tag] ==================== -->
    <Model:Tag xmi.id="G.850" name="org.omg.mof.idl_prefix=org.omg.cwm.objectmodel" annotation="" tagId="org.omg.mof.idl_prefix" elements="a3A6342A4000B">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.cwm.objectmodel</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Behavioral.org.omg.xmi.namespace=CWM    [Tag] ==================== -->
    <Model:Tag xmi.id="G.851" name="org.omg.xmi.namespace=CWM" annotation="" tagId="org.omg.xmi.namespace" elements="a3A6342A4000B">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CWM</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Behavioral.org.omg.mof.idl_substitute_name=BehavioralModule    [Tag] ==================== -->
    <Model:Tag xmi.id="G.852" name="org.omg.mof.idl_substitute_name=BehavioralModule" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a3A6342A4000B">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">BehavioralModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Behavioral.com.urep.jcr.java_prefix=org.omg.java.cwm.objectmodel    [Tag] ==================== -->
    <Model:Tag xmi.id="G.853" name="com.urep.jcr.java_prefix=org.omg.java.cwm.objectmodel" annotation="" tagId="com.urep.jcr.java_prefix" elements="a3A6342A4000B">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.java.cwm.objectmodel</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <Model:Import xmi.id="G.854" name="Core" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A6600C5031F"/>
    <!-- ==================== Behavioral.Argument    [Class] ==================== -->
    <Model:Class xmi.id="a33D9073E03B6" name="Argument" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:ModelElement.annotation>Argument is an expression describing how to determine an actual value passed in a CallAction.

In the metamodel an Argument is a composite part of a CallAction and contains a meta-attribute, value, of type Expression. It states how the actual argument is determined when the owning CallAction is executed.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Behavioral.Argument.value    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a33D9076D00FA" name="value" annotation="An expression determining the actual Argument instance when executed." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33CFA00203A2">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Behavioral.Argument.callAction    [Reference] ==================== -->
        <Model:Reference xmi.id="a396A5DC6007D" name="callAction" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A638B7E0318" referencedEnd="a3A638C300329">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Behavioral.org.omg.mof.idl_substitute_name=umlValue    [Tag] ==================== -->
    <Model:Tag xmi.id="G.855" name="org.omg.mof.idl_substitute_name=umlValue" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a33D9076D00FA">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">umlValue</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Behavioral.BehavioralFeature    [Class] ==================== -->
    <Model:Class xmi.id="a3298BCF00260" name="BehavioralFeature" isRoot="false" isLeaf="false" isAbstract="true" visibility="public_vis" isSingleton="false" supertypes="a32989F9700FE">
      <Model:ModelElement.annotation>A behavioral feature refers to a dynamic feature of a model element, such as an operation or method. In the metamodel, BehavioralFeature specifies a behavioral aspect of a Classifier. All different kinds of behavioral aspects of a Classifier, such as Operation and Method, are subclasses of BehavioralFeature.

BehavioralFeature is an abstract metaclass.
</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Behavioral.BehavioralFeature.isQuery    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a335A34A3012C" name="isQuery" annotation="Specifies whether an execution of the BehavioralFeature leaves the state of the system unchanged. True indicates that the state is unchanged; false indicates that side-effects may occur." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Behavioral.BehavioralFeature.parameter    [Reference] ==================== -->
        <Model:Reference xmi.id="a396A48A50213" name="parameter" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327BBB9F02B2" referencedEnd="a3359946401AE">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Behavioral.CallAction    [Class] ==================== -->
    <Model:Class xmi.id="a3A638B7E0318" name="CallAction" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:ModelElement.annotation>A call action is an action resulting in an invocation of an operation.

The purpose of a CallAction is to identify the actual Arguments used in a specific invocation of an Operation.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Behavioral.CallAction.operation    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A660F1B00CD" name="operation" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327BB68C0398" referencedEnd="a3A638C3503D4">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Behavioral.CallAction.actualArgument    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A660F1E012B" name="actualArgument" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a33D9073E03B6" referencedEnd="a3A638C300328">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Behavioral.Event    [Class] ==================== -->
    <Model:Class xmi.id="a3288E51203DE" name="Event" annotation="Event is a specification of an observable occurrence. The occurrence that generates an event instance is assumed to take place at an instant in time." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:Namespace.contents>
        <!-- ==================== Behavioral.Event.parameter    [Reference] ==================== -->
        <Model:Reference xmi.id="a396A651802DE" name="parameter" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327BBB9F02B2" referencedEnd="a3337AF9D028B">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Behavioral.Interface    [Class] ==================== -->
    <Model:Class xmi.id="a3342A195014D" name="Interface" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a32989FB2023D">
      <Model:ModelElement.annotation>Interface is a named set of operations that specify the behavior of an element.

In the metamodel, an Interface contains a set of Operations that together define a service offered by a Classifier realizing the Interface. A Classifier may offer several services, which means that it may realize several Interfaces, and several Classifiers may realize the same Interface.</Model:ModelElement.annotation>
    </Model:Class>
    <!-- ==================== Behavioral.org.omg.mof.idl_substitute_name=UmlInterface    [Tag] ==================== -->
    <Model:Tag xmi.id="G.856" name="org.omg.mof.idl_substitute_name=UmlInterface" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a3342A195014D">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">UmlInterface</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Behavioral.Method    [Class] ==================== -->
    <Model:Class xmi.id="a327BB67E0028" name="Method" annotation="Method is the implementation of an Operation. It specifies the algorithm or procedure that effects the results of an Operation." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3298BCF00260">
      <Model:Namespace.contents>
        <!-- ==================== Behavioral.Method.body    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a327BBD2A02D0" name="body" annotation="A specification of the Method in some appropriate form (such as a programming language). The exact form of a Methods specification and knowledge of the language in which it is described is outside the scope of the CWM." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a363559050190">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Behavioral.Method.specification    [Reference] ==================== -->
        <Model:Reference xmi.id="a396A49A50128" name="specification" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327BB68C0398" referencedEnd="a32B6D9BE00C8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Behavioral.Operation    [Class] ==================== -->
    <Model:Class xmi.id="a327BB68C0398" name="Operation" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3298BCF00260">
      <Model:ModelElement.annotation>Operation is a service that can be requested from an object to effect behavior. An Operation has a signature, which describes the parameters that are possible (including possible return values).

In the metamodel, an Operation is a BehavioralFeature that can be applied to instances of the Classifier that contains the Operation.

Operation is the specification, while Method is the implementation.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Behavioral.Operation.isAbstract    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3627CF2B030C" name="isAbstract" annotation="If true, then the Operation does not have an implementation, and one must be supplied by a descendant. If false, the Operation must have an implementation in the class or inherited from an ancestor." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Behavioral.Operation.method    [Reference] ==================== -->
        <Model:Reference xmi.id="a396A48F7030D" name="method" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327BB67E0028" referencedEnd="a32B6D9BE00C9">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Behavioral.Parameter    [Class] ==================== -->
    <Model:Class xmi.id="a327BBB9F02B2" name="Parameter" annotation="Parameters are used in the specification of operations, methods and events. A Parameter may include a name, type, and direction of communication." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:Namespace.contents>
        <!-- ==================== Behavioral.Parameter.defaultValue    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a327BE04D0096" name="defaultValue" annotation="An Expression whose evaluation yields a value to be used when no argument is supplied for the Parameter." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33CFA00203A2">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Behavioral.Parameter.kind    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a335BC753038E" name="kind" annotation="Specifies what kind of a Parameter is required." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FDC024E">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Behavioral.Parameter.behavioralFeature    [Reference] ==================== -->
        <Model:Reference xmi.id="a396A4927004E" name="behavioralFeature" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3298BCF00260" referencedEnd="a33599464017C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Behavioral.Parameter.event    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A6E38A1023A" name="event" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3288E51203DE" referencedEnd="a3337AF9D028A">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Behavioral.Parameter.type    [Reference] ==================== -->
        <Model:Reference xmi.id="a396A496E01E4" name="type" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a32989FB2023D" referencedEnd="a335BC7D503D4">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Behavioral.ParameterDirectionKind    [DataType] ==================== -->
    <Model:DataType xmi.id="a33DD6FDC024E" name="ParameterDirectionKind" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
      <Model:ModelElement.annotation>In the metamodel ParameterDirectionKind defines an enumeration that denotes if a Parameter is used for supplying an argument and/or for returning a value. The enumeration values are:

The default value is pdk_in.</Model:ModelElement.annotation>
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcEnum xmi.tcName="ParameterDirectionKind">
          <XMI.CorbaTcEnumLabel xmi.tcName="pdk_in"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="pdk_inout"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="pdk_out"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="pdk_return"/>
          </XMI.CorbaTcEnum>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== Behavioral.org.omg.xmi.enumerationUnprefix=pdk_    [Tag] ==================== -->
    <Model:Tag xmi.id="G.857" name="org.omg.xmi.enumerationUnprefix=pdk_" annotation="" tagId="org.omg.xmi.enumerationUnprefix" elements="a33DD6FDC024E">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">pdk_</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Behavioral.BehavioralFeatureParameter    [Association] ==================== -->
    <Model:Association xmi.id="a3359946200F0" name="BehavioralFeatureParameter" annotation="The BehavioralFeatureParameter association identifies and orders Parameter instances describing the parameters of a BehavioralFeature. Parameters may be owned by at most one BehavioralFeature instance. The set of parameters of a BehavioralFeature, together with its name and return value, are said to constitute the BehavioralFeatures &quot;signature&quot;." isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a33599464017C" name="behavioralFeature" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a3298BCF00260">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3359946401AE" name="parameter" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a327BBB9F02B2">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Behavioral.CallArguments    [Association] ==================== -->
    <Model:Association xmi.id="a3A638C3000B7" name="CallArguments" annotation="Identifies the Argument instances representing the actual argument values passed to an Operation during the particular invocation indicated by the CallAction instance. The ordering of actual argument values is assumed to correspond to the ordering of the Operations parameters as represented by the ordering of the BehavioralFeatureParameter association." isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A638C300328" name="actualArgument" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a33D9073E03B6">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A638C300329" name="callAction" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a3A638B7E0318">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Behavioral.EventParameter    [Association] ==================== -->
    <Model:Association xmi.id="a3337AF9B02A8" name="EventParameter" annotation="The EventParameter association identifies the set of Parameter instances owned by an Event instance." isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3337AF9D028A" name="event" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a3288E51203DE">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3337AF9D028B" name="parameter" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a327BBB9F02B2">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Behavioral.CalledOperation    [Association] ==================== -->
    <Model:Association xmi.id="a3A638C3501D0" name="CalledOperation" annotation="The CalledOperation association identifies the CallAction instance representing a particular invocation of an Operation." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A638C3503C4" name="callAction" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A638B7E0318">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A638C3503D4" name="operation" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a327BB68C0398">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Behavioral.OperationMethod    [Association] ==================== -->
    <Model:Association xmi.id="a32B6D9B302FD" name="OperationMethod" annotation="The OperationMethod association links an Operation with the Method instance(s) that realize it. The various Method instances represent alternative implementations (usually in different programming languages or environments) of the Operation." isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a32B6D9BE00C8" name="specification" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a327BB68C0398">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a32B6D9BE00C9" name="method" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a327BB67E0028">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Behavioral.ParameterType    [Association] ==================== -->
    <Model:Association xmi.id="a335BC7D400A0" name="ParameterType" annotation="The ParameterType association links a Parameter instance with the Classifier that defines the parameters type." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a335BC7D50398" name="parameter" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a327BBB9F02B2">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a335BC7D503D4" name="type" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a32989FB2023D">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
  </Model:Namespace.contents>
</Model:Package>
<!-- ==================== Relationships    [Package] ==================== -->
<Model:Package xmi.id="a3A63421F0357" name="Relationships" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
  <Model:ModelElement.annotation>The Relationships metamodel depends on the following package:

    org.omg::CWM::ObjectModel::Core

The Relationships metamodel collects together classes and associations that describe  the relationships between object within a CWM information store. The Relationships metamodel describes to types of relationships: association and generalization.

Association relationships record linkages between model elements. These linkages may represent simple linkages between model elements or aggregation ("is part of") relationships between model elements; aggregation relationships come in two forms -- shared and composite. Associations have two or more named ends that link them to instances of the classes connected by the association.

Generalization relationships record arrangements of model elements into type hierarchies in a parent/child (or "is type of") fashion. Child types are said to "specialize", "subclass" or "subtype" their parental  types, represent a subset of parental instances that fulfill the definition of the child type, and inherit the structural features
(Attributes, AssociationEnd) and behavioral features (Operations, Methods) of their parents. Parental types are said to "generalize" their child types or to be "superclasses" or "supertypes" of their children.

CWM generalization hierarchies support multiple inheritance; that is, child types may have more than one parental type and inherit the union of the features of all their parental types. Although called "hierarchies", multiple inheritance actually represents a directed acyclic graph of parental and child types.

OCL Representation of Relationships Constraints

Operations

The operation allConnections results in the set of all AssociationEnds of the Association.
   allConnections : Set(AssociationEnd);
   allConnections = self.feature.oclIsKindOf(AssociationEnd)

Constraints

[C-5-1] An Association must have at least 2 AssociationEnds.
context Association inv:
self.allConnections-&gt;size &gt; 1

[C-5-2] The AssociationEnds must have a unique name within the association.
context Association inv:
self.allConnections-&gt;forAll( r1, r2 | r1.name = r2.name implies r1 = r2)

[C-5-3] At most one AssociationEnd may be an aggregation or composition.
context Association inv:
self.allConnections-&gt;select(aggregation &lt;&gt; #ak_none)-&gt;size &lt;= 1

[C-5-4] If an Association has three or more AssociationEnds, then no AssociationEnd may be an aggregation or composition.
context Association inv:
self.allConnections-&gt;size &gt;=3 implies
self.allConnections-&gt;forall(aggregation = #ak_none)

[C-5-5] The connected Classifiers of the AssociationEnds should be included in the Namespace of the Association, or be Classifiers with public visibility in other Namespaces to which the Association has access.
context Association inv:
self.allConnections-&gt;forAll(r | self.namespace.allContents-&gt;includes (r.type) ) or
self.allConnections-&gt;forAll(r | self.namespace.allContents-&gt;excludes (r.type))
   implies
self.namespace.clientDependency-&gt;exists (d |
   d.supplier.oclAsType(Namespace).ownedElement-&gt;select (e |
      e.elementOwnership.visibility = #ak_public)-&gt;includes (r.type) or
   d.supplier.oclAsType(Classifier).allParents.
      oclAsType(Namespace).ownedElement-&gt;select (e |
         e.elementOwnership.visibility = #ak_public)-&gt;includes (r.type) or
         d.supplier.oclAsType(Package).allImportedElements-&gt;select (e |
            e.elementImport.visibility = #ak_public) -&gt;includes (r.type) ) )

[C-5-6] An AssociationEnd must have an owning Association.
context AssociationEnd inv:
self.owner.oclIsKindOf(Association)

[C-5-7] The Classifier of an AssociationEnd cannot be an Interface or a DataType if the association is navigable away from that end.
context AssociationEnd inv:
(self.type.oclIsKindOf (Interface) or
self.type.oclIsKindOf (DataType)) implies
self.owner-&gt;select (ae | ae &lt;self)-&gt;forAll(ae | ae.isNavigable = #false)

[C-5-8] An instance may not belong by composition to more than one composite Instance.
context AssociationEnd inv:
self.aggregation = #ak_composite implies self.multiplicity.max &lt;= 1

[C-5-9] An AssociationEnd with composite or shared aggregation semantics must be owned by an Association.
context AssociationEnd inv:
self.aggregation = #ak_composite or self.aggregation = #ak_shared implies
self.owner.oclIsKindOf(Association)
</Model:ModelElement.annotation>
  <Model:Namespace.contents>
    <!-- ==================== Relationships.org.omg.mof.idl_prefix=org.omg.cwm.objectmodel    [Tag] ==================== -->
    <Model:Tag xmi.id="G.858" name="org.omg.mof.idl_prefix=org.omg.cwm.objectmodel" annotation="" tagId="org.omg.mof.idl_prefix" elements="a3A63421F0357">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.cwm.objectmodel</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Relationships.org.omg.xmi.namespace=CWM    [Tag] ==================== -->
    <Model:Tag xmi.id="G.859" name="org.omg.xmi.namespace=CWM" annotation="" tagId="org.omg.xmi.namespace" elements="a3A63421F0357">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CWM</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Relationships.org.omg.mof.idl_substitute_name=RelationshipsModule    [Tag] ==================== -->
    <Model:Tag xmi.id="G.860" name="org.omg.mof.idl_substitute_name=RelationshipsModule" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a3A63421F0357">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">RelationshipsModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Relationships.com.urep.jcr.java_prefix=org.omg.java.cwm.objectmodel    [Tag] ==================== -->
    <Model:Tag xmi.id="G.861" name="com.urep.jcr.java_prefix=org.omg.java.cwm.objectmodel" annotation="" tagId="com.urep.jcr.java_prefix" elements="a3A63421F0357">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.java.cwm.objectmodel</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <Model:Import xmi.id="G.862" name="Core" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A6600C5031F"/>
    <!-- ==================== Relationships.Association    [Class] ==================== -->
    <Model:Class xmi.id="a3A54CBFF0090" name="Association" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3298A02900FE">
      <Model:ModelElement.annotation>An association defines a semantic relationship between classifiers. Associations have two or more named ends. Associations with two or more ends are called "n-ary" whereas associations with exactly two ends are called "binary". Each end, depending
upon its multiplicity, connects to zero or more instances of some classifier.

In the metamodel, an Association is a declaration of a semantic relationship between Classifiers, such as Classes. Associations must have two, and may have more, association ends. Each end is connected to a Classifier; the same Classifier may be 
connected to more than one association end in the same association. (Refer to the ObjectModels Instance package, below, for a description of how Associations are instantiated.)

Because Associations are classifiers, they own and order their association ends (which are Attributes) via the ClassifierFeature association. In addition, because Associations are Classes, they can also own more traditional StructuralFeatures such as Attributes. Consequently, they may act in a manner similar to "association classes" described by
some other object models.

An association may represent an aggregation (i.e., a whole/part relationship). In this case, the association end attached to the whole element is designated, and the other association end represents the parts of the aggregation.

Associations can be of three different kinds: (1) ordinary association, (2) composite aggregate, and (3) shareable aggregate. Since the aggregate construct can have several different meanings depending on the application area, CWM gives a more precise meaning to two of these constructs (i.e., association and composite aggregate) and leaves the shareable aggregate more loosely defined in between. Only binary Associations can have composite or sharable aggregation semantics.

Composite aggregation is a strong form of aggregation which requires that a part instance be included in at most one composite at a time and that the composite object has sole responsibility for the disposition of its parts. This means that the composite object is responsible for the creation and destruction of the parts. In implementation terms, it is responsible for their memory allocation. If a composite object is destroyed, it must destroy all of its parts. It may remove a part and give it to another composite object, which then assumes responsibility for it. If the multiplicity from a part to composite is zero-to-one, the composite may remove the part and the part may assume responsibility for itself, otherwise it may not live apart from a  composite.

A consequence of these rules is that a composite aggregation implies propagation semantics (i.e., some of the dynamic semantics of the whole is propagated to its parts). For example, if the whole is copied or destroyed, then so are the parts as well (because a part may belong to at most one composite).

A classifier on the composite end of an association may have parts that are classifiers and associations. At the instance level, an instance of a part element is considered "part of" the instance of a composite element. If an association is part of a composite and it connects two classes that are also part of the same composite, then an instance of the association will connect objects that are part of the same composite object of which the instance is part.

A shareable aggregation denotes weak ownership (i.e., the part may be included in several aggregates) and its owner may also change over time. However, the semantics of a shareable aggregation does not imply deletion of the parts when an aggregate
referencing it is deleted. Both kinds of aggregations define a transitive, antisymmetric relationship (i.e., the instances form a directed, non-cyclic graph). Composition instances form a strict tree (or rather a forest).</Model:ModelElement.annotation>
    </Model:Class>
    <!-- ==================== Relationships.AssociationEnd    [Class] ==================== -->
    <Model:Class xmi.id="a3A6F584F03A5" name="AssociationEnd" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3298F1A403BF">
      <Model:ModelElement.annotation>An association end is an endpoint of an association, which connects the association to a classifier. Each association end is part of one association. The association ends of each association are ordered.

In the metamodel, an AssociationEnd is part of an Association and specifies the connection of an Association to some other Classifier. Because AssociationEnds are a kind of StructuralFeature, they are owned and ordered by Association instances via the ClassifierFeature association. The StructuralFeatureType association is used to identify the Classifier to which the AssociationEnd is attached. Each AssociationEnd has a name and defines a set of properties of the connection.

The multiplicity property of an association end specifies how many instances of the classifier at a given end (the one bearing the multiplicity value) may be associated with a single instance of the classifier at the other end. The association end also states whether or not the connection may be traversed towards the instance playing that role in the connection (the isNavigable attribute), that is, if the instance is directly reachable via the association.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Relationships.AssociationEnd.aggregation    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A6F59870169" name="aggregation" annotation="When placed on one end (the &quot;target&quot; end), specifies whether the class on the target end is an aggregation with respect to the class on the other end (the &quot;source&quot; end). Only one end of an association can be an aggregation." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F5903A2">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Relationships.AssociationEnd.isNavigable    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A6F599D0070" name="isNavigable" annotation="When placed on a target end, specifies whether traversal from a source instance to its associated target instances is possible. A value of true means that the association can be navigated by the source class and the target rolename can be used in navigation expressions. Specification of navigability for each direction is defined independently." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Relationships.Generalization    [Class] ==================== -->
    <Model:Class xmi.id="a3A54BFAC011D" name="Generalization" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:ModelElement.annotation>A generalization is a taxonomic relationship between a more general element and a more specific element. The more specific element is fully consistent with the more general element (it has all of its properties, members, and relationships) and may contain additional information.

In the metamodel, a Generalization is a directed inheritance relationship, uniting a Classifier with a more general Classifier in a hierarchy. Generalization is a subtyping relationship; that is, an instance of the more general ("parent") Classifier may be substituted by an instance of the more specific ("child") Classifier.

To understand inheritance fully, it is necessary to understand the concept of a full descriptor and a segment descriptor. A full descriptor is the full description needed to describe an instance of a metamodel object. It contains a description of all of the
attributes, associations, and operations that the object contains.

In a pre-object-oriented language, the full descriptor of a data structure was declared directly in its entirety. In an object-oriented language, the description of an object is built out of incremental segments that are combined using inheritance to produce a full descriptor for an object. The segments are the modeling elements that are actually declared in a model. Each classifier contains a list of features and other relationships that it adds to what it inherits from its ancestors. The mechanism of inheritance defines how full descriptors are produced from a set of segments connected by  generalization.The full descriptors are implicit, but they define the structure of actual instances. Features of a classifier that have private visibility are not visible to descendants of the classifier.

If a classifier has no parent, then its full descriptor is the same as its segment descriptor. If a classifier has one or more parents, then its full descriptor contains the union of the features from its own segment descriptor and the segment descriptors of all of its ancestors. No attribute, operation, or association end with the same signature may be declared in more than one of the segments (in other words, they may not be redefined). A method may be declared in more than one segment. A method declared in any segment supersedes and replaces a method with the same signature declared in any ancestor. If two or more methods nevertheless remain, then they conflict and the model is ill-formed. The constraints on the full descriptor are the union of the constraints on the segment itself and all of its ancestors. If any of them are inconsistent, then the model is ill-formed.

In any full descriptor for a classifier, each method must have a corresponding operation. In a concrete classifier, each operation in its full descriptor must have a corresponding method in the full descriptor.
</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Relationships.Generalization.child    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A54C9B30023" name="child" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a32989FB2023D" referencedEnd="a3A6CB0FF015C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Relationships.Generalization.parent    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A54C9B60284" name="parent" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a32989FB2023D" referencedEnd="a3A6CB10A01BC">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Relationships.AggregationKind    [DataType] ==================== -->
    <Model:DataType xmi.id="a33DD6F5903A2" name="AggregationKind" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
      <Model:ModelElement.annotation>An enumeration that denotes what kind of aggregation an Association defines. When placed on a target end, specifies the relationship of the target end to the source end. 

The default value is ak_none.</Model:ModelElement.annotation>
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcEnum xmi.tcName="AggregationKind">
          <XMI.CorbaTcEnumLabel xmi.tcName="ak_none"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="ak_aggregate"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="ak_composite"/>
          </XMI.CorbaTcEnum>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== Relationships.org.omg.xmi.enumerationUnprefix=ak_    [Tag] ==================== -->
    <Model:Tag xmi.id="G.863" name="org.omg.xmi.enumerationUnprefix=ak_" annotation="" tagId="org.omg.xmi.enumerationUnprefix" elements="a33DD6F5903A2">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">ak_</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Relationships.ChildElement    [Association] ==================== -->
    <Model:Association xmi.id="a3A6CB0FE016E" name="ChildElement" annotation="The ChildElement association links Classifiers with the Generalization instances that describe where they participate as children in the inheritance hierarchy." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A6CB0FF015C" name="child" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a32989FB2023D">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A6CB0FF01A2" name="generalization" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A54BFAC011D">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Relationships.ParentElement    [Association] ==================== -->
    <Model:Association xmi.id="a3A6CB10901EC" name="ParentElement" annotation="The ParentElement association links Classifiers with the Generalization instances that describe where the Classifiers participate as parents in the inheritance hierarchy." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A6CB10A01BC" name="parent" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a32989FB2023D">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A6CB10A0202" name="specialization" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A54BFAC011D">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
  </Model:Namespace.contents>
</Model:Package>
<!-- ==================== Instance    [Package] ==================== -->
<Model:Package xmi.id="a3A6342930318" name="Instance" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
  <Model:ModelElement.annotation>The Instance metamodel depends on the following package:

    org.omg::CWM::ObjectModel::Core

In addition to the metadata normally interchanged with CWM, it is sometimes useful to interchange specific data instances as well. The ObjectModels Instance metamodel allows the inclusion of data instances with the metadata.

OCL Representation of Instance Constraints

Constraints

[C-6-1] A DataValue originates from a Classifier that is a DataType.
context DataValue inv:
self.classifier.oclIsKindOf(DataType)

[C-6-2] A DataValue has no Slots.
context DataValue inv:
self.valueSlot-&gt;isEmpty

[C-6-3] An Object may only own Objects and DataValues.
context Object inv:
self.contents-&gt;forAll(c | c.oclIsKindOf(Object) or c.oclIsKindOf(DataValue))

[C-6-4] If an Object represents an association, at least two of its ends must be not be empty.
context Object inv:
self.classifier.oclIsKindOf(Association) implies
self.slot.feature-&gt;iterate( ae ; cnt : Integer = 0 |
if ae.oclIsKindOf(AssociationEnd) and ae.value.notEmpty then
   cnt + 1
else
   cnt
end if ) &gt; 1

[C-6-5] If the StructuralFeature describing a Slot is an AssociationEnd, the Classifier associated with the Object owning the Slot must be an Association.
context Slot inv:
self.feature.oclIsKindOf(AssociationEnd) implies
self.value.classifier.oclIsKindOf(Association)
</Model:ModelElement.annotation>
  <Model:Namespace.contents>
    <!-- ==================== Instance.org.omg.mof.idl_prefix=org.omg.cwm.objectmodel    [Tag] ==================== -->
    <Model:Tag xmi.id="G.864" name="org.omg.mof.idl_prefix=org.omg.cwm.objectmodel" annotation="" tagId="org.omg.mof.idl_prefix" elements="a3A6342930318">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.cwm.objectmodel</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Instance.org.omg.xmi.namespace=CWM    [Tag] ==================== -->
    <Model:Tag xmi.id="G.865" name="org.omg.xmi.namespace=CWM" annotation="" tagId="org.omg.xmi.namespace" elements="a3A6342930318">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CWM</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Instance.org.omg.mof.idl_substitute_name=InstanceModule    [Tag] ==================== -->
    <Model:Tag xmi.id="G.866" name="org.omg.mof.idl_substitute_name=InstanceModule" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a3A6342930318">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">InstanceModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Instance.com.urep.jcr.java_prefix=org.omg.java.cwm.objectmodel    [Tag] ==================== -->
    <Model:Tag xmi.id="G.867" name="com.urep.jcr.java_prefix=org.omg.java.cwm.objectmodel" annotation="" tagId="com.urep.jcr.java_prefix" elements="a3A6342930318">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.java.cwm.objectmodel</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <Model:Import xmi.id="G.868" name="Core" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A6600C5031F"/>
    <!-- ==================== Instance.DataSlot    [Class] ==================== -->
    <Model:Class xmi.id="a3BCB15050021" name="DataSlot" annotation="A Slot which is used to hold a data value where there is no need to manage the value as an element in its own right (in which case a DataValue would be used) - for example it is a one-off string value or a number. The dataValue (and dataType where set) must be consistent with the type of the DataSlot's feature (Attribute) and must obey any constraints on the full descriptor of the Attribute's DataType (including both explicit constraints and built-in constraints such as multiplicity)." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3A244A10030F">
      <Model:Namespace.contents>
        <!-- ==================== Instance.DataSlot.dataValue    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3BCB1554010B" name="dataValue" annotation="The value for the slot expressed as a string." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Instance.DataSlot.dataType    [Reference] ==================== -->
        <Model:Reference xmi.id="a3BCB16BC0234" name="dataType" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3298A036025B" referencedEnd="a3BCB1E5A00BD">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Instance.DataValue    [Class] ==================== -->
    <Model:Class xmi.id="a33BC9AFB02E4" name="DataValue" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327BC77C038E">
      <Model:ModelElement.annotation>A data value is an instance with no identity. In the metamodel, DataValue is a child of Instance that cannot change its state, i.e. all operations that are applicable to it are pure functions or queries that do not cause any side effects. DataValues are typically used
as attribute values.

Since it is not possible to differentiate between two data values that appear to be the same, it becomes more of a philosophical issue whether there are several data values representing the same value or just one for each value. In addition, a data value cannot change its data type and it does not have contained instances.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Instance.DataValue.value    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A5502A600DE" name="value" annotation="A string representation of the value." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Instance.Extent    [Class] ==================== -->
    <Model:Class xmi.id="a387E624E0365" name="Extent" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5D19033E">
      <Model:ModelElement.annotation>Each instance of Extent owns a collection of instances and is used to link such collections to their structural and behavioral definitions in CWM Resource packages. Because Extent is a subclass of package, it owns member instances via the
ElementOwnership associaton.</Model:ModelElement.annotation>
    </Model:Class>
    <!-- ==================== Instance.Instance    [Class] ==================== -->
    <Model:Class xmi.id="a327BC77C038E" name="Instance" isRoot="false" isLeaf="false" isAbstract="true" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:ModelElement.annotation>The instance construct defines an entity to which a set of operations can be applied and which has a state that stores the effects of the operations. In the metamodel Instance is connected to a Classifier that declares its structure and behavior. It has a set of attribute values matching the definition of its Classifier. The set of attribute values implements the current state of the Instance. Because Instance is an abstract class, all Instances are either Object or DataValue instances.

The data content of an Instance comprises one value for each attribute in its full descriptor (and nothing more). The value must be consistent with the type of the attribute. An instance must obey any constraints on the full descriptor of the Classifier
of which it is an instance (including both explicit constraints and built-in constraints such as multiplicity).
</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Instance.Instance.classifier    [Reference] ==================== -->
        <Model:Reference xmi.id="a396A59810290" name="classifier" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a32989FB2023D" referencedEnd="a33CAD7E900AB">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Instance.Object    [Class] ==================== -->
    <Model:Class xmi.id="a33BC99D60302" name="Object" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327BC77C038E">
      <Model:ModelElement.annotation>An object is an instance that originates from a class.

In the metamodel, Object is a subclass of Instance originating from a Class. The Class may be modified dynamically, which means that the set of features of the Object may change during its life-time.

An object is an instance that originates from a class; it is structured and behaves according to its class. All objects originating from the same class are structured in the same way, although each of them has its own set of attribute slots. Each attribute slot references an instance, usually a data value or possibly, another object. The number of attribute slots with the same name fulfills the multiplicity of the corresponding attribute in the class. The set may be modified according to the specification in the corresponding attribute, e.g. each referenced instance must originate from (a specialization of) the type of the attribute, and attribute slots may be added or removed according to the changeable property of the attribute.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Instance.Object.slot    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A244A6600EC" name="slot" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A244A10030F" referencedEnd="a3A244ABF009E">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Instance.org.omg.mof.idl_substitute_name=UmlObject    [Tag] ==================== -->
    <Model:Tag xmi.id="G.869" name="org.omg.mof.idl_substitute_name=UmlObject" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a33BC99D60302">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">UmlObject</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Instance.Slot    [Class] ==================== -->
    <Model:Class xmi.id="a3A244A10030F" name="Slot" annotation="A slot is a named location in an Object instance that holds the current value of the StructuralFeature associated with the Slot instance. Normally, the StructuralFeature associated with the slot will be either an Attribute instance or an AssociationEnd instance. Slots are owned by Objects; DataValues do not have slots." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:Namespace.contents>
        <!-- ==================== Instance.Slot.object    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A244A5B0234" name="object" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a33BC99D60302" referencedEnd="a3A244ABF009F">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Instance.Slot.value    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A244A59033E" name="value" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327BC77C038E" referencedEnd="a3A244AC80040">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Instance.Slot.feature    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A6F57E9002D" name="feature" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3298F1A403BF" referencedEnd="a3A6F568E01FB">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Instance.org.omg.mof.idl_substitute_name=umlObject    [Tag] ==================== -->
    <Model:Tag xmi.id="G.870" name="org.omg.mof.idl_substitute_name=umlObject" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a3A244A5B0234 a3A244ABF009F">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">umlObject</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Instance.SlotValue    [Association] ==================== -->
    <Model:Association xmi.id="a3A244AC70205" name="SlotValue" annotation="The SlotValue association connects slot instances with the DataValue or Object instance that contains the current value held by the slot." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A244AC80030" name="valueSlot" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A244A10030F">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A244AC80040" name="value" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a327BC77C038E">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Instance.org.omg.mof.idl_substitute_name=cwmlValue    [Tag] ==================== -->
    <Model:Tag xmi.id="G.871" name="org.omg.mof.idl_substitute_name=cwmlValue" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a3A244AC80040">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">cwmlValue</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Instance.InstanceClassifier    [Association] ==================== -->
    <Model:Association xmi.id="a33CAD7E7008C" name="InstanceClassifier" annotation="The InstanceClassifier association links Instances with Classifiers that describe them." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a33CAD7E900AA" name="instance" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a327BC77C038E">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a33CAD7E900AB" name="classifier" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a32989FB2023D">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Instance.ObjectSlot    [Association] ==================== -->
    <Model:Association xmi.id="a3A244ABE0169" name="ObjectSlot" annotation="The ObjectSlot association connects Slot instances with their owning Object instances." isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A244ABF009E" name="slot" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A244A10030F">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A244ABF009F" name="object" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a33BC99D60302">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Instance.FeatureSlot    [Association] ==================== -->
    <Model:Association xmi.id="a3A6F568D0023" name="FeatureSlot" annotation="The FeatureSlot association connects Slot instances with the StructuralFeature instance (usually either an Attribute or AssociationEnd instance) describing the structure of the value held by the Slot." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A6F568E01FB" name="feature" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3298F1A403BF">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A6F568E0223" name="slot" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A244A10030F">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Instance.DataSlotType    [Association] ==================== -->
    <Model:Association xmi.id="a3BCB1E590030" name="DataSlotType" annotation="The DataSlotType association connects DataSlot instances with the Core::DataType instance that identifies the type of information stored in the DataSlot::dataValue attribute." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3BCB1E5A00BD" name="dataType" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3298A036025B">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3BCB1E5A00CD" name="dataSlot" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3BCB15050021">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
  </Model:Namespace.contents>
</Model:Package>
<!-- ==================== BusinessInformation    [Package] ==================== -->
<Model:Package xmi.id="a38207A770114" name="BusinessInformation" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
  <Model:ModelElement.annotation>The Business Information package depends on the following package:

    org.omg::CWM::ObjectModel::Core

The Business Information Metamodel provides general purpose services available to all CWM packages for defining business-oriented information about model elements. The business-oriented services described here are designed to support the needs of data warehousing and business intelligence systems; they are not intended as a complete representation of general purpose business intelligence metamodel.

Business Information Metamodel services support the notions of responsible parties and information about how to contact them, identification of off-line documentation and support for general-purpose descriptive information. Three CWM classes "anchor" these services: ResponsibleParty, Document and Description, respectively.

To aid in representing the diversity of organizational structures and documentation relationships that may be encountered in a business intelligence system, the metamodel provides robust relationships between the anchor classes and every model element in the CWM metamodel. The necessary robustness is achieved in several ways.

First, every CWM model element may have zero or more instances of each anchor class associated with it. This means, for example, that a single Description instance can be used to describe many different model elements. Conversely, a single model element may be described by many different Description instances. Likewise, Document and ResponsibleParty instances can be associated in completely ad hoc ways with any model element. Extending this idea means, for example, that Description instances could be used to further describe ResponsibleParty and Document instance, if needed.

Second, because they are Namespaces, the anchor classes can be organized into hierarchies using the ElementOwnership association. For instance, an organizational structure can be represented by a hierarchy of ResponsibleParty instances. Also, the internal structure of a document (i.e., its chapters, sections, subsections, etc.) might be represented by a hierarchy of Document instances.

Finally, instances of the three anchor classes can be associated with any model element (via their individual associations to ModelElement) and referenced by multiple instances of any of the three anchor classes. Because of the strong containment of the ElementOwnership association in the ObjectModel, anchor class instances can only participate in one hierarchy, but there are no restrictions preventing anchor class instances embedded in a hierarchy from referencing, or being referenced by, other model elements (even other members of the same hierarchy).

To illustrate some of the ways that the metamodel can be used, the following figure shows a simple document hierarchy with responsibility assignments and descriptive comments (boxes represent instances of metamodel classes and labelled lines represent metamodel associations connecting instances). In the example, the product plan document for the Widget product is composed of three subplans: a marketing plan, an engineering plan, and a resource plan. The relationships between the subplans documents is shown as a hierarchy with the product plan owning the three subordinate plans via the ElementOwnership association. Each part of the plan is assigned to a reponsible party using the ModelElementResponsibility association. Finally, Description instances are used to record roles for the responsible parties.

OCL Representation of BusinessInformation Constraints

[C-3-1] A Description may not describe itself.
context Description inv:
self.modelElement-&gt;forAll(p | p &lt;&gt; self)

[C-3-2] A Document may not describe itself.
context Document inv:
self.modelElement-&gt;forAll(p | p &lt;&gt; self)

[C-3-3] A ResponsibleParty may not describe itself.
context ResponsibleParty inv:
self.modelElement-&gt;forAll(p | p &lt;&gt; self)</Model:ModelElement.annotation>
  <Model:Namespace.contents>
    <!-- ==================== BusinessInformation.org.omg.xmi.namespace=CWM    [Tag] ==================== -->
    <Model:Tag xmi.id="G.873" name="org.omg.xmi.namespace=CWM" annotation="" tagId="org.omg.xmi.namespace" elements="a38207A770114">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CWM</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== BusinessInformation.org.omg.mof.idl_prefix=org.omg.cwm.foundation    [Tag] ==================== -->
    <Model:Tag xmi.id="G.874" name="org.omg.mof.idl_prefix=org.omg.cwm.foundation" annotation="" tagId="org.omg.mof.idl_prefix" elements="a38207A770114">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.cwm.foundation</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== BusinessInformation.org.omg.mof.idl_substitute_name=BusinessInformationModule    [Tag] ==================== -->
    <Model:Tag xmi.id="G.875" name="org.omg.mof.idl_substitute_name=BusinessInformationModule" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a38207A770114">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">BusinessInformationModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== BusinessInformation.com.urep.jcr.java_prefix=org.omg.java.cwm.foundation    [Tag] ==================== -->
    <Model:Tag xmi.id="G.876" name="com.urep.jcr.java_prefix=org.omg.java.cwm.foundation" annotation="" tagId="com.urep.jcr.java_prefix" elements="a38207A770114">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.java.cwm.foundation</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <Model:Import xmi.id="G.877" name="Core" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A6600C5031F"/>
    <!-- ==================== BusinessInformation.ResponsibleParty    [Class] ==================== -->
    <Model:Class xmi.id="a364CD88902CE" name="ResponsibleParty" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a32B69F3A0118">
      <Model:ModelElement.annotation>The ResponsibleParty class allows representation of entities within an information system that are in some way interested in receiving information about, or are otherwise responsible for, particular ModelElements. Each ResponsibleParty may own multiple sets of contact information, and a single ResponsibleParty may be associated with many ModelElements.

ResponsibleParty instances may represent any entity appropriate to the system being modeled and need not be limited to people. For example, a ResponsibleParty instance might represent an individual such as "George Washington", a role (the "President"), or an organization ("Congress"), depending upon the needs of the system being modeled. Similarly, the precise semantics of the responsibility attribute are open to intrepretation and may be adapted on a system-by-system basis.

Because ResponsibleParty instances are Namespaces, they can be organized into hierarchies of ResponsibleParty instances, capturing organizational structures or similar relationships.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== BusinessInformation.ResponsibleParty.responsibility    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3731D43200BE" name="responsibility" annotation="Textual identification or description of the ResponsibleParty in a usage-dependent format." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== BusinessInformation.ResponsibleParty.contact    [Reference] ==================== -->
        <Model:Reference xmi.id="a386004D501E1" name="contact" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3731D0010334" referencedEnd="a3820922F0357">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== BusinessInformation.ResponsibleParty.modelElement    [Reference] ==================== -->
        <Model:Reference xmi.id="a386004BE0126" name="modelElement" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A5C7301CC" referencedEnd="a38209199029B">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== BusinessInformation.Telephone    [Class] ==================== -->
    <Model:Class xmi.id="a3731CE29023A" name="Telephone" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:ModelElement.annotation>Instances of the Telephone class represent telephone contact information.

Because telephones are first class objects within the CWM, they can be used for purposes beyond those associated with the CWM Foundations Business Information concepts.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== BusinessInformation.Telephone.phoneNumber    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3731CE580028" name="phoneNumber" annotation="A textual representation of the telephones number." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== BusinessInformation.Telephone.phoneType    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3731CE6401FE" name="phoneType" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:ModelElement.annotation>A textual representation of the telephones type, such as "multi-line", or its usage,
such as "home", "work", "fax", or "mobile".</Model:ModelElement.annotation>
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== BusinessInformation.Telephone.contact    [Reference] ==================== -->
        <Model:Reference xmi.id="a386005AB0349" name="contact" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3731D0010334" referencedEnd="a38208FCD0358">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== BusinessInformation.Email    [Class] ==================== -->
    <Model:Class xmi.id="a3731CEAE010E" name="Email" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:ModelElement.annotation>An Email instance identifies a single email address. Via a Contact instance, an email address can be associated with one or more ResponsibleParty instances. Email instances might, for example, be used by an automated tool to send an automatically generated email message to a ResponsibleParty instance responsible about some change of state for a particular ModelElement. Multiple Email instances may be associated with a single Contact instance and the ordering of the association between them may be used to represent the sequence in which the Email instances should be contacted.

Because email addresses are first class objects within the CWM, they can be used for purposes beyond those associated with the CWMFoundations Business Information concepts.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== BusinessInformation.Email.emailAddress    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3731CEC20104" name="emailAddress" annotation="A textual representation of an email address." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== BusinessInformation.Email.emailType    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3731CECD00FA" name="emailType" annotation="Contains a textual representation of the type of the email address. Interesting values might include location information such as &quot;home&quot; or &quot;work&quot;, or perhaps an indication of the type of email system for which the eMailAddress is formatted, such as &quot;SMTP&quot; or &quot;X.400&quot;." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== BusinessInformation.Email.contact    [Reference] ==================== -->
        <Model:Reference xmi.id="a3860058903B6" name="contact" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3731D0010334" referencedEnd="a3820871F01C1">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== BusinessInformation.Location    [Class] ==================== -->
    <Model:Class xmi.id="a3731CF0A02C6" name="Location" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:ModelElement.annotation>Instances of the Location class represent physical locations. Note that the name of a Location is derived from its superclass, ModelElement.

Because Locations are first class objects within the CWM, they can be used for purposes beyond those associated with the CWM Foundations Business Information concepts. If additional attributes about Location instances are required, they should be added by creating subtypes of the Location class and placing the additional attributes therein.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== BusinessInformation.Location.locationType    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3731CF360064" name="locationType" annotation="Descriptive information about the character or identity of the Location instance." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== BusinessInformation.Location.address    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a37AB0EDC02FE" name="address" annotation="The address of the Location instance. The precise content of this string is usage-defined." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== BusinessInformation.Location.city    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a37AB0F2B0095" name="city" annotation="The name of the city in which the Location instance is found. The precise content of this string is usage-defined." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== BusinessInformation.Location.postCode    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a37AB0F9F01A0" name="postCode" annotation="The postal code of the Location instance. The precise content of this string is usage-defined." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== BusinessInformation.Location.area    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a37AB11E201E8" name="area" annotation="The area in which the Location instance is found. The precise content of this string is usage-defined, but a common usage would be to refer to a geographical subdivision such as a state or province." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== BusinessInformation.Location.country    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a37AB12970094" name="country" annotation="The name of the country in which the Location instance is found. The precise content of this string is usage-defined." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== BusinessInformation.Location.contact    [Reference] ==================== -->
        <Model:Reference xmi.id="a386005A70230" name="contact" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3731D0010334" referencedEnd="a38208EB002DA">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== BusinessInformation.Contact    [Class] ==================== -->
    <Model:Class xmi.id="a3731D0010334" name="Contact" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:ModelElement.annotation>Each Contact instance collects together the various types of related contact information. Each Contact instance can be associated with multiple Email, Location and Telephone instances. Conversely, each Email, Location, ResourceLocator and Telephone instance can be associated with many Contact instances. The ordering constraints on the associations between these classes and the Contact class can be used to represent a prioritized sequence in which the various types of contact information  should be used.

A particular ResponsibleParty instance may have multiple instances of Contact associated with it via the ResponsiblePartyContact association. This association is ordered to support representation of the sequence in which Contact instances should be used. For example, a ResponsibleParty instance representing an employee might be associated with Contact instances representing their office, home, and mobile contact information with an indication that the employee should be contacted first at the office, then at home, and finally via their mobile phone.

To maximize flexibility of the metamodel, Contact instances may provide contact information for multiple ResponsibleParty instances.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== BusinessInformation.Contact.email    [Reference] ==================== -->
        <Model:Reference xmi.id="a3860053F02AD" name="email" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3731CEAE010E" referencedEnd="a3820871F01C0">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== BusinessInformation.Contact.location    [Reference] ==================== -->
        <Model:Reference xmi.id="a386005570397" name="location" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3731CF0A02C6" referencedEnd="a38208EB002CA">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== BusinessInformation.Contact.responsibleParty    [Reference] ==================== -->
        <Model:Reference xmi.id="a3860052902DB" name="responsibleParty" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a364CD88902CE" referencedEnd="a3820922F0358">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== BusinessInformation.Contact.telephone    [Reference] ==================== -->
        <Model:Reference xmi.id="a3860056C0193" name="telephone" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3731CE29023A" referencedEnd="a38208FCD0357">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== BusinessInformation.Contact.url    [Reference] ==================== -->
        <Model:Reference xmi.id="a386005BB02FB" name="url" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3810D01501DC" referencedEnd="a38208F420097">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== BusinessInformation.Description    [Class] ==================== -->
    <Model:Class xmi.id="a375FF5A2008E" name="Description" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a32B69F3A0118">
      <Model:ModelElement.annotation>Instances of the Description class contain arbitrary textual information relevant to a particular ModelElement. While Description instances may contain any desired textual information, they will typically contain documentation or references to external reference information about the owning ModelElement.

Any ModelElement may have multiple Description instances associated with it. Indeed, a ModelElement instance that is a Description instance may itself have multiple Description instances linked to it. Also, a hierarchies of Description instances can be constructed.

Description instances are meant to hold descriptive textual information that will be stored in the metamodel itself. In contrast, Document instances are meant to describe the location documentary information stored outside the metamodel.
</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== BusinessInformation.Description.body    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a375FF60E0382" name="body" annotation="Contains a textual description of information pertaining to the owning ModelElement. " scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== BusinessInformation.Description.language    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a37AB50FB01EF" name="language" annotation="Contains an identification of the language in which the content of the body attribute is specified. If desired, the language specification may be applied to the name attribute derived from ModelElement as well." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FCF03C0">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== BusinessInformation.Description.type    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A5CE2580354" name="type" annotation="Contains a textual description of the type of information the Description represents. Specific contents are usage defined." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== BusinessInformation.Description.modelElement    [Reference] ==================== -->
        <Model:Reference xmi.id="a386005E4007A" name="modelElement" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A5C7301CC" referencedEnd="a3820910D03D4">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== BusinessInformation.Document    [Class] ==================== -->
    <Model:Class xmi.id="a378B694F014B" name="Document" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a32B69F3A0118">
      <Model:ModelElement.annotation>The Document class represents externally stored descriptive information about some aspect of the modeled system. An instance of Document might be associated with one or more ModelElements. The name of a Document instance is derived from its superclasses.

Although the purposes of the Description and Document types may overlap somewhat, their chief distinction is that Description instances are stored with the CWM metadata whereas Documentation instances are stored externally to the CWM metadata. Although there is an implication here that Documentation instances might represent more voluminous information than Description instances, there is no particular requirement that this be so.

Because Documentation instances are themselves Namespace instances, hierarchical relationships between various externally stored documents can be represented.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== BusinessInformation.Document.reference    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a378B695B033D" name="reference" annotation="Contains a textual representation of the identification, and perhaps the physical location, of externally maintained documentary information about some aspect of the ModelElement(s) with which the Document instance is associated." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== BusinessInformation.Document.type    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A5CE272020C" name="type" annotation="Contains a textual description of the type of information the Document represents. Specific contents are usage defined." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== BusinessInformation.Document.modelElement    [Reference] ==================== -->
        <Model:Reference xmi.id="a387E42E4032F" name="modelElement" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A5C7301CC" referencedEnd="a3820908800B7">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== BusinessInformation.ResourceLocator    [Class] ==================== -->
    <Model:Class xmi.id="a3810D01501DC" name="ResourceLocator" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:ModelElement.annotation>Instances of the ResourceLocator class provide a general means for describing the resources whose location is not defined by a traditional mailing address. For example, a ResourceLocator instance could refer to anything from a location within a building ("Room 317, third file cabinet, 2nd drawer") to a web location ("www.omg.org").

Because they are first class objects in the CWM, ResourceLocator instances may also be used for purposes beyond those associated with the CWM Foundation's Business Information concepts.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== BusinessInformation.ResourceLocator.url    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3810D02F0094" name="url" annotation="Contains the text of the resource location. For Internet locations, this will be a web URL (Uniform Resource Locator) but there is no requirement that this be so. In fact, the string can contain any text meaningful to its intended use in a particular environment." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== BusinessInformation.ResourceLocator.contact    [Reference] ==================== -->
        <Model:Reference xmi.id="a386005B50107" name="contact" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3731D0010334" referencedEnd="a38208F420098">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== BusinessInformation.ContactEmail    [Association] ==================== -->
    <Model:Association xmi.id="a3820871D02AB" name="ContactEmail" isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:ModelElement.annotation>The ContactEmail association indicates the Email instances relevant used by Contact instances.
</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3820871F01C0" name="email" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3731CEAE010E">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3820871F01C1" name="contact" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3731D0010334">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== BusinessInformation.ContactLocation    [Association] ==================== -->
    <Model:Association xmi.id="a38208EB00059" name="ContactLocation" annotation="The ContactLocation association relates Contact instances to relevant Location instances." isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a38208EB002CA" name="location" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3731CF0A02C6">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a38208EB002DA" name="contact" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3731D0010334">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== BusinessInformation.ContactResourceLocator    [Association] ==================== -->
    <Model:Association xmi.id="a38208F410078" name="ContactResourceLocator" annotation="The ContactResourceLocator association relates ResourceLocator instances to the Contact instances in which they participate." isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a38208F420097" name="url" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3810D01501DC">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a38208F420098" name="contact" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3731D0010334">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== BusinessInformation.ContactTelephone    [Association] ==================== -->
    <Model:Association xmi.id="a38208FCD00A7" name="ContactTelephone" annotation="The ContactTelephone association relates telephones to the Contact instances that reference them." isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a38208FCD0357" name="telephone" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3731CE29023A">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a38208FCD0358" name="contact" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3731D0010334">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== BusinessInformation.DocumentDescribes    [Association] ==================== -->
    <Model:Association xmi.id="a382090860088" name="DocumentDescribes" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:ModelElement.annotation>The DocumentDescribes association connects a Document instance with the ModelElement instances to which it pertains.
</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3820908800B7" name="modelElement" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a327A5C7301CC">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3820908801D0" name="document" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a378B694F014B">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== BusinessInformation.ModelElementDescription    [Association] ==================== -->
    <Model:Association xmi.id="a3820910D00B7" name="ModelElementDescription" annotation="The ModelElementDescription association connects a Description instance with the ModelElement instances to which it applies." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3820910D03D4" name="modelElement" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a327A5C7301CC">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3820910E0078" name="description" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a375FF5A2008E">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== BusinessInformation.ModelElementResponsibility    [Association] ==================== -->
    <Model:Association xmi.id="a382091960172" name="ModelElementResponsibility" annotation="The ModelElement Responsibility association identifies the ResponsibleParty instances for each ModelElement and allows determination of the ModelElements for which a ResponsibleParty instance is responsible." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a38209199029B" name="modelElement" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a327A5C7301CC">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a382091990328" name="responsibleParty" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a364CD88902CE">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== BusinessInformation.ResponsiblePartyContact    [Association] ==================== -->
    <Model:Association xmi.id="a3820922E0357" name="ResponsiblePartyContact" annotation="The ResponsiblePartyContact association allows a ResponsibleParty to have multiple sets of contact information. The ordered constraint can be used to determine the sequence in which the sets of contact information should be used." isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3820922F0357" name="contact" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3731D0010334">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3820922F0358" name="responsibleParty" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a364CD88902CE">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
  </Model:Namespace.contents>
</Model:Package>
<!-- ==================== DataTypes    [Package] ==================== -->
<Model:Package xmi.id="a38207A4E0308" name="DataTypes" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
  <Model:ModelElement.annotation>The DataTypes package depends on the following packages:

    org.omg::CWM::ObjectModel::Core

The CWM DataTypes metamodel supports definition of metamodel constructs that modelers can use to create the specific data types they need. Although the CWM Foundation itself does not contain specific data type definitions, a number of data type definitions for widely used environments are provided (in the CWM Data Types chapter) as examples of the appropriate usage of CWM Foundation classes for creating
data type definitions.

OCL Representation of DataTypes Constraints

[C-4-1] A TypeAlias instance cannot alias itself.
context TypeAlias inv:
self.type &lt;&gt; self

[C-4-2] A Union can have at most one default UnionMember instance.
context Union inv:
self.allFeatures-&gt;select(isDefault)-&gt;size &lt;= 1
</Model:ModelElement.annotation>
  <Model:Namespace.contents>
    <!-- ==================== DataTypes.org.omg.xmi.namespace=CWM    [Tag] ==================== -->
    <Model:Tag xmi.id="G.878" name="org.omg.xmi.namespace=CWM" annotation="" tagId="org.omg.xmi.namespace" elements="a38207A4E0308">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CWM</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== DataTypes.org.omg.mof.idl_prefix=org.omg.cwm.foundation    [Tag] ==================== -->
    <Model:Tag xmi.id="G.879" name="org.omg.mof.idl_prefix=org.omg.cwm.foundation" annotation="" tagId="org.omg.mof.idl_prefix" elements="a38207A4E0308">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.cwm.foundation</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== DataTypes.org.omg.mof.idl_substitute_name=DataTypesModule    [Tag] ==================== -->
    <Model:Tag xmi.id="G.880" name="org.omg.mof.idl_substitute_name=DataTypesModule" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a38207A4E0308">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">DataTypesModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== DataTypes.com.urep.jcr.java_prefix=org.omg.java.cwm.foundation    [Tag] ==================== -->
    <Model:Tag xmi.id="G.881" name="com.urep.jcr.java_prefix=org.omg.java.cwm.foundation" annotation="" tagId="com.urep.jcr.java_prefix" elements="a38207A4E0308">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.java.cwm.foundation</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <Model:Import xmi.id="G.882" name="Core" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A6600C5031F"/>
    <!-- ==================== DataTypes.Enumeration    [Class] ==================== -->
    <Model:Class xmi.id="a376ACDB70218" name="Enumeration" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3298A036025B">
      <Model:ModelElement.annotation>The Enumeration class is intended as a starting point from which enumerated data types can be created. An enumerated data type is a collection of identifiers often used as the permitted states that some other attribute or property of the enumerated type may take.

The isOrdered attribute of an Enumeration instance is used to determine if the ordered constraint on the EnumerationLiterals association is relevant for the enumeration. The particular ordering of EnumerationLiteral instances is obtained from the ordered constraint on the association even if the value attributes of the EnumerationLiteral instances contain non-null values that might be used to determine ordering. This is done to provide more flexible ordering semantics.

An instance of Enumeration is also required to create a range data type. Refer to the EnumerationLiteral class for details.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== DataTypes.Enumeration.isOrdered    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a376ACDDB01BA" name="isOrdered" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:ModelElement.annotation>If True, the ordered constraint on the EnumerationLiterals association is relevant. Otherwise, the ordering of EnumerationLiteral instances is considered unspecified.
</Model:ModelElement.annotation>
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== DataTypes.Enumeration.literal    [Reference] ==================== -->
        <Model:Reference xmi.id="a385FF93E002C" name="literal" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a375EF35D035C" referencedEnd="a3820BC8B003B">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== DataTypes.EnumerationLiteral    [Class] ==================== -->
    <Model:Class xmi.id="a375EF35D035C" name="EnumerationLiteral" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:ModelElement.annotation>EnumerationLiteral instances describe the enumeration identifiers, and possibly the
values, associated with an enumerated data type. Enumeration identifiers are contained
in the name attribute derived from the EnumerationLiteral instances ModelElement superclass.

EnumerationLiteral instances may also be used to define expression-based values such as ranges. To do so, simply state the membership expression in the instances value. For example, a range literal can be created by setting the value attribute to "m..n", where m represents the lower bound of the range, and n, the upper bound. In this way, ranges and other more complicated expressions can be intermixed with simple
enumeration literals. For example, an enumeration might contain the literals "1", "2", "4..7", and "&gt; 10".

Consequently, a simple range data type can be created with an Enumeration instance that owns a single EnumerationLiteral instance. For example, a data type for positive integers could be created as shown in the following instance diagram. A model attribute of this data type might then be declared as "posInt : PositiveInteger".</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== DataTypes.EnumerationLiteral.value    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a375EF5F602FE" name="value" annotation="The value associated with an enumeration identifier can be stored here. The attribute is optional because enumeration literals are not required to have a specific, displayable value. This is indicated by either an empty value attribute or a value attribute value whose expression body attribute is a zero-length string." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33CFA00203A2">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== DataTypes.EnumerationLiteral.enumeration    [Reference] ==================== -->
        <Model:Reference xmi.id="a385FF99302DB" name="enumeration" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a376ACDB70218" referencedEnd="a3820BC8B003A">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== DataTypes.org.omg.IDL Substitute Name=umlValue    [Tag] ==================== -->
    <Model:Tag xmi.id="G.883" name="org.omg.IDL Substitute Name=umlValue" annotation="" tagId="org.omg.IDL Substitute Name" elements="a375EF5F602FE">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">umlValue</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== DataTypes.QueryExpression    [Class] ==================== -->
    <Model:Class xmi.id="a3702A52C0196" name="QueryExpression" annotation="QueryExpression instances contain query statements in language-dependent form." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a363559050190"/>
    <!-- ==================== DataTypes.org.omg.CORBA Declaration=typedef Foundation.DataTypes.ProcedureExpression QueryExpression;    [Tag] ==================== -->
    <Model:Tag xmi.id="G.884" name="org.omg.CORBA Declaration=typedef Foundation.DataTypes.ProcedureExpression QueryExpression;" annotation="" tagId="org.omg.CORBA Declaration" elements="a3702A52C0196">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">typedef Foundation.DataTypes.ProcedureExpression QueryExpression;</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== DataTypes.TypeAlias    [Class] ==================== -->
    <Model:Class xmi.id="a3731C90A00AA" name="TypeAlias" annotation="The TypeAlias class is intended to provide a renaming capability for Classifier instances. This class is required to support situations in which creation of an alias for a class effectively creates a new class. For example, CORBA IDL type aliases have different typeCodes than their base types and are therefore treated as distinct types." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3298A036025B">
      <Model:Namespace.contents>
        <!-- ==================== DataTypes.TypeAlias.type    [Reference] ==================== -->
        <Model:Reference xmi.id="a385FF9610107" name="type" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a32989FB2023D" referencedEnd="a3820BB3D0357">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== DataTypes.Union    [Class] ==================== -->
    <Model:Class xmi.id="a3702894E0157" name="Union" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a32989FB2023D">
      <Model:ModelElement.annotation>The Union class represents programming language unions and similarly structured data types. Because of the diversity of union semantics found across software systems, the Union and UnionMember classes are likely candidates for specialization to better capture union semantics in specific language extension packages.

A discriminated Union has a collection of UnionMembers that determine the sets of contents that the Union may contain. Such Unions have an attribute called the discriminator that identifies the memberCase value of the UnionMember that the Union currently contains. The discriminator is found via the UnionDiscriminator association to StructuralFeature. The discriminator may be embedded within UnionMembers or may be located outside the discriminator. If it is located within UnionMembers, the discriminator should occur in every UnionMember at the same location (often, the first).

Undiscriminated unions (for example, a C language union) are also supported, but have an empty discriminator reference, and the memberCase attribute of the UnionMembers it contains is ignored.

Undiscriminated Unions are often used to represent alternate views of a single physical
storage area. A fine degree of control over this aspect of Unions may be obtained by
creating a class that derives from both UnionMember and FixedOffsetField (in the
CWM Record package) and setting the offset attribute instances of that class
accordingly.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== DataTypes.Union.discriminator    [Reference] ==================== -->
        <Model:Reference xmi.id="a385FF90D008A" name="discriminator" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3298F1A403BF" referencedEnd="a3820BC930088">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== DataTypes.org.omg.mof.idl_substitute_name=CwmUnion    [Tag] ==================== -->
    <Model:Tag xmi.id="G.885" name="org.omg.mof.idl_substitute_name=CwmUnion" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a3702894E0157">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CwmUnion</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== DataTypes.UnionMember    [Class] ==================== -->
    <Model:Class xmi.id="a37028B93006D" name="UnionMember" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3A6F62780143">
      <Model:ModelElement.annotation>UnionMembers are described as features of a Union and each represents one of the members of a Union. Note, however, that multiple case values can map to a single UnionMember. If isDefault is true, the union member is the default member.

UnionMember instances are allowed to have a memberCase and be the default case. UnionMember instances often represent structured storage areas. A particular UnionMember may be associated with a Classifier that describes its internal structure via the StructuralFeatureType association (defined in the ObjectModel::Core package). For example, the Record::Group class, itself a Classifier, can be used as the type of a UnionMember in a manner completely analogous to how it is used to describe the type of a structured field (see the instance diagrams in the Record metamodel chapter for details).</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== DataTypes.UnionMember.memberCase    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a37028BB501E4" name="memberCase" annotation="Contains the value of the Unions discriminator for this UnionMember." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33CFA00203A2">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== DataTypes.UnionMember.isDefault    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a37028BF600AB" name="isDefault" annotation="Indicates if this UnionMember is the default member of the Union (implying that when unstated, the Unions discriminator would assume this instances memberCase value)." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== DataTypes.ClassifierAlias    [Association] ==================== -->
    <Model:Association xmi.id="a3820BB3C01D0" name="ClassifierAlias" annotation="The ClassifierAlias association connects TypeAlias instances with the Classifier instances which they rename." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3820BB3D0357" name="type" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a32989FB2023D">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3820BB3D0395" name="alias" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3731C90A00AA">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== DataTypes.EnumerationLiterals    [Association] ==================== -->
    <Model:Association xmi.id="a3820BC8A0097" name="EnumerationLiterals" isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:ModelElement.annotation>The EnumerationLiterals association links enumeration literals to the Enumeration instances that contain them.

If the Enumerations isOrdered attribute is True, the ordering constraint on the association is relevant. Otherwise, it is ignored.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3820BC8B003A" name="enumeration" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a376ACDB70218">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3820BC8B003B" name="literal" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a375EF35D035C">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== DataTypes.UnionDiscriminator    [Association] ==================== -->
    <Model:Association xmi.id="a3820BC920097" name="UnionDiscriminator" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:ModelElement.annotation>The UnionDiscriminator association connects a Union instance with the StructuralFeature instance that can be used to determine which UnionMember instance is currently present in the Union instance. This "discriminating" attribute may be a feature of the UnionMembers themselves or may be a feature of some Classifier that contains the Union instance as one of its Features. In the former case, the
discriminating feature will usually be present at the same offset in each UnionMember instance. If the discriminator reference is empty for a particular Union instance, it is considered to be an "undiscriminated" Union and determination of the current UnionMember residing in the Union is usage-defined.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3820BC930088" name="discriminator" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3298F1A403BF">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3820BC9300C6" name="discriminatedUnion" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3702894E0157">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
  </Model:Namespace.contents>
</Model:Package>
<!-- ==================== Expressions    [Package] ==================== -->
<Model:Package xmi.id="a38207A600078" name="Expressions" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
  <Model:ModelElement.annotation>The Expressions package depends on the following packages:

    org.omg::CWM::ObjectModel::Core

The CWM Expressions metamodel provides basic support for the definition of expression trees within the CWM. The intent of the Expressions metamodel is to provide a place for other CWM packages (such as Transformation) and CWM compliant tools to record shared expressions in a common form that can be used for interchange and lineage tracking.

The expression concept in the CWM Foundation takes a functional view of expression trees, resulting in the ability of relatively few expression types to represent a broad range of expressions. Every function or traditional mathematical operator that appears in an expression hierarchy is represented as a FeatureNode. For example, the arithmetic plus operation a + b can be thought of as the function sum(a, b). The semantics of a particular function or operation are left to specific tool implementations and are not captured by the CWM. 

The hierarchical nature of the CWMs representation of expressions is achieved by the recursive nature of the OperationArgument association. This association allows the sub-hierarchies within an expression to be treated as actual parameters of their parent nodes.

OCL Representation of Expressions Constraints

[C-5-1] A FeatureNode that has parameters other than the"this" parameter represents a Feature that is also an Operation.
context FeatureNode inv:
if self.feature.ownerScope = #instance
then self.argument-&gt;size &gt; 1 implies
   self.feature.oclIsKindOf(Operation)
else self.argument-&gt;size &gt; 0 implies
   self.feature.oclIsKindOf(Operation)
endif

[C-5-2] If the FeatureNode represents an instance-scope feature, the first argument is a "this" or "self" argument; that is, the object invoking the feature. The convention is enforced by checking that the type of the first argument is the same as the type of the feature.
context FeatureNode inv:
self.feature.ownerScope = #instance implies
self.argument-&gt;first.type.allFeatures-&gt;includes(self.feature)

[C-5-3] If the FeatureNode represents a BehavioralFeature, the number of arguments must be equal to the number of the BehavioralFeatures parameters, plus one for the this parameter if the BehavioralFeature is of instance scope.
context FeatureNode inv:
self.feature.oclIsKindOf(BehavioralFeature) implies
(if self.feature.ownerScope = #instance
   then self.argument-&gt;size =
      self.feature.oclAsType(BehavioralFeature).parameters-&gt;size + 1
   else self.argument-&gt;size =
      self.feature.oclAsType(BehavioralFeature).parameters-&gt;size
endif)</Model:ModelElement.annotation>
  <Model:Namespace.contents>
    <!-- ==================== Expressions.org.omg.xmi.namespace=CWM    [Tag] ==================== -->
    <Model:Tag xmi.id="G.886" name="org.omg.xmi.namespace=CWM" annotation="" tagId="org.omg.xmi.namespace" elements="a38207A600078">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CWM</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Expressions.org.omg.mof.idl_prefix=org.omg.cwm.foundation    [Tag] ==================== -->
    <Model:Tag xmi.id="G.887" name="org.omg.mof.idl_prefix=org.omg.cwm.foundation" annotation="" tagId="org.omg.mof.idl_prefix" elements="a38207A600078">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.cwm.foundation</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Expressions.org.omg.mof.idl_substitute_name=ExpressionsModule    [Tag] ==================== -->
    <Model:Tag xmi.id="G.888" name="org.omg.mof.idl_substitute_name=ExpressionsModule" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a38207A600078">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">ExpressionsModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Expressions.com.urep.jcr.java_prefix=org.omg.java.cwm.foundation    [Tag] ==================== -->
    <Model:Tag xmi.id="G.889" name="com.urep.jcr.java_prefix=org.omg.java.cwm.foundation" annotation="" tagId="com.urep.jcr.java_prefix" elements="a38207A600078">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.java.cwm.foundation</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <Model:Import xmi.id="G.890" name="Core" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A6600C5031F"/>
    <!-- ==================== Expressions.ExpressionNode    [Class] ==================== -->
    <Model:Class xmi.id="a376A84310237" name="ExpressionNode" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C330208">
      <Model:ModelElement.annotation>All node types within an expression are derived from the ExpressionNode type.

An expression is stored as a collection of instances of the subtypes of ExpressionNode arranged in a hierarchical fashion. The ExpressionNode instance at the top (or root) of the hierarchy represents the value of the expression and serves as a starting point for expression evaluation. Refer to the descriptions of the subtypes of ExpressionNode (ElementNode, ConstantNode, and FeatureNode) for additional information about the representation of expressions.

One important purpose for providing storage of expressions as a general feature of the CWM is to promote sharing them between tools and to provide a means for recording lineage relationships between components within expressions. Specific details of the implementation of expression operators are left to the implementing tools.

When ExpressionNode is used as the type of an Attribute, an instance of the Attribute can contain either an expression tree as described here or a textual representation of the expression in body and language values of in an attribute of type Expression (defined ObjectModel). The expression attribute is provided for the latter usage. To obtain CWMs sharing and lineage tracking features for elements within an expression, the expression must be represented as an expression hierarcy.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Expressions.ExpressionNode.expression    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a38A0ECA10399" name="expression" annotation="Contains a textual representation of the expression relevant for this ExpressionNode instance." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33CFA00203A2">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Expressions.ExpressionNode.featureNode    [Reference] ==================== -->
        <Model:Reference xmi.id="a386003C903A7" name="featureNode" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a376A84D70341" referencedEnd="a3820C1610059">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Expressions.ExpressionNode.type    [Reference] ==================== -->
        <Model:Reference xmi.id="a3860038F01F1" name="type" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a32989FB2023D" referencedEnd="a3820BFAC02AB">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Expressions.ConstantNode    [Class] ==================== -->
    <Model:Class xmi.id="a376A84C202B4" name="ConstantNode" annotation="Instances of the ConstantNode class are ExpressionNodes that represent constant values within expressions. Appropriate uses of the ConstantNode class place the values of constants in the value attribute, rather than in the expression::body attribute inherited from ExpressionNode. The latter attribute is intended for a different purpose; see the description of the ExpressionNode class for details." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a376A84310237">
      <Model:Namespace.contents>
        <!-- ==================== Expressions.ConstantNode.value    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a376A853C01E9" name="value" annotation="The value of a constant in an expression tree." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a37AB1FF90221">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Expressions.org.omg.IDL Substitute Name=umlValue    [Tag] ==================== -->
    <Model:Tag xmi.id="G.891" name="org.omg.IDL Substitute Name=umlValue" annotation="" tagId="org.omg.IDL Substitute Name" elements="a376A853C01E9">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">umlValue</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Expressions.ElementNode    [Class] ==================== -->
    <Model:Class xmi.id="a376A84CD0321" name="ElementNode" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a376A84310237">
      <Model:ModelElement.annotation>An ElementNode is a node in an expression that references some ModelElement instance. This subclass of ExpressionNode allows an expression to reference any CWM model element that is not a Feature and cannot, therefore, be represented as a FeatureNode.

Typically, use of this subclass of ExpressionNode implies that a tool attempting to evaluate the expression will be able to determine if the referenced ModelElement instance is also an instance of some interesting subclass of ModelElement that contains a value of interest in the expression.
</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Expressions.ElementNode.modelElement    [Reference] ==================== -->
        <Model:Reference xmi.id="a3860032D02EB" name="modelElement" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A5C7301CC" referencedEnd="a3820C1EC0069">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Expressions.FeatureNode    [Class] ==================== -->
    <Model:Class xmi.id="a376A84D70341" name="FeatureNode" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a376A84310237">
      <Model:ModelElement.annotation>The FeatureNode class represents ExpressionNode instances that are features (i.e., attributes or operations) of some Classifier instance within the CWM.

A FeatureNode with a null OperationArgument association represents either a parameter-less operation or an attribute value obtained from some StructuralFeature instance.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Expressions.FeatureNode.argument    [Reference] ==================== -->
        <Model:Reference xmi.id="a386003E6025E" name="argument" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a376A84310237" referencedEnd="a3820C161005A">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Expressions.FeatureNode.feature    [Reference] ==================== -->
        <Model:Reference xmi.id="a386003F80201" name="feature" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a32989F9700FE" referencedEnd="a3820C03B00B7">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Expressions.ExpressionNodeClassifier    [Association] ==================== -->
    <Model:Association xmi.id="a3820BFAA024D" name="ExpressionNodeClassifier" annotation="The ExpressionNodeClassifier association identifies the type of an ExpressionNode instance." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3820BFAC02AB" name="type" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a32989FB2023D">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3820BFAC02E9" name="expressionNode" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a376A84310237">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Expressions.NodeFeature    [Association] ==================== -->
    <Model:Association xmi.id="a3820C03902E9" name="NodeFeature" annotation="The NodeFeature association identifies the Feature (usually, an Attribute or Operation subtype) that FeatureNode represents." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3820C03B00B7" name="feature" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a32989F9700FE">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3820C03B00C6" name="featureNode" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a376A84D70341">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Expressions.OperationArgument    [Association] ==================== -->
    <Model:Association xmi.id="a3820C15E0153" name="OperationArgument" isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:ModelElement.annotation>The OperationArgument association identifies and orders the actual arguments of an Operation indicated by the FeatureNode end of the association. This association is meaningful only if the FeatureNode references, via the NodeFeature association, a Feature that is also an Operation. The association is not meaningful under other
circumstances.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3820C1610059" name="featureNode" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a376A84D70341">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3820C161005A" name="argument" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a376A84310237">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Expressions.ReferencedElement    [Association] ==================== -->
    <Model:Association xmi.id="a3820C1EA0088" name="ReferencedElement" annotation="The ReferencedElement association links the ElementNode instances of an expression with the ModelElement instances to which they refer." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3820C1EC0069" name="modelElement" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a327A5C7301CC">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3820C1EC0134" name="elementNode" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a376A84CD0321">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
  </Model:Namespace.contents>
</Model:Package>
<!-- ==================== KeysIndexes    [Package] ==================== -->
<Model:Package xmi.id="a38207A680191" name="KeysIndexes" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
  <Model:ModelElement.annotation>The KeysIndexes package depends on the following package:

    org.omg::CWM::ObjectModel::Core

Keys and indexes as means for specifying instances and for identifying alternate sortings of instances are  epresented in the CWMFoundation so that they can be shared among the various data models that employ hem. The CWM Foundation defines the base concepts (uniqueness and relationships implemented as keys)  pon which more specific key structures can be built by other CWM and tool-specific packages.

The concepts of key and index have been placed in the CWM Foundation because they are available in many  types of data resources. In the CWM Foundation class and association descriptions that follow, relational model  examples are frequently used when discussing the definition and usage of key and index types. This is done because of the wide-spread availability of relational systems and is thought to promote an understanding of the underlying concepts. These concepts, however, are no less applicable to other data models as well.

The two central classes for representing the concept of keys are UniqueKey and KeyRelationship. UniqueKey instances correspond to the notion that keys represent the identity of instances -- similar to the relational models concept of a primary key or an object models concept of an object identity. In contrast, KeyRelationship instancescorrespond to the notion that keys embedded in an instance can be used to determine the identity of other related instances -- similar to the relational model concept of foreign key and the object model concept of a reference. Consequently, UniqueKey and KeyRelationship are best thought of as representing roles that collections of Features of Classifiers play rather than Classifiers describing the internal structure of keys. Representing keys as roles rather than structural entities provides greater flexibility and allows the reuse of  Features in multiple keys and in differing relationships to each other. Associations within the KeysIndexes package describe how UniqueKey and KeyRelationship instances describe the roles they play for various
Class instances and the StructuralFeature instances they contain.

OCL Representation of KeysIndexes Constraints

[C-6-1]The isAscending attribute is valid only if the isSorted attribute is True.
context IndexedFeature inv:
self.isAscending-&gt;notEmpty implies self.index.isSorted

[C-6-2] A KeyRelationship instance must be owned by one and only one Class
instance.
context KeyRelationship inv:
(self.namespace-&gt;size = 1) and self.namespace.oclIsKindOf(Class)

[C-6-3] An UniqueKey instance must be owned by one and only one Class instance.
context UniqueKey inv:
(self.namespace-&gt;size = 1) and self.namespace.oclIsKindOf(Class)</Model:ModelElement.annotation>
  <Model:Namespace.contents>
    <!-- ==================== KeysIndexes.org.omg.xmi.namespace=CWM    [Tag] ==================== -->
    <Model:Tag xmi.id="G.892" name="org.omg.xmi.namespace=CWM" annotation="" tagId="org.omg.xmi.namespace" elements="a38207A680191">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CWM</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== KeysIndexes.org.omg.mof.idl_prefix=org.omg.cwm.foundation    [Tag] ==================== -->
    <Model:Tag xmi.id="G.893" name="org.omg.mof.idl_prefix=org.omg.cwm.foundation" annotation="" tagId="org.omg.mof.idl_prefix" elements="a38207A680191">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.cwm.foundation</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== KeysIndexes.org.omg.mof.idl_substitute_name=KeysIndexesModule    [Tag] ==================== -->
    <Model:Tag xmi.id="G.894" name="org.omg.mof.idl_substitute_name=KeysIndexesModule" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a38207A680191">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">KeysIndexesModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== KeysIndexes.com.urep.jcr.java_prefix=org.omg.java.cwm.foundation    [Tag] ==================== -->
    <Model:Tag xmi.id="G.895" name="com.urep.jcr.java_prefix=org.omg.java.cwm.foundation" annotation="" tagId="com.urep.jcr.java_prefix" elements="a38207A680191">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.java.cwm.foundation</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <Model:Import xmi.id="G.896" name="Core" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A6600C5031F"/>
    <!-- ==================== KeysIndexes.UniqueKey    [Class] ==================== -->
    <Model:Class xmi.id="a376A879E0072" name="UniqueKey" annotation="A UniqueKey represents a collection of features of some Class that, taken together, uniquely identify instances of the Class. Instances of UniqueKey for which all features are required to have non-null values are candidates for use as primary keys such as those defined by relational DBMSs." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:Namespace.contents>
        <!-- ==================== KeysIndexes.UniqueKey.feature    [Reference] ==================== -->
        <Model:Reference xmi.id="a386000FD005B" name="feature" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3298F1A403BF" referencedEnd="a3821C10F024D">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== KeysIndexes.UniqueKey.keyRelationship    [Reference] ==================== -->
        <Model:Reference xmi.id="a3860012B02FB" name="keyRelationship" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a376A8A6E00C0" referencedEnd="a385FCF640358">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== KeysIndexes.Index    [Class] ==================== -->
    <Model:Class xmi.id="a376A89040331" name="Index" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:ModelElement.annotation>Instances of the Index class represent the ordering of the instances of some other Class, and the Index is said to "span" the Class. Indexes normally have an ordered set of attributes of the Class instance they span that make up the "key" of the index; this set of relationships is represented by the IndexedFeature class that indicates how the attributes are used by the Index instance.

The Index class is intended primarily as a starting point for tools that require the notion
of an index.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== KeysIndexes.Index.isPartitioning    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3810E45B0325" name="isPartitioning" annotation="If True, this Index instance is used as a partitioning index." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== KeysIndexes.Index.isSorted    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3872623800F5" name="isSorted" annotation="If True, the Index instance is maintained in a sorted order." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== KeysIndexes.Index.isUnique    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a376A894C02A4" name="isUnique" annotation="The isUnique attribute is True if the Index instance guarantees all of its instances have a unique key value." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== KeysIndexes.Index.indexedFeature    [Reference] ==================== -->
        <Model:Reference xmi.id="a385FFFCD03E5" name="indexedFeature" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a377BD3F9017F" referencedEnd="a3820C91E0366">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== KeysIndexes.Index.spannedClass    [Reference] ==================== -->
        <Model:Reference xmi.id="a38987E5C0212" name="spannedClass" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3298A02900FE" referencedEnd="a38987D150370">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== KeysIndexes.KeyRelationship    [Class] ==================== -->
    <Model:Class xmi.id="a376A8A6E00C0" name="KeyRelationship" annotation="KeyRelationship instances represent relationships between UniqueKey instances and the Class(es) that reference them. This class is intended as a starting point for the creation of &quot;foreign key&quot; and other associative relationships." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:Namespace.contents>
        <!-- ==================== KeysIndexes.KeyRelationship.feature    [Reference] ==================== -->
        <Model:Reference xmi.id="a3860015E03C6" name="feature" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3298F1A403BF" referencedEnd="a3821BFAA028B">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== KeysIndexes.KeyRelationship.uniqueKey    [Reference] ==================== -->
        <Model:Reference xmi.id="a3860017A00E7" name="uniqueKey" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a376A879E0072" referencedEnd="a385FCF640387">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== KeysIndexes.IndexedFeature    [Class] ==================== -->
    <Model:Class xmi.id="a377BD3F9017F" name="IndexedFeature" annotation="Instances of the IndexedFeature class map StructuralFeature instances of the spanned Class instance to the Index instances that employ them as (part of) their key. Attributes of IndexedFeature instances indicate how specific StructuralFeature instance are used in Index keys." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:Namespace.contents>
        <!-- ==================== KeysIndexes.IndexedFeature.isAscending    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3783CCCC02C3" name="isAscending" annotation="The isAscending attribute is true if the feature is sorted in ascending order and false, if descending order." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== KeysIndexes.IndexedFeature.feature    [Reference] ==================== -->
        <Model:Reference xmi.id="a38600014001C" name="feature" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3298F1A403BF" referencedEnd="a3820C7FF01C0">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== KeysIndexes.IndexedFeature.index    [Reference] ==================== -->
        <Model:Reference xmi.id="a385FFFFA001C" name="index" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a376A89040331" referencedEnd="a3820C91E0357">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== KeysIndexes.IndexedFeatures    [Association] ==================== -->
    <Model:Association xmi.id="a3820C7FD0308" name="IndexedFeatures" annotation="The IndexedFeatures association links StructuralFeature instances to information about how they participate in the keys of Index instances." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3820C7FF01C0" name="feature" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3298F1A403BF">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3820C7FF01E0" name="indexedFeature" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a377BD3F9017F">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== KeysIndexes.IndexedFeatureInfo    [Association] ==================== -->
    <Model:Association xmi.id="a3820C91B0172" name="IndexedFeatureInfo" annotation="The IndexedFeatureInfo association connects an Index instance to information about how the StructuralFeature instances that are constituents of the Indexs key are used by the Index." isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3820C91E0357" name="index" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a376A89040331">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3820C91E0366" name="indexedFeature" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a377BD3F9017F">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== KeysIndexes.KeyRelationshipFeatures    [Association] ==================== -->
    <Model:Association xmi.id="a3821BFA401E0" name="KeyRelationshipFeatures" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:ModelElement.annotation>The KeyRelationshipFeatures association links KeyRelationship instances with the
StructuralFeature instances that comprise their key.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3821BFAA028B" name="feature" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3298F1A403BF">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3821BFAA02AB" name="keyRelationship" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a376A8A6E00C0">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== KeysIndexes.UniqueFeature    [Association] ==================== -->
    <Model:Association xmi.id="a3821C10C00B7" name="UniqueFeature" annotation="The UniqueFeature association identifies the Feature instances of a Class instance that confer uniqueness. The ordered constraint is used to determine the order of StructuralFeature instances in the UniqueKey instance." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3821C10F024D" name="feature" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3298F1A403BF">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3821C10F026C" name="uniqueKey" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a376A879E0072">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== KeysIndexes.UniqueKeyRelationship    [Association] ==================== -->
    <Model:Association xmi.id="a385FCF6300E7" name="UniqueKeyRelationship" annotation="The UniqueKeyRelationship association links a KeyRelationship with the UniqueKey with which it is paired. For example, in relational model terms, this association links a foreign key -- the KeyRelationship instance -- with the primary key -- the UniqueKey instance -- with which it is paired." isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a385FCF640358" name="keyRelationship" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a376A8A6E00C0">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a385FCF640387" name="uniqueKey" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a376A879E0072">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== KeysIndexes.IndexSpansClass    [Association] ==================== -->
    <Model:Association xmi.id="a38987D1203CA" name="IndexSpansClass" annotation="Associates indexes with the classes they span. This relationship is separate from the ownership of indexes, to allow modeling of systems where an index is NOT owned by the object it spans. In most situations, however, the spanned and owning Class instances will be the same." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a38987D150370" name="spannedClass" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3298A02900FE">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a38987D1503AC" name="index" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a376A89040331">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
  </Model:Namespace.contents>
</Model:Package>
<!-- ==================== SoftwareDeployment    [Package] ==================== -->
<Model:Package xmi.id="a3731C42F0314" name="SoftwareDeployment" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
  <Model:ModelElement.annotation>The Software Deployment package depends on the following packages:

    org.omg::CWM::ObjectModel::Core
    org.omg::CWM::Foundation::BusinessInformation
    org.omg::CWM::Foundation::TypeMapping

The Software Deployment package contains classes to record how the software in a data warehouse is used.

A software package is represented as a SoftwareSystem object, which is a subtype of Subsystem. A SoftwareSystem may reference one or more TypeSystems that define the datatypes supported by the SoftwareSystem. The mappings between datatypes in different TypeSystems may be recorded as TypeMappings, as described in the TypeMapping metamodel.

The separate components of a software package are each represented as Components that are either owned or imported by the SoftwareSystem. When a SoftwareSystem is installed, the deployment is recorded as a DeployedSoftwareSystem and a set of DeployedComponents.

A DeployedComponent represents the deployment of a specific Component on a specific computer. Dependencies between DeployedComponents on the same computer may be documented as Usage dependencies between them.

Individual computers are represented as Machine objects, located at a Site. A Site represents a geographical location, which may be recorded at any relevant level of granularity, e.g. a country, a building, or a room in a building. Hierarchical links between Sites at different levels of granularity may be documented.

A DataManager is a DeployedComponent such as a DBMS or file management system that provides access to data. It may be associated with one or more data Packages identifying the Schema, Relational Catalog, Files or other data containers that it provides access to.

A DataProvider is a DeployedComponent that acts as a client to provide access to data held by a DataManager. For example, an ODBC or JDBC client on a specific Machine would be represented as a DataProvider. A DataProvider may have several ProviderConnections, each identifying a DataManager that may be accessed using the DataProvider.

If a DataProvider uses a name for a data Package that is different from the actual name used by the DataManager, a PackageUsage object can be added to record this. 

As a DataProvider is a subtype of DataManager, it is possible for a DataProvider to access data from a DataManager which is actually a DataProvider acting as a client to yet another DataManager.

The model for the Software Deployment package is shown in three diagrams. The first diagram shows the objects related to software deployment, while the second diagram displays the DataManager and DataProvider area of the model. The third diagram shows the inheritance structure for all the classes in the Software Deployment package.

OCL Representation of SoftwareDeployment Constraints

[C-8-1] A PackageUsage must have a single Package (or subtype of Package) as its supplier
context PackageUsage inv:
self.supplier-&gt;size=1 and
self.supplier-&gt;at(1).oclIsKindOf(Package)

[C-8-2] A ProviderConnection must not associate a DataProvider with itself
context ProviderConnection inv:
self.dataManager &lt;&gt; self.dataProvider

[C-8-3] A Site must not have a containingSite reference that refers to itself.
context Site inv:
self.containingSite -&gt; forAll (c | c &lt;&gt; self)</Model:ModelElement.annotation>
  <Model:Namespace.contents>
    <!-- ==================== SoftwareDeployment.org.omg.mof.idl_prefix=org.omg.cwm.foundation    [Tag] ==================== -->
    <Model:Tag xmi.id="G.897" name="org.omg.mof.idl_prefix=org.omg.cwm.foundation" annotation="" tagId="org.omg.mof.idl_prefix" elements="a3731C42F0314">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.cwm.foundation</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== SoftwareDeployment.org.omg.xmi.namespace=CWM    [Tag] ==================== -->
    <Model:Tag xmi.id="G.898" name="org.omg.xmi.namespace=CWM" annotation="" tagId="org.omg.xmi.namespace" elements="a3731C42F0314">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CWM</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== SoftwareDeployment.org.omg.mof.idl_substitute_name=SoftwareDeploymentModule    [Tag] ==================== -->
    <Model:Tag xmi.id="G.899" name="org.omg.mof.idl_substitute_name=SoftwareDeploymentModule" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a3731C42F0314">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">SoftwareDeploymentModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== SoftwareDeployment.com.urep.jcr.java_prefix=org.omg.java.cwm.foundation    [Tag] ==================== -->
    <Model:Tag xmi.id="G.900" name="com.urep.jcr.java_prefix=org.omg.java.cwm.foundation" annotation="" tagId="com.urep.jcr.java_prefix" elements="a3731C42F0314">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.java.cwm.foundation</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <Model:Import xmi.id="G.901" name="Core" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A6600C5031F"/>
    <Model:Import xmi.id="G.902" name="BusinessInformation" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a38207A770114"/>
    <Model:Import xmi.id="G.903" name="TypeMapping" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3817221D01F4"/>
    <!-- ==================== SoftwareDeployment.Site    [Class] ==================== -->
    <Model:Class xmi.id="a3731C5690320" name="Site" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3731CF0A02C6">
      <Model:ModelElement.annotation>A Site represents a geographical location. It provides a grouping mechanism for a group of machines at the same location.

Sites may be documented at different levels of granularity; containment links may be used to record hierarchical relationships between Sites.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== SoftwareDeployment.Site.containingSite    [Reference] ==================== -->
        <Model:Reference xmi.id="a38736FB503CE" name="containingSite" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3731C5690320" referencedEnd="a374030990232">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== SoftwareDeployment.Machine    [Class] ==================== -->
    <Model:Class xmi.id="a3731C5D500A4" name="Machine" annotation="A Machine represents a computer. The Site at which the Machine is located and the Components deployed on the Machine may be recorded." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a32B69F3A0118">
      <Model:Namespace.contents>
        <!-- ==================== SoftwareDeployment.Machine.ipAddress    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3826AA4C0382" name="ipAddress" annotation="A fixed IP address for the Machine." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== SoftwareDeployment.Machine.hostName    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A59ED87037F" name="hostName" annotation="A Host Name for the Machine. This may be used to identify the Machine on the network when IP addresses are dynamically allocated." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== SoftwareDeployment.Machine.machineID    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A59EE9E00FF" name="machineID" annotation="An identification code for the Machine." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== SoftwareDeployment.Machine.site    [Reference] ==================== -->
        <Model:Reference xmi.id="a38721E760014" name="site" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3731C5690320" referencedEnd="a37668AC7031C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== SoftwareDeployment.Machine.deployedComponent    [Reference] ==================== -->
        <Model:Reference xmi.id="a387242270257" name="deployedComponent" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3731C67B0071" referencedEnd="a3766779B0281">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== SoftwareDeployment.SoftwareSystem    [Class] ==================== -->
    <Model:Class xmi.id="a3731C5FD0337" name="SoftwareSystem" annotation="A SoftwareSystem represents a specific release of a software product. It consists of a set of software Components." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a33CD6DE5030C">
      <Model:Namespace.contents>
        <!-- ==================== SoftwareDeployment.SoftwareSystem.type    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A59F2CF036F" name="type" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:ModelElement.annotation>Identifies the type of the software product. One of the following predefined values should be used if appropriate:

    OS, DBMS, MDDB, FileSystem, ODBC, JDBC or Application.</Model:ModelElement.annotation>
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== SoftwareDeployment.SoftwareSystem.subtype    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A59F32B019A" name="subtype" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:ModelElement.annotation>This is used in conjunction with the type attribute to provide additional information about the type of the software product.

For some of the predefined types, suggested subtype values are listed below:

   For an Operating System product (type OS):  
      AIX, Linux, MVS, NT, Solaris, SunOS, VMS or Windows.
   For a Database Management System product (type DBMS): 
      DB2, DMS II, IMS, Informix, Oracle, SQLServer or Sybase.
   For a Multidimensional Database product (type MDDB): 
      Essbase or Express.</Model:ModelElement.annotation>
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== SoftwareDeployment.SoftwareSystem.supplier    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3742DD1A036B" name="supplier" annotation="The supplier of the software product." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== SoftwareDeployment.SoftwareSystem.version    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3731C95F004E" name="version" annotation="The version identification for the software product." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== SoftwareDeployment.SoftwareSystem.typespace    [Reference] ==================== -->
        <Model:Reference xmi.id="a387222B10043" name="typespace" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a38173AAE02EE" referencedEnd="a38188310007D">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== SoftwareDeployment.DeployedComponent    [Class] ==================== -->
    <Model:Class xmi.id="a3731C67B0071" name="DeployedComponent" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5D19033E">
      <Model:ModelElement.annotation>A DeployedComponent represents the deployment of a Component on a specific Machine.

It may represent the deployment of any type of Component. However, if the Component is part of a SoftwareSystem, the DeployedComponent should be part of a DeployedSoftwareSystem.

Usage dependencies may be used to document that one DeployedComponent uses another DeployedComponent.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== SoftwareDeployment.DeployedComponent.pathname    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a381ED68F031A" name="pathname" annotation="A pathname for the DeployedComponent within the Machines file system." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== SoftwareDeployment.DeployedComponent.component    [Reference] ==================== -->
        <Model:Reference xmi.id="a387213D003C2" name="component" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A59C2520149" referencedEnd="a3A59C2F600FF">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== SoftwareDeployment.DeployedComponent.machine    [Reference] ==================== -->
        <Model:Reference xmi.id="a38723FD70292" name="machine" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3731C5D500A4" referencedEnd="a3766779B0280">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== SoftwareDeployment.DeployedComponent.usingComponents    [Reference] ==================== -->
        <Model:Reference xmi.id="a3BC625320289" name="usingComponents" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3731C67B0071" referencedEnd="a3BC619E00056">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== SoftwareDeployment.DeployedComponent.usedComponents    [Reference] ==================== -->
        <Model:Reference xmi.id="a3BC625420037" name="usedComponents" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3731C67B0071" referencedEnd="a3BC619E00047">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== SoftwareDeployment.DeployedSoftwareSystem    [Class] ==================== -->
    <Model:Class xmi.id="a3795CFCF01CC" name="DeployedSoftwareSystem" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5D19033E">
      <Model:ModelElement.annotation>A DeployedSoftwareSystem represents a deployment of a SoftwareSystem.

Its associated DeployedComponents identify the individual Component deployments that constitute the DeployedSoftwareSystem. These DeployedComponents are not necessarily all deployed on the same Machine.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== SoftwareDeployment.DeployedSoftwareSystem.fixLevel    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3BB4C90A0302" name="fixLevel" annotation="Describes the fix level of the DeployedSoftwareSystem instance." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== SoftwareDeployment.DeployedSoftwareSystem.softwareSystem    [Reference] ==================== -->
        <Model:Reference xmi.id="a3872118C02FF" name="softwareSystem" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3731C5FD0337" referencedEnd="a3795D55902DA">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== SoftwareDeployment.DataManager    [Class] ==================== -->
    <Model:Class xmi.id="a376A2BCD0186" name="DataManager" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3731C67B0071">
      <Model:ModelElement.annotation>A DataManager represents a DeployedComponent that manages access to data. For example, a deployed DBMS or File Management System would be represented as a DataManager.

The DataManager may be associated with one or more data Packages identifying the Schema, Relational Catalog, Files, or other data container that it provides access to.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== SoftwareDeployment.DataManager.isCaseSensitive    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3826AD6E01D6" name="isCaseSensitive" annotation="Indicates whether or not the DataManager treats lower case letters within object names as being different from the corresponding upper case letters." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== SoftwareDeployment.DataManager.dataPackage    [Reference] ==================== -->
        <Model:Reference xmi.id="a38723C70016D" name="dataPackage" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A5D19033E" referencedEnd="a37B2BB3E01AE">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== SoftwareDeployment.DataProvider    [Class] ==================== -->
    <Model:Class xmi.id="a37668549009C" name="DataProvider" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a376A2BCD0186">
      <Model:ModelElement.annotation>A DataProvider is a deployed software Component that acts as a client to provide access to data that is managed by another product. For instance, a DataProvider might represent a deployed ODBC or JDBC product.

The DataProvider may have resourceConnection references to ProviderConnections identifying the DataManagers to which it provides access.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== SoftwareDeployment.DataProvider.resourceConnection    [Reference] ==================== -->
        <Model:Reference xmi.id="a387239440206" name="resourceConnection" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a378357EA0015" referencedEnd="a37835A6E0351">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== SoftwareDeployment.ProviderConnection    [Class] ==================== -->
    <Model:Class xmi.id="a378357EA0015" name="ProviderConnection" annotation="A ProviderConnection represents a connection that allows a DataProvider acting as a client to access data from a specific DataManager. For example a ProviderConnection could represent a connection from an ODBC or JDBC client to a DBMS." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:Namespace.contents>
        <!-- ==================== SoftwareDeployment.ProviderConnection.isReadOnly    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a37836462008D" name="isReadOnly" annotation="Indicates whether the ProviderConnection only allows read access to the DataManager." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== SoftwareDeployment.ProviderConnection.dataProvider    [Reference] ==================== -->
        <Model:Reference xmi.id="a38723A6001FA" name="dataProvider" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a37668549009C" referencedEnd="a37835A6E0350">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== SoftwareDeployment.ProviderConnection.dataManager    [Reference] ==================== -->
        <Model:Reference xmi.id="a38723AD60178" name="dataManager" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a376A2BCD0186" referencedEnd="a37835AB201AA">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== SoftwareDeployment.Component    [Class] ==================== -->
    <Model:Class xmi.id="a3A59C2520149" name="Component" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a32989FB2023D">
      <Model:ModelElement.annotation>A Component represents a physical piece of implementation of a system, including software code (source, binary or executable) or equivalents such as scripts or command files. A Component is a subtype of Classifier, and so may have its own Features, such as Attributes and Operations.

Deployment of a Component on a specific Machine is represented as a DeployedComponent.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== SoftwareDeployment.Component.designPackage    [Reference] ==================== -->
        <Model:Reference xmi.id="a3BC6289D0150" name="designPackage" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A5D19033E" referencedEnd="a3BC6190C03B2">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== SoftwareDeployment.PackageUsage    [Class] ==================== -->
    <Model:Class xmi.id="a3A59EFD80363" name="PackageUsage" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A646F00E6">
      <Model:ModelElement.annotation>A PackageUsage represents a usage of a Package. It is particularly relevant in situations where a specific usage uses an alternative name for the Package, as this alternative name can be recorded using the packageAlias attribute.

For example, if a DataProvider representing an ODBC or JDBC client uses a name for a relational database that is different from the dataPackage name used by the RDBMS server, a PackageUsage that has the relevant ProviderConnection as client and the servers data Package as supplier can be added. Its packageAlias attribute can be used to record the name by which the data Package is known to the DataProvider.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== SoftwareDeployment.PackageUsage.packageAlias    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A59F0E200D1" name="packageAlias" annotation="If this attribute is present, it identifies the name by which the Package is known to the client." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FCF03C0">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== SoftwareDeployment.RelatedSites    [Association] ==================== -->
    <Model:Association xmi.id="a37403089008C" name="RelatedSites" annotation="This may be used to record hierarchical relationships between Sites." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a374030990232" name="containingSite" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3731C5690320">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a374030990233" name="containedSite" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3731C5690320">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== SoftwareDeployment.ComponentsOnMachine    [Association] ==================== -->
    <Model:Association xmi.id="a3766779A02FD" name="ComponentsOnMachine" annotation="Identifies the Machine on which a DeployedComponent is deployed." isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3766779B0280" name="machine" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a3731C5D500A4">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3766779B0281" name="deployedComponent" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3731C67B0071">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== SoftwareDeployment.SiteMachines    [Association] ==================== -->
    <Model:Association xmi.id="a37668AC60399" name="SiteMachines" annotation="Identifies the Site on which a Machine is located." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a37668AC7031C" name="site" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3731C5690320">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a37668AC7031D" name="machine" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3731C5D500A4">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== SoftwareDeployment.DataProviderConnections    [Association] ==================== -->
    <Model:Association xmi.id="a37835A6C0022" name="DataProviderConnections" annotation="Identifies the ProviderConnections that a DataProvider acting as a client may use." isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a37835A6E0350" name="dataProvider" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a37668549009C">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a37835A6E0351" name="resourceConnection" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a378357EA0015">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== SoftwareDeployment.DataManagerConnections    [Association] ==================== -->
    <Model:Association xmi.id="a37835AB1002C" name="DataManagerConnections" annotation="Identifies the DataManager that is accessed by a ProviderConnection." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a37835AB201AA" name="dataManager" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a376A2BCD0186">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a37835AB201BE" name="clientConnection" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a378357EA0015">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== SoftwareDeployment.SoftwareSystemDeployments    [Association] ==================== -->
    <Model:Association xmi.id="a3795D5580364" name="SoftwareSystemDeployments" annotation="Identifies the deployments of a SoftwareSystem." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3795D55902D9" name="deployment" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3795CFCF01CC">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3795D55902DA" name="softwareSystem" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3731C5FD0337">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== SoftwareDeployment.DataManagerDataPackage    [Association] ==================== -->
    <Model:Association xmi.id="a37B2BB3B022C" name="DataManagerDataPackage" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:ModelElement.annotation>This associates the Package(s) containing the definition of the data with the DataManager that is used to access it.

For example, it may be used to associate a Schema, Relational Catalog or File with the DataManager that manages access to it.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a37B2BB3E01AE" name="dataPackage" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a327A5D19033E">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a37B2BB3E0212" name="dataManager" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a376A2BCD0186">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== SoftwareDeployment.DeployedSoftwareSystemComponents    [Association] ==================== -->
    <Model:Association xmi.id="a381484320027" name="DeployedSoftwareSystemComponents" annotation="This association identifies the DeployedComponents that constitute a DeployedSoftwareSystem." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a381484330137" name="deployedSoftwareSystem" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3795CFCF01CC">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a38148433014B" name="deployedComponent" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3731C67B0071">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== SoftwareDeployment.ComponentDeployments    [Association] ==================== -->
    <Model:Association xmi.id="a3A59C2F600FE" name="ComponentDeployments" annotation="This association identifies the deployments of a Component." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A59C2F600FF" name="component" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A59C2520149">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A59C2F60100" name="deployment" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3731C67B0071">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== SoftwareDeployment.SystemTypespace    [Association] ==================== -->
    <Model:Association xmi.id="a3818830E02FD" name="SystemTypespace" annotation="A SoftwareSystems typespace identifies the TypeSystem(s) containing the datatypes supported by the SoftwareSystem." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a38188310007D" name="typespace" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a38173AAE02EE">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3818831000AB" name="supportingSystem" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3731C5FD0337">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== SoftwareDeployment.ComponentDesign    [Association] ==================== -->
    <Model:Association xmi.id="a3BC6190C0047" name="ComponentDesign" annotation="This associates Components with the Packages containing their design.  Typically this will refrence the logical schema." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3BC6190C03B2" name="designPackage" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a327A5D19033E">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3BC6190D0008" name="component" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A59C2520149">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== SoftwareDeployment.DeployedComponentUsage    [Association] ==================== -->
    <Model:Association xmi.id="a3BC619DD0141" name="DeployedComponentUsage" annotation="This links a DeployedComponent to the other DeployedComponents that it uses.  Typically this might link a deployed application to the physical databases (instances of DataManager) that it accesses." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3BC619E00047" name="usedComponents" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3731C67B0071">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3BC619E00056" name="usingComponents" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3731C67B0071">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
  </Model:Namespace.contents>
</Model:Package>
<!-- ==================== TypeMapping    [Package] ==================== -->
<Model:Package xmi.id="a3817221D01F4" name="TypeMapping" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
  <Model:ModelElement.annotation>The TypeMapping package depends on the following packages:

    org.omg::CWM::ObjectModel::Core

The TypeMapping package supports the mapping of data types between different systems. The purpose of these mappings is to indicate data types in different systems that are sufficiently compatible that data values can be interchanged between them. Multiple mappings are allowed between any pair of types and a means of identifying the preferred mapping is provided.

OCL Representation of TypeMapping Constraints

[C-8-1] The sourceType and targetType references may not refer to the same
Classifier instance.
context TypeMapping inv:
self.sourceType &lt;&gt; self.targetType

[C-8-2] A TypeSystem may own only Classifiers and TypeMappings.
context TypeSystem inv:
self.ownedElement-&gt;forAll( e | e.oclIsKindOf(Classifier) or e.oclIsKindOf(TypeMapping))</Model:ModelElement.annotation>
  <Model:Namespace.contents>
    <!-- ==================== TypeMapping.org.omg.xmi.namespace=CWM    [Tag] ==================== -->
    <Model:Tag xmi.id="G.904" name="org.omg.xmi.namespace=CWM" annotation="" tagId="org.omg.xmi.namespace" elements="a3817221D01F4">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CWM</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== TypeMapping.org.omg.mof.idl_prefix=org.omg.cwm.foundation    [Tag] ==================== -->
    <Model:Tag xmi.id="G.905" name="org.omg.mof.idl_prefix=org.omg.cwm.foundation" annotation="" tagId="org.omg.mof.idl_prefix" elements="a3817221D01F4">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.cwm.foundation</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== TypeMapping.org.omg.mof.idl_substitute_name=TypeMappingModule    [Tag] ==================== -->
    <Model:Tag xmi.id="G.906" name="org.omg.mof.idl_substitute_name=TypeMappingModule" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a3817221D01F4">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">TypeMappingModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== TypeMapping.com.urep.jcr.java_prefix=org.omg.java.cwm.foundation    [Tag] ==================== -->
    <Model:Tag xmi.id="G.907" name="com.urep.jcr.java_prefix=org.omg.java.cwm.foundation" annotation="" tagId="com.urep.jcr.java_prefix" elements="a3817221D01F4">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.java.cwm.foundation</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <Model:Import xmi.id="G.908" name="Core" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A6600C5031F"/>
    <!-- ==================== TypeMapping.TypeMapping    [Class] ==================== -->
    <Model:Class xmi.id="a3817226403A9" name="TypeMapping" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:ModelElement.annotation>TypeMapping instances permit the creation of mappings between data types defined within different environments and are used to indicate data type compatibilities that permit direct assignment of values from one environment (the "source" type) into equivalent values in another environment (the "target" type). For example, an integer field data type in a record-oriented DBMS (the source type) might be mapped to a compatible integer data type in a relational DBMS (the target type).

Whereas the actual transfer of data values between environments is accomplished using the CWMs Transformation package, TypeMapping instances can be used the identify both the permissible and preferred mappings between data types. Value interchange between a pair of data types is considered permissible if a TypeMapping instance is defined for the pair. A TypeMapping instance is considered the preferred mapping if the instances isBestMatch attribute has the value true.

Typically, there will be one TypeMapping Instance between a pair of data types that is considered the preferred mapping. To promote flexible use of this feature, there is no requirement that a preferred TypeMapping instance must be identified between a pair of data types nor are multiple preferred instances prohibited. In these latter cases, however, the precise semantics are usage-defined.

Interchange between data types defined by non-preferred mappings may often function as intended. However, the isLossy boolean may be set to indicate that such interchanges may be subject to validity restrictions in certain circumstances. For example, it may be valid to move data values from a 32-bit integer data type to a 16-bit integer data type as long as the actual values in the 32-bit underlying data type do not exceed the range permitted for 16-bit integers. The CWM Foundation leaves the understanding and handling of such differences to individual tools. If such differences must be modeled, consider using the CWM Transformation package to filter data values during interchange.

TypeMapping instances are unidirectional, so two instances are required to show that a data type pair can be mutually interchanged between environments.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== TypeMapping.TypeMapping.isBestMatch    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3817229802EE" name="isBestMatch" annotation="True if this TypeMapping instance represents the best available mapping between a pair of data types in different software systems." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== TypeMapping.TypeMapping.isLossy    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a381722B700BB" name="isLossy" annotation="True if this TypeMapping instance may result in a data conversion error if the source data is within certain ranges. For example, storing a 32-bit unsigned integer value into a 16-bit unsigned integer container will result in a data conversion error only when the source data has a value greater than 65535." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== TypeMapping.TypeMapping.sourceType    [Reference] ==================== -->
        <Model:Reference xmi.id="a385FFF0B006A" name="sourceType" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a32989FB2023D" referencedEnd="a381723B401A5">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== TypeMapping.TypeMapping.targetType    [Reference] ==================== -->
        <Model:Reference xmi.id="a385FFF500099" name="targetType" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a32989FB2023D" referencedEnd="a3817250F009C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== TypeMapping.TypeSystem    [Class] ==================== -->
    <Model:Class xmi.id="a38173AAE02EE" name="TypeSystem" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5D19033E">
      <Model:ModelElement.annotation>Instances of the TypeSystem class collect together the data types (subclasses of Classifier) defined by a software system and the TypeMapping instances defining how they are mapped to data types in other TypeSystems. TypeMapping instances collected by a TypeSystem instance include both those in which the software systems data types act as sources and as targets of mappings. Classifiers and TapeMappings are
maintained in a single collection via the ElementOwnership association but can be distinguished by their respective types.

Because it is a Package, a TypeSystem can also serve to collect together the Classifier instances for a particular software system.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== TypeMapping.TypeSystem.version    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A5CE02002B8" name="version" annotation="A string describing the version identification of the type system represented." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== TypeMapping.MappingSource    [Association] ==================== -->
    <Model:Association xmi.id="a381723B20196" name="MappingSource" annotation="The MappingSource association indicates the underlying Classifier instance of a particular TypeMapping." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a381723B401A5" name="sourceType" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a32989FB2023D">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a381723B40251" name="mappingFrom" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3817226403A9">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== TypeMapping.MappingTarget    [Association] ==================== -->
    <Model:Association xmi.id="a3817250D0399" name="MappingTarget" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:ModelElement.annotation>The MappingTarget association indicates the exposed data type for a particular TypeMapping instance.
</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3817250F009C" name="targetType" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a32989FB2023D">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3817250F00DA" name="mappingTo" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3817226403A9">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
  </Model:Namespace.contents>
</Model:Package>
<!-- ==================== Relational    [Package] ==================== -->
<Model:Package xmi.id="a362E34A201FF" name="Relational" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
  <Model:ModelElement.annotation>The Relational package describes data accessible through a relational interface such as a native RDBMS, ODBC, or JDBC. The Relational package is based on the [SQL] standard section concerning RDBMS catalogs.

The scope of the top level container, Catalog, is intended to cover all the tables a user can use in a single statement. A catalog is also the unit which is managed by a data resource. A catalog contains schemas which themselves contain tables. Tables are made of columns which have an associated data type.

The Relational package uses constructs in the ObjectModel package to describe the object extensions added to SQL by the [SQL] standards. 

The Relational package also addresses the issues of indexing, primary keys and foreign keys by extending the corresponding concepts from the Foundation packages.

The Relational package depends on the following packages:

    org.omg::CWM::ObjectModel::Behavioral
    org.omg::CWM::ObjectModel::Core
    org.omg::CWM::ObjectModel::Instance
    org.omg::CWM::Foundation::DataTypes
    org.omg::CWM::Foundation::KeysIndexes

The Relational package references the ObjectModel and Foundation packages.

OCL Representation of Relational Constraints

[C-1] temporaryScope is valid only if the isTemporary is True.
context Tabl e inv:
self.temporaryScope.notEmpty implies self.isTemporary=True

[C-2] checkOption is valid only if isReadOnly is False.
context View inv:
self.checkOption implies self.isReadOnly=False

[C-3] scale is valid only if precision is specified.
context Column inv:
self.scale.nonEmpty implies self.precision.notEmpty</Model:ModelElement.annotation>
  <Model:Namespace.contents>
    <!-- ==================== Relational.org.omg.xmi.namespace=CWMRDB    [Tag] ==================== -->
    <Model:Tag xmi.id="G.910" name="org.omg.xmi.namespace=CWMRDB" annotation="" tagId="org.omg.xmi.namespace" elements="a362E34A201FF">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CWMRDB</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Relational.org.omg.mof.idl_prefix=org.omg.cwm.resource    [Tag] ==================== -->
    <Model:Tag xmi.id="G.911" name="org.omg.mof.idl_prefix=org.omg.cwm.resource" annotation="" tagId="org.omg.mof.idl_prefix" elements="a362E34A201FF">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.cwm.resource</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Relational.org.omg.mof.idl_substitute_name=RelationalModule    [Tag] ==================== -->
    <Model:Tag xmi.id="G.912" name="org.omg.mof.idl_substitute_name=RelationalModule" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a362E34A201FF">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">RelationalModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Relational.com.urep.jcr.java_prefix=org.omg.java.cwm.resource    [Tag] ==================== -->
    <Model:Tag xmi.id="G.913" name="com.urep.jcr.java_prefix=org.omg.java.cwm.resource" annotation="" tagId="com.urep.jcr.java_prefix" elements="a362E34A201FF">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.java.cwm.resource</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <Model:Import xmi.id="G.914" name="Core" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A6600C5031F"/>
    <Model:Import xmi.id="G.915" name="Behavioral" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A6342A4000B"/>
    <Model:Import xmi.id="G.916" name="Instance" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A6342930318"/>
    <Model:Import xmi.id="G.917" name="DataTypes" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a38207A4E0308"/>
    <Model:Import xmi.id="G.918" name="KeysIndexes" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a38207A680191"/>
    <!-- ==================== Relational.Enumerations    [Package] ==================== -->
    <Model:Package xmi.id="a36CB6A6C0197" name="Enumerations" annotation="The enumerations and datatypes used in the Relational model." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
      <Model:Namespace.contents>
        <!-- ==================== Relational.Enumerations.ActionOrientationType    [DataType] ==================== -->
        <Model:DataType xmi.id="a36DC89FC02A3" name="ActionOrientationType" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
          <Model:ModelElement.annotation>Used in Trigger. 
It indicates if the trigger is called once per statement execution or before/after each row of the table is modified.</Model:ModelElement.annotation>
          <Model:DataType.typeCode>
            <XMI.CorbaTypeCode>
              <XMI.CorbaTcEnum xmi.tcName="ActionOrientationType">
              <XMI.CorbaTcEnumLabel xmi.tcName="row"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="statement"/>
              </XMI.CorbaTcEnum>
            </XMI.CorbaTypeCode>
          </Model:DataType.typeCode>
        </Model:DataType>
        <!-- ==================== Relational.Enumerations.ConditionTimingType    [DataType] ==================== -->
        <Model:DataType xmi.id="a36DC8A1E02F5" name="ConditionTimingType" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
          <Model:ModelElement.annotation>Used in Triggers.
It indicates if the trigger activity is run before or after the statement or row is modified.</Model:ModelElement.annotation>
          <Model:DataType.typeCode>
            <XMI.CorbaTypeCode>
              <XMI.CorbaTcEnum xmi.tcName="ConditionTimingType">
              <XMI.CorbaTcEnumLabel xmi.tcName="before"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="after"/>
              </XMI.CorbaTcEnum>
            </XMI.CorbaTypeCode>
          </Model:DataType.typeCode>
        </Model:DataType>
        <!-- ==================== Relational.Enumerations.DeferrabilityType    [DataType] ==================== -->
        <Model:DataType xmi.id="a36CC6BBA02A5" name="DeferrabilityType" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
          <Model:ModelElement.annotation>Used in Foreign Keys
Indicates if the Foreign Key validation should be deferred to the end of the transaction or executed immadiately at the end of the statement.
This is the value used at the beginning of a transaction. It can be changed within a transaction.</Model:ModelElement.annotation>
          <Model:DataType.typeCode>
            <XMI.CorbaTypeCode>
              <XMI.CorbaTcEnum xmi.tcName="DeferrabilityType">
              <XMI.CorbaTcEnumLabel xmi.tcName="initiallyDeferred"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="initiallyImmediate"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="notDeferrable"/>
              </XMI.CorbaTcEnum>
            </XMI.CorbaTypeCode>
          </Model:DataType.typeCode>
        </Model:DataType>
        <!-- ==================== Relational.Enumerations.EventManipulationType    [DataType] ==================== -->
        <Model:DataType xmi.id="a36DC89D2037E" name="EventManipulationType" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
          <Model:ModelElement.annotation>Used in Trigger.
Indicates what types of events are using the current Trigger. 
</Model:ModelElement.annotation>
          <Model:DataType.typeCode>
            <XMI.CorbaTypeCode>
              <XMI.CorbaTcEnum xmi.tcName="EventManipulationType">
              <XMI.CorbaTcEnumLabel xmi.tcName="insert"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="delete"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="update"/>
              </XMI.CorbaTcEnum>
            </XMI.CorbaTypeCode>
          </Model:DataType.typeCode>
        </Model:DataType>
        <!-- ==================== Relational.Enumerations.NullableType    [DataType] ==================== -->
        <Model:DataType xmi.id="a36CB6FAE0093" name="NullableType" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
          <Model:ModelElement.annotation>Used in Column.
Indicates if a Column may contain null values.</Model:ModelElement.annotation>
          <Model:DataType.typeCode>
            <XMI.CorbaTypeCode>
              <XMI.CorbaTcEnum xmi.tcName="NullableType">
              <XMI.CorbaTcEnumLabel xmi.tcName="columnNoNulls"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="columnNullable"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="columnNullableUnknown"/>
              </XMI.CorbaTcEnum>
            </XMI.CorbaTypeCode>
          </Model:DataType.typeCode>
        </Model:DataType>
        <!-- ==================== Relational.Enumerations.ProcedureType    [DataType] ==================== -->
        <Model:DataType xmi.id="a36DD71AB015E" name="ProcedureType" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
          <Model:ModelElement.annotation>Used in Procedure.
Indicates if the Procedure is a Function or a Procedure</Model:ModelElement.annotation>
          <Model:DataType.typeCode>
            <XMI.CorbaTypeCode>
              <XMI.CorbaTcEnum xmi.tcName="ProcedureType">
              <XMI.CorbaTcEnumLabel xmi.tcName="procedure"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="function"/>
              </XMI.CorbaTcEnum>
            </XMI.CorbaTypeCode>
          </Model:DataType.typeCode>
        </Model:DataType>
        <!-- ==================== Relational.Enumerations.ReferentialRuleType    [DataType] ==================== -->
        <Model:DataType xmi.id="a36CC6AF10223" name="ReferentialRuleType" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
          <Model:ModelElement.annotation>Used in Foreign Key.
It indicates the action taken on the row containing a foreign key value, when the primary key value referenced is deleted or updated.</Model:ModelElement.annotation>
          <Model:DataType.typeCode>
            <XMI.CorbaTypeCode>
              <XMI.CorbaTcEnum xmi.tcName="ReferentialRuleType">
              <XMI.CorbaTcEnumLabel xmi.tcName="importedKeyNoAction"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="importedKeyCascade"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="importedKeySetNull"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="importedKeyRestrict"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="importedKeySetDefault"/>
              </XMI.CorbaTcEnum>
            </XMI.CorbaTypeCode>
          </Model:DataType.typeCode>
        </Model:DataType>
      </Model:Namespace.contents>
    </Model:Package>
    <!-- ==================== Relational.Catalog    [Class] ==================== -->
    <Model:Class xmi.id="a362E34BC0007" name="Catalog" annotation="A Catalog is the unit of logon and identification. It also identifies the scope of SQL statements: the tables contained in a catalog can be used in a single SQL statement." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5D19033E">
      <Model:Namespace.contents>
        <!-- ==================== Relational.Catalog.defaultCharacterSetName    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A610C660274" name="defaultCharacterSetName" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:ModelElement.annotation>The name of the default character set used for the values in the column.
This field applies only to columns whose datatype is a character string.</Model:ModelElement.annotation>
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Relational.Catalog.defaultCollationName    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A610D760315" name="defaultCollationName" annotation="The name of the default collation sequence used to sort the data values in the column." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Relational.Schema    [Class] ==================== -->
    <Model:Class xmi.id="a3639010F0362" name="Schema" annotation="A schema is a named collection of tables" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5D19033E"/>
    <!-- ==================== Relational.ColumnSet    [Class] ==================== -->
    <Model:Class xmi.id="a364CDDC2022D" name="ColumnSet" annotation="A set of columns, representing either the result of a query, a view or a physical table." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3298A02900FE"/>
    <!-- ==================== Relational.org.omg.IDL Substitute Name=RelationalColumnSet    [Tag] ==================== -->
    <Model:Tag xmi.id="G.919" name="org.omg.IDL Substitute Name=RelationalColumnSet" annotation="" tagId="org.omg.IDL Substitute Name" elements="a364CDDC2022D">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">RelationalColumnSet</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Relational.org.omg.mof.idl_substitute_name=CwmColumnSet    [Tag] ==================== -->
    <Model:Tag xmi.id="G.920" name="org.omg.mof.idl_substitute_name=CwmColumnSet" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a364CDDC2022D">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CwmColumnSet</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Relational.NamedColumnSet    [Class] ==================== -->
    <Model:Class xmi.id="a362E664F03B3" name="NamedColumnSet" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a364CDDC2022D">
      <Model:ModelElement.annotation>A catalogued set of columns, which may be Table or View.

Note for typed tables: It is assumed that the typed table will own a set of columns conforming to the type they are OF. This set of columns allows the manipulation of the table by products which ignore this [SQL] extension. It also allows the columns of type REF, to be copied to a column with a SCOPE reference.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Relational.NamedColumnSet.optionScopeColumn    [Reference] ==================== -->
        <Model:Reference xmi.id="a387232030307" name="optionScopeColumn" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a364CDDD800D0" referencedEnd="a379CC77703CE">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Relational.NamedColumnSet.type    [Reference] ==================== -->
        <Model:Reference xmi.id="a387232320098" name="type" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3648903F0365" referencedEnd="a379CC370012B">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Relational.NamedColumnSet.usingTrigger    [Reference] ==================== -->
        <Model:Reference xmi.id="a38723276019A" name="usingTrigger" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a36DC7E9502F8" referencedEnd="a36DC8BBB0190">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Relational.Table    [Class] ==================== -->
    <Model:Class xmi.id="a364CDE8501D3" name="Table" annotation="A materialized NamedColumnSet." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a362E664F03B3">
      <Model:Namespace.contents>
        <!-- ==================== Relational.Table.isTemporary    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a377A994F0294" name="isTemporary" annotation="Indicates that the table content is temporary. SQL92 standards provide two types of temporary tables (local Temporary and Global Temporary). However, RDBMS products have implemented variations on this theme. It is recommended that the product manufacturers provide specific temporary information (besides the temporaryScope attribute) in their extensions. " scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Relational.Table.temporaryScope    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a377A9A21020A" name="temporaryScope" annotation="This attribute is meaningful only when the isTemporary flag is True [C-1]. The scope indicates when the data of this table are available. &quot;SESSION&quot;, &quot;APPLICATION&quot; are examples of possible values. Look at the Scope attribute for Global Temporary tables in the SQL standards for more details." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Relational.Table.trigger    [Reference] ==================== -->
        <Model:Reference xmi.id="a3872331E0278" name="trigger" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a36DC7E9502F8" referencedEnd="a36DC8BC30079">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Relational.Table.isSystem    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a379CE39B024A" name="isSystem" annotation="Indicates that the Table is a System Table (generally part of or view on the system catalog)." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Relational.View    [Class] ==================== -->
    <Model:Class xmi.id="a364CDE8F01FF" name="View" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a362E664F03B3">
      <Model:ModelElement.annotation>A view is a non-materialized set of rows, defined by the associated query.
</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Relational.View.isReadOnly    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a366C558402E0" name="isReadOnly" annotation="Indicates whether the underlying tables can be updated through an update to this View." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Relational.View.checkOption    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a36CB6B8B01AE" name="checkOption" annotation="This field is meaningful only if the view is not ReadOnly. CheckOption indicates that the RDBMS will validate that changes made to the data verify the view filtering condition and belong to the view result set." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Relational.View.queryExpression    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a37D0502D029E" name="queryExpression" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3702A52C0196">
          <Model:ModelElement.annotation>The query associated with the View.

The query result must match the set of Columns associated with the View (in parent class ColumnSet)</Model:ModelElement.annotation>
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Relational.QueryColumnSet    [Class] ==================== -->
    <Model:Class xmi.id="a364CDEA203C9" name="QueryColumnSet" annotation="The result set of a query." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a364CDDC2022D">
      <Model:Namespace.contents>
        <!-- ==================== Relational.QueryColumnSet.query    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a38274595001C" name="query" annotation="The query expression generating this result. The language attribute of the expression should generally begin with &quot;SQL&quot;" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3702A52C0196">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Relational.SQLDataType    [Class] ==================== -->
    <Model:Class xmi.id="a36488C0301BD" name="SQLDataType" annotation="A SQLDataType is used to reference any datatype associated with a column" isRoot="false" isLeaf="false" isAbstract="true" visibility="public_vis" isSingleton="false" supertypes="a32989FB2023D">
      <Model:Namespace.contents>
        <!-- ==================== Relational.SQLDataType.typeNumber    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3818C81E038E" name="typeNumber" annotation="The number assigned to the datatype by the owning RDBMS" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Relational.SQLDistinctType    [Class] ==================== -->
    <Model:Class xmi.id="a363916A10234" name="SQLDistinctType" annotation="A datatype defined as a Distinct Type, per [SQL] standard." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a36488C0301BD a3731C90A00AA">
      <Model:Namespace.contents>
        <!-- ==================== Relational.SQLDistinctType.length    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a37F92773035C" name="length" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
          <Model:ModelElement.annotation>The length of fixed length character or byte strings. Maximum length if length is
variable.</Model:ModelElement.annotation>
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Relational.SQLDistinctType.precision    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a37F9278601B5" name="precision" annotation="The total number of digits in the field" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Relational.SQLDistinctType.scale    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a37F927970119" name="scale" annotation="The number of digits on the right of the decimal separator." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Relational.SQLDistinctType.sqlSimpleType    [Reference] ==================== -->
        <Model:Reference xmi.id="a387239950065" name="sqlSimpleType" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a363916290336" referencedEnd="a37F928110309">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Relational.SQLSimpleType    [Class] ==================== -->
    <Model:Class xmi.id="a363916290336" name="SQLSimpleType" annotation="A simple datatype used with an SQL column. Examples are Integer, Varchar, LOB, CLOB, etc..." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a36488C0301BD a3298A036025B">
      <Model:Namespace.contents>
        <!-- ==================== Relational.SQLSimpleType.characterMaximumLength    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a36CC64DA01F4" name="characterMaximumLength" annotation="See [SQL], corresponding field in DATA_TYPE_DESCRIPTOR" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Relational.SQLSimpleType.characterOctetLength    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a36F2DDB30115" name="characterOctetLength" annotation="See [SQL], corresponding field in DATA_TYPE_DESCRIPTOR" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Relational.SQLSimpleType.numericPrecision    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a36F2DEB40104" name="numericPrecision" annotation="See [SQL], corresponding field in DATA_TYPE_DESCRIPTOR" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Relational.SQLSimpleType.numericPrecisionRadix    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a36F2DECC0054" name="numericPrecisionRadix" annotation="See [SQL], corresponding field in DATA_TYPE_DESCRIPTOR" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Relational.SQLSimpleType.numericScale    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a36F2DEE800AF" name="numericScale" annotation="See [SQL], corresponding field in DATA_TYPE_DESCRIPTOR" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Relational.SQLSimpleType.dateTimePrecision    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a36F2DEFB0391" name="dateTimePrecision" annotation="See [SQL], corresponding field in DATA_TYPE_DESCRIPTOR" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Relational.SQLStructuredType    [Class] ==================== -->
    <Model:Class xmi.id="a3648903F0365" name="SQLStructuredType" annotation="A Datatype defined as Structured Type, per [SQL] standard." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a36488C0301BD a3298A02900FE">
      <Model:Namespace.contents>
        <!-- ==================== Relational.SQLStructuredType.referencingColumn    [Reference] ==================== -->
        <Model:Reference xmi.id="a38723A6803CF" name="referencingColumn" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a364CDDD800D0" referencedEnd="a379CC6D003D8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Relational.SQLStructuredType.columnSet    [Reference] ==================== -->
        <Model:Reference xmi.id="a38723A940075" name="columnSet" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a362E664F03B3" referencedEnd="a379CC370018F">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Relational.Column    [Class] ==================== -->
    <Model:Class xmi.id="a364CDDD800D0" name="Column" annotation="A column in a result set, a view, a table, or an SQLStructuredType." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3A6F62780143">
      <Model:Namespace.contents>
        <!-- ==================== Relational.Column.precision    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3649E0CC02B6" name="precision" annotation="The total number of digits in the field." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Relational.Column.scale    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3649E0E801A8" name="scale" annotation="The number of digits on the right of the decimal separator." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Relational.Column.isNullable    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a36AA672E0327" name="isNullable" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a36CB6FAE0093">
          <Model:ModelElement.annotation>Indicates if null values are valid in this column.

Note: Default values for Column data are provided in initialValue in the UML Attribute class (the class from which the Column class inherits).</Model:ModelElement.annotation>
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Relational.Column.length    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a37F927C702EF" name="length" annotation="The length of fixed length character or byte strings. Maximum length if length is variable." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Relational.Column.collationName    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a383C1F72018B" name="collationName" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:ModelElement.annotation>The name of the collation sequence used to sort the data values in the column.
This applies only to columns whose datatype is a form of character string.</Model:ModelElement.annotation>
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Relational.Column.characterSetName    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a383C1F8A00F0" name="characterSetName" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:ModelElement.annotation>The name of the character set used for the values in the column.
This field applies only to columns whose datatype is a character string.</Model:ModelElement.annotation>
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Relational.Column.optionScopeColumnSet    [Reference] ==================== -->
        <Model:Reference xmi.id="a38723AE1035B" name="optionScopeColumnSet" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a362E664F03B3" referencedEnd="a379CC77900CE">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Relational.Column.referencedTableType    [Reference] ==================== -->
        <Model:Reference xmi.id="a38723B020363" name="referencedTableType" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3648903F0365" referencedEnd="a379CC6D00374">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Relational.Procedure    [Class] ==================== -->
    <Model:Class xmi.id="a36DC7EA303AC" name="Procedure" annotation="This class describes Relational DBMS Stored procedures and functions." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327BB67E0028">
      <Model:Namespace.contents>
        <!-- ==================== Relational.Procedure.type    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a36DD6F5701E0" name="type" annotation="A Procedure can be either a Function or a true Procedure. This indicates whether this object returns a value or not." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a36DD71AB015E">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Relational.Trigger    [Class] ==================== -->
    <Model:Class xmi.id="a36DC7E9502F8" name="Trigger" annotation="An action run by the DBMS when specified events occur on the table owning the Trigger" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:Namespace.contents>
        <!-- ==================== Relational.Trigger.eventManipulation    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a36DC89B900DA" name="eventManipulation" annotation="Indicates what types of events are using the current Trigger." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a36DC89D2037E">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Relational.Trigger.actionCondition    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a36DC8A6300D7" name="actionCondition" annotation="A boolean expression which defines when the trigger has to be executed" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33CFA9DA01D6">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Relational.Trigger.actionStatement    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a36DC8A7A001C" name="actionStatement" annotation="The Trigger action itself" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a363559050190">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Relational.Trigger.actionOrientation    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a36DC8AFC019F" name="actionOrientation" annotation="It indicates if the trigger is called once per statement execution or before or after each row of the table is modified." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a36DC89FC02A3">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Relational.Trigger.conditionTiming    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a36DC8A8B0201" name="conditionTiming" annotation="It indicates if the trigger activity is run before or after the statement or row is modified." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a36DC8A1E02F5">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Relational.Trigger.conditionReferenceNewTable    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a36DC8A9C0378" name="conditionReferenceNewTable" annotation="The alias for the owning table name, used in the actionStatement, to represent the state of the table after the insert/delete/update" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Relational.Trigger.conditionReferenceOldTable    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a36DC8AB301EA" name="conditionReferenceOldTable" annotation="The alias for the name of the owning table, used in the actionStatement, to represent the state of the table before the update/delete/insert." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Relational.Trigger.table    [Reference] ==================== -->
        <Model:Reference xmi.id="a38723CB400A0" name="table" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a364CDE8501D3" referencedEnd="a36DC8BC30029">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Relational.Trigger.usedColumnSet    [Reference] ==================== -->
        <Model:Reference xmi.id="a38723CD3007C" name="usedColumnSet" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a362E664F03B3" referencedEnd="a36DC8BBB012C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Relational.SQLIndex    [Class] ==================== -->
    <Model:Class xmi.id="a36CC6C5501E2" name="SQLIndex" annotation="An Index on a table." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a376A89040331">
      <Model:Namespace.contents>
        <!-- ==================== Relational.SQLIndex.filterCondition    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a36CC6E0401C4" name="filterCondition" annotation="Which subset of the table is indexed" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Relational.SQLIndex.isNullable    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a36CC6E150006" name="isNullable" annotation="Entries in this index can be null" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Relational.SQLIndex.autoUpdate    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a36CC6E3503C3" name="autoUpdate" annotation="The index is updated automatically" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Relational.UniqueConstraint    [Class] ==================== -->
    <Model:Class xmi.id="a36F6E2ED0146" name="UniqueConstraint" annotation="A condition to define uniqueness of rows in a table. An example of UniqueConstraint is a primary key" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a376A879E0072">
      <Model:Namespace.contents>
        <!-- ==================== Relational.UniqueConstraint.deferrability    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3870FCCD017A" name="deferrability" annotation="Indicates if the validity of the UniqueConstraint is to be tested at each statement or at the end of a transaction." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a36CC6BBA02A5">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Relational.ForeignKey    [Class] ==================== -->
    <Model:Class xmi.id="a362E6C290149" name="ForeignKey" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a376A8A6E00C0">
      <Model:ModelElement.annotation>A Foreign Key associates columns from one table with columns of another table.

</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Relational.ForeignKey.deleteRule    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a36547F640115" name="deleteRule" annotation="An enumerated type. Indicates the disposition of the data records containing the foreign key value when the record of the matching primary key is deleted." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a36CC6AF10223">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Relational.ForeignKey.updateRule    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a36548E0F0184" name="updateRule" annotation="Same as deleteRule for updates of the primary key data record" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a36CC6AF10223">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Relational.ForeignKey.deferrability    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a36CC6B7D004E" name="deferrability" annotation="Indicates if the validity of the ForeignKey is to be tested at each statement or at the end of a transaction." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a36CC6BBA02A5">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Relational.SQLIndexColumn    [Class] ==================== -->
    <Model:Class xmi.id="a36CC6F570117" name="SQLIndexColumn" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a377BD3F9017F">
      <Model:ModelElement.annotation>Associates an index with its columns.

This is really an association (link) class. It is associated with one index and one column.
</Model:ModelElement.annotation>
    </Model:Class>
    <!-- ==================== Relational.PrimaryKey    [Class] ==================== -->
    <Model:Class xmi.id="a3870E1AD031C" name="PrimaryKey" annotation="There is only one UniqueConstraint of type PrimaryKey per Table. It is implemented specifically by each RDBMS." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a36F6E2ED0146"/>
    <!-- ==================== Relational.Row    [Class] ==================== -->
    <Model:Class xmi.id="a3870F1D702A0" name="Row" annotation="An instance of a ColumnSet." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a33BC99D60302"/>
    <!-- ==================== Relational.ColumnValue    [Class] ==================== -->
    <Model:Class xmi.id="a3870F1E200C5" name="ColumnValue" annotation="The value in a column instance." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a33BC9AFB02E4"/>
    <!-- ==================== Relational.CheckConstraint    [Class] ==================== -->
    <Model:Class xmi.id="a3870FB0E020E" name="CheckConstraint" annotation="A rule that specifies the values allowed in one or more columns of every row of a table." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A649B000A">
      <Model:Namespace.contents>
        <!-- ==================== Relational.CheckConstraint.deferrability    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3870FD1A01A8" name="deferrability" annotation="Indicates the timing of the constraint enforcement during multiple-user updates." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a36CC6BBA02A5">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Relational.RowSet    [Class] ==================== -->
    <Model:Class xmi.id="a3896223901CC" name="RowSet" annotation="Each instance of RowSet owns a collection of Row instances. The inherited association between Namespace (a superclass of Package) and ModelElement is used to contain Instances." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a387E624E0365"/>
    <!-- ==================== Relational.org.omg.mof.idl_substitute_name=CwmRowSet    [Tag] ==================== -->
    <Model:Tag xmi.id="G.921" name="org.omg.mof.idl_substitute_name=CwmRowSet" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a3896223901CC">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CwmRowSet</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Relational.SQLParameter    [Class] ==================== -->
    <Model:Class xmi.id="a3A6105950078" name="SQLParameter" annotation="Parameters of stored procedures." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327BBB9F02B2"/>
    <!-- ==================== Relational.TriggerUsingColumnSet    [Association] ==================== -->
    <Model:Association xmi.id="a36DC8BB70234" name="TriggerUsingColumnSet" annotation="This associates a Trigger with the NamedColumnSets it uses in its expressions." isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a36DC8BBB012C" name="usedColumnSet" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a362E664F03B3">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a36DC8BBB0190" name="usingTrigger" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a36DC7E9502F8">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Relational.TableOwningTrigger    [Association] ==================== -->
    <Model:Association xmi.id="a36DC8BC1024D" name="TableOwningTrigger" annotation="Associates a Table with its Triggers. The Trigger will be activated when an action is performed on the Table." isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a36DC8BC30029" name="table" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a364CDE8501D3">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a36DC8BC30079" name="trigger" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a36DC7E9502F8">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Relational.ColumnSetOfStructuredType    [Association] ==================== -->
    <Model:Association xmi.id="a379CC36E0178" name="ColumnSetOfStructuredType" annotation="Associates structured types with NamedColumnSets defined of this type." isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a379CC370012B" name="type" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3648903F0365">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a379CC370018F" name="columnSet" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a362E664F03B3">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Relational.ColumnRefStructuredType    [Association] ==================== -->
    <Model:Association xmi.id="a379CC6CE0050" name="ColumnRefStructuredType" annotation="Associates Columns of a StructuredType with the Type they reference in the REF clause" isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a379CC6D00374" name="referencedTableType" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3648903F0365">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a379CC6D003D8" name="referencingColumn" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a364CDDD800D0">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Relational.ColumnOptionsColumnSet    [Association] ==================== -->
    <Model:Association xmi.id="a379CC77700CB" name="ColumnOptionsColumnSet" annotation="Associates Columns with NamedColumnSets they reference in their OPTIONS clause." isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a379CC77703CE" name="optionScopeColumn" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a364CDDD800D0">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a379CC77900CE" name="optionScopeColumnSet" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a362E664F03B3">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Relational.DistinctTypeHasSimpleType    [Association] ==================== -->
    <Model:Association xmi.id="a37F9281001C8" name="DistinctTypeHasSimpleType" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a37F9281102F5" name="sqlDistinctType" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a363916A10234">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a37F928110309" name="sqlSimpleType" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a363916290336">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
  </Model:Namespace.contents>
</Model:Package>
<!-- ==================== Record    [Package] ==================== -->
<Model:Package xmi.id="a35F6F41A0299" name="Record" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
  <Model:ModelElement.annotation>The Record package covers the basic concept of a record and its structure. The package takes a broad view of the notion of record, including both traditional data records such as those stored in files and databases, as well as programming language structured data types. In fact, the concepts described here can be used as a foundation for extension packages describing any information structure that is fundamentally hierarchical, or "nested," in nature such as documents, questionnaires, and organizational structures.

The Record package depends on the following packages:

    org.omg::CWM::ObjectModel::Core
    org.omg::CWM::ObjectModel::Instance

Because of the antiquity of many record-based models, individual system implementations employing record models may have unusual features (such as occurs-depending arrays, various COBOL rename/remapping semantics, etc.) that are not shared with other implementations. When such features are limited to single
implementations or languages, they have been purposefully left out of the Record metamodel. Rather, unusual features of this sort should be placed into extension packages designed to meet the needs of those implementations or languages. For example, record structuring features endemic to the COBOL language have been placed in the COBOLData metamodel in the CWMX package described in Volume 2 and do not appear here. In this way, COBOL-only features do not burden other record oriented implementations unnecessarily.

OCL Representation of Record Constraints

[C-1] The owner of a Field and the type of a Field may not refer to the same Classifier instance.
context Field inv:
self.owner &lt;&gt; self.type

[C-2] The scale attribute is valid only if the precision attribute is specified.
context Field inv:
self.scale-&gt;notEmpty implies self.precision-&gt;notEmpty

[C-3] The precision attribute is valid only if the length attribute is not specified.
context Field inv:
self.precision-&gt;notEmpty implies self.length-&gt;isEmpty::filely one</Model:ModelElement.annotation>
  <Model:Namespace.contents>
    <!-- ==================== Record.org.omg.xmi.namespace=CWMREC    [Tag] ==================== -->
    <Model:Tag xmi.id="G.922" name="org.omg.xmi.namespace=CWMREC" annotation="" tagId="org.omg.xmi.namespace" elements="a35F6F41A0299">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CWMREC</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Record.org.omg.mof.idl_prefix=org.omg.cwm.resource    [Tag] ==================== -->
    <Model:Tag xmi.id="G.923" name="org.omg.mof.idl_prefix=org.omg.cwm.resource" annotation="" tagId="org.omg.mof.idl_prefix" elements="a35F6F41A0299">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.cwm.resource</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Record.org.omg.mof.idl_substitute_name=RecordModule    [Tag] ==================== -->
    <Model:Tag xmi.id="G.924" name="org.omg.mof.idl_substitute_name=RecordModule" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a35F6F41A0299">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">RecordModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Record.com.urep.jcr.java_prefix=org.omg.java.cwm.resource    [Tag] ==================== -->
    <Model:Tag xmi.id="G.925" name="com.urep.jcr.java_prefix=org.omg.java.cwm.resource" annotation="" tagId="com.urep.jcr.java_prefix" elements="a35F6F41A0299">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.java.cwm.resource</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <Model:Import xmi.id="G.926" name="Core" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A6600C5031F"/>
    <Model:Import xmi.id="G.927" name="Instance" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A6342930318"/>
    <!-- ==================== Record.Field    [Class] ==================== -->
    <Model:Class xmi.id="a3730B40B002A" name="Field" annotation="A Field is the fundamental information container within a RecordDef. It holds one piece of information, which may itself have structure. The inherited associations StructuralFeatureType and ElementOwnership provide access to a Field instances type and owning classifier, respectively." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3A6F62780143">
      <Model:Namespace.contents>
        <!-- ==================== Record.Field.length    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A5CE1A903E1" name="length" annotation="The length of a fixed length character or byte string field." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Record.Field.precision    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A5CE1CF0335" name="precision" annotation="The total number of digits in a numeric field." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Record.Field.scale    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A5CE1BF023B" name="scale" annotation="The number of digits on the right of the decimal separator in a numeric field." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Record.RecordDef    [Class] ==================== -->
    <Model:Class xmi.id="a3731BA330352" name="RecordDef" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3298A02900FE">
      <Model:ModelElement.annotation>A RecordDef is an ordered collection of Fields representing the structure of a Record.

Examples of RecordDefs include definitions of

    language-specific data structures
    database records
    IMS segments

The internal structure of a RecordDef instance is constructed by adding Field instances as features (using the ElementOwnership association) and pointing each Field instances inherited type reference to the Classifier instance representing the Fields data type. The referenced instance can be either a primitive data type (an instance of DataType, such as "integer") or a structured data type (such as a Group instance).

Refer to the example for more details of the relationships between RecordDefs, Fields, Records, and their values.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Record.RecordDef.fieldDelimiter    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3768142100EF" name="fieldDelimiter" annotation="The value of a fieldDelimiter used to separate field values in an input stream." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Record.RecordDef.isFixedWidth    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3768181C0285" name="isFixedWidth" annotation="True if the record is fixed length. Otherwise, the record can be of variable length." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Record.RecordDef.textDelimiter    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a37681F5E01F9" name="textDelimiter" annotation="The delimiter of a text string in the record, such as a quote." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Record.RecordDef.file    [Reference] ==================== -->
        <Model:Reference xmi.id="a385831EC03AC" name="file" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a379CDD470029" referencedEnd="a379CDDC80100">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Record.FixedOffsetField    [Class] ==================== -->
    <Model:Class xmi.id="a377BE6930160" name="FixedOffsetField" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3730B40B002A">
      <Model:ModelElement.annotation>Instances of FixeOffsetField represent fields that have a fixed location in a record.

FixedOffsetFields can be used as a foundation for recording details of physical record layouts and as a means of representing the internal structure of undiscriminated (ie, C-type) unions.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Record.FixedOffsetField.offset    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a377BE6A40112" name="offset" annotation="Specifies the offset of the field within its container in units of the number of bits indicated in the offsetUnitBits attribute." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Record.FixedOffsetField.offsetUnitBits    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a377BE6A80102" name="offsetUnitBits" annotation="The number of bits making up one record offset unit. For example, for a byte-relative offset, the value of this attribute would typically be 8." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Record.RecordFile    [Class] ==================== -->
    <Model:Class xmi.id="a379CDD470029" name="RecordFile" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5D19033E">
      <Model:ModelElement.annotation>A RecordFile is the definition of a file. It may have one or more RecordDefs, defining the structure of the records in the file. Each of these RecordDefs defines a valid structure for records in the file. Subclasses of RecordFile in extensions to support specific languages and systems may be used to represent specific types of files such as COBOL CopyLib files and C-language header files.

Physical deployments of a RecordFile can be found via the DataManagerDataPackage association in the SoftwareDeployment package .</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Record.RecordFile.isSelfDescribing    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3768184E02E3" name="isSelfDescribing" annotation="True if the contents of fields in the first record of the file contain field names applicable to subsequent records." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Record.RecordFile.recordDelimiter    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A5CE4350306" name="recordDelimiter" annotation="Contains the value that serves as a logical end-of-record indication in a stream-oriented file. A common examples include the usage of carriage-return characters and carriage-return/line-feed character pairs as new-line characters in ASCII text files." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Record.RecordFile.skipRecords    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3768185900DF" name="skipRecords" annotation="The number of records to ignore at the beginning of a file. The specific semantics of records that are skipped may be beyond the scope of CWM." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Record.RecordFile.record    [Reference] ==================== -->
        <Model:Reference xmi.id="a385831D00064" name="record" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3731BA330352" referencedEnd="a379CDDC8010A">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Record.FieldValue    [Class] ==================== -->
    <Model:Class xmi.id="a3858286A0172" name="FieldValue" annotation="The value currently held in a Field instance." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a33BC9AFB02E4"/>
    <!-- ==================== Record.Record    [Class] ==================== -->
    <Model:Class xmi.id="a385828750014" name="Record" annotation="A Record, a subclass of Object, represents a single data record. Each Record is described by a RecordDef instance found via the Objects InstanceClassifier association." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a33BC99D60302"/>
    <!-- ==================== Record.RecordSet    [Class] ==================== -->
    <Model:Class xmi.id="a387E63C801FE" name="RecordSet" annotation="A RecordSet represents a collection of Record instances." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a387E624E0365"/>
    <!-- ==================== Record.org.omg.mof.idl_substitute_name=CwmRecordSet    [Tag] ==================== -->
    <Model:Tag xmi.id="G.928" name="org.omg.mof.idl_substitute_name=CwmRecordSet" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a387E63C801FE">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CwmRecordSet</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Record.Group    [Class] ==================== -->
    <Model:Class xmi.id="a3768108E00DF" name="Group" annotation="A Group is a structured data type and is used to collect together Field instances within a Record. Groups can be used in RecordDef instances as shown in the foregoing example." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a32989FB2023D"/>
    <!-- ==================== Record.RecordToFile    [Association] ==================== -->
    <Model:Association xmi.id="a379CDDC70113" name="RecordToFile" annotation="A Record definition can appy to records stored in a RecordFile." isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a379CDDC80100" name="file" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a379CDD470029">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a379CDDC8010A" name="record" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3731BA330352">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
  </Model:Namespace.contents>
</Model:Package>
<!-- ==================== Multidimensional    [Package] ==================== -->
<Model:Package xmi.id="a374EBFFB0357" name="Multidimensional" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
  <Model:ModelElement.annotation>The CWM Multidimensional metamodel is a generic representation of a multidimensional database.

Multidimensional databases are OLAP databases that are directly implemented by multidimensional database systems. In a multidimensional database, key OLAP constructs (dimensions, hierarchies, etc.) are represented by the internal data structures of a ultidimensional database server, and common OLAP operations (consolidation, drill-down, etc.) are performed by the server acting on those data structures. 

Multidimensional databases are often classified as "physical OLAP" or "MOLAP" (memory-based OLAP) databases.

Multidimensional databases offer enhanced performance and flexibility over OLAP systems that simulate multidimensional functionality using other technologies (e.g., relational database or spreadsheet):

Performance: Multidimensional databases provide rapid consolidation times and formula calculations, and consistent query response times regardless of query complexity. This is accomplished, in part, through the use of efficient cell storage techniques and highly-optimized index paths.

Flexibility: The specification and use of multidimensional schemas and queries (including the design of cubes, dimensions, hierarchies, member formulas, the manipulation of query result sets, etc.) can be accomplished in a relatively straight-forward manner, since the server directly supports (and exposes) the multidimensional paradigm.

The CWM Multidimensional metamodel does not attempt to provide a complete representation of all aspects of commercially available, multidimensional databases. Unlike relational database management systems, multidimensional databases tend to be proprietary in structure, and there are no published, widely agreed upon, standard representations of the logical schema of a multidimensional database. Therefore, the CWM Multidimensional Database metamodel is oriented toward complete generality of specification. Tool-specific extensions to the metamodel are relatively easy to formulate, and several examples are provided in Volume 2, Extensions, of the CWM Specification.

The Multidimensional package depends on the following packages:

    org.omg::CWM::ObjectModel::Core
    org.omg::CWM::ObjectModel::Instance

The major classes and associations of the Multidimensional metamodel are shown in Figure 11-1.

Schema is the container of all elements comprising a Multidimensional model. It also represents the logical unit of deployment of a Multidimensional database instance.
Dimension represents a physical dimension in a Multidimensional database. Whereas
the OLAP metamodel defines dimension as a purely conceptual entity, this
Dimension represents the dimension object exposed by the programming model of a
Multidimensional database.
A Dimension may reference other instances of Dimension to form arbitrarily complex
dimensional structures (e.g., hierarchies with varying levels of detail).

DimensionedObject represents an attribute of Dimension. Examples of DimensionedObjects include measures (variables), formulas, consolidation functions, member alias names, etc. DimensionedObjects are contained by the Schema and referenced by the Dimensions that use them. 

MemberSet represents the collection of Members associated with an instance of Dimension, and MemberValue represents an instance value of a Member. MemberSet, Member and MemberValue enable the specification and interchange of both M1-level Multidimensional models and associated M0-level data values.

Figure 11-2 illustrates the inheritance of the Multidimensional classes from metaclasses of the Object Model.

OCL Representation of Multidimensional Constraints

[C-1] A Dimension may not reference itself as a component, nor as a composite.
context Dimension
inv: self.component-&gt;excludes( self )
inv: self.composite-&gt;excludes( self )

The transitive closure of components of an instance of Dimension must not include the
Dimension instance.

The transitive closure of composites of an instance of Dimension must not include the
Dimension instance.</Model:ModelElement.annotation>
  <Model:Namespace.contents>
    <!-- ==================== Multidimensional.org.omg.xmi.namespace=CWMMDB    [Tag] ==================== -->
    <Model:Tag xmi.id="G.929" name="org.omg.xmi.namespace=CWMMDB" annotation="" tagId="org.omg.xmi.namespace" elements="a374EBFFB0357">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CWMMDB</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Multidimensional.org.omg.mof.idl_prefix=org.omg.cwm.resource    [Tag] ==================== -->
    <Model:Tag xmi.id="G.930" name="org.omg.mof.idl_prefix=org.omg.cwm.resource" annotation="" tagId="org.omg.mof.idl_prefix" elements="a374EBFFB0357">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.cwm.resource</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Multidimensional.org.omg.mof.idl_substitute_name=MultidimensionalModule    [Tag] ==================== -->
    <Model:Tag xmi.id="G.931" name="org.omg.mof.idl_substitute_name=MultidimensionalModule" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a374EBFFB0357">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">MultidimensionalModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Multidimensional.com.urep.jcr.java_prefix=org.omg.java.cwm.resource    [Tag] ==================== -->
    <Model:Tag xmi.id="G.932" name="com.urep.jcr.java_prefix=org.omg.java.cwm.resource" annotation="" tagId="com.urep.jcr.java_prefix" elements="a374EBFFB0357">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.java.cwm.resource</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <Model:Import xmi.id="G.933" name="Core" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A6600C5031F"/>
    <Model:Import xmi.id="G.934" name="Instance" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A6342930318"/>
    <!-- ==================== Multidimensional.Dimension    [Class] ==================== -->
    <Model:Class xmi.id="a374CB3BA032A" name="Dimension" annotation="Dimension represents physical dimension in a multidimensional database (e.g., a dimension object defined by the programming model/API of an OLAP database server). Tool-specific extensions to the Multidimensional package will generally contain classes that derive from Dimension." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3298A02900FE">
      <Model:Namespace.contents>
        <!-- ==================== Multidimensional.Dimension.dimensionedObject    [Reference] ==================== -->
        <Model:Reference xmi.id="a3866BB3701F2" name="dimensionedObject" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a374CB311034F" referencedEnd="a374CB3CD01D4">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Multidimensional.Dimension.component    [Reference] ==================== -->
        <Model:Reference xmi.id="a3866BBD9011D" name="component" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a374CB3BA032A" referencedEnd="a374CB45500DE">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Multidimensional.Dimension.composite    [Reference] ==================== -->
        <Model:Reference xmi.id="a38814290018F" name="composite" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a374CB3BA032A" referencedEnd="a374CB45500D4">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Multidimensional.Dimension.memberSet    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A5E216E037D" name="memberSet" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a38963CD7009C" referencedEnd="a3A5E210A0329">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Multidimensional.Dimension.schema    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A5E22970095" name="schema" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3793D1C503DE" referencedEnd="a3A5CC42A0038">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Multidimensional.org.omg.mof.idl_substitute_name=CwmDimension    [Tag] ==================== -->
    <Model:Tag xmi.id="G.935" name="org.omg.mof.idl_substitute_name=CwmDimension" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a374CB3BA032A">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CwmDimension</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Multidimensional.com.urep.jcr.java_substitute_name=CwmDimension    [Tag] ==================== -->
    <Model:Tag xmi.id="G.936" name="com.urep.jcr.java_substitute_name=CwmDimension" annotation="" tagId="com.urep.jcr.java_substitute_name" elements="a374CB3BA032A">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CwmDimension</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Multidimensional.DimensionedObject    [Class] ==================== -->
    <Model:Class xmi.id="a374CB311034F" name="DimensionedObject" annotation="DimensionedObject represents an attribute of Dimension." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3A6F62780143">
      <Model:Namespace.contents>
        <!-- ==================== Multidimensional.DimensionedObject.dimension    [Reference] ==================== -->
        <Model:Reference xmi.id="a3866BABE0360" name="dimension" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a374CB3BA032A" referencedEnd="a374CB3CD01D3">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Multidimensional.DimensionedObject.schema    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A5CCD630178" name="schema" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3793D1C503DE" referencedEnd="a3A5CC427001F">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Multidimensional.Member    [Class] ==================== -->
    <Model:Class xmi.id="a3862763E0366" name="Member" annotation="Member represents a member of a Dimension." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a33BC99D60302"/>
    <!-- ==================== Multidimensional.MemberSet    [Class] ==================== -->
    <Model:Class xmi.id="a38963CD7009C" name="MemberSet" annotation="MemberSet represents the collection of Members associated with an instance of Dimension." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a387E624E0365">
      <Model:Namespace.contents>
        <!-- ==================== Multidimensional.MemberSet.dimension    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A5E21D60110" name="dimension" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a374CB3BA032A" referencedEnd="a3A5E210A0365">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Multidimensional.org.omg.mof.idl_substitute_name=CwmMemberSet    [Tag] ==================== -->
    <Model:Tag xmi.id="G.937" name="org.omg.mof.idl_substitute_name=CwmMemberSet" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a38963CD7009C">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CwmMemberSet</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Multidimensional.MemberValue    [Class] ==================== -->
    <Model:Class xmi.id="a3862710900E5" name="MemberValue" annotation="MemberValue represents an instance value of a Member." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a33BC9AFB02E4"/>
    <!-- ==================== Multidimensional.Schema    [Class] ==================== -->
    <Model:Class xmi.id="a3793D1C503DE" name="Schema" annotation="Schema contains all elements comprising a Multidimensional database." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5D19033E">
      <Model:Namespace.contents>
        <!-- ==================== Multidimensional.Schema.dimensionedObject    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A5E22E4038F" name="dimensionedObject" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a374CB311034F" referencedEnd="a3A5CC4260277">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Multidimensional.Schema.dimension    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A5E234000B6" name="dimension" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a374CB3BA032A" referencedEnd="a3A5CC4290357">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Multidimensional.DimensionsReferenceDimensionedObjects    [Association] ==================== -->
    <Model:Association xmi.id="a374CB3CC03E5" name="DimensionsReferenceDimensionedObjects" annotation="A Dimension may reference several instances of DimensionedObject. A DimensionedObject may be referenced by several Dimensions." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a374CB3CD01D3" name="dimension" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a374CB3BA032A">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a374CB3CD01D4" name="dimensionedObject" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a374CB311034F">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Multidimensional.CompositesReferenceComponents    [Association] ==================== -->
    <Model:Association xmi.id="a374CB45202A7" name="CompositesReferenceComponents" annotation="A Dimension may reference other instances of Dimension in order to derive more complex dimensional structures." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a374CB45500D4" name="composite" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a374CB3BA032A">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a374CB45500DE" name="component" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a374CB3BA032A">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Multidimensional.MDSchemaOwnsDimensionedObjects    [Association] ==================== -->
    <Model:Association xmi.id="a3A5CC426005A" name="MDSchemaOwnsDimensionedObjects" annotation="A Multidimensional Schema may own any number of DimensionedObjects." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A5CC4260277" name="dimensionedObject" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a374CB311034F">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A5CC427001F" name="schema" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a3793D1C503DE">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Multidimensional.MDSchemaOwnsDimensions    [Association] ==================== -->
    <Model:Association xmi.id="a3A5CC4290127" name="MDSchemaOwnsDimensions" annotation="A Multidimensional Schema may own any number of Dimensions." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A5CC4290357" name="dimension" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a374CB3BA032A">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A5CC42A0038" name="schema" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a3793D1C503DE">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Multidimensional.DimensionOwnsMemberSets    [Association] ==================== -->
    <Model:Association xmi.id="a3A5E2105028C" name="DimensionOwnsMemberSets" annotation="A Dimension may own any number of MemberSets." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A5E210A0329" name="memberSet" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a38963CD7009C">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A5E210A0365" name="dimension" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a374CB3BA032A">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
  </Model:Namespace.contents>
</Model:Package>
<!-- ==================== XML    [Package] ==================== -->
<Model:Package xmi.id="a379CA3670197" name="XML" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
  <Model:ModelElement.annotation>XML is rapidly becoming a very important type of data resource, especially in the Internet environment. On the one hand, HTML is evolving to be XML-compliant; in the near future, all HTML documents can be expected to become valid XML documents. On the other hand, XML is quickly becoming the standard format for interchange of data and/or metadata (e.g., XMI). Therefore, XML documents (or streams) representing data and/or metadata can be expected to appear everywhere. 

The XML package contains classes and associations that represent common metadata describing XML data resources. It is based on XML 1.0 [XML]. XML Schema is an ongoing activity in the W3C. As future standards are adopted by the W3C on XML Schema, this package will be revised and extended accordingly.

This section provides a description of the main features of the XML package.

An XML schema contains a set of definitions and declarations, in the form of XML element type definitions. An XML element type may contain a set of XML attributes and/or a content model. An attribute can have one of the following defaults: required, implied, default, or fixed. The content model can be one of the following types: empty, any, mixed, or element. Except for the empty content model, a content model consists of constituent parts, particularly element type references. The allowed occurrence of the constituents can be one of the following types: one, zero or one, zero or more, or
one or more.

An any content model consists of any element types. A mixed content model consists of character data and specified element type references. An element content model consists of specified element type references and/or element content models. An element content model can be one of the following types: choice or sequence.

The XML package depends on the following packages:

    omg.org::CWM::ObjectModel::Core
    omg.org::CWM::ObjectModel::Instance
    omg.org::CWM::Foundation::DataTypes

The metamodel diagram for the XML package is split into two parts. The first diagram shows the XML classes and associations, while the second shows the inheritance hierarchy.

OCL Representation of XML Constraints

   None</Model:ModelElement.annotation>
  <Model:Namespace.contents>
    <!-- ==================== XML.org.omg.xmi.namespace=CWMXML    [Tag] ==================== -->
    <Model:Tag xmi.id="G.938" name="org.omg.xmi.namespace=CWMXML" annotation="" tagId="org.omg.xmi.namespace" elements="a379CA3670197">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CWMXML</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== XML.org.omg.mof.idl_prefix=org.omg.cwm.resource    [Tag] ==================== -->
    <Model:Tag xmi.id="G.939" name="org.omg.mof.idl_prefix=org.omg.cwm.resource" annotation="" tagId="org.omg.mof.idl_prefix" elements="a379CA3670197">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.cwm.resource</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== XML.org.omg.mof.idl_substitute_name=XMLModule    [Tag] ==================== -->
    <Model:Tag xmi.id="G.940" name="org.omg.mof.idl_substitute_name=XMLModule" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a379CA3670197">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">XMLModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== XML.com.urep.jcr.java_prefix=org.omg.java.cwm.resource    [Tag] ==================== -->
    <Model:Tag xmi.id="G.941" name="com.urep.jcr.java_prefix=org.omg.java.cwm.resource" annotation="" tagId="com.urep.jcr.java_prefix" elements="a379CA3670197">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.java.cwm.resource</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <Model:Import xmi.id="G.942" name="Core" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A6600C5031F"/>
    <Model:Import xmi.id="G.943" name="Instance" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A6342930318"/>
    <!-- ==================== XML.Schema    [Class] ==================== -->
    <Model:Class xmi.id="a3786599903AB" name="Schema" annotation="This represents an XML schema which contains a set of definitions and declarations. In XML, this is known as document type definition, or DTD, which provides a grammar for a class of documents." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5D19033E">
      <Model:Namespace.contents>
        <!-- ==================== XML.Schema.version    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3796325B039A" name="version" annotation="Identifies the version of the XML." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== XML.Schema.xmlNamespace    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a379633FF038E" name="xmlNamespace" annotation="Identifies the XML namespace of the Schema." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== XML.Schema.elementType    [Reference] ==================== -->
        <Model:Reference xmi.id="a387183680041" name="elementType" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A5C7301CC" referencedEnd="a3A2C186203A1">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== XML.ElementType    [Class] ==================== -->
    <Model:Class xmi.id="a378659AF0258" name="ElementType" annotation="This represents an XML element type definition. In XML, each document contains one or more elements. The element structure may, for validation purposes, be constrained using element type and attribute declarations. An element type declaration constrains the elements content." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3298A02900FE">
      <Model:Namespace.contents>
        <!-- ==================== XML.ElementType.schema    [Reference] ==================== -->
        <Model:Reference xmi.id="a38717F620145" name="schema" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a32B69F3A0118" referencedEnd="a3A2C18630036">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== XML.ElementType.attribute    [Reference] ==================== -->
        <Model:Reference xmi.id="a38717F9F01EC" name="attribute" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a32989F9700FE" referencedEnd="a32B5D7EF03DD">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== XML.ElementType.content    [Reference] ==================== -->
        <Model:Reference xmi.id="a38717FCC00EC" name="content" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3796417C012B" referencedEnd="a37B5A6E0001A">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== XML.org.omg.mof.idl_substitute_name=xmlAttribute    [Tag] ==================== -->
    <Model:Tag xmi.id="G.944" name="org.omg.mof.idl_substitute_name=xmlAttribute" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a38717F9F01EC">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">xmlAttribute</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== XML.Attribute    [Class] ==================== -->
    <Model:Class xmi.id="a379631680282" name="Attribute" annotation="This represents an XML attribute declaration. In XML, attributes are used to associate name-value pairs with elements. Each attribute declaration specifies the name, data type, and default value (if any) of each attribute associated with a given element type." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3A6F62780143">
      <Model:Namespace.contents>
        <!-- ==================== XML.Attribute.defaultKind    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a379638FD01A6" name="defaultKind" annotation="Identifies the kind of attribute default." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a37B5AF5001F2">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== XML.Attribute.elementType    [Reference] ==================== -->
        <Model:Reference xmi.id="a3871786900FF" name="elementType" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a32989FB2023D" referencedEnd="a32B5D7EF03D3">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== XML.org.omg.IDL Substitute Name=XmlAttribute    [Tag] ==================== -->
    <Model:Tag xmi.id="G.945" name="org.omg.IDL Substitute Name=XmlAttribute" annotation="" tagId="org.omg.IDL Substitute Name" elements="a379631680282">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">XmlAttribute</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== XML.org.omg.mof.idl_substitute_name=XmlAttribute    [Tag] ==================== -->
    <Model:Tag xmi.id="G.946" name="org.omg.mof.idl_substitute_name=XmlAttribute" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a379631680282">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">XmlAttribute</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== XML.Content    [Class] ==================== -->
    <Model:Class xmi.id="a3796417C012B" name="Content" annotation="This represents the content model of an ElementType. In XML, each document contains one or more elements, the boundaries of which are normally delimited by start-tags and end-tags. The body between the start-tag and end-tag is called the elements content. An element type declaration constrains the elements content." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:Namespace.contents>
        <!-- ==================== XML.Content.type    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a37964D7E0065" name="type" annotation="Identifies the type of the content model." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a37B5B09E035B">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== XML.Content.occurrence    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a37B6364A0070" name="occurrence" annotation="Identifies the allowed occurrence of the content constituents." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a37B5C29302FE">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== XML.Content.elementType    [Reference] ==================== -->
        <Model:Reference xmi.id="a38717A390308" name="elementType" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a378659AF0258" referencedEnd="a37B5A6E00038">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== XML.Content.ownedElementType    [Reference] ==================== -->
        <Model:Reference xmi.id="a38717A600246" name="ownedElementType" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3870FE7E0022" referencedEnd="a3871031B002A">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== XML.ElementContent    [Class] ==================== -->
    <Model:Class xmi.id="a3796465A0087" name="ElementContent" annotation="This represents an element content which contains only ElementTypeReferences. In XML, an element type has element content when elements of that type must contain only child elements (no character data), optionally separated by white space. In this case, the constraint includes a content model that governs the allowed types of the child elements and the order in which they are allowed to appear." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3796417C012B">
      <Model:Namespace.contents>
        <!-- ==================== XML.ElementContent.order    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a37B5C61700FC" name="order" annotation="Identifies the order type of the element content." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a37B5C648003E">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== XML.ElementContent.ownedContent    [Reference] ==================== -->
        <Model:Reference xmi.id="a38717CD7033E" name="ownedContent" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3796465A0087" referencedEnd="a37B641D50123">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== XML.ElementContent.ownerContent    [Reference] ==================== -->
        <Model:Reference xmi.id="a38717D06029B" name="ownerContent" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3796465A0087" referencedEnd="a37B641D500FB">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== XML.MixedContent    [Class] ==================== -->
    <Model:Class xmi.id="a3796466F03DB" name="MixedContent" annotation="This represents a mixed content of character data and ElementTypeReferences. In XML, an element type has mixed content when elements of that type may contain character data, optionally interspersed with child elements. In this case, the types of the child elements may be constrained, but not their order or their number of occurrences." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3796417C012B">
      <Model:Namespace.contents>
        <!-- ==================== XML.MixedContent.text    [Reference] ==================== -->
        <Model:Reference xmi.id="a387185E803B2" name="text" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a387100F30388" referencedEnd="a38710460006E">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== XML.AttributeDefault    [DataType] ==================== -->
    <Model:DataType xmi.id="a37B5AF5001F2" name="AttributeDefault" annotation="required, implied, default, fixed" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcEnum xmi.tcName="AttributeDefault">
          <XMI.CorbaTcEnumLabel xmi.tcName="xml_required"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="xml_implied"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="xml_default"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="xml_fixed"/>
          </XMI.CorbaTcEnum>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== XML.org.omg.xmi.enumerationUnprefix=xml_    [Tag] ==================== -->
    <Model:Tag xmi.id="G.947" name="org.omg.xmi.enumerationUnprefix=xml_" annotation="" tagId="org.omg.xmi.enumerationUnprefix" elements="a37B5AF5001F2 a37B5B09E035B a37B5C29302FE a37B5C648003E">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">xml_</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== XML.ContentType    [DataType] ==================== -->
    <Model:DataType xmi.id="a37B5B09E035B" name="ContentType" annotation="empty, any, mixed, element" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcEnum xmi.tcName="ContentType">
          <XMI.CorbaTcEnumLabel xmi.tcName="xml_empty"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="xml_any"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="xml_mixed"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="xml_element"/>
          </XMI.CorbaTcEnum>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== XML.OccurrenceType    [DataType] ==================== -->
    <Model:DataType xmi.id="a37B5C29302FE" name="OccurrenceType" annotation="one, zeroOrOne, zeroOrMore, OneOrMore" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcEnum xmi.tcName="OccurrenceType">
          <XMI.CorbaTcEnumLabel xmi.tcName="xml_one"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="xml_zeroOrOne"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="xml_zeroOrMore"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="xml_oneOrMore"/>
          </XMI.CorbaTcEnum>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== XML.ElementOrderType    [DataType] ==================== -->
    <Model:DataType xmi.id="a37B5C648003E" name="ElementOrderType" annotation="choice, sequence" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcEnum xmi.tcName="ElementOrderType">
          <XMI.CorbaTcEnumLabel xmi.tcName="xml_choice"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="xml_sequence"/>
          </XMI.CorbaTcEnum>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== XML.ElementTypeReference    [Class] ==================== -->
    <Model:Class xmi.id="a3870FE7E0022" name="ElementTypeReference" annotation="This represents an XML element type reference. In XML, an element content or a mixed content of an element type may contain references to element type definitions." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3A6F62780143">
      <Model:Namespace.contents>
        <!-- ==================== XML.ElementTypeReference.occurrence    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3871007F02D7" name="occurrence" annotation="Identifies the allowed occurrence of the ElementTypeReference." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a37B5C29302FE">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== XML.ElementTypeReference.ownerContent    [Reference] ==================== -->
        <Model:Reference xmi.id="a387182190202" name="ownerContent" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3796417C012B" referencedEnd="a3871031B003E">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== XML.Text    [Class] ==================== -->
    <Model:Class xmi.id="a387100F30388" name="Text" annotation="This represents character data. In XML, a mixed content of an element type may contain text." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3A6F62780143">
      <Model:Namespace.contents>
        <!-- ==================== XML.Text.ownerContent    [Reference] ==================== -->
        <Model:Reference xmi.id="a3871862F00BB" name="ownerContent" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3796466F03DB" referencedEnd="a38710460008C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== XML.Element    [Class] ==================== -->
    <Model:Class xmi.id="a3887821D01A4" name="Element" annotation="This represents an instance of an ElementType." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a33BC99D60302"/>
    <!-- ==================== XML.org.omg.mof.idl_substitute_name=XmlElement    [Tag] ==================== -->
    <Model:Tag xmi.id="G.948" name="org.omg.mof.idl_substitute_name=XmlElement" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a3887821D01A4">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">XmlElement</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== XML.com.urep.jcr.java_substitute_name=XmlElement    [Tag] ==================== -->
    <Model:Tag xmi.id="G.949" name="com.urep.jcr.java_substitute_name=XmlElement" annotation="" tagId="com.urep.jcr.java_substitute_name" elements="a3887821D01A4">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">XmlElement</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== XML.Document    [Class] ==================== -->
    <Model:Class xmi.id="a3887828E0002" name="Document" annotation="This represents an XML document, which is a collection of XML Elements." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a387E624E0365"/>
    <!-- ==================== XML.ElementTypeContent    [Association] ==================== -->
    <Model:Association xmi.id="a37B5A6DE022A" name="ElementTypeContent" annotation="This association relates an ElementType with its Content." isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a37B5A6E0001A" name="content" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3796417C012B">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a37B5A6E00038" name="elementType" annotation="" isNavigable="true" aggregation="shared" isChangeable="true" type="a378659AF0258">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== XML.OwnedElementContent    [Association] ==================== -->
    <Model:Association xmi.id="a37B641CB01BF" name="OwnedElementContent" annotation="This association relates an ElementContent with its constituent ElementContents." isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a37B641D500FB" name="ownerContent" annotation="" isNavigable="true" aggregation="shared" isChangeable="true" type="a3796465A0087">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a37B641D50123" name="ownedContent" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3796465A0087">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== XML.ContentElementTypeReference    [Association] ==================== -->
    <Model:Association xmi.id="a3871031902A8" name="ContentElementTypeReference" annotation="This association relates a Content with its constituent ElementTypeReferences." isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3871031B002A" name="ownedElementType" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3870FE7E0022">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3871031B003E" name="ownerContent" annotation="" isNavigable="true" aggregation="shared" isChangeable="true" type="a3796417C012B">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== XML.MixedContentText    [Association] ==================== -->
    <Model:Association xmi.id="a3871045D0380" name="MixedContentText" annotation="This association relates a MixedContent with its Text." isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a38710460006E" name="text" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a387100F30388">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a38710460008C" name="ownerContent" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a3796466F03DB">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
  </Model:Namespace.contents>
</Model:Package>
<!-- ==================== Transformation    [Package] ==================== -->
<Model:Package xmi.id="a35E1B0B40042" name="Transformation" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
  <Model:ModelElement.annotation>A key aspect of data warehousing is to extract, transform, and load data from
operational resources to a data warehouse or data mart for analysis. Extraction,
transformation, and loading can all be characterized as transformations. In fact,
whenever data needs to be converted from one form to another in data warehousing,
whether for storage, retrieval, or presentation purposes, transformations are involved.
Transformation, therefore, is central to data warehousing.
The Transformation package contains classes and associations that represent common
transformation metadata used in data warehousing. It covers basic transformations
among all types of data sources and targets: object-oriented, relational, record,
multidimensional, XML, OLAP, and data mining.
The Transformation package is designed to enable interchange of common metadata about transformation tools and activities. Specifically it is designed to: 

1. Relate a transformation with its data sources and targets. These data sources and targets can be of any type (e.g., object-oriented, relational) or granularity (e.g., class, attribute, table, column). They can be persistent (e.g., stored in a relational database) or transient.

2. Accommodate both "black box" and "white box" transformations. In the case of "black box" transformations, data sources and targets are related to a transformation and to each other at a coarse-grain level. We know the data sources and targets are related through the transformation, but we dont know how a specific piece of a data source is related to a specific piece of a data target. In the case of "white box" transformations, however, data sources and targets are related to a transformation and to each other at a fine-grain level. We know exactly how a specific piece of a data source is related to a specific piece of a data target through a specific part of the transformation.

3. Allow grouping of transformations into logical units. At the functional level, a logical unit defines a single unit of work, within which all transformations must be executed and completed together. At the execution level, logical units can be used to define the execution grouping and sequencing (either explicitly through precedence constraints or implicitly through data dependencies). A key consideration here is that both parallel and sequential executions (or a combination of both) can be accommodated.

The Transformation package assumes the existence of the following packages that represent types of potential data sources or targets: ObjectModel (object-oriented), Relational, Record, Multidimensional, XML, OLAP, and Data Mining. The Transformation package is an integral part of the following packages: OLAP, Data Mining, Warehouse Process, and Warehouse Operation. In particular, the Transformation and Warehouse Process packages together provide metamodel constructs that facilitate scheduling and execution in data warehousing, and the Transformation and Warehouse Operation packages together provide metamodel constructs that enable data lineage in data  warehousing.

This section provides a description of the main features of the Transformation package,
as illustrated in Figure 13-1 (see specification document for figure).

A transformation transforms a set of source objects into a set of target objects. The elements of a data object set can be any ObjectModel model elements, but typically are tables, columns, or model elements that represent transient, in memory, objects. Data object sets can be both sources and targets for different transformations. In particular, a given data object set can be the target of one transformation and the source of one or more transformations within the same logical unit. This is often the case with transformation that produce and consume temporary objects. 

Transformations allow a wide range of types (and granularity) to be defined for their data sources and targets. For example, the source type of a transformation can be an XML schema while the target type is a column, if the transformation deals with storing an XML document in a column of a relational database. More typically, the source types of a transformation are classes and attributes while the target types are tables and columns, or vice versa, if the transformation deals with converting object data into relational data, or vice versa.

Existing programs, queries, or rules (in fact, any ObjectModel operations) can be used to perform a transformation by associating them with the transformation using the transformation use dependency.

Transformations can be grouped into logical units. At the functional level, they are grouped into transformation tasks, each of which defines a set of transformations that must be executed and completed together - a logical unit of work. At the execution level, transformation steps are used to coordinate the flow of control between transformation tasks, with each transformation step executing a single transformation task. The transformation steps are further grouped into transformation activities.
Within each transformation activity, the execution sequence of its transformation steps are defined either explicitly by using the step precedence dependency or precedence constraint, or implicitly through data dependency.

There are certain "white-box" transformations which are commonly used and which can relate data sources and targets to a transformation and to each other at a detailed level. These transformations are convenient to use and they provide data lineage at a fine-grain level. One such transformation is the transformation map which consists of a set of classifier maps that in turn consists of a set of feature maps or classifier-feature maps. The other is the transformation tree, which represents a transformation as an unary or binary expression tree. For an example usage of the transformation map, please see Figure 13-4.

The Transformation package depends on the following packages: 

    omg.org::CWM::ObjectModel::Behavioral
    omg.org::CWM::ObjectModel::Core
    omg.org::CWM::Foundation::Expressions
    omg.org::CWM::Foundation::SoftwareDeployment

The CWM uses packages to control complexity and create groupings of logically interrelated classes and associations. The Transformation package is one such package. Within the Transformation package itself, however, the definition of subpackages is purposefully left out to reduce the length and complexity of the fully qualified names of Transformation classes and associations. There are, however, several groupings of classes and associations that form related sets of functionality within the Transformation package. Although separate subpackages have not been created for these functional areas, their identification improves the understandability of the Transformation package.

The Transformation package contains metamodel elements that support the following functions:

1. Transformation and data lineage. These classes and associations deal with transformations and their sources, targets, constraints, and operations.

2. Transformation grouping and execution. These classes and associations deal with grouping of transformations to form logical units and to define execution sequences.

3. Specialized transformations. These classes and associations define specialized, "white box", transformations that are commonly used in data warehousing. The specific Transformation classes and associations supporting each functional area are delineated in Table 13-1 (see specification document for table).

The metamodel diagram for the Transformation package is split into four parts. The first two diagrams show the Transformation classes and associations, while the last two show the inheritance hierarchy.

13.5 OCL Representation of Transformation Constraints

[C-1] The preceding step and succeeding step of StepPrecedence must not be the same.
context StepPrecedence
inv: self.precedingStep-&gt;forAll( p | self.succeedingStep-&gt;forAll( q | p &lt;&gt; q ) )

[C-2] A TransformationTask may not be its own inverse task.
Identifies the Transformation
context TransformationTask
inv: self.inverseTask-&gt;forAll( p | p &lt;&gt; self )

[C-3] A TransformationTask may not be its own original task.
context TransformationTask
inv: self.originalTask-&gt;forAll( p | p &lt;&gt; self )

[C-4] The ClassifierMapToCFMap association is derived from the Namespace-ModelElement association. All ownedElement ends of the association must be ClassifierFeatureMaps.
context ClassifierMapToCFMap
inv Namespace-ModelElement.allInstances.select( ownedElement.oclIsKindOf(
ClassifierFeatureMap ) )

[C-5] The ClassifierMapToFeatureMap association is derived from the Namespace-ModelElement association. All ownedElement ends of the association must be FeatureMaps.
context ClassifierMapToFeatureMap
inv Namespace-ModelElement.allInstances.select( ownedElement.oclIsKindOf(
FeatureMap ) )</Model:ModelElement.annotation>
  <Model:Namespace.contents>
    <!-- ==================== Transformation.org.omg.xmi.namespace=CWMTFM    [Tag] ==================== -->
    <Model:Tag xmi.id="G.951" name="org.omg.xmi.namespace=CWMTFM" annotation="" tagId="org.omg.xmi.namespace" elements="a35E1B0B40042">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CWMTFM</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Transformation.org.omg.mof.idl_prefix=org.omg.cwm.analysis    [Tag] ==================== -->
    <Model:Tag xmi.id="G.952" name="org.omg.mof.idl_prefix=org.omg.cwm.analysis" annotation="" tagId="org.omg.mof.idl_prefix" elements="a35E1B0B40042">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.cwm.analysis</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Transformation.org.omg.mof.idl_substitute_name=TransformationModule    [Tag] ==================== -->
    <Model:Tag xmi.id="G.953" name="org.omg.mof.idl_substitute_name=TransformationModule" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a35E1B0B40042">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">TransformationModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Transformation.com.urep.jcr.java_prefix=org.omg.java.cwm.analysis    [Tag] ==================== -->
    <Model:Tag xmi.id="G.954" name="com.urep.jcr.java_prefix=org.omg.java.cwm.analysis" annotation="" tagId="com.urep.jcr.java_prefix" elements="a35E1B0B40042">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.java.cwm.analysis</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <Model:Import xmi.id="G.955" name="Core" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A6600C5031F"/>
    <Model:Import xmi.id="G.956" name="Expressions" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a38207A600078"/>
    <Model:Import xmi.id="G.957" name="SoftwareDeployment" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3731C42F0314"/>
    <!-- ==================== Transformation.Transformation    [Class] ==================== -->
    <Model:Class xmi.id="a36D1C5900149" name="Transformation" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a32B69F3A0118">
      <Model:ModelElement.annotation>This represents a transformation from a set of sources to a set of targets. 

If a model already exists for the object that performs the Transformation, then the model can be related to the Transformation via a TransformationUse dependency.
</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Transformation.Transformation.function    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a37097EFD0302" name="function" annotation="Any code or script for the Transformation." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a363559050190">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Transformation.Transformation.functionDescription    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a37449EED0210" name="functionDescription" annotation="A short description for any code or script performed by the Transformation." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Transformation.Transformation.isPrimary    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a37449EFF00FE" name="isPrimary" annotation="This Transformation is the primary transformation for the associated TransformationTask." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Transformation.Transformation.source    [Reference] ==================== -->
        <Model:Reference xmi.id="a3856BB430348" name="source" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a36D1C6960146" referencedEnd="a36D1C87601BE">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Transformation.Transformation.target    [Reference] ==================== -->
        <Model:Reference xmi.id="a3874DE1F009B" name="target" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a36D1C6960146" referencedEnd="a36D1C8880232">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Transformation.Transformation.use    [Reference] ==================== -->
        <Model:Reference xmi.id="a3874DF44016F" name="use" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A646F00E6" referencedEnd="a33FFE57B03B3">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Transformation.DataObjectSet    [Class] ==================== -->
    <Model:Class xmi.id="a36D1C6960146" name="DataObjectSet" annotation="This represents a set of data objects that can be the source or target of a Transformation." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:Namespace.contents>
        <!-- ==================== Transformation.DataObjectSet.element    [Reference] ==================== -->
        <Model:Reference xmi.id="a3874DFCD0375" name="element" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A5C7301CC" referencedEnd="a37093FA10030">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Transformation.DataObjectSet.sourceTransformation    [Reference] ==================== -->
        <Model:Reference xmi.id="a3874DFF30033" name="sourceTransformation" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a36D1C5900149" referencedEnd="a36D1C87601B4">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Transformation.DataObjectSet.targetTransformation    [Reference] ==================== -->
        <Model:Reference xmi.id="a3874E01D03D7" name="targetTransformation" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a36D1C5900149" referencedEnd="a36D1C8880228">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Transformation.TransformationTask    [Class] ==================== -->
    <Model:Class xmi.id="a36D58FEC013E" name="TransformationTask" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3A59C2520149">
      <Model:ModelElement.annotation>This represents a set of Transformations that must be executed together as a single task (logical unit).

A TransformationTask may have an inverse task. A transformation task that maps a source set "A" into a target set "B" can be reversed by the inverse transformation task that maps "B" into "A".</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Transformation.TransformationTask.transformation    [Reference] ==================== -->
        <Model:Reference xmi.id="a3874E105029A" name="transformation" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a36D1C5900149" referencedEnd="a3744AC390355">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Transformation.TransformationTask.inverseTask    [Reference] ==================== -->
        <Model:Reference xmi.id="a3874E13400B7" name="inverseTask" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a36D58FEC013E" referencedEnd="a36E06500016E">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Transformation.TransformationTask.originalTask    [Reference] ==================== -->
        <Model:Reference xmi.id="a3874E1620208" name="originalTask" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a36D58FEC013E" referencedEnd="a36E065000159">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Transformation.TransformationStep    [Class] ==================== -->
    <Model:Class xmi.id="a36D590F003B9" name="TransformationStep" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:ModelElement.annotation>This represents the usage of a TransformationTask in a TransformationActivity. A TransformationStep relates to one TransformationTask. 

TransformationSteps are used to coordinate the flow of control between their TransformationTasks. Ordering of the TransformationSteps are defined using the PrecedenceConstrainedBy dependency.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Transformation.TransformationStep.task    [Reference] ==================== -->
        <Model:Reference xmi.id="a3874E9FE03CE" name="task" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a36D58FEC013E" referencedEnd="a36D59A840057">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Transformation.TransformationStep.activity    [Reference] ==================== -->
        <Model:Reference xmi.id="a3874EA0500AD" name="activity" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a32B69F3A0118" referencedEnd="a3A2C18630036">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Transformation.TransformationStep.precedence    [Reference] ==================== -->
        <Model:Reference xmi.id="a3874EA0A03C1" name="precedence" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A649B000A" referencedEnd="a33EA67BB010F">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Transformation.TransformationStep.precedingStep    [Reference] ==================== -->
        <Model:Reference xmi.id="a3874EB33001E" name="precedingStep" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A646F00E6" referencedEnd="a33FFE57B03B3">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Transformation.TransformationStep.succeedingStep    [Reference] ==================== -->
        <Model:Reference xmi.id="a3874EB2400F9" name="succeedingStep" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A646F00E6" referencedEnd="a335C0D7A02E4">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Transformation.TransformationActivity    [Class] ==================== -->
    <Model:Class xmi.id="a36E070680112" name="TransformationActivity" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a33CD6DE5030C">
      <Model:ModelElement.annotation>This represents a transformation activity. Each TransformationActivity consists of a set
of TransformationSteps.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Transformation.TransformationActivity.creationDate    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a36E4629500E6" name="creationDate" annotation="When the TransformationActivity was created." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Transformation.TransformationActivity.step    [Reference] ==================== -->
        <Model:Reference xmi.id="a3874F3F4030D" name="step" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A5C7301CC" referencedEnd="a3A2C186203A1">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Transformation.PrecedenceConstraint    [Class] ==================== -->
    <Model:Class xmi.id="a36E071090100" name="PrecedenceConstraint" annotation="This is used to define order-of-execution constraint among TransformationSteps. It may be used independent of or in conjunction with StepPrecedence." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A649B000A"/>
    <!-- ==================== Transformation.TransformationUse    [Class] ==================== -->
    <Model:Class xmi.id="a36E071EC03C3" name="TransformationUse" annotation="This is a specialized dependency used to associate a Transformation to the model of an existing object (e.g., program, query, or rule) that performs the transformation." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A646F00E6">
      <Model:Namespace.contents>
        <!-- ==================== Transformation.TransformationUse.type    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a36E465970039" name="type" annotation="Identifies the type of object that can perform the transformation." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Transformation.TransformationUse.transformation    [Reference] ==================== -->
        <Model:Reference xmi.id="a38751DA40074" name="transformation" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A5C7301CC" referencedEnd="a33FFE57B0395">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Transformation.TransformationUse.operation    [Reference] ==================== -->
        <Model:Reference xmi.id="a38751DAB00A6" name="operation" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A5C7301CC" referencedEnd="a335C0D7A02A8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Transformation.TransformationMap    [Class] ==================== -->
    <Model:Class xmi.id="a374322890098" name="TransformationMap" annotation="This represents a specialized Transformation which consists of a group of ClassifierMaps." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a36D1C5900149">
      <Model:Namespace.contents>
        <!-- ==================== Transformation.TransformationMap.classifierMap    [Reference] ==================== -->
        <Model:Reference xmi.id="a3874FCC901B0" name="classifierMap" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A5C7301CC" referencedEnd="a3A2C186203A1">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Transformation.TransformationTree    [Class] ==================== -->
    <Model:Class xmi.id="a374322B301CE" name="TransformationTree" annotation="This represents a specialized Transformation which can be modeled as an expression tree. " isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a36D1C5900149">
      <Model:Namespace.contents>
        <!-- ==================== Transformation.TransformationTree.type    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a37498C0303A3" name="type" annotation="Identifies the type of TransformationTree, which can be unary or binary." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a37B2FFD8035B">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Transformation.TransformationTree.body    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a37498C0F0288" name="body" annotation="Identifies the expression tree that embodies the TransformationTree." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a376A84310237">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Transformation.ClassifierMap    [Class] ==================== -->
    <Model:Class xmi.id="a374324450028" name="ClassifierMap" annotation="This represents a mapping of source Classifiers to target Classifiers. A ClassifierMap may consists of a group of ClassifierFeatureMaps and/or FeatureMaps." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a32B69F3A0118">
      <Model:Namespace.contents>
        <!-- ==================== Transformation.ClassifierMap.function    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a38751AC903CE" name="function" annotation="Any code or script for the ClassifierMap." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a363559050190">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Transformation.ClassifierMap.functionDescription    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a38751AD00298" name="functionDescription" annotation="A short description for any code or script performed by the ClassifierMap." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Transformation.ClassifierMap.source    [Reference] ==================== -->
        <Model:Reference xmi.id="a3875035203C1" name="source" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a32989FB2023D" referencedEnd="a387500880138">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Transformation.ClassifierMap.target    [Reference] ==================== -->
        <Model:Reference xmi.id="a387503590032" name="target" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a32989FB2023D" referencedEnd="a3875009900ED">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Transformation.ClassifierMap.transformationMap    [Reference] ==================== -->
        <Model:Reference xmi.id="a387521930159" name="transformationMap" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a32B69F3A0118" referencedEnd="a3A2C18630036">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Transformation.ClassifierMap.featureMap    [Reference] ==================== -->
        <Model:Reference xmi.id="a3875035E010C" name="featureMap" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a374324600063" referencedEnd="a37498826004E">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Transformation.ClassifierMap.cfMap    [Reference] ==================== -->
        <Model:Reference xmi.id="a3875036401DD" name="cfMap" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3874FE01032B" referencedEnd="a3874FE2C0066">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Transformation.FeatureMap    [Class] ==================== -->
    <Model:Class xmi.id="a374324600063" name="FeatureMap" annotation="This represents a mapping of source Features to target Features." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:Namespace.contents>
        <!-- ==================== Transformation.FeatureMap.function    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a38751B170312" name="function" annotation="Any code or script for the FeatureMap." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a363559050190">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Transformation.FeatureMap.functionDescription    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a38751B1D0375" name="functionDescription" annotation="A short description for any code or script performed by the FeatureMap." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Transformation.FeatureMap.source    [Reference] ==================== -->
        <Model:Reference xmi.id="a387503CA0193" name="source" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a32989F9700FE" referencedEnd="a387500C70139">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Transformation.FeatureMap.target    [Reference] ==================== -->
        <Model:Reference xmi.id="a387503D00354" name="target" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a32989F9700FE" referencedEnd="a387500B00013">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Transformation.FeatureMap.classifierMap    [Reference] ==================== -->
        <Model:Reference xmi.id="a387503D602C7" name="classifierMap" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a374324450028" referencedEnd="a374988260062">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Transformation.TreeType    [DataType] ==================== -->
    <Model:DataType xmi.id="a37B2FFD8035B" name="TreeType" annotation="unary, binary" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcEnum xmi.tcName="TreeType">
          <XMI.CorbaTcEnumLabel xmi.tcName="tfm_unary"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="tfm_binary"/>
          </XMI.CorbaTcEnum>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== Transformation.org.omg.xmi.enumerationUnprefix=tfm_    [Tag] ==================== -->
    <Model:Tag xmi.id="G.958" name="org.omg.xmi.enumerationUnprefix=tfm_" annotation="" tagId="org.omg.xmi.enumerationUnprefix" elements="a37B2FFD8035B">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">tfm_</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Transformation.StepPrecedence    [Class] ==================== -->
    <Model:Class xmi.id="a385A942E0286" name="StepPrecedence" annotation="This is used to define explicit order-of-execution relationships among TransformationSteps. It may be used independent of or in conjunction with PrecedenceConstraint" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A646F00E6">
      <Model:Namespace.contents>
        <!-- ==================== Transformation.StepPrecedence.precedingStep    [Reference] ==================== -->
        <Model:Reference xmi.id="a3874FABE0006" name="precedingStep" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A5C7301CC" referencedEnd="a335C0D7A02A8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Transformation.StepPrecedence.succeedingStep    [Reference] ==================== -->
        <Model:Reference xmi.id="a3874FAC90002" name="succeedingStep" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A5C7301CC" referencedEnd="a33FFE57B0395">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Transformation.ClassifierFeatureMap    [Class] ==================== -->
    <Model:Class xmi.id="a3874FE01032B" name="ClassifierFeatureMap" annotation="This represents a mapping of Classifiers to Features." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:Namespace.contents>
        <!-- ==================== Transformation.ClassifierFeatureMap.function    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a38751BC203E0" name="function" annotation="Any code or script for the FeatureMap." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a363559050190">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Transformation.ClassifierFeatureMap.functionDescription    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a38751BC9017F" name="functionDescription" annotation="A short description for any code or script performed by the FeatureMap." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Transformation.ClassifierFeatureMap.classifierToFeature    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3887892901B8" name="classifierToFeature" annotation="Identifies if the mapping is from Classifiers (source) to Features (target). The default is true." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Transformation.ClassifierFeatureMap.classifier    [Reference] ==================== -->
        <Model:Reference xmi.id="a387504260159" name="classifier" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a32989FB2023D" referencedEnd="a387500E10104">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Transformation.ClassifierFeatureMap.feature    [Reference] ==================== -->
        <Model:Reference xmi.id="a3875043F021E" name="feature" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a32989F9700FE" referencedEnd="a387500F9022B">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Transformation.ClassifierFeatureMap.classifierMap    [Reference] ==================== -->
        <Model:Reference xmi.id="a387504480022" name="classifierMap" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a374324450028" referencedEnd="a3874FE2C0070">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Transformation.TransformationSource    [Association] ==================== -->
    <Model:Association xmi.id="a36D1C872001E" name="TransformationSource" annotation="This association relates a Transformation to its sources." isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a36D1C87601B4" name="sourceTransformation" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a36D1C5900149">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a36D1C87601BE" name="source" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a36D1C6960146">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Transformation.TransformationTarget    [Association] ==================== -->
    <Model:Association xmi.id="a36D1C886035C" name="TransformationTarget" annotation="This association relates a Transformation to its targets." isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a36D1C8880228" name="targetTransformation" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a36D1C5900149">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a36D1C8880232" name="target" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a36D1C6960146">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Transformation.TransformationStepTask    [Association] ==================== -->
    <Model:Association xmi.id="a36D59A820285" name="TransformationStepTask" annotation="This association relates a TransformationStep to its TransformationTask." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a36D59A84004D" name="step" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a36D590F003B9">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a36D59A840057" name="task" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a36D58FEC013E">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Transformation.InverseTransformationTask    [Association] ==================== -->
    <Model:Association xmi.id="a36E064FC0366" name="InverseTransformationTask" annotation="This association relates a TransformationTask to its inverse. A transformation task that maps a source set &quot;A&quot; into a target set &quot;B&quot; can be reversed by the inverse transformation task that maps &quot;B&quot; into &quot;A&quot;" isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a36E065000159" name="originalTask" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a36D58FEC013E">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a36E06500016E" name="inverseTask" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a36D58FEC013E">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Transformation.DataObjectSetElement    [Association] ==================== -->
    <Model:Association xmi.id="a37093F9E02FD" name="DataObjectSetElement" annotation="This association relates a DataObjectSet to its elements." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a37093FA10030" name="element" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a327A5C7301CC">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a37093FA10153" name="set" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a36D1C6960146">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Transformation.TransformationTaskElement    [Association] ==================== -->
    <Model:Association xmi.id="a3744AC38012D" name="TransformationTaskElement" annotation="This association relates a TransformationTask to its Transformations." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3744AC390341" name="task" annotation="" isNavigable="true" aggregation="shared" isChangeable="true" type="a36D58FEC013E">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3744AC390355" name="transformation" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a36D1C5900149">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Transformation.ClassifierMapToFeatureMap    [Association] ==================== -->
    <Model:Association xmi.id="a3749882402AE" name="ClassifierMapToFeatureMap" isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:ModelElement.annotation>This association relates a ClassifierMap to its FeatureMaps.

This association is derived from the Namespace-ModelElement association. All ownedElement ends of the association must be FeatureMaps. [C-5]</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a37498826004E" name="featureMap" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a374324600063">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a374988260062" name="classifierMap" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a374324450028">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Transformation.ClassifierMapToCFMap    [Association] ==================== -->
    <Model:Association xmi.id="a3874FE2802AF" name="ClassifierMapToCFMap" isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:ModelElement.annotation>This association relates a ClassifierMap to its ClassifierFeatureMaps.

This association is derived from the Namespace-ModelElement association. All ownedElement ends of the association must be ClassifierFeatureMaps. [C-4]</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3874FE2C0066" name="cfMap" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3874FE01032B">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3874FE2C0070" name="classifierMap" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a374324450028">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Transformation.ClassifierMapSource    [Association] ==================== -->
    <Model:Association xmi.id="a3875008700BF" name="ClassifierMapSource" annotation="This association relates a ClassifierMap to its source Classifiers." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a387500880138" name="source" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a32989FB2023D">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3875008900CC" name="classifierMap" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a374324450028">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Transformation.ClassifierMapTarget    [Association] ==================== -->
    <Model:Association xmi.id="a38750098004B" name="ClassifierMapTarget" annotation="This association relates a ClassifierMap to its target Classifiers." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3875009900ED" name="target" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a32989FB2023D">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3875009902CD" name="classifierMap" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a374324450028">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Transformation.FeatureMapTarget    [Association] ==================== -->
    <Model:Association xmi.id="a387500AF00EE" name="FeatureMapTarget" annotation="This association relates an FeatureMap to its target Features." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a387500B00013" name="target" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a32989F9700FE">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a387500B00140" name="featureMap" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a374324600063">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Transformation.FeatureMapSource    [Association] ==================== -->
    <Model:Association xmi.id="a387500C601BA" name="FeatureMapSource" annotation="This association relates an FeatureMap to its source Features." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a387500C70139" name="source" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a32989F9700FE">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a387500C7021F" name="featureMap" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a374324600063">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Transformation.CFMapClassifier    [Association] ==================== -->
    <Model:Association xmi.id="a387500E000EF" name="CFMapClassifier" annotation="This association relates a ClassifierFeatureMap to its source/target Features." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a387500E10104" name="classifier" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a32989FB2023D">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a387500E102E5" name="cfMap" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3874FE01032B">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Transformation.CFMapFeature    [Association] ==================== -->
    <Model:Association xmi.id="a387500F80324" name="CFMapFeature" annotation="Identifies the ClassifierFeatureMap" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a387500F9022B" name="feature" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a32989F9700FE">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a387500F90311" name="cfMap" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3874FE01032B">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
  </Model:Namespace.contents>
</Model:Package>
<!-- ==================== Olap    [Package] ==================== -->
<Model:Package xmi.id="a365348E80125" name="Olap" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
  <Model:ModelElement.annotation>Online Analytical Processing (OLAP) is a class of analytic application software that exposes business data in a multidimensional format. This multidimensional format usually includes the consolidation of data drawn from multiple and diverse information sources. Unlike more traditionally structured representations (e.g., the tabular format of a relational database), the multidimensional orientation is a more natural expression of the way business enterprises view their strategic data. For example, an analyst might use an OLAP application to examine total sales revenue by product and geographic region over time, or, perhaps, compare sales margins for the same fiscal periods of two consecutive years. The ultimate objective of OLAP is the efficient construction of analytical models that transform raw business data into strategic business insight.

There are many ways to implement OLAP. Most OLAP systems are constructed using OLAP server tools that enable logical OLAP structures to be built on top of a variety of physical database systems, such as relational or native multidimensional databases.

The following features are generally found in most OLAP systems:

    Multidimensional representation of business data.
    Upward consolidation of multidimensional data in a hierarchical manner, possibly with the application of specialized processing rules.
    The ability to navigate a hierarchy from a consolidated value to the lower level values forming it.
    Support for time-series analysis; i.e., OLAP users are generally concerned with data and consolidations at specific points in time -- By date, week, quarter, etc.
    Support for modeling and scenario analysis -- A user should be able to apply arbitrary "what-if" analyses to a result set without affecting the stored information.
    Consistent response times, regardless of how queries are formulated -- This is critical for effective analysis and modeling.

OLAP applications integrate well into the data warehousing environment, because a data warehouse provides relatively clean and stable data stores to drive the OLAP application. These data stores are usually maintained in relational tables that can be read directly by OLAP tools or loaded into OLAP servers. These relational tables are often structured in a manner that reveals the inherent dimensionality of the data (such as the ubiquitous Star and Snowflake schemas). Also, the data transformation and mapping services provided by a data warehouse can be used to supply OLAP systems with both metadata and data. Transformation-related metadata can be used to track the
lineage of consolidated OLAP data back to its various sources.

The primary objectives of the CWM OLAP package are:

    Define a metamodel of essential OLAP concepts common to most OLAP systems.
    Provide a facility whereby instances of the OLAP metamodel are mapped to deployment-capable structures (i.e., models of physical data resources, such as the CWM Relational and Multidimensional packages).
    Ensure that navigation through the logical OLAP model hierarchy and its various resource models is always performed in a uniform manner (i.e., by defining a standard usage of the CWM Transformation package as a means of implementing these mappings).
    Leverage services provided by other CWM packages, where appropriate (e.g., use the CWM Foundation package to supply a standard representation of expressions).

The OLAP package depends on the following packages:

   org.omg::CWM::ObjectModel::Core
   org.omg::CWM::Foundation::Expressions
   org.omg::CWM::Analysis::Transformation

The major classes and associations of the OLAP metamodel are shown in Figure 14-1.  Schema is the logical container of all elements comprising an OLAP model. It is the root element of the model hierarchy and marks the entry point for navigating OLAP models.

A Schema contains Dimensions and Cubes. A Dimension is an ordinate within a multidimensional structure and consists of a list of unique values (i.e., members) that share a common semantic meaning within the domain being modeled. Each member designates a unique position along its ordinate.

A Cube is a collection of analytic values (i.e., measures) that share the same dimensionality. This dimensionality is specified by a set of unique Dimensions from the Schema. Each unique combination of members in the Cartesian product of the Cubes Dimensions identifies precisely one data cell within a multidimensional structure.

CubeDimensionAssociation relates a Cube to its defining Dimensions. Features relevant to Cube-Dimension relationships (e.g., calcHierarchy) are exposed by this class.

A Dimension has zero or more Hierarchies. A Hierarchy is an organizational structure that describes a traversal pattern through a Dimension, based on parent/child relationships between members of a Dimension. Hierarchies are used to define both navigational and consolidation/computational paths through the Dimension (i.e., a value associated with a child member is aggregated by one or more parents). For example, a Time Dimension with a base periodicity of days might have a Hierarchy
specifying the consolidation of days into weeks, weeks into months, months into quarters, and quarters into years.

A specific Hierarchy may be designated as the default Hierarchy for display purposes (e.g., a user interface that displays the Dimension as a hierarchical tree of members).  CubeDimensionAssociation can also identify a particular Hierarchy as the default Hierarchy for consolidation calculations performed on the Cube.

MemberSelection models mechanisms capable of partitioning a Dimensions collection of members. For example, consider a Geography Dimension with members representing cities, states, and regions. An OLAP client interested specifically in cities might define an instance of MemberSelection that extracts the city members.

CubeRegion models a sub-unit of a Cube that is of the same dimensionality as the Cube itself. Each "dimension" of a CubeRegion is represented by a MemberSelection of the corresponding Dimension  of the Cube. Each MemberSelection may define some subset of its Dimensions members.

CubeRegions are used to implement Cubes. A Cube may be realized by a set of CubeRegions that map portions of the logical Cube to physical data sources. The MemberSelections defining CubeRegions can also be grouped together via MemberSelectionGroups, enabling the definition of CubeRegions with specific semantics. For example, one can specify a CubeRegion containing only the "input level" data cells of a Cube.

A CubeRegion may own any number of CubeDeployments. CubeDeployment is a metaclass that represents an implementation strategy for a multidimensional structure. The ordering of the CubeDeployment classes may optionally be given some implementation-specific meaning (e.g., desired order of selection of several possible deployment strategies, based on optimization considerations).

The OLAP metamodel defines two special types of Dimension: Time and Measure. A Time Dimension provides a means of representing time-series data within a multidimensional structure. The members of a Time Dimension usually define some base periodicity (e.g., days of the week). The implementation of a Time Dimension might provide support for advanced "time-intelligent" functionality, such as the ability to automatically convert between different periodicities and calendars.

The members of a Measure Dimension describe the meaning of the analytic values stored in each data cell of a multidimensional structure. For example, an OLAP application may define Sales, Quantity and Weight as its measures. In this case, each data cell within the Cube stores three values, with each value corresponding to one of the three measures. A measure may have an associated data type. For example, Sales might be of a monetary type, Quantity an integer, and Weight a real number.

The OLAP metamodel specifies two subclasses of Hierarchy: LevelBasedHierarchy and ValueBasedHierarchy.

LevelBasedHierarchy describes hierarchical relationships between specific levels of a Dimension. LevelBasedHierarchy is used to model both "pure level" hierarchies (e.g., dimension-level tables) and "mixed" hierarchies (i.e., levels plus linked nodes). Dimensional levels are modeled by the Level class, a subclass of MemberSelection that partitions a Dimensions members into disjoint subsets, each representing a distinct level.

For example, the Geography Dimension cited earlier contains members representing cities, states, and regions, such as "Stamford", "Connecticut", and "NorthEast". It might also contain a single member called "USA" representing all regions of the United States. Therefore, the Geography Dimension could have four Levels named "City", "State", 'Region", and "ALL", respectively. Each Level specifies the subset of members belonging to it: All cities belong to the "City" Level, all states belong to the "State" Level, all regions belong to the "Region" Level, and the single "USA" member belongs to the "ALL" Level.

When used in the definition of a consolidation path, the meaning of "level" is quite clear: Members occupying a given Level consolidate into the next higher Level (e.g., City rolls up into State, State into Region, and Region into ALL).

LevelBasedHierarchy contains an ordered collection of HierarchyLevelAssocations that defines the natural hierarchy of the Dimension. The ordering defines the hierarchical structure in top-down fashion (i.e., the "first" HierarchyLevelAssociation in the ordered collection represents the upper-most level of the dimensional hierarchy).

A HierarchyLevelAssociation may own any number of DimensionDeployments. DimensionDeployment is a metaclass that represents an implementation strategy for hierarchical Dimensions. The ordering of the DimensionDeployment classes may optionally be given an implementation-specific meaning (e.g., desired order of selection of several possible deployment strategies, based on optimization
considerations).

A ValueBasedHierarchy defines a hierarchical ordering of members in which the concept of level has little or no significance. Instead, the topological structure of the hierarchy conveys meaning. ValueBasedHierarchies are often used to model situations where members are classified or ranked according to their distance from a common root member (e.g., an organizational chart of a corporation). In this case, each member of the hierarchy has some specific "metric" or "value" associated it with it. ValueBasedHierarchy can be used to model pure "linked node" hierarchies (e.g.,
asymmetric hierarchical graphs or parent-child tables). 

As with LevelBasedHierarchy, ValueBasedHierarchy also has an ordered collection of dimensionDeployments, where the ordering semantics are left to implementations to define.

Figure 14-3 illustrates how classes of the OLAP metamodel inherit from the CWM
Object Model. Two classes requiring further explanation are:

    Measure: A subclass of Attribute that describes the meaning of values stored in the data cells of a multidimensional structure. Different OLAP models often give different interpretations to the term "measure". In a relational Star Schema, individual measures might be represented by non-key columns of a Fact table (e.g., "Sales" and "Quantity" columns). In this case, measure may be an attribute of a Cube or CubeRegion that models the Fact table. On the other hand, measures can
also be represented by members of a Measure Dimension. A Fact table supporting this representation has a single Measure column with column values consisting of the members "Sales" and "Quantity", and a single "value" column (i.e., an implicit data dimension) storing the corresponding measure values. A similar notion of Measure Dimension is used in modeling pure hypercube representations of
multidimensional servers. Thus, the concept of measure can be represented either as a Dimenson or as an Attribute, depending on the type of OLAP system being modeled.

    Coded Level: A subclass of Level that assigns a unique encoding, or label, to each of its members. CodedLevel is not essential to the OLAP metamodel, but is provided as a helper class for certain applications that might benefit from the ability of OLAP systems to structure data hierarchically. For example, CodedLevel could be used to model systems of nomenclature or classification.

The CWM OLAP metamodel describes logical models of OLAP systems, but does not directly specify how an OLAP system is physically deployed. Modeling the deployment of an OLAP system requires mapping instances of OLAP metaclasses to instances of other CWM metaclasses representing physical resources (e.g., mapping an OLAP Dimension to a Relational Table). This approach offers several advantages:

    The status of the OLAP metamodel as a conceptual model is preserved by this level of indirection. When using OLAP, a client may perceive to be working directly with OLAP objects, but the actual implementation of those objects is hidden from the client. For example, a client may view a member as a value of a Dimension, but whether that member value comes from a row of a relational table, or from a cell in a multidimensional database, is usually not obvious to the client. On the other hand, if a client needs to determine how a logical OLAP structure is physically realized, the metadata describing this mapping is fully available (assuming that the implementation allows the client to drill-down through the metadata).

    The possibility of defining mappings based on expressions means that the amount of metadata required to describe large models (e.g., Dimensions containing large collections of members) can be kept within reasonable bounds. It is generally more efficient to provide expressions that specify where large metadata sets reside, how to connect to them, and how to map their contents, rather than representing them directly as part of the metadata content.

All of the OLAP metaclasses are potential candidates for such deployment mappings. In addition, some OLAP models may also define mappings between several OLAP metaclass instances, forming a natural hierarchy of logical objects (e.g., Dimension Attributes are mapped to Level Attributes which, in turn, are mapped to Table Columns).

The CWM Transformation package is used as the primary means of describing these mappings. A modeler constructing an OLAP model based on CWM will generally define instances of the TransformationMap metaclass to link logical OLAP objects together, and to link those logical objects to other objects representing their physical data sources.

StructureMap is a subclass of TransformationMap that models structure-oriented transformation mappings (i.e., member identity and hierarchical structure). This type of transformation mapping needs to be connected to the OLAP metamodel in a very specific way (according to Level and Hierarchy), so the StructureMap subclass is defined to make these associations explicit. Two specific usages of StructureMap are defined: ListOfValues, which maps attributes identifying members residing at a specific Level, or at a specific Level within a particular Hierarchy, and ImmediateParent, which maps attributes identifying the hierarchical parent(s) of the members.

On the other hand, relatively simple TransformationMaps can be defined within any OLAP model to represent attribute-oriented transformations (e.g., mapping Dimension Attributes to Table Columns that store attribute values).

ContentMap is a subclass of TransformationMap that models content-oriented transformaton mappings (i.e., cell data or measure values). For example, an instance of ContentMap might be used to map each of a CubeRegions Measures to Columns of an underlying Fact Table.

Note that, in either case (structural mapping or content mapping), the traversal patterns used by any CWM OLAP implementation are always the same, since both deployment mappings are based on the same usage of CWM TransformationMaps. In addition to representing structural mappings, instances of TransformationMap and its subclasses are also capable of storing implementation-dependent functions or procedures that yield the instance values associated with mapped model elements. For example, a "list of values" StructureMap might store an SQL statement such as "select memberName from Product where productFamily = consumerElectronics ", as the value of its formula attribute.

Figure 14-4 illustrates the CWM metaclasses and associations that describe deployment mappings between logical OLAP models and physical resource models. Note that it is possible to combine both Cube (content) and Dimension (structure) deployments together within the context of a single OLAP Schema (via the DeploymentGroup metaclass). Thus, an OLAP Schema can have several possible deployments that users may select based on implementation-specific considerations (e.g., physical optimizations).

OCL Representation of OLAP Constraints

[C-1] Ensure that the Dimensions defining a Cube are unique.
context Cube inv:
self.cubeDimensionAssociation-&gt;forAll( c1, c2 | c1 &lt;&gt; c2 implies
c1.dimension &lt;&gt; c2.dimension )

[C-2] A Cube without CubeRegions cannot be mapped to a deployment structure (i.e., physical source of data).
context Cube inv:
self.cubeRegion-&gt;isEmpty implies self.isVirtual = true

[C-3] If a calcHierarchy is defined, it must be a Hierarchy owned by the Dimension referenced by the CubeDimensionAssociation.
context CubeDimensionAssociation inv:
self.calcHierarchy-&gt;notEmpty implies self.calcHierarchy.dimension = self.dimension

[C-4] A "fully realized" CubeRegion has no MemberSelectionGroups (and hence, no MemberSelections).
context CubeRegion inv:
self.isFullyRealized implies self.memberSelectionGroup-&gt;isEmpty

[C-5] A CubeRegion defined by MemberSelections must have, for each Dimension of its owning Cube, a corresponding MemberSelection within each of its
MemberSelectionGroups.
context CubeRegion inv:
self.memberSelectionGroup-&gt;notEmpty implies
self.cube.cubeDimensionAssociation-&gt;forAll( d |
self.memberSelectionGroup-&gt;forAll( g |
g.memberSelection-&gt;exists( m | m.dimension = d.dimension ) ) )

[C-6] A CubeRegion defined by MemberSelections must have, within each MemberSelectionGroup, a MemberSelection corresponding to each Dimension of its
owning Cube.
context CubeRegion inv:
self.memberSelectionGroup-&gt;notEmpty implies
self.memberSelectionGroup-&gt;forAll( g |
g.memberSelection-&gt;forAll( m |
self.cube.cubeDimensionAssociation-&gt;exists( d | d.dimension = m.dimension ) ) )

[C-7] A Dimension may be a Time Dimension, a Measure Dimension, or neither, but never both types at the same time.
context Dimension inv:
not ( self.isTime and self.isMeasure )

[C-8] The default display Hierarchy (if defined) must be one of the Hierarchies owned by the Dimension.
context Dimension inv:
self.displayDefault-&gt;notEmpty implies self.hierarchy-&gt;includes( self.displayDefault )

[C-9] An instance of DimensionDeployment must be referenced exclusively by either a HierarchyLevelAssociation or a ValueBasedHierarchy.
context DimensionDeployment inv:
self.hierarchyLevelAssociation-&gt;isEmpty xor self.valueBasedHierarchy-&gt;isEmpty

[C-10] Within a DimensionDeployment, an "immediate parent" StructureMap must always have an associated and distinct "list of values" StructureMap.
context DimensionDeployment inv:
self.immediateParent-&gt;notEmpty implies
( self.listOfValues-&gt;notEmpty and self.listOfValues &lt;&gt; self.immediateParent )

[C-11] A StructureMap referenced as a "list of values" StructureMap must not reside outside of the DimensionDeployments collection of StructureMaps.
context DimensionDeployment inv:
self.listOfValues-&gt;notEmpty implies self.structureMap-&gt;includes( self.listOfValues )

[C-12] A StructureMap referenced as an "immediate parent" StructureMap must not reside outside of the DimensionDeployments collection of StructureMaps.
context DimensionDeployment inv:
self.immediateParent-&gt;notEmpty implies
self.structureMap-&gt;includes( self.immediateParent )

[C-13] The currentLevel of each HierarchyLevelAssociation must refer to a Level owned by the Dimension of the LevelBasedHierarchy containing the HierarchyLevelAssociation.
context LevelBasedHierarchy inv:
self.hierarchyLevelAssociation-&gt;notEmpty implies
self.hierarchyLevelAssociation-&gt;forAll( h |
self.dimension.memberSelection
-&gt;select( oclType = Olap::Level )-&gt;includes( h.currentLevel ) )

[C-14] No two HierarchyLevelAssociations may designate the same Level instance as their "current level".
context LevelBasedHierarchy inv:
self.hierarchyLevelAssociation-&gt;forAll( h1, h2 | h1 &lt;&gt; h2 implies
h1.currentLevel &lt;&gt; h2.currentLevel )</Model:ModelElement.annotation>
  <Model:Namespace.contents>
    <!-- ==================== Olap.org.omg.xmi.namespace=CWMOLAP    [Tag] ==================== -->
    <Model:Tag xmi.id="G.959" name="org.omg.xmi.namespace=CWMOLAP" annotation="" tagId="org.omg.xmi.namespace" elements="a365348E80125">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CWMOLAP</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Olap.org.omg.mof.idl_prefix=org.omg.cwm.analysis    [Tag] ==================== -->
    <Model:Tag xmi.id="G.960" name="org.omg.mof.idl_prefix=org.omg.cwm.analysis" annotation="" tagId="org.omg.mof.idl_prefix" elements="a365348E80125">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.cwm.analysis</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Olap.org.omg.mof.idl_substitute_name=OlapModule    [Tag] ==================== -->
    <Model:Tag xmi.id="G.961" name="org.omg.mof.idl_substitute_name=OlapModule" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a365348E80125">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">OlapModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Olap.com.urep.jcr.java_prefix=org.omg.java.cwm.analysis    [Tag] ==================== -->
    <Model:Tag xmi.id="G.962" name="com.urep.jcr.java_prefix=org.omg.java.cwm.analysis" annotation="" tagId="com.urep.jcr.java_prefix" elements="a365348E80125">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.java.cwm.analysis</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <Model:Import xmi.id="G.963" name="Core" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A6600C5031F"/>
    <Model:Import xmi.id="G.964" name="Expressions" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a38207A600078"/>
    <Model:Import xmi.id="G.965" name="Transformation" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a35E1B0B40042"/>
    <!-- ==================== Olap.ContentMap    [Class] ==================== -->
    <Model:Class xmi.id="a3A5680DA0284" name="ContentMap" annotation="ContentMap is a subclass of TransformationMap that maps CubeRegion attributes to their physical data sources." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a374322890098">
      <Model:Namespace.contents>
        <!-- ==================== Olap.ContentMap.cubeDeployment    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A5683CC021A" name="cubeDeployment" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A5634210088" referencedEnd="a3A5681810162">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Olap.Cube    [Class] ==================== -->
    <Model:Class xmi.id="a36F832E20069" name="Cube" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3298A02900FE">
      <Model:ModelElement.annotation>A Cube is a collection of analytic values (i.e., measures) that share the same dimensionality.  This dimensionality is specified by a set of unique Dimensions from the Schema.  Each unique combination of members in the Cartesian product of the Cubes Dimensions identifies precisely one data cell within a multidimensional structure.

Synonyms: Multidimensional Array, Hypercube, Hypervolume.
</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Olap.Cube.isVirtual    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a378B3FA90038" name="isVirtual" annotation="If true, then this Cube is a Virtual Cube (i.e., it has no physical realization)." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Olap.Cube.cubeDimensionAssociation    [Reference] ==================== -->
        <Model:Reference xmi.id="a3858E5780008" name="cubeDimensionAssociation" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a378B40100236" referencedEnd="a378B40D102A2">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Olap.Cube.cubeRegion    [Reference] ==================== -->
        <Model:Reference xmi.id="a3858E75E01D4" name="cubeRegion" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A4E8CEF02F0" referencedEnd="a3A4E8EAF02D8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Olap.Cube.schema    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A6B4871001E" name="schema" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a36F832D2039C" referencedEnd="a3A48C1700212">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Olap.CubeDeployment    [Class] ==================== -->
    <Model:Class xmi.id="a3A5634210088" name="CubeDeployment" annotation="CubeDeployment represents a particular implementation strategy for the data portions of an OLAP model.  It does so by organizing a collection of ContentMaps, which in turn define a mapping to an implementation model." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3298A02900FE">
      <Model:Namespace.contents>
        <!-- ==================== Olap.CubeDeployment.cubeRegion    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A5638A60177" name="cubeRegion" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A4E8CEF02F0" referencedEnd="a3A5636B10271">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Olap.CubeDeployment.deploymentGroup    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A563AF6008B" name="deploymentGroup" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A5639C9022D" referencedEnd="a3A563A2E01CE">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Olap.CubeDeployment.contentMap    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A56835E0316" name="contentMap" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A5680DA0284" referencedEnd="a3A5681810144">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Olap.CubeDimensionAssociation    [Class] ==================== -->
    <Model:Class xmi.id="a378B40100236" name="CubeDimensionAssociation" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3298A02900FE">
      <Model:ModelElement.annotation>CubeDimensionAssociation relates a Cube to the Dimensions that define it.  Features relevant to Cube-Dimension relationships (e.g., calcHierarchy) are exposed by this class.
</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Olap.CubeDimensionAssociation.dimension    [Reference] ==================== -->
        <Model:Reference xmi.id="a38592DFB021B" name="dimension" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3777B4770109" referencedEnd="a378B40D9019F">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Olap.CubeDimensionAssociation.cube    [Reference] ==================== -->
        <Model:Reference xmi.id="a38592DF40044" name="cube" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a36F832E20069" referencedEnd="a378B40D10248">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Olap.CubeDimensionAssociation.calcHierarchy    [Reference] ==================== -->
        <Model:Reference xmi.id="a3859421302FF" name="calcHierarchy" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a36F91D39014A" referencedEnd="a37A791DE0201">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Olap.CubeRegion    [Class] ==================== -->
    <Model:Class xmi.id="a3A4E8CEF02F0" name="CubeRegion" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3298A02900FE">
      <Model:ModelElement.annotation>CubeRegion models a sub-unit of a Cube of the same dimensionality as the Cube itself, with each Dimension optionally subsetted in its list of members.

When mapped to its physical source, a CubeRegion contains data cells identified by the member combinations of the Cartesian product of the CubeRegion's associated Dimensions and Measures.

The relative ordering of CubeDeployment classes optionally implies a desired order of selection of the CubeDeployments, based on implementation-specific considerations (e.g., optimized access of aggregate data).

Synonyms: Sub-Cube, Partition, Slice, Region, Area.

Misc. notes:
1.  A CubeRegion is not a Cube, and a Cube is not a CubeRegion.
2.  A Cube has a Measure and CubeRegion may have a corresponding measure (Measures are Attributes).
3.  A Cube may or may not have CubeRegions.
4.  If a Cube does not have a CubeRegion, then it's not physically mapped (it's virtual).  All physical mapping is based on the CubeRegion , not the Cube.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Olap.CubeRegion.isReadOnly    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A4E8DB00366" name="isReadOnly" annotation="If true, then the CubeRegion content is read-only (i.e., may not be written or updated through the CubeRegion -- e.g., a CubeRegion implemented via an SQL view may not permit updates to the underlying base table)." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Olap.CubeRegion.isFullyRealized    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A4E8DA3024F" name="isFullyRealized" annotation="If true, then this CubeRegion has a direct physical realization and is not bound by any MemberSelections." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Olap.CubeRegion.memberSelectionGroup    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A4E8DED00D9" name="memberSelectionGroup" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3846924F008C" referencedEnd="a3A4E8EB502CC">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Olap.CubeRegion.cube    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A4E8DF30163" name="cube" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a36F832E20069" referencedEnd="a3A4E8EAF0300">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Olap.CubeRegion.cubeDeployment    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A56372A03D3" name="cubeDeployment" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A5634210088" referencedEnd="a3A5636B1025D">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Olap.DeploymentGroup    [Class] ==================== -->
    <Model:Class xmi.id="a3A5639C9022D" name="DeploymentGroup" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5D19033E">
      <Model:ModelElement.annotation>DeploymentGroup represents a logical grouping of model elements defining a single, complete deployment of an instance of Olap Schema (i.e., CubeDeployments and DimensionDeployments).

The usage of DeploymentGroup is as follows: A user may specify a particular DeploymentGroup as the session-wide, default deployment for all metadata queries performed throughout the session. Alternatively, for queries involving some particular deployed object (e.g., a Cube or a Dimension), the user may be asked to choose from a list of deployments.  This either becomes the default deployment for the remainder of the session, or the user may continue to be asked to specify a deployment for each  subsequent query against deployed objects.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Olap.DeploymentGroup.schema    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A5A1765016A" name="schema" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a36F832D2039C" referencedEnd="a3A5639DA00C9">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Olap.DeploymentGroup.cubeDeployment    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A563BC30306" name="cubeDeployment" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A5634210088" referencedEnd="a3A563A2E01A6">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Olap.DeploymentGroup.dimensionDeployment    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A563BCB02AE" name="dimensionDeployment" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A48C4C001EC" referencedEnd="a3A563A3002F3">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Olap.Dimension    [Class] ==================== -->
    <Model:Class xmi.id="a3777B4770109" name="Dimension" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3298A02900FE">
      <Model:ModelElement.annotation>A Dimension is an ordinate within a multidimensional structure, and consists of an ordered list of values (i.e.,  members) that share a common semantic meaning within the domain being modeled.  Each member designates a unique position along its ordinate.

Typical Dimensions are: Time, Product, Geography, Scenario (e.g., actual, budget, forecast), Measure (e.g., sales, quantity).
</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Olap.Dimension.isTime    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a378EB9EC017C" name="isTime" annotation="If true, then this Dimension is a Time Dimension (i.e., its members collectively represent a time series)." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Olap.Dimension.isMeasure    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a37781F670265" name="isMeasure" annotation="If true, then this Dimension is a Measure Dimension (i.e., its members represent Measures)." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Olap.Dimension.hierarchy    [Reference] ==================== -->
        <Model:Reference xmi.id="a3859403D0259" name="hierarchy" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a36F91D39014A" referencedEnd="a378EBB17015E">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Olap.Dimension.memberSelection    [Reference] ==================== -->
        <Model:Reference xmi.id="a385940440154" name="memberSelection" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a36F91E2C00D9" referencedEnd="a377D39B6015D">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Olap.Dimension.cubeDimensionAssociation    [Reference] ==================== -->
        <Model:Reference xmi.id="a385E551503B2" name="cubeDimensionAssociation" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a378B40100236" referencedEnd="a378B40D901E5">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Olap.Dimension.displayDefault    [Reference] ==================== -->
        <Model:Reference xmi.id="a385943F2002A" name="displayDefault" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a36F91D39014A" referencedEnd="a378EBB2B010C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Olap.Dimension.schema    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A6B48AB0248" name="schema" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a36F832D2039C" referencedEnd="a3A48C1730068">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Olap.DimensionDeployment    [Class] ==================== -->
    <Model:Class xmi.id="a3A48C4C001EC" name="DimensionDeployment" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3298A02900FE">
      <Model:ModelElement.annotation>DimensionDeployment represents a particular implementation strategy for the dimensional/hierarchical portions of an OLAP model.  It does so by organizing a collection of StructureMaps, which in turn define a mapping to an implementation model.
</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Olap.DimensionDeployment.hierarchyLevelAssociation    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A48E6DF000C" name="hierarchyLevelAssociation" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a37488CDF03BA" referencedEnd="a3A48E4C50037">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Olap.DimensionDeployment.valueBasedHierarchy    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A48E6E80380" name="valueBasedHierarchy" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a374992C8031C" referencedEnd="a3A48E4CD02C4">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Olap.DimensionDeployment.structureMap    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A48E96802B8" name="structureMap" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a374CB0810199" referencedEnd="a3A48E8D40157">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Olap.DimensionDeployment.listOfValues    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A48EB61015A" name="listOfValues" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a374CB0810199" referencedEnd="a3A48E9FE024A">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Olap.DimensionDeployment.immediateParent    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A48EBDD0131" name="immediateParent" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a374CB0810199" referencedEnd="a3A48EA08003C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Olap.DimensionDeployment.deploymentGroup    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A563B420289" name="deploymentGroup" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A5639C9022D" referencedEnd="a3A563A300343">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Olap.Hierarchy    [Class] ==================== -->
    <Model:Class xmi.id="a36F91D39014A" name="Hierarchy" annotation="A Hierarchy is an organizational structure that imposes a parent/child ordering on the members of the Dimension, usually to define either a navigational or consolidation/computational paths through the Dimension (i.e., a value associated with a child member is aggregated into one or more parents). " isRoot="false" isLeaf="false" isAbstract="true" visibility="public_vis" isSingleton="false" supertypes="a3298A02900FE">
      <Model:Namespace.contents>
        <!-- ==================== Olap.Hierarchy.dimension    [Reference] ==================== -->
        <Model:Reference xmi.id="a385E5B61032B" name="dimension" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3777B4770109" referencedEnd="a378EBB170118">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Olap.Hierarchy.cubeDimensionAssociation    [Reference] ==================== -->
        <Model:Reference xmi.id="a387F1D6A01FC" name="cubeDimensionAssociation" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a378B40100236" referencedEnd="a37A791DE021F">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Olap.Hierarchy.defaultedDimension    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A6B59B302CE" name="defaultedDimension" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3777B4770109" referencedEnd="a378EBB2B013E">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Olap.Hierarchy.hierarchyMemberSelectionGroup    [Reference] ==================== -->
        <Model:Reference xmi.id="a3BCC47E60350" name="hierarchyMemberSelectionGroup" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3BCC44C502D3" referencedEnd="a3BCC4698011F">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Olap.HierarchyLevelAssociation    [Class] ==================== -->
    <Model:Class xmi.id="a37488CDF03BA" name="HierarchyLevelAssociation" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3298A02900FE">
      <Model:ModelElement.annotation>HierarchyLevelAssociation is a class that orders Levels within a LevelBasedHierarchy, and provides a means of mapping Level/Hierarchy-oriented  Dimension attributes to one or more physical deployments.

The relative ordering of DimensionDeployment classes optionally implies a desired order of selection of DimensionDeployments, based on implementation-specific considerations (e.g., optimized access of aggregate data).</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Olap.HierarchyLevelAssociation.levelBasedHierarchy    [Reference] ==================== -->
        <Model:Reference xmi.id="a385E673D0379" name="levelBasedHierarchy" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a37488B69027C" referencedEnd="a37488D0602D0">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Olap.HierarchyLevelAssociation.currentLevel    [Reference] ==================== -->
        <Model:Reference xmi.id="a38724903031F" name="currentLevel" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a37488DB702D4" referencedEnd="a37488F180037">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Olap.HierarchyLevelAssociation.dimensionDeployment    [Reference] ==================== -->
        <Model:Reference xmi.id="a385E6E9D0399" name="dimensionDeployment" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A48C4C001EC" referencedEnd="a3A48E4C50019">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Olap.LevelBasedHierarchy    [Class] ==================== -->
    <Model:Class xmi.id="a37488B69027C" name="LevelBasedHierarchy" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a36F91D39014A">
      <Model:ModelElement.annotation>A LevelBasedHierarchy is a hierarchy that describes relationships between specific levels of a Dimension. LevelBasedHierarchy can be used to model to "pure level" hierarchies (e.g., dimension-level tables) and "mixed" hierarchies (i.e., levels + linked nodes).
</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Olap.LevelBasedHierarchy.hierarchyLevelAssociation    [Reference] ==================== -->
        <Model:Reference xmi.id="a385E66E8010A" name="hierarchyLevelAssociation" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a37488CDF03BA" referencedEnd="a37488D0602D1">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Olap.MemberSelectionGroup    [Class] ==================== -->
    <Model:Class xmi.id="a3846924F008C" name="MemberSelectionGroup" annotation="MemberSelectionGroup enables the grouping together of semantically-related MemberSelections." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3298A02900FE">
      <Model:Namespace.contents>
        <!-- ==================== Olap.MemberSelectionGroup.memberSelection    [Reference] ==================== -->
        <Model:Reference xmi.id="a385E40B6037E" name="memberSelection" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a36F91E2C00D9" referencedEnd="a37BE29740058">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Olap.MemberSelectionGroup.cubeRegion    [Reference] ==================== -->
        <Model:Reference xmi.id="a385E59C00012" name="cubeRegion" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A4E8CEF02F0" referencedEnd="a3A4E8EB502F4">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Olap.MemberSelection    [Class] ==================== -->
    <Model:Class xmi.id="a36F91E2C00D9" name="MemberSelection" annotation="MemberSelection represents an arbitrary subset of the members of a Dimension." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3298A02900FE">
      <Model:Namespace.contents>
        <!-- ==================== Olap.MemberSelection.dimension    [Reference] ==================== -->
        <Model:Reference xmi.id="a385E5836028C" name="dimension" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3777B4770109" referencedEnd="a377D39B60153">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Olap.MemberSelection.memberSelectionGroup    [Reference] ==================== -->
        <Model:Reference xmi.id="a385E584F0129" name="memberSelectionGroup" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3846924F008C" referencedEnd="a37BE2974009E">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Olap.Schema    [Class] ==================== -->
    <Model:Class xmi.id="a36F832D2039C" name="Schema" annotation="Schema contains all elements comprising an OLAP model.  A Schema may also contain any number of DeploymentGroups, representing the various physical deployments of the logical Schema." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5D19033E">
      <Model:Namespace.contents>
        <!-- ==================== Olap.Schema.cube    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A5A17DA03DF" name="cube" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a36F832E20069" referencedEnd="a3A48C17001E0">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Olap.Schema.dimension    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A5A18BA011A" name="dimension" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3777B4770109" referencedEnd="a3A48C1730018">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Olap.Schema.deploymentGroup    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A5A19000193" name="deploymentGroup" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A5639C9022D" referencedEnd="a3A5639DA00BE">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Olap.ValueBasedHierarchy    [Class] ==================== -->
    <Model:Class xmi.id="a374992C8031C" name="ValueBasedHierarchy" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a36F91D39014A">
      <Model:ModelElement.annotation>ValueBasedHierarchy is a subclass of Hierarchy that ranks Dimension members according to their relative distance from the root.  Each member of a ValueBasedHierarchy has a specific "metric" or "value" associated with it.
ValueBasedHierarchy is used to model pure "linked node" hierarchies (e.g., parent-child tables).</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Olap.ValueBasedHierarchy.dimensionDeployment    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A48E62E0069" name="dimensionDeployment" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A48C4C001EC" referencedEnd="a3A48E4CD02A6">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Olap.Level    [Class] ==================== -->
    <Model:Class xmi.id="a37488DB702D4" name="Level" annotation="Level is a subclass of MemberSelection that assigns each member of a Dimension to a specific hierarchical level within the Dimension." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a36F91E2C00D9">
      <Model:Namespace.contents>
        <!-- ==================== Olap.Level.hierarchyLevelAssociation    [Reference] ==================== -->
        <Model:Reference xmi.id="a385E64F60077" name="hierarchyLevelAssociation" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a37488CDF03BA" referencedEnd="a37488F180041">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Olap.CodedLevel    [Class] ==================== -->
    <Model:Class xmi.id="a37A8A21000D4" name="CodedLevel" annotation="CodedLevel is a subclass of Level that assigns a unique encoding, or label, to each of its Dimension members." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a37488DB702D4">
      <Model:Namespace.contents>
        <!-- ==================== Olap.CodedLevel.encoding    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a37A8A28A00C5" name="encoding" annotation="Encoding is an expression that generates a unique encoding, or label, for each member of a CodedLevel." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a376A84310237">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Olap.Measure    [Class] ==================== -->
    <Model:Class xmi.id="a382ADE680343" name="Measure" annotation="Measure is a subclass of Attribute representing Dimension Measures (e.g., Sales, Quantity, Weight).  Synonym: Variable." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3A6F62780143"/>
    <!-- ==================== Olap.StructureMap    [Class] ==================== -->
    <Model:Class xmi.id="a374CB0810199" name="StructureMap" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a374322890098">
      <Model:ModelElement.annotation>StructureMap is a subclass of TransformationMap that maps Dimension attributes to their physical data sources.

(Note: Multiple StructureMaps may be grouped together into single, cohesive unit via TransformationTask.)</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Olap.StructureMap.dimensionDeployment    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A48EC7A01A4" name="dimensionDeployment" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A48C4C001EC" referencedEnd="a3A48E8D40175">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Olap.StructureMap.dimensionDeploymentLV    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A6B363F017D" name="dimensionDeploymentLV" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A48C4C001EC" referencedEnd="a3A48E9FE0272">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Olap.StructureMap.dimensionDeploymentIP    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A6B36500037" name="dimensionDeploymentIP" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A48C4C001EC" referencedEnd="a3A48EA08006E">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Olap.HierarchyMemberSelectionGroup    [Class] ==================== -->
    <Model:Class xmi.id="a3BCC44C502D3" name="HierarchyMemberSelectionGroup" annotation="This subtype of MemberSelectionGroup allows users to specify that a particular cube region is determined by hierarchy. This allows the description of data to vary by hierarchy and, therefore, provides the ability to model multiple measure values per hierarchy" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3846924F008C">
      <Model:Namespace.contents>
        <!-- ==================== Olap.HierarchyMemberSelectionGroup.hierarchy    [Reference] ==================== -->
        <Model:Reference xmi.id="a3BCC46FA03B5" name="hierarchy" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a36F91D39014A" referencedEnd="a3BCC469800D9">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Olap.LevelBasedHierarchyOwnsHierarchyLevelAssociations    [Association] ==================== -->
    <Model:Association xmi.id="a37488D06008B" name="LevelBasedHierarchyOwnsHierarchyLevelAssociations" annotation="A LevelBasedHierarchy generally owns one or more HierarchyLevelAssociations." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a37488D0602D0" name="levelBasedHierarchy" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a37488B69027C">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a37488D0602D1" name="hierarchyLevelAssociation" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a37488CDF03BA">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Olap.HierarchyLevelAssocsReferenceLevel    [Association] ==================== -->
    <Model:Association xmi.id="a37488F140168" name="HierarchyLevelAssocsReferenceLevel" annotation="Each HierarchyLevelAssoc references precisely one Level as its current level." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a37488F180037" name="currentLevel" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a37488DB702D4">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a37488F180041" name="hierarchyLevelAssociation" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a37488CDF03BA">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Olap.DimensionOwnsMemberSelections    [Association] ==================== -->
    <Model:Association xmi.id="a377D39B30221" name="DimensionOwnsMemberSelections" annotation="A Dimension may own any number of MemberSelections." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a377D39B60153" name="dimension" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a3777B4770109">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a377D39B6015D" name="memberSelection" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a36F91E2C00D9">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Olap.CubeOwnsCubeDimensionAssociations    [Association] ==================== -->
    <Model:Association xmi.id="a378B40D00305" name="CubeOwnsCubeDimensionAssociations" annotation="The dimensionality of a Cube is defined by a collection of unique Dimensions.  Each Dimension is represented by an instance of CubeDimensionAssociation." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a378B40D10248" name="cube" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a36F832E20069">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a378B40D102A2" name="cubeDimensionAssociation" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a378B40100236">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Olap.CubeDimensionAssociationsReferenceDimension    [Association] ==================== -->
    <Model:Association xmi.id="a378B40D802A2" name="CubeDimensionAssociationsReferenceDimension" annotation="Each CubeDimenjsionAssociation references a single Dimension." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a378B40D9019F" name="dimension" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3777B4770109">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a378B40D901E5" name="cubeDimensionAssociation" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a378B40100236">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Olap.DimensionOwnsHierarchies    [Association] ==================== -->
    <Model:Association xmi.id="a378EBB1601E8" name="DimensionOwnsHierarchies" annotation="A Dimension may own several Hierarchies." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a378EBB170118" name="dimension" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a3777B4770109">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a378EBB17015E" name="hierarchy" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a36F91D39014A">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Olap.DimensionHasDefaultHierarchy    [Association] ==================== -->
    <Model:Association xmi.id="a378EBB2802CB" name="DimensionHasDefaultHierarchy" annotation="A Dimension may designate a default Hierarchy for display purposes." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a378EBB2B010C" name="displayDefault" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a36F91D39014A">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a378EBB2B013E" name="defaultedDimension" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3777B4770109">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Olap.CubeDimensionAssociationsReferenceCalcHierarchy    [Association] ==================== -->
    <Model:Association xmi.id="a37A791DE0002" name="CubeDimensionAssociationsReferenceCalcHierarchy" annotation="A CubeDimensionAssociation may designate a default Hierarchy for calculation purposes." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a37A791DE0201" name="calcHierarchy" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a36F91D39014A">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a37A791DE021F" name="cubeDimensionAssociation" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a378B40100236">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Olap.MemberSelectionGroupReferencesMemberSelections    [Association] ==================== -->
    <Model:Association xmi.id="a37BE29730219" name="MemberSelectionGroupReferencesMemberSelections" annotation="A MemberSelectionGroup references at least one unique MemberSelection." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a37BE29740058" name="memberSelection" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a36F91E2C00D9">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a37BE2974009E" name="memberSelectionGroup" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3846924F008C">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Olap.SchemaOwnsCubes    [Association] ==================== -->
    <Model:Association xmi.id="a3A48C16F0379" name="SchemaOwnsCubes" annotation="A Schema may own any number of Cubes." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A48C17001E0" name="cube" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a36F832E20069">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A48C1700212" name="schema" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a36F832D2039C">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Olap.SchemaOwnsDimensions    [Association] ==================== -->
    <Model:Association xmi.id="a3A48C172019D" name="SchemaOwnsDimensions" annotation="A Schema may own any number of Dimensions." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A48C1730018" name="dimension" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3777B4770109">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A48C1730068" name="schema" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a36F832D2039C">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Olap.HierarchyLevelAssociationOwnsDimensionDeployments    [Association] ==================== -->
    <Model:Association xmi.id="a3A48E4C400FE" name="HierarchyLevelAssociationOwnsDimensionDeployments" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:ModelElement.annotation>A HierarchyLevelAssociation may own any number of DimensionDeployments.

The ordering of the DimensionDeployment classes may optionally be assigned an implementation-specific meaning (e.g., desired order of selection of multiple deployments, based on optimized access to aggregated data).</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A48E4C50019" name="dimensionDeployment" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A48C4C001EC">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A48E4C50037" name="hierarchyLevelAssociation" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a37488CDF03BA">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Olap.ValueBasedHierarchyOwnsDimensionDeployments    [Association] ==================== -->
    <Model:Association xmi.id="a3A48E4CC03D1" name="ValueBasedHierarchyOwnsDimensionDeployments" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:ModelElement.annotation>A ValueBasedHierarchy may own any number of DimensionDeployments.

The ordering of the DimensionDeployment classes may optionally be assigned an implementation-specific meaning (e.g., desired order of selection of multiple deployments, based on optimized access to aggregated data).</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A48E4CD02A6" name="dimensionDeployment" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A48C4C001EC">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A48E4CD02C4" name="valueBasedHierarchy" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a374992C8031C">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Olap.DimensionDeploymentOwnsStructureMaps    [Association] ==================== -->
    <Model:Association xmi.id="a3A48E8D3015F" name="DimensionDeploymentOwnsStructureMaps" annotation="An instance of DimensionDeployment may own zero or more StructureMaps." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A48E8D40157" name="structureMap" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a374CB0810199">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A48E8D40175" name="dimensionDeployment" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a3A48C4C001EC">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Olap.DimensionDeploymentHasListOfValues    [Association] ==================== -->
    <Model:Association xmi.id="a3A48E9FE0073" name="DimensionDeploymentHasListOfValues" annotation="An instance of DimensionDeployment may reference zero or one StructureMaps as its &quot;list of values&quot; StructureMap." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A48E9FE024A" name="listOfValues" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a374CB0810199">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A48E9FE0272" name="dimensionDeploymentLV" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A48C4C001EC">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Olap.DimensionDeploymentHasImmediateParent    [Association] ==================== -->
    <Model:Association xmi.id="a3A48EA07021B" name="DimensionDeploymentHasImmediateParent" annotation="An instance of DimensionDeployment may reference zero or one StructureMaps as its &quot;immediate parent&quot; StructureMap." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A48EA08003C" name="immediateParent" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a374CB0810199">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A48EA08006E" name="dimensionDeploymentIP" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A48C4C001EC">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Olap.CubeOwnsCubeRegions    [Association] ==================== -->
    <Model:Association xmi.id="a3A4E8EAF0039" name="CubeOwnsCubeRegions" annotation="A Cube may own any number of CubeRegions." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A4E8EAF02D8" name="cubeRegion" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A4E8CEF02F0">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A4E8EAF0300" name="cube" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a36F832E20069">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Olap.CubeRegionOwnsMemberSelectionGroups    [Association] ==================== -->
    <Model:Association xmi.id="a3A4E8EB50114" name="CubeRegionOwnsMemberSelectionGroups" annotation="A CubeRegion may own any number of MemberSelectionGroups." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A4E8EB502CC" name="memberSelectionGroup" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3846924F008C">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A4E8EB502F4" name="cubeRegion" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a3A4E8CEF02F0">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Olap.CubeRegionOwnsCubeDeployments    [Association] ==================== -->
    <Model:Association xmi.id="a3A5636B100A4" name="CubeRegionOwnsCubeDeployments" annotation="A CubeRegion may own any number of CubeDeployments." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A5636B1025D" name="cubeDeployment" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A5634210088">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A5636B10271" name="cubeRegion" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a3A4E8CEF02F0">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Olap.SchemaOwnsDeploymentGroups    [Association] ==================== -->
    <Model:Association xmi.id="a3A5639D9033E" name="SchemaOwnsDeploymentGroups" annotation="A Schema may own any number of DeploymentGroups." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A5639DA00BE" name="deploymentGroup" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A5639C9022D">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A5639DA00C9" name="schema" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a36F832D2039C">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Olap.DeploymentGroupReferencesCubeDeployments    [Association] ==================== -->
    <Model:Association xmi.id="a3A563A2D03AD" name="DeploymentGroupReferencesCubeDeployments" annotation="A DeploymentGroup may reference any number of CubeDeployments." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A563A2E01A6" name="cubeDeployment" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A5634210088">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A563A2E01CE" name="deploymentGroup" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A5639C9022D">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Olap.DeploymentGroupReferencesDimensionDeployments    [Association] ==================== -->
    <Model:Association xmi.id="a3A563A300130" name="DeploymentGroupReferencesDimensionDeployments" annotation="A DeploymentGroup may reference any number of DimensionDeployments." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A563A3002F3" name="dimensionDeployment" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A48C4C001EC">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A563A300343" name="deploymentGroup" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A5639C9022D">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Olap.CubeDeploymentOwnsContentMaps    [Association] ==================== -->
    <Model:Association xmi.id="a3A568180028D" name="CubeDeploymentOwnsContentMaps" annotation="A CubeDeployment owns any number of ContentMaps." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A5681810144" name="contentMap" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A5680DA0284">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A5681810162" name="cubeDeployment" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a3A5634210088">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Olap.HierarchyMemberSelectionGroupReferencesHierarchy    [Association] ==================== -->
    <Model:Association xmi.id="a3BCC46970069" name="HierarchyMemberSelectionGroupReferencesHierarchy" annotation="A HierarchyMemberSelectionGroup references one or more Hierarchies." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3BCC469800D9" name="hierarchy" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a36F91D39014A">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3BCC4698011F" name="hierarchyMemberSelectionGroup" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3BCC44C502D3">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
  </Model:Namespace.contents>
</Model:Package>
<!-- ==================== MiningCore    [Package] ==================== -->
<Model:Package xmi.id="a39E71F94024D" name="MiningCore" annotation="This package contains the basic packages that are required to implement a CWM DataMining interface. It is required that  at least this package and one more packge be implemented for compliance." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
  <Model:Namespace.contents>
    <!-- ==================== MiningCore.org.omg.mof.idl_substitute_name=MiningCoreModule    [Tag] ==================== -->
    <Model:Tag xmi.id="G.967" name="org.omg.mof.idl_substitute_name=MiningCoreModule" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a39E71F94024D">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">MiningCoreModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== MiningCore.org.omg.mof.idl_prefix=org.omg.cwm.analysis    [Tag] ==================== -->
    <Model:Tag xmi.id="G.968" name="org.omg.mof.idl_prefix=org.omg.cwm.analysis" annotation="" tagId="org.omg.mof.idl_prefix" elements="a39E71F94024D">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.cwm.analysis</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== MiningCore.org.omg.xmi.namespace=CWMDM    [Tag] ==================== -->
    <Model:Tag xmi.id="G.969" name="org.omg.xmi.namespace=CWMDM" annotation="" tagId="org.omg.xmi.namespace" elements="a39E71F94024D">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CWMDM</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== MiningCore.com.urep.jcr.java_prefix=org.omg.java.cwm.analysis    [Tag] ==================== -->
    <Model:Tag xmi.id="G.970" name="com.urep.jcr.java_prefix=org.omg.java.cwm.analysis" annotation="" tagId="com.urep.jcr.java_prefix" elements="a39E71F94024D">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.java.cwm.analysis</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <Model:Import xmi.id="G.971" name="Transformation" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a35E1B0B40042"/>
    <!-- ==================== MiningCore.MiningData    [Package] ==================== -->
    <Model:Package xmi.id="a395CF9840091" name="MiningData" annotation="This package defines the objects that describe the input data, the way the input data is to be treated, and the mapping between the input data and internal representation for which mining algorithms can understand." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
      <Model:Namespace.contents>
        <!-- ==================== MiningCore.MiningData.AttributeAssignment    [Class] ==================== -->
        <Model:Class xmi.id="a3B4EFEA40069" name="AttributeAssignment" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
          <Model:ModelElement.annotation>This object provides a mapping between a mining attribute (logical data) and a set of attributes in the input data (physical data).
logicalAttribute is the mining attribute being mapped by this object.
orderIdAttribute is used when ordering of attributes is required. In some cases, ordering of attributes is important (as in sequence analysis). In other cases, a sequence of an attribute is favored over having a set-valued attributes.

AttributeAssignment can be reused among several tasks, but a MiningAttribute can be refered to by an AttributeAssignment within a task.</Model:ModelElement.annotation>
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.MiningData.AttributeAssignment.orderIdAttribute    [Reference] ==================== -->
            <Model:Reference xmi.id="a3B4F015400B9" name="orderIdAttribute" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A6F62780143" referencedEnd="a3B4F169D01B8">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.MiningData.AttributeAssignment.logicalAttribute    [Reference] ==================== -->
            <Model:Reference xmi.id="a3B4F017B012D" name="logicalAttribute" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3B4F1BA302C6" referencedEnd="a3B4F1CAA0061">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.MiningData.AttributeAssignmentSet    [Class] ==================== -->
        <Model:Class xmi.id="a3946969902A4" name="AttributeAssignmentSet" annotation="This object contains a set of AttributeAssignment objects and completes attribute assignment for a mining operation." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.MiningData.AttributeAssignmentSet.assignment    [Reference] ==================== -->
            <Model:Reference xmi.id="a394696A50016" name="assignment" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3B4EFEA40069" referencedEnd="a394696D9012A">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.MiningData.AttributeSelectionFunction    [DataType] ==================== -->
        <Model:DataType xmi.id="a3B4EFADD020D" name="AttributeSelectionFunction" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
          <Model:ModelElement.annotation>This enumeration determines which attriute in the given data to select and map it to a set-valued logical attribute.
The attributes that satisfy the given condition in this enumeration get selected.</Model:ModelElement.annotation>
          <Model:DataType.typeCode>
            <XMI.CorbaTypeCode>
              <XMI.CorbaTcEnum xmi.tcName="AttributeSelectionFunction">
              <XMI.CorbaTcEnumLabel xmi.tcName="isNotNull"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="isNull"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="isOne"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="isZero"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="isTrue"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="isFalse"/>
              </XMI.CorbaTcEnum>
            </XMI.CorbaTypeCode>
          </Model:DataType.typeCode>
        </Model:DataType>
        <!-- ==================== MiningCore.MiningData.AttributeType    [DataType] ==================== -->
        <Model:DataType xmi.id="a3B2E3B3401BE" name="AttributeType" annotation="The AttributeType indicates if the attribute should be interpreted as categorical, ordinal, or numerical data. It is possible that attribute type is not specified when first creating a MiningAttribute. It can be set later." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
          <Model:DataType.typeCode>
            <XMI.CorbaTypeCode>
              <XMI.CorbaTcEnum xmi.tcName="AttributeType">
              <XMI.CorbaTcEnumLabel xmi.tcName="categorical"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="ordinal"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="numerical"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="notSpecified"/>
              </XMI.CorbaTcEnum>
            </XMI.CorbaTypeCode>
          </Model:DataType.typeCode>
        </Model:DataType>
        <!-- ==================== MiningCore.MiningData.AttributeUsage    [Class] ==================== -->
        <Model:Class xmi.id="a39C62D090070" name="AttributeUsage" annotation="An AttributeUsage object specifies how a MinigAttribute is to be used for mining operations." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a32989F9700FE">
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.MiningData.AttributeUsage.usage    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a39C62D1A0074" name="usage" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a38FB56DA00C9">
              <Model:ModelElement.annotation>The usage attribute  indicates if the MiningAttribute should be used by the model or not, according to the details specified in the UsageOption enumeration class.
The default is "active".</Model:ModelElement.annotation>
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
            <!-- ==================== MiningCore.MiningData.AttributeUsage.weight    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a38B2935F028E" name="weight" annotation="The attribute weight indicates the weight the algorithm should assign to an attribute. The default is 1.0, indicating no effect. The particular vendor defines what effect a given weight greater or less than one has on an attribute for a particular algorithm." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3C22376201E4">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
            <!-- ==================== MiningCore.MiningData.AttributeUsage.attribute    [Reference] ==================== -->
            <Model:Reference xmi.id="a39D27243006B" name="attribute" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A2413B603A0" referencedEnd="a3A24151C0160">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.MiningData.AttributeUsage.suppressDiscretization    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a3B4C478903AB" name="suppressDiscretization" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
              <Model:ModelElement.annotation>This suppresses discretization to be performed on the attribute being specified, if true.
The default is false.</Model:ModelElement.annotation>
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
            <!-- ==================== MiningCore.MiningData.AttributeUsage.suppressNormalization    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a3C34D4C103A8" name="suppressNormalization" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.MiningData.org.omg.mof.idl_substitute_name=umlAttribute    [Tag] ==================== -->
        <Model:Tag xmi.id="G.974" name="org.omg.mof.idl_substitute_name=umlAttribute" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a39D27243006B a3B028D230014 a3B028CD603C1 a3A24151C0160">
          <Model:Tag.values>
            <XMI.any xmi.type="string" xmi.name="">umlAttribute</XMI.any>
          </Model:Tag.values>
        </Model:Tag>
        <!-- ==================== MiningCore.MiningData.AttributeUsageSet    [Class] ==================== -->
        <Model:Class xmi.id="a3A5F1A1B0350" name="AttributeUsageSet" annotation="An AttributeUsageSet object contains a collection of AttributeUsage objects. This specifes how MinigAttributes are to be used or manipulated by a model. The specification may contain at most one AttributeUsage object for each MiningAttribute in the LogicalDataSpecification. The default usage is active for an attribute if no entry for a MiningAttribute is present." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3298A02900FE"/>
        <!-- ==================== MiningCore.MiningData.CategoricalAttributeProperties    [Class] ==================== -->
        <Model:Class xmi.id="a39D10FD400F1" name="CategoricalAttributeProperties" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
          <Model:ModelElement.annotation>A CategoricalAttributeProperties object is used to describe properties of a categorical attribute. It lists the specific categories that are recognized in the attribute, as well as a taxonomy, or CategorizationGraph, that organizes the categories into a hierarchy.

This metadata may or may not be used by the underlying algorithm. It may be leveraged to determine if data being supplied as input to a mining operation is sufficiently similar to the data used to build the model.</Model:ModelElement.annotation>
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.MiningData.CategoricalAttributeProperties.category    [Reference] ==================== -->
            <Model:Reference xmi.id="a39D10FF30286" name="category" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a39D11046025E" referencedEnd="a39D1106E0189">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.MiningData.CategoricalAttributeProperties.taxonomy    [Reference] ==================== -->
            <Model:Reference xmi.id="a39D10FFD029F" name="taxonomy" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a39D110A50001" referencedEnd="a39D110FE004F">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.MiningData.DirectAttributeAssignment    [Class] ==================== -->
        <Model:Class xmi.id="a3B028CAC01A4" name="DirectAttributeAssignment" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3B4EFEA40069">
          <Model:ModelElement.annotation>Maps a pair of attributes from two different sources, for example a table column and a MiningAttribute.
In this example, the table column is represented by attribute.</Model:ModelElement.annotation>
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.MiningData.DirectAttributeAssignment.attribute    [Reference] ==================== -->
            <Model:Reference xmi.id="a3B028D230014" name="attribute" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A6F62780143" referencedEnd="a3B028CD603C1">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.MiningData.LogicalAttribute    [Class] ==================== -->
        <Model:Class xmi.id="a3A2413B603A0" name="LogicalAttribute" annotation="A MiningAttribute object is a logical concept that describes a domain of data to be used as input to data mining operations. Mining attributes are typically either categorical, ordinal, or numerical. As such, a mining attribute references additional metadata that characterizes the attribute as either categorical, e.g., a list of the categories; or numerical, e.g., the bounds of the data." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3B4F1BA302C6">
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.MiningData.LogicalAttribute.isSetValued    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a3B4F08950181" name="isSetValued" annotation="This indicates that the values of the attribute being specified here are sets, if true." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
            <!-- ==================== MiningCore.MiningData.LogicalAttribute.categoricalProperties    [Reference] ==================== -->
            <Model:Reference xmi.id="a3A5F18F102E3" name="categoricalProperties" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a39D10FD400F1" referencedEnd="a3A5F18E70022">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.MiningData.LogicalAttribute.numericalProperties    [Reference] ==================== -->
            <Model:Reference xmi.id="a3A5F18FD005F" name="numericalProperties" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a39D10F7C00FF" referencedEnd="a3A5F18EB023A">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.MiningData.LogicalData    [Class] ==================== -->
        <Model:Class xmi.id="a39C62A0A03B6" name="LogicalData" annotation="A LogicalData object contains the set of MiningAttributes that describe the logical nature of the data used as input to data mining. The MiningAttributes within a LogicalData object are uniquely named." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3298A02900FE"/>
        <!-- ==================== MiningCore.MiningData.MiningAttribute    [Class] ==================== -->
        <Model:Class xmi.id="a3B4F1BA302C6" name="MiningAttribute" annotation="This is an abstract class that describes the generic attribute to be used in mining operations." isRoot="false" isLeaf="false" isAbstract="true" visibility="public_vis" isSingleton="false" supertypes="a3A6F62780143">
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.MiningData.MiningAttribute.displayName    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a3B4F1C1C03B0" name="displayName" annotation="The optional displayName of an attribute indicates a name that an application may use as a substitute for the actual MiningAttribute name, which may be cryptic." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
            <!-- ==================== MiningCore.MiningData.MiningAttribute.attributeType    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a3B4F1C3C026C" name="attributeType" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3B2E3B3401BE">
              <Model:ModelElement.annotation>The attribute type indicates if the attribute is categorical, ordinal,  numerical, or not specified. 

If either categoricalProperties or numericalProperties are specified, a constraint exists to ensure the attributeType value is consistent with these attributes.

This attribute allows a MiningAttribute to be identified with a particular type even if no additional properties are specified.

If ordinal, then the OrdinalAttributeProperties must be specified to indicate the ordering of the categories.</Model:ModelElement.annotation>
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.MiningData.NumericalAttributeProperties    [Class] ==================== -->
        <Model:Class xmi.id="a39D10F7C00FF" name="NumericalAttributeProperties" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
          <Model:ModelElement.annotation>A NumericalAttributeProperties object is used to describe properties of the numerical attribute.
This metadata may or may not be used by the underlying algorithm. It may be leveraged to determine if data being supplied as input to a mining operation is sufficiently similar to the data used to build the model.</Model:ModelElement.annotation>
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.MiningData.NumericalAttributeProperties.lowerBound    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a39D10F910376" name="lowerBound" annotation="This indicates the lower bound (the smallest) of the values in the attribute." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3C22376201E4">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
            <!-- ==================== MiningCore.MiningData.NumericalAttributeProperties.upperBound    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a39D10F97016C" name="upperBound" annotation="This indicates the upper bound (the largest) of the values in the attribute." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3C22376201E4">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
            <!-- ==================== MiningCore.MiningData.NumericalAttributeProperties.isDiscrete    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a39D10F9B0103" name="isDiscrete" annotation="This indicates whether the values are discrete." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
            <!-- ==================== MiningCore.MiningData.NumericalAttributeProperties.isCyclic    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a39D10FA400D4" name="isCyclic" annotation="This indicates whether the values of the attributes are cyclic, i.e., the next value of the ending value is the starting value." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
            <!-- ==================== MiningCore.MiningData.NumericalAttributeProperties.anchor    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a39D10FAE03A0" name="anchor" annotation="This specifies the value of the anchor." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3C22376201E4">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
            <!-- ==================== MiningCore.MiningData.NumericalAttributeProperties.cycleBegin    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a39D10FB302D4" name="cycleBegin" annotation="This specifies the starting value of the cycle." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3C22376201E4">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
            <!-- ==================== MiningCore.MiningData.NumericalAttributeProperties.cycleEnd    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a39D10FB70258" name="cycleEnd" annotation="This specifies the ending value of the cycle." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3C22376201E4">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
            <!-- ==================== MiningCore.MiningData.NumericalAttributeProperties.discreteStepSize    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a39D10FBA0248" name="discreteStepSize" annotation="This specifies the interval value between two adjacent discrete values when the attribute is discrete." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3C22376201E4">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.MiningData.OrderType    [DataType] ==================== -->
        <Model:DataType xmi.id="a3B2F676101A4" name="OrderType" annotation="The OrderType specifies how categories should be ordered." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
          <Model:DataType.typeCode>
            <XMI.CorbaTypeCode>
              <XMI.CorbaTcEnum xmi.tcName="OrderType">
              <XMI.CorbaTcEnumLabel xmi.tcName="asIs"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="alphabetical"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="numeric"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="date"/>
              </XMI.CorbaTcEnum>
            </XMI.CorbaTypeCode>
          </Model:DataType.typeCode>
        </Model:DataType>
        <!-- ==================== MiningCore.MiningData.OrdinalAttributeProperties    [Class] ==================== -->
        <Model:Class xmi.id="a39D1101B03BA" name="OrdinalAttributeProperties" annotation="An OrdinalAttributeProperties object is used to describe properties of the ordinal attribute.  Ordinal attributes can use the &quot;ordered&quot; constraint on the MiningCategory class to use the &quot;asIs&quot; OrderType. The &quot;asIs&quot; allows the list ordering to imply a &quot;less than&quot; relationship between categories N and N+1. In addition, ordinals may be cyclic , e.g., days of the week." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a39D10FD400F1">
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.MiningData.OrdinalAttributeProperties.orderType    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a39D1101E0350" name="orderType" annotation="OrderType indicates how the sequence of categories should be interpreted as ordinal (potentially mapped to integers). " scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3B2F676101A4">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
            <!-- ==================== MiningCore.MiningData.OrdinalAttributeProperties.isCyclic    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a39D1102401A0" name="isCyclic" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
              <Model:ModelElement.annotation>This indicates whether the values of the attributes are cyclic, i.e., the next value of the ending value is the starting value.
The default is false.</Model:ModelElement.annotation>
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.MiningData.PhysicalData    [Class] ==================== -->
        <Model:Class xmi.id="a38B1E301035E" name="PhysicalData" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
          <Model:ModelElement.annotation>A PhysicalData object specifies the layout of the physical data to be used for mining, and if appropriate, the roles the various data columns play, via subclassing. The data referenced by a physical data object can be used in many capacities: model building, scoring, lift computation, statistical analysis, etc. 

PhysicalData supports specification of any data definable through a Class or set of Attributes, e.g., files, tables, and star schema.
</Model:ModelElement.annotation>
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.MiningData.PhysicalData.source    [Reference] ==================== -->
            <Model:Reference xmi.id="a38D5160503C7" name="source" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3298A02900FE" referencedEnd="a38ECF999006C">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.MiningData.PivotAttributeAssignment    [Class] ==================== -->
        <Model:Class xmi.id="a3B4EF9BC0045" name="PivotAttributeAssignment" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3B4EFEA40069">
          <Model:ModelElement.annotation>This object provides a mapping where the input data is in transactional format. Each of the logical attributes ocurring in a pivoted table is mapped to three physical columns, presumably the same ones every time. If the data types don't match, the value column may be different in that case.
Question: Seems that we need to have more than one logical attribute associated with this assignment.</Model:ModelElement.annotation>
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.MiningData.PivotAttributeAssignment.setIdAttribute    [Reference] ==================== -->
            <Model:Reference xmi.id="a3B4EFA0D034F" name="setIdAttribute" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A6F62780143" referencedEnd="a3B4F079B02CC">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.MiningData.PivotAttributeAssignment.nameAttribute    [Reference] ==================== -->
            <Model:Reference xmi.id="a3B4EFA230256" name="nameAttribute" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A6F62780143" referencedEnd="a3B4F079E0367">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.MiningData.PivotAttributeAssignment.valueAttribute    [Reference] ==================== -->
            <Model:Reference xmi.id="a3B4EFA3001FB" name="valueAttribute" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A6F62780143" referencedEnd="a3B4F07A303B4">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.MiningData.ReversePivotAttributeAssignment    [Class] ==================== -->
        <Model:Class xmi.id="a3B4EFA97019E" name="ReversePivotAttributeAssignment" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3B4EFEA40069">
          <Model:ModelElement.annotation>Constraint: The logicalAttribute must be set valued.
This object is used when the input data is in tabular (2-D) form.

The sets are represented by enumerating their elements based on the selection functions.
For example, if the attribute selection function is "isOne" and the value selection function is "attribute", the we get:
A B C D E F
1 0 0 1 0 0 = {A, D}
0 0 0 0 0 1 = {F}
0 0 0 0 0 0 = {}

Each of the input attributes (A, B, C, D, E, and F) is a selector attribute in this object. It works best for a small number of members known a priori.

In some cases, when the potential number of values is large, but it is also known that the set sizes are all small, e.g., less than 6, then we get the following:
A    B    C    D    F
X    Y   NULL NULL NULL = {X, Y}
Z    NULL NULL NULL NULL = {Z}
NULL NULL NULL NULL NULL = {}

In the above example, the attribute selection function is "isNotNull" and the value selection function is "value".</Model:ModelElement.annotation>
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.MiningData.ReversePivotAttributeAssignment.selectorAttribute    [Reference] ==================== -->
            <Model:Reference xmi.id="a3B4EFABF0373" name="selectorAttribute" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A6F62780143" referencedEnd="a3B582F910004">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.MiningData.ReversePivotAttributeAssignment.attributeSelectionFunction    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a3B4EFB3501B0" name="attributeSelectionFunction" annotation="This describes how the selector attributes are selected based on their values." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3B4EFADD020D">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
            <!-- ==================== MiningCore.MiningData.ReversePivotAttributeAssignment.valueSelectionFunction    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a3B4EFBA90026" name="valueSelectionFunction" annotation="This describes whether the value or the name of a selector attribute to appear in the destination logical attribute when the selector attribute satisfies the specified AttributeSelectionFunction." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3B4EFBD201DE">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.MiningData.SetAttributeAssignment    [Class] ==================== -->
        <Model:Class xmi.id="a3B4EFA3C03C4" name="SetAttributeAssignment" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3B4EFEA40069">
          <Model:ModelElement.annotation>Constraint: The logicalAttribute must be set valued.
This object  provides a mapping between a set-valued mining attribute and a set of attributes in the physical data.
setIdAttribute is the set identifier of the set being mapped.
memberAttribute represents a set of attributes being mapped to the set-valued mining attribute.</Model:ModelElement.annotation>
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.MiningData.SetAttributeAssignment.setIdAttribute    [Reference] ==================== -->
            <Model:Reference xmi.id="a3B4EFA5800EA" name="setIdAttribute" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A6F62780143" referencedEnd="a3B4F07AF0343">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.MiningData.SetAttributeAssignment.memberAttribute    [Reference] ==================== -->
            <Model:Reference xmi.id="a3B4EFA680382" name="memberAttribute" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A6F62780143" referencedEnd="a3B4F07B5005D">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.MiningData.UsageOption    [DataType] ==================== -->
        <Model:DataType xmi.id="a38FB56DA00C9" name="UsageOption" annotation="UsageOption specifies how a MiningAttribute is used for mining operations. " isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
          <Model:DataType.typeCode>
            <XMI.CorbaTypeCode>
              <XMI.CorbaTcEnum xmi.tcName="UsageOption">
              <XMI.CorbaTcEnumLabel xmi.tcName="active"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="supplementary"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="target"/>
              </XMI.CorbaTcEnum>
            </XMI.CorbaTypeCode>
          </Model:DataType.typeCode>
        </Model:DataType>
        <!-- ==================== MiningCore.MiningData.ValueSelectionFunction    [DataType] ==================== -->
        <Model:DataType xmi.id="a3B4EFBD201DE" name="ValueSelectionFunction" annotation="Given an attribute that satisfies the specified attribute selection function, this enumeration determines whether to select value of the attribute or the attribute itself." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
          <Model:DataType.typeCode>
            <XMI.CorbaTypeCode>
              <XMI.CorbaTcEnum xmi.tcName="ValueSelectionFunction">
              <XMI.CorbaTcEnumLabel xmi.tcName="vsf_value"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="vsf_attribute"/>
              </XMI.CorbaTcEnum>
            </XMI.CorbaTypeCode>
          </Model:DataType.typeCode>
        </Model:DataType>
        <!-- ==================== MiningCore.MiningData.org.omg.xmi.enumerationUnprefix=vsf_    [Tag] ==================== -->
        <Model:Tag xmi.id="G.975" name="org.omg.xmi.enumerationUnprefix=vsf_" annotation="" tagId="org.omg.xmi.enumerationUnprefix" elements="a3B4EFBD201DE">
          <Model:Tag.values>
            <XMI.any xmi.type="string" xmi.name="">vsf_</XMI.any>
          </Model:Tag.values>
        </Model:Tag>
        <!-- ==================== MiningCore.MiningData.Category    [Class] ==================== -->
        <Model:Class xmi.id="a39D11046025E" name="Category" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
          <Model:ModelElement.annotation>This represents a discrete value. A collection of Category instances defines the values that may or may not be annotated with a mining attribute.
</Model:ModelElement.annotation>
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.MiningData.Category.value    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a39D1105C031E" name="value" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a37AB1FF90221">
              <Model:ModelElement.annotation>Constraint on value: Datatype must define equality operator.
</Model:ModelElement.annotation>
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
            <!-- ==================== MiningCore.MiningData.Category.isNullCategory    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a3B4DB6AB0157" name="isNullCategory" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
              <Model:ModelElement.annotation>The optional attribute isNullCategory is set to true if the Category provided is the NULL category. 

If true, this invalidates any specification in the value attribute.</Model:ModelElement.annotation>
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
            <!-- ==================== MiningCore.MiningData.Category.displayName    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a3B4DB96401BE" name="displayName" annotation="The displayName is a string which may be used by applications to refer to that category." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
            <!-- ==================== MiningCore.MiningData.Category.property    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a395CE7540049" name="property" annotation="This accepts a value of the enumeration identifying the role of this Category instance." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a38EB37DE029C">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
            <!-- ==================== MiningCore.MiningData.Category.prior    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a395CE75E009D" name="prior" annotation="This contains the prior probability associated with this Category, if any." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3C22376201E4">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.MiningData.CategoryMap    [Class] ==================== -->
        <Model:Class xmi.id="a3775528703E5" name="CategoryMap" annotation="This is the common superclass of CategoryMapObject and CategoryMapTable supporting the CategorizationGraph class." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.MiningData.CategoryMap.isMultiLevel    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a377552E6019D" name="isMultiLevel" annotation="This indicates that this table or object represents multiple levels of the categorization graph, if true." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
            <!-- ==================== MiningCore.MiningData.CategoryMap.isItemMap    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a377553180176" name="isItemMap" annotation="This indicates that this is a grouping of items to categories, if true." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.MiningData.CategoryMapObject    [Class] ==================== -->
        <Model:Class xmi.id="a38ED014602D4" name="CategoryMapObject" annotation="The object representation of categorization graph. Each object references a set of CategoryMapObjectEntries" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC a3775528703E5">
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.MiningData.CategoryMapObject.entry    [Reference] ==================== -->
            <Model:Reference xmi.id="a38ED015B00E0" name="entry" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A6F50EA02D2" referencedEnd="a38ED01C40113">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.MiningData.CategoryMapObjectEntry    [Class] ==================== -->
        <Model:Class xmi.id="a3A6F50EA02D2" name="CategoryMapObjectEntry" annotation="Object representation of an edge in the categorization graph. This is analogous to a record in the CategoryMapTable. Each entry consists of child, parent, level and graphId attributes. If isItemMap is TRUE then the child attribute corresponds to item values." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.MiningData.CategoryMapObjectEntry.child    [Reference] ==================== -->
            <Model:Reference xmi.id="a3A6F510900C3" name="child" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a39D11046025E" referencedEnd="a3A6F51320271">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.MiningData.CategoryMapObjectEntry.parent    [Reference] ==================== -->
            <Model:Reference xmi.id="a3A6F511F0129" name="parent" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a39D11046025E" referencedEnd="a3A6F512C0395">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.MiningData.CategoryMapObjectEntry.graphId    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a3B00FAB403D5" name="graphId" annotation="The graphId attribute identifies the graph to which this entry belongs and enables representing multiple categorization graphs in the same table. " scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a37AB1FF90221">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.MiningData.CategoryMapTable    [Class] ==================== -->
        <Model:Class xmi.id="a3A6F4F6903B4" name="CategoryMapTable" annotation="Tabular representation of a categorization graph. A categorization graph consists of zero or more tables. Each table can store the portion of the graph corresponding to a single level or multiple levels.  The table has three attributes, child, parent and graphId. " isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC a3775528703E5">
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.MiningData.CategoryMapTable.childAttribute    [Reference] ==================== -->
            <Model:Reference xmi.id="a3A6F505D0166" name="childAttribute" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A6F62780143" referencedEnd="a3A5F89D203D0">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.MiningData.CategoryMapTable.parentAttribute    [Reference] ==================== -->
            <Model:Reference xmi.id="a3A6F50750175" name="parentAttribute" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A6F62780143" referencedEnd="a3A5F34A10367">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.MiningData.CategoryMapTable.graphIdAttribute    [Reference] ==================== -->
            <Model:Reference xmi.id="a389360F701EC" name="graphIdAttribute" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A6F62780143" referencedEnd="a38936118032A">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.MiningData.CategoryMapTable.table    [Reference] ==================== -->
            <Model:Reference xmi.id="a37754B8002D0" name="table" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3298A02900FE" referencedEnd="a37754C4C00A2">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.MiningData.CategoryMatrix    [Class] ==================== -->
        <Model:Class xmi.id="a39CF8E7103CD" name="CategoryMatrix" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
          <Model:ModelElement.annotation>A CategoryMatrix assigns numeric values to pairs of categories.
It is either represented as a set of CategoryMatrixEntries or as a table.</Model:ModelElement.annotation>
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.MiningData.CategoryMatrix.diagonalDefault    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a3A6DE7A3023E" name="diagonalDefault" annotation="If a matrix cell in the diagonal is not specified use this value." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3C22376201E4">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
            <!-- ==================== MiningCore.MiningData.CategoryMatrix.offDiagonalDefault    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a3A6DE7AC0377" name="offDiagonalDefault" annotation="If a matrix cell not in the diagonal is not specified use this value." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3C22376201E4">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
            <!-- ==================== MiningCore.MiningData.CategoryMatrix.kind    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a3A6DE7B60141" name="kind" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3B2F1D5603CF">
              <Model:ModelElement.annotation>Type of matrix, 'diagonal', 'symmetric', or 'any'.
If diagonal, then all values outside the diagonal are 0.
If symmetric then value(i,j)=value(j,i).</Model:ModelElement.annotation>
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
            <!-- ==================== MiningCore.MiningData.CategoryMatrix.category    [Reference] ==================== -->
            <Model:Reference xmi.id="a3A6F3E70023A" name="category" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a39D11046025E" referencedEnd="a3A6F3E30018E">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="2" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.MiningData.CategoryMatrixEntry    [Class] ==================== -->
        <Model:Class xmi.id="a390DD4900302" name="CategoryMatrixEntry" annotation="Defines the value of a single cell in a CategoryMatrix." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.MiningData.CategoryMatrixEntry.rowIndex    [Reference] ==================== -->
            <Model:Reference xmi.id="a390DD4A102A2" name="rowIndex" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a39D11046025E" referencedEnd="a390DD8540069">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.MiningData.CategoryMatrixEntry.columnIndex    [Reference] ==================== -->
            <Model:Reference xmi.id="a390DD9970063" name="columnIndex" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a39D11046025E" referencedEnd="a390DD84A0317">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.MiningData.CategoryMatrixEntry.value    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a3A2810B30110" name="value" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3C22376201E4">
              <Model:ModelElement.annotation>Value of a cell. It overwrites any default value in CategoryMatrix.
For Cost matrix, value is intended to be a double. For ConfusionMatrix, the value can be either a "count" which is an integer value, or a "percentage" which is a double value. This is up to the implementation.</Model:ModelElement.annotation>
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.MiningData.CategoryMatrixObject    [Class] ==================== -->
        <Model:Class xmi.id="a3B4DC5FA0315" name="CategoryMatrixObject" annotation="The object representation of CategoryMatrix. Each object references a set of CategoryMatrixEntry objects." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a39CF8E7103CD">
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.MiningData.CategoryMatrixObject.entry    [Reference] ==================== -->
            <Model:Reference xmi.id="a3B4DC7EE0075" name="entry" annotation="" scope="instance_level" visibility="public_vis" isChangeable="false" type="a390DD4900302" referencedEnd="a390DD8DD01BB">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.MiningData.CategoryMatrixTable    [Class] ==================== -->
        <Model:Class xmi.id="a3B2F32B3010E" name="CategoryMatrixTable" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a39CF8E7103CD">
          <Model:ModelElement.annotation>Table with three columns holding the definition of a category matrix.
Tabular representation of a CategoryMatrix. A category matrix consists of exactly one table. The table has three row, column and value of the entry.</Model:ModelElement.annotation>
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.MiningData.CategoryMatrixTable.rowAttribute    [Reference] ==================== -->
            <Model:Reference xmi.id="a3B2F35250004" name="rowAttribute" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A6F62780143" referencedEnd="a3B2F35E80253">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.MiningData.CategoryMatrixTable.columnAttribute    [Reference] ==================== -->
            <Model:Reference xmi.id="a3B2F3539016B" name="columnAttribute" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A6F62780143" referencedEnd="a3B2F35DD01C1">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.MiningData.CategoryMatrixTable.valueAttribute    [Reference] ==================== -->
            <Model:Reference xmi.id="a3B2F3542006A" name="valueAttribute" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A6F62780143" referencedEnd="a3B2F35E50191">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.MiningData.CategoryMatrixTable.source    [Reference] ==================== -->
            <Model:Reference xmi.id="a3B4DC5A202D3" name="source" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3298A02900FE" referencedEnd="a3B4DC5B602F9">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.MiningData.CategoryProperty    [DataType] ==================== -->
        <Model:DataType xmi.id="a38EB37DE029C" name="CategoryProperty" annotation="Indicates if the category has a special meaning." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
          <Model:DataType.typeCode>
            <XMI.CorbaTypeCode>
              <XMI.CorbaTcEnum xmi.tcName="CategoryProperty">
              <XMI.CorbaTcEnumLabel xmi.tcName="valid"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="invalid"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="missing"/>
              </XMI.CorbaTcEnum>
            </XMI.CorbaTypeCode>
          </Model:DataType.typeCode>
        </Model:DataType>
        <!-- ==================== MiningCore.MiningData.CategoryTaxonomy    [Class] ==================== -->
        <Model:Class xmi.id="a39D110A50001" name="CategoryTaxonomy" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
          <Model:ModelElement.annotation>A CategorizationGraph supports the specification of taxonomy or category hierarchy as required by data mining in the form of a directed acyclic graph. It enables two representations: 1) explicit specification of the graph through the referenced node class, and 2) referencing MiningData with specific attributes (columns) that store the data in tabular form.

A CategorizationGraph can contain multiple "root" nodes, in a sense being a single representation for several possibly strict hierarchies. 

Constraint to have either the MiningData instances (CategoryMapTable) OR the java object instances (CategoryMap).

Note: This is a "graph" as opposed to a "hierarchy" because it can have multiple roots, i.e. hierarchies in the same object.</Model:ModelElement.annotation>
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.MiningData.CategoryTaxonomy.categoryMap    [Reference] ==================== -->
            <Model:Reference xmi.id="a3A5F33A001FF" name="categoryMap" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3775528703E5" referencedEnd="a38ED018B02A1">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.MiningData.CategoryTaxonomy.rootCategory    [Reference] ==================== -->
            <Model:Reference xmi.id="a3A6F5C0A0063" name="rootCategory" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a39D11046025E" referencedEnd="a3A6F5C040281">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.MiningData.MatrixProperty    [DataType] ==================== -->
        <Model:DataType xmi.id="a3B2F1D5603CF" name="MatrixProperty" annotation="This specifies the matrix property that describes the shape of the matrix." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
          <Model:DataType.typeCode>
            <XMI.CorbaTypeCode>
              <XMI.CorbaTcEnum xmi.tcName="MatrixProperty">
              <XMI.CorbaTcEnumLabel xmi.tcName="mp_symmetric"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="mp_diagonal"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="mp_any"/>
              </XMI.CorbaTcEnum>
            </XMI.CorbaTypeCode>
          </Model:DataType.typeCode>
        </Model:DataType>
        <!-- ==================== MiningCore.MiningData.org.omg.xmi.enumerationUnprefix=mp_    [Tag] ==================== -->
        <Model:Tag xmi.id="G.976" name="org.omg.xmi.enumerationUnprefix=mp_" annotation="" tagId="org.omg.xmi.enumerationUnprefix" elements="a3B2F1D5603CF">
          <Model:Tag.values>
            <XMI.any xmi.type="string" xmi.name="">mp_</XMI.any>
          </Model:Tag.values>
        </Model:Tag>
        <!-- ==================== MiningCore.MiningData.Double    [DataType] ==================== -->
        <Model:DataType xmi.id="a3C22376201E4" name="Double" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
          <Model:DataType.typeCode>
            <XMI.CorbaTypeCode>
              <XMI.CorbaTcDouble/>
            </XMI.CorbaTypeCode>
          </Model:DataType.typeCode>
        </Model:DataType>
        <!-- ==================== MiningCore.MiningData.PhysicalDataRefSource    [Association] ==================== -->
        <Model:Association xmi.id="a38ECF998020F" name="PhysicalDataRefSource" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a38ECF999006C" name="source" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3298A02900FE">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a38ECF99900B2" name="physicalData" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a38B1E301035E">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningData.LogicalAttrHasCategoricalProperties    [Association] ==================== -->
        <Model:Association xmi.id="a3A5F18E601ED" name="LogicalAttrHasCategoricalProperties" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3A5F18E70022" name="categoricalProperties" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a39D10FD400F1">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3A5F18E70036" name="logicalAttribute" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a3A2413B603A0">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningData.LogicalAttrHasNumericalProperties    [Association] ==================== -->
        <Model:Association xmi.id="a3A5F18EB00FA" name="LogicalAttrHasNumericalProperties" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3A5F18EB023A" name="numericalProperties" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a39D10F7C00FF">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3A5F18EB024E" name="logicalAttribute" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a3A2413B603A0">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningData.CategoricalPropertiesRefTaxonomy    [Association] ==================== -->
        <Model:Association xmi.id="a39D110FD004E" name="CategoricalPropertiesRefTaxonomy" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a39D110FE004F" name="taxonomy" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a39D110A50001">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a39D110FE0059" name="categoricalProperties" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a39D10FD400F1">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningData.CategoricalPropertiesHasCategories    [Association] ==================== -->
        <Model:Association xmi.id="a39D1106E0070" name="CategoricalPropertiesHasCategories" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a39D1106E0189" name="category" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a39D11046025E">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a39D1106E0193" name="categoricalProperties" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a39D10FD400F1">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningData.AssignmentRefLogicalAttribute    [Association] ==================== -->
        <Model:Association xmi.id="a3B4F1CA90218" name="AssignmentRefLogicalAttribute" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3B4F1CAA0061" name="logicalAttribute" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3B4F1BA302C6">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3B4F1CAA007F" name="attrAssignment" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a3B4EFEA40069">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningData.AssignmentRefOrderIdAttribute    [Association] ==================== -->
        <Model:Association xmi.id="a3B4F169B00CF" name="AssignmentRefOrderIdAttribute" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3B4F169D01B8" name="orderIdAttribute" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A6F62780143">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3B4F169D024E" name="attrAssignmnet" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a3B4EFEA40069">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningData.PivotRefSetIdAttribute    [Association] ==================== -->
        <Model:Association xmi.id="a3B4F079901A7" name="PivotRefSetIdAttribute" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3B4F079B02CC" name="setIdAttribute" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A6F62780143">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3B4F079B033A" name="pivotAttrAssignment" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a3B4EF9BC0045">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningData.PivotRefNameAttribute    [Association] ==================== -->
        <Model:Association xmi.id="a3B4F079D0301" name="PivotRefNameAttribute" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3B4F079E0367" name="nameAttribute" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A6F62780143">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3B4F079E03D5" name="pivotAttrAssignment" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a3B4EF9BC0045">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningData.PivotRefValueAttribute    [Association] ==================== -->
        <Model:Association xmi.id="a3B4F07A2025E" name="PivotRefValueAttribute" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3B4F07A303B4" name="valueAttribute" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A6F62780143">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3B4F07A40030" name="pivotAttrAssignmnet" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a3B4EF9BC0045">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningData.SetAssignmentRefSetIdAttr    [Association] ==================== -->
        <Model:Association xmi.id="a3B4F07AE00F3" name="SetAssignmentRefSetIdAttr" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3B4F07AF0343" name="setIdAttribute" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A6F62780143">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3B4F07AF03BB" name="setAttrAssignment" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a3B4EFA3C03C4">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningData.SetAssignmentRefMemberAttr    [Association] ==================== -->
        <Model:Association xmi.id="a3B4F07B300D2" name="SetAssignmentRefMemberAttr" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3B4F07B5005D" name="memberAttribute" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A6F62780143">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3B4F07B500E9" name="setAttrAssignment" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a3B4EFA3C03C4">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningData.ReversePivotRefAttribute    [Association] ==================== -->
        <Model:Association xmi.id="a3B582F90020B" name="ReversePivotRefAttribute" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3B582F910004" name="selectorAttribute" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A6F62780143">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3B582F910090" name="reversePivotAttrAssignment" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a3B4EFA97019E">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningData.DirectAssignmentRefAttribute    [Association] ==================== -->
        <Model:Association xmi.id="a3B028CD502ED" name="DirectAssignmentRefAttribute" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3B028CD603C1" name="attribute" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A6F62780143">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3B028CD7003D" name="directAttributeAssignment" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a3B028CAC01A4">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningData.UsageRefAttribute    [Association] ==================== -->
        <Model:Association xmi.id="a3A24151B0231" name="UsageRefAttribute" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3A24151C0160" name="attribute" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A2413B603A0">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3A24151C0174" name="usage" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a39C62D090070">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningData.AssignmentSetHasAssignment    [Association] ==================== -->
        <Model:Association xmi.id="a394696D90007" name="AssignmentSetHasAssignment" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a394696D9012A" name="assignment" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3B4EFEA40069">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a394696D9015C" name="set" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a3946969902A4">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningData.CategoryMapObjectHasEntry    [Association] ==================== -->
        <Model:Association xmi.id="a38ED01C302C0" name="CategoryMapObjectHasEntry" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a38ED01C40113" name="entry" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A6F50EA02D2">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a38ED01C40127" name="mapObject" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a38ED014602D4">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningData.TaxonomyHasCategoryMap    [Association] ==================== -->
        <Model:Association xmi.id="a38ED018B00C1" name="TaxonomyHasCategoryMap" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a38ED018B02A1" name="categoryMap" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3775528703E5">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a38ED018B02AB" name="taxonomy" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a39D110A50001">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningData.MapEntryRefChildCategory    [Association] ==================== -->
        <Model:Association xmi.id="a3A6F5132005E" name="MapEntryRefChildCategory" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3A6F51320271" name="child" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a39D11046025E">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3A6F5132028F" name="entry" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a3A6F50EA02D2">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningData.MatrixEntryRefColumnIndex    [Association] ==================== -->
        <Model:Association xmi.id="a390DD84A00E7" name="MatrixEntryRefColumnIndex" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a390DD84A0317" name="columnIndex" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a39D11046025E">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a390DD84A032B" name="categoryEntry" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a390DD4900302">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningData.MatrixObjectHasEntry    [Association] ==================== -->
        <Model:Association xmi.id="a390DD8DD01BA" name="MatrixObjectHasEntry" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a390DD8DD01BB" name="entry" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a390DD4900302">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a390DD8DD01BC" name="categoryMatrix" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a3B4DC5FA0315">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningData.MapEntryRefParentCategory    [Association] ==================== -->
        <Model:Association xmi.id="a3A6F512C01A0" name="MapEntryRefParentCategory" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3A6F512C0395" name="parent" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a39D11046025E">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3A6F512C03B3" name="entry" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a3A6F50EA02D2">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningData.TaxonomyRefRootCategory    [Association] ==================== -->
        <Model:Association xmi.id="a3A6F5C030316" name="TaxonomyRefRootCategory" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3A6F5C040281" name="rootCategory" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a39D11046025E">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3A6F5C04029F" name="taxonomy" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a39D110A50001">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningData.MatrixEntryRefRowIndex    [Association] ==================== -->
        <Model:Association xmi.id="a390DD8530248" name="MatrixEntryRefRowIndex" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a390DD8540069" name="rowIndex" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a39D11046025E">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a390DD8540087" name="categoryEntry" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a390DD4900302">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningData.MatrixTableRefSource    [Association] ==================== -->
        <Model:Association xmi.id="a3B4DC5B600BF" name="MatrixTableRefSource" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3B4DC5B602F9" name="source" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3298A02900FE">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3B4DC5B6035E" name="matrixTable" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a3B2F32B3010E">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningData.MapTableRefChildAttribute    [Association] ==================== -->
        <Model:Association xmi.id="a3A5F89D200A5" name="MapTableRefChildAttribute" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3A5F89D203D0" name="childAttribute" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A6F62780143">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3A5F89D3001A" name="map" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a3A6F4F6903B4">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningData.CategoryMapRefClass    [Association] ==================== -->
        <Model:Association xmi.id="a37754C48027D" name="CategoryMapRefClass" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a37754C4C00A2" name="table" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3298A02900FE">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a37754C4C00DE" name="mapTable" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a3A6F4F6903B4">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningData.MatrixTableRefColumnAttr    [Association] ==================== -->
        <Model:Association xmi.id="a3B2F35DC036E" name="MatrixTableRefColumnAttr" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3B2F35DD01C1" name="columnAttribute" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A6F62780143">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3B2F35DD03D4" name="matrixTable" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a3B2F32B3010E">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningData.MapTableRefGraphIdAttribute    [Association] ==================== -->
        <Model:Association xmi.id="a38936118012B" name="MapTableRefGraphIdAttribute" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a38936118032A" name="graphIdAttribute" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A6F62780143">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a389361180352" name="map" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a3A6F4F6903B4">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningData.MatrixRefIndexLabels    [Association] ==================== -->
        <Model:Association xmi.id="a3A6F3E2F018C" name="MatrixRefIndexLabels" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3A6F3E30018E" name="category" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a39D11046025E">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="2" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3A6F3E3001C0" name="categoryMatrix" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a39CF8E7103CD">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningData.MapTableRefParentAttribute    [Association] ==================== -->
        <Model:Association xmi.id="a3A5F34A101AF" name="MapTableRefParentAttribute" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3A5F34A10367" name="parentAttribute" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A6F62780143">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3A5F34A1037B" name="map" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a3A6F4F6903B4">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningData.MatrixTableRefRowAttr    [Association] ==================== -->
        <Model:Association xmi.id="a3B2F35E702CA" name="MatrixTableRefRowAttr" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3B2F35E80253" name="rowAttribute" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A6F62780143">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3B2F35E802C1" name="matrixTable" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a3B2F32B3010E">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningData.MatrixTableRefValueAttr    [Association] ==================== -->
        <Model:Association xmi.id="a3B2F35E4032A" name="MatrixTableRefValueAttr" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3B2F35E50191" name="valueAttribute" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A6F62780143">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3B2F35E501FF" name="matrixTable" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a3B2F32B3010E">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
      </Model:Namespace.contents>
    </Model:Package>
    <!-- ==================== MiningCore.org.omg.mof.idl_substitute_name=MiningDataModule    [Tag] ==================== -->
    <Model:Tag xmi.id="G.972" name="org.omg.mof.idl_substitute_name=MiningDataModule" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a395CF9840091">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">MiningDataModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <Model:Import xmi.id="G.973" name="Core" annotation="" visibility="public_vis" isClustered="false" importedNamespace="a3A6600C5031F"/>
    <!-- ==================== MiningCore.MiningFunctionSettings    [Package] ==================== -->
    <Model:Package xmi.id="a395CF8C30025" name="MiningFunctionSettings" annotation="This package defines the objects that contain the parameters specific to the mining functions. The separation of mining functions from mining algorithms enables the user to specify the type of the desired result without being concerned with a particular algorithm." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
      <Model:Namespace.contents>
        <!-- ==================== MiningCore.MiningFunctionSettings.MiningAlgorithmSettings    [Class] ==================== -->
        <Model:Class xmi.id="a3B06BC3203C4" name="MiningAlgorithmSettings" isRoot="false" isLeaf="false" isAbstract="true" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
          <Model:ModelElement.annotation>A mining algorithm settings object captures the parameters associated with a particular algorithm. It allows a knowledgeable user to fine tune algorithm parameters. Generally, not all parameters must be specified, however, those specified are taken into account by the underlying data mining system. 
Separating mining algorithm from mining function provides a natural and convenient separation for those users experienced with data mining algorithms and those only familiar with mining functions.
</Model:ModelElement.annotation>
        </Model:Class>
        <!-- ==================== MiningCore.MiningFunctionSettings.MiningFunctionSettings    [Class] ==================== -->
        <Model:Class xmi.id="a39C6234A0375" name="MiningFunctionSettings" isRoot="false" isLeaf="false" isAbstract="true" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
          <Model:ModelElement.annotation>A MiningFunctionSettings object captures the high level specification input for building a data mining model. The intent of mining function settings, is to allow a user to specify the type of result desired without having to specify a particular algorithm. 

Although mining function settings allow for the specification of algorithm, if this is omitted, the underlying data mining system is responsible for selecting the algorithm based on basic user-provided parameters.

Subclasses throw exceptions if invalid algorithm-function pairs are supplied.

</Model:ModelElement.annotation>
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.MiningFunctionSettings.MiningFunctionSettings.algorithmSettings    [Reference] ==================== -->
            <Model:Reference xmi.id="a39C623CB003C" name="algorithmSettings" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3B06BC3203C4" referencedEnd="a3B03CBF80204">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.MiningFunctionSettings.MiningFunctionSettings.desiredExecutionTimeInMinutes    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a38B1E1950039" name="desiredExecutionTimeInMinutes" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
              <Model:ModelElement.annotation>The desiredExecutionTime attribute indicates the maximum execution time (in minutes) allowed for model building.  If NULL, the algrotihm determines for how long the model will build.

This is to serve as a hint to the algorithm to adjust model building to meet the time constraint. Vendor implementations may support this to varying degrees, e.g., terminate model build if exceeds this limit, intelligently adjust algorithm parameters to meet this constraint, or dynamically distribute or parallelize the operation.</Model:ModelElement.annotation>
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
            <!-- ==================== MiningCore.MiningFunctionSettings.MiningFunctionSettings.attributeUsageSet    [Reference] ==================== -->
            <Model:Reference xmi.id="a39D271BC0220" name="attributeUsageSet" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A5F1A1B0350" referencedEnd="a3A5F1A3B0099">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.MiningFunctionSettings.MiningFunctionSettings.logicalData    [Reference] ==================== -->
            <Model:Reference xmi.id="a39D271F50181" name="logicalData" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a39C62A0A03B6" referencedEnd="a39C62ABC0203">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.MiningFunctionSettings.SettingsRefAlgorithmSettings    [Association] ==================== -->
        <Model:Association xmi.id="a3B03CBF7028F" name="SettingsRefAlgorithmSettings" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3B03CBF80204" name="algorithmSettings" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3B06BC3203C4">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3B03CBF80218" name="settings" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a39C6234A0375">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningFunctionSettings.SettingsHasAttributeUsageSet    [Association] ==================== -->
        <Model:Association xmi.id="a3A5F1A3A030E" name="SettingsHasAttributeUsageSet" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3A5F1A3B0099" name="attributeUsageSet" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A5F1A1B0350">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3A5F1A3B00B7" name="settings" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a39C6234A0375">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningFunctionSettings.SettingsRefLogicalData    [Association] ==================== -->
        <Model:Association xmi.id="a39C62ABC0037" name="SettingsRefLogicalData" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a39C62ABC0203" name="logicalData" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a39C62A0A03B6">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a39C62ABC020D" name="settings" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a39C6234A0375">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
      </Model:Namespace.contents>
    </Model:Package>
    <!-- ==================== MiningCore.org.omg.mof.idl_substitute_name=MiningFunctionSettingsModule    [Tag] ==================== -->
    <Model:Tag xmi.id="G.977" name="org.omg.mof.idl_substitute_name=MiningFunctionSettingsModule" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a395CF8C30025">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">MiningFunctionSettingsModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== MiningCore.MiningModel    [Package] ==================== -->
    <Model:Package xmi.id="a395CF9560185" name="MiningModel" annotation="This package defines the basic MiningModel from which all model objects inherit as the result of a mining build task." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
      <Model:Namespace.contents>
        <!-- ==================== MiningCore.MiningModel.MiningFunction    [DataType] ==================== -->
        <Model:DataType xmi.id="a3B3BAE9A0380" name="MiningFunction" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
          <Model:DataType.typeCode>
            <XMI.CorbaTypeCode>
              <XMI.CorbaTcEnum xmi.tcName="MiningFunction">
              <XMI.CorbaTcEnumLabel xmi.tcName="classification"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="regression"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="clustering"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="associationRules"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="attributeImportance"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="sequenceAnalysis"/>
              </XMI.CorbaTcEnum>
            </XMI.CorbaTypeCode>
          </Model:DataType.typeCode>
        </Model:DataType>
        <!-- ==================== MiningCore.MiningModel.MiningModel    [Class] ==================== -->
        <Model:Class xmi.id="a39C623280312" name="MiningModel" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
          <Model:ModelElement.annotation>A MiningModel holds the metadata of the result of a mining (training) run.
This information is sufficient to determine whether a model can be applied to given data.</Model:ModelElement.annotation>
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.MiningModel.MiningModel.function    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a39C623D80211" name="function" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3B3BAE9A0380">
              <Model:ModelElement.annotation>Data mining function (as opposed to algorithm), e.g. classification or clustering.
The following function names are predefined:
attributeImportance
associationRules
classification
regression
clustering</Model:ModelElement.annotation>
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
            <!-- ==================== MiningCore.MiningModel.MiningModel.algorithmName    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a39C623DC0339" name="algorithmName" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
              <Model:ModelElement.annotation>Specific implementation of the data mining function, e.g. CART decision tree or SOM clustering.

The following algorithm names are predefined (their functions in parentheses):
decisionTree (classification, regression)
neuralNetwork (classification, regression)
naiveBayes (classification)
selfOrganizingMap (clusteirng)
kMeans (clustering)
competitiveLearning</Model:ModelElement.annotation>
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
            <!-- ==================== MiningCore.MiningModel.MiningModel.settings    [Reference] ==================== -->
            <Model:Reference xmi.id="a39D24C6F0034" name="settings" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a39C6234A0375" referencedEnd="a3A956A6B032A">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.MiningModel.MiningModel.modelSignature    [Reference] ==================== -->
            <Model:Reference xmi.id="a3A229969021A" name="modelSignature" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a38EB3D7A034B" referencedEnd="a38EB3DB9034C">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.MiningModel.MiningModel.modelLocation    [Reference] ==================== -->
            <Model:Reference xmi.id="a395CEE740312" name="modelLocation" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3298A02900FE" referencedEnd="a395CEEDB0325">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.MiningModel.MiningModel.keyAttribute    [Reference] ==================== -->
            <Model:Reference xmi.id="a395CEE94028C" name="keyAttribute" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A6F62780143" referencedEnd="a395CEFA90335">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.MiningModel.MiningModel.keyValue    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a395CEECB02EF" name="keyValue" annotation="This optinoally represents the key value when the model is to be located." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a37AB1FF90221">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.MiningModel.ModelSignature    [Class] ==================== -->
        <Model:Class xmi.id="a38EB3D7A034B" name="ModelSignature" annotation="The model signature is a description of the input needed to apply a data mining model." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3298A02900FE"/>
        <!-- ==================== MiningCore.MiningModel.SignatureAttribute    [Class] ==================== -->
        <Model:Class xmi.id="a38EB3AD90308" name="SignatureAttribute" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3B4F1BA302C6">
          <Model:ModelElement.annotation>A SignatureAttribute object describes the input expected to a model. This is automatically produced as part of the model. It indicates not only the basic Attribute properties, but also how outliers and missing values were handled for model build. This is potentially duplicate information from the MiningFunctionSettings, but must be provided since MiningFunctionSettings are optional.

If an attribute was normalized or discretized automatically by the Data Mining System, the specific details are provided in the SignatureAttribute object. The user is not expected to use this information to preprocess the data in any way. The Data Mining System uses this information to automatically preprocess data, if required.</Model:ModelElement.annotation>
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.MiningModel.SignatureAttribute.usageOption    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a38EB3B2C0054" name="usageOption" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a38FB56DA00C9">
              <Model:ModelElement.annotation>The usage intended for this attribute. A model signature consists only of 'active' and 'supplemental' attributes. 'Inactive' attributes are filtered out as they do not contribute to the model.

Note that 'supplemental' attributes do not contribute to model apply.</Model:ModelElement.annotation>
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.MiningModel.ModelRefSettings    [Association] ==================== -->
        <Model:Association xmi.id="a3A956A6A03B5" name="ModelRefSettings" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3A956A6B032A" name="settings" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a39C6234A0375">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3A956A6B0348" name="model" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a39C623280312">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningModel.ModelHasSignature    [Association] ==================== -->
        <Model:Association xmi.id="a38EB3DB90157" name="ModelHasSignature" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a38EB3DB9034C" name="modelSignature" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a38EB3D7A034B">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a38EB3DB90356" name="model" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a39C623280312">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningModel.ModelRefLocation    [Association] ==================== -->
        <Model:Association xmi.id="a395CEEDB0040" name="ModelRefLocation" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a395CEEDB0325" name="modelLocation" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3298A02900FE">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a395CEEDC01A9" name="model" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a39C623280312">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningModel.ModelRefKeyAttribute    [Association] ==================== -->
        <Model:Association xmi.id="a395CEFA90168" name="ModelRefKeyAttribute" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a395CEFA90335" name="keyAttribute" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A6F62780143">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a395CEFAA010F" name="model" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a39C623280312">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
      </Model:Namespace.contents>
    </Model:Package>
    <!-- ==================== MiningCore.org.omg.mof.idl_substitute_name=MiningModelModule    [Tag] ==================== -->
    <Model:Tag xmi.id="G.978" name="org.omg.mof.idl_substitute_name=MiningModelModule" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a395CF9560185">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">MiningModelModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== MiningCore.MiningResult    [Package] ==================== -->
    <Model:Package xmi.id="a395CF9650014" name="MiningResult" annotation="This package defines the basic MiningResult object from which all result objects inherit as the result of a specific mining task (other than build)." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
      <Model:Namespace.contents>
        <!-- ==================== MiningCore.MiningResult.MiningResult    [Class] ==================== -->
        <Model:Class xmi.id="a3B4C849F03BB" name="MiningResult" isRoot="false" isLeaf="false" isAbstract="true" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
          <Model:ModelElement.annotation>A MiningResult holds the metadata of the result of a mining  run other than training that results in a model.
It includes apply, test, and compute lift operations.</Model:ModelElement.annotation>
        </Model:Class>
      </Model:Namespace.contents>
    </Model:Package>
    <!-- ==================== MiningCore.org.omg.mof.idl_substitute_name=MiningResultModule    [Tag] ==================== -->
    <Model:Tag xmi.id="G.979" name="org.omg.mof.idl_substitute_name=MiningResultModule" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a395CF9650014">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">MiningResultModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== MiningCore.MiningTask    [Package] ==================== -->
    <Model:Package xmi.id="a395CF99A0101" name="MiningTask" annotation="This package defines the objects that are related to mining tasks. A MiningTask object represents a specific mining operation to be performed on a given data." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
      <Model:Namespace.contents>
        <!-- ==================== MiningCore.MiningTask.ApplyContentItem    [Class] ==================== -->
        <Model:Class xmi.id="a38EB31BD020A" name="ApplyContentItem" annotation="This is an abstract class that describes an item to appear in the output based on the rank of the prediction." isRoot="false" isLeaf="false" isAbstract="true" visibility="public_vis" isSingleton="false" supertypes="a39FF3C4202A9">
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.MiningTask.ApplyContentItem.topNthIndex    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a3B66DB5C006F" name="topNthIndex" annotation="This indicates the rank of the prediction whose associated values (score, probability, and rule id) to appear in the output are specified by the subclasses." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.MiningTask.ApplyOutputItem    [Class] ==================== -->
        <Model:Class xmi.id="a39FF3C4202A9" name="ApplyOutputItem" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3B4F1BA302C6">
          <Model:ModelElement.annotation>This object describes an entity of apply output. It is usually stored in a destination attribute. The destination attribute is specified by an AttributeAssignment object.
If Transactional output, then ApplyOutputItem does not have a destination attribute. Instead, the (name) entry for the attrNameAttribute is held in 'name' inherited from ModelElement</Model:ModelElement.annotation>
        </Model:Class>
        <!-- ==================== MiningCore.MiningTask.ApplyOutputOption    [DataType] ==================== -->
        <Model:DataType xmi.id="a3B4F3802039C" name="ApplyOutputOption" annotation="This enumeration specifies how apply output is created." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
          <Model:DataType.typeCode>
            <XMI.CorbaTypeCode>
              <XMI.CorbaTcEnum xmi.tcName="ApplyOutputOption">
              <XMI.CorbaTcEnumLabel xmi.tcName="appendToExisting"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="createNew"/>
              </XMI.CorbaTcEnum>
            </XMI.CorbaTypeCode>
          </Model:DataType.typeCode>
        </Model:DataType>
        <!-- ==================== MiningCore.MiningTask.ApplyProbabilityItem    [Class] ==================== -->
        <Model:Class xmi.id="a38EB31AF00DD" name="ApplyProbabilityItem" annotation="This indicates that the probability value of the prediction (whose rank is specified here) should appear in the output." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a38EB31BD020A"/>
        <!-- ==================== MiningCore.MiningTask.ApplyRuleIdItem    [Class] ==================== -->
        <Model:Class xmi.id="a394B986A02C6" name="ApplyRuleIdItem" annotation="This indicates that the rule ID of the prediction (whose rank is specified here) should appear in the output. This applies only to the models with rule IDs (such as decision tree models)." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a38EB31BD020A"/>
        <!-- ==================== MiningCore.MiningTask.ApplyScoreItem    [Class] ==================== -->
        <Model:Class xmi.id="a394B982B0275" name="ApplyScoreItem" annotation="This indicates that the score (target value) of the prediction (whose rank is specified here) should appear in the output." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a38EB31BD020A"/>
        <!-- ==================== MiningCore.MiningTask.ApplySourceItem    [Class] ==================== -->
        <Model:Class xmi.id="a38EB31D90110" name="ApplySourceItem" annotation="This indicates that the source attribute specified here appears in the output as well." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a39FF3C4202A9"/>
        <!-- ==================== MiningCore.MiningTask.MiningApplyOutput    [Class] ==================== -->
        <Model:Class xmi.id="a39FF3C21039C" name="MiningApplyOutput" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
          <Model:ModelElement.annotation>This describes the ouput Specification for a MiningApplyTask.
It contains a set of attributes (represented as ApplyOutputItem objects) holding the output information. These attributes can hold the score or other computed information, or else be copied from input columns for reference.
</Model:ModelElement.annotation>
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.MiningTask.MiningApplyOutput.item    [Reference] ==================== -->
            <Model:Reference xmi.id="a39FF3C2A02AE" name="item" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a39FF3C4202A9" referencedEnd="a39FF3C9001D9">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="-1" is_ordered="true" is_unique="true"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.MiningTask.MiningApplyTask    [Class] ==================== -->
        <Model:Class xmi.id="a39C92C630074" name="MiningApplyTask" annotation="This describes a task that computes the result of an application of a data mining model to (new) data." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3A0981130303">
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.MiningTask.MiningApplyTask.applyOutput    [Reference] ==================== -->
            <Model:Reference xmi.id="a3A241BD7024E" name="applyOutput" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a39FF3C21039C" referencedEnd="a3A241BEF00B8">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.MiningTask.MiningApplyTask.outputAssignment    [Reference] ==================== -->
            <Model:Reference xmi.id="a3B4F338602BF" name="outputAssignment" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3946969902A4" referencedEnd="a3B4F33C00196">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.MiningTask.MiningApplyTask.outputOption    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a3B4F37360230" name="outputOption" annotation="This specifies how the apply output is created. The default is &quot;createNew&quot;, which means the output is stored in a new file/table." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3B4F3802039C">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.MiningTask.MiningBuildTask    [Class] ==================== -->
        <Model:Class xmi.id="a3A098260014A" name="MiningBuildTask" annotation="This describes a task that builds a mining model, sometimes also called training task." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3A0981130303">
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.MiningTask.MiningBuildTask.miningSettings    [Reference] ==================== -->
            <Model:Reference xmi.id="a3A0F3D4E02D1" name="miningSettings" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a39C6234A0375" referencedEnd="a3A241C730180">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.MiningTask.MiningBuildTask.settingsAssignment    [Reference] ==================== -->
            <Model:Reference xmi.id="a3B4DB10900FA" name="settingsAssignment" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3946969902A4" referencedEnd="a3B4DB15301F1">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.MiningTask.MiningBuildTask.validationData    [Reference] ==================== -->
            <Model:Reference xmi.id="a3B4F4B44017E" name="validationData" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a38B1E301035E" referencedEnd="a3B4F4C0503AC">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.MiningTask.MiningBuildTask.validationAssignment    [Reference] ==================== -->
            <Model:Reference xmi.id="a3B4F4B52016A" name="validationAssignment" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3946969902A4" referencedEnd="a3B4F4B880208">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.MiningTask.MiningBuildTask.resultModel    [Reference] ==================== -->
            <Model:Reference xmi.id="a3B03941B00E8" name="resultModel" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a39C623280312" referencedEnd="a3B039664037E">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.MiningTask.MiningTask    [Class] ==================== -->
        <Model:Class xmi.id="a3A0981130303" name="MiningTask" annotation="This is an abstract class that describes an executable data mining task operating on data." isRoot="false" isLeaf="false" isAbstract="true" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.MiningTask.MiningTask.inputData    [Reference] ==================== -->
            <Model:Reference xmi.id="a3A0F3D1B02A6" name="inputData" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a38B1E301035E" referencedEnd="a38EB3F810398">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.MiningTask.MiningTask.modelAssignment    [Reference] ==================== -->
            <Model:Reference xmi.id="a3B028ADD003F" name="modelAssignment" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3946969902A4" referencedEnd="a3B028AFF0066">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.MiningTask.MiningTask.inputModel    [Reference] ==================== -->
            <Model:Reference xmi.id="a3B0396740377" name="inputModel" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a39C623280312" referencedEnd="a38EB405F00F8">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.MiningTask.MiningTransformation    [Class] ==================== -->
        <Model:Class xmi.id="a3B4B57F003D0" name="MiningTransformation" annotation="This defines a mining task as a transformation." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a36D1C5900149">
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.MiningTask.MiningTransformation.procedure    [Reference] ==================== -->
            <Model:Reference xmi.id="a3B4B57FD0338" name="procedure" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A0981130303" referencedEnd="a3B4B581B0006">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.MiningTask.TransformationRefMiningTask    [Association] ==================== -->
        <Model:Association xmi.id="a3B4B581A0091" name="TransformationRefMiningTask" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3B4B581B0006" name="procedure" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A0981130303">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3B4B581B001A" name="transformation" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a3B4B57F003D0">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningTask.TaskRefInputModel    [Association] ==================== -->
        <Model:Association xmi.id="a38EB405E01FB" name="TaskRefInputModel" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a38EB405F00F8" name="inputModel" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a39C623280312">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a38EB405F0120" name="miningTask" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a3A0981130303">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningTask.TaskRefPhysicalData    [Association] ==================== -->
        <Model:Association xmi.id="a38EB3F810239" name="TaskRefPhysicalData" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a38EB3F810398" name="inputData" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a38B1E301035E">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a38EB3F8103AC" name="miningTask" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a3A0981130303">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningTask.TaskRefAttrAssignmentSet    [Association] ==================== -->
        <Model:Association xmi.id="a3B028AFE026E" name="TaskRefAttrAssignmentSet" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3B028AFF0066" name="modelAssignment" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3946969902A4">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3B028AFF007A" name="miningTask" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a3A0981130303">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningTask.ApplyTaskRefOutputAssignment    [Association] ==================== -->
        <Model:Association xmi.id="a3B4F33BE0265" name="ApplyTaskRefOutputAssignment" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3B4F33C00196" name="outputAssignment" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3946969902A4">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3B4F33C001BE" name="applyTask" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a39C92C630074">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningTask.ApplyTaskRefOutputSpec    [Association] ==================== -->
        <Model:Association xmi.id="a3A241BEE02A1" name="ApplyTaskRefOutputSpec" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3A241BEF00B8" name="applyOutput" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a39FF3C21039C">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3A241BEF00CC" name="applyTask" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a39C92C630074">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningTask.BuildTaskProducesModel    [Association] ==================== -->
        <Model:Association xmi.id="a3B03966400A3" name="BuildTaskProducesModel" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3B039664037E" name="resultModel" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a39C623280312">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3B03966403B0" name="buildTask" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a3A098260014A">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningTask.BuildTaskRefSettings    [Association] ==================== -->
        <Model:Association xmi.id="a3A241C73002B" name="BuildTaskRefSettings" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3A241C730180" name="miningSettings" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a39C6234A0375">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3A241C7301C6" name="buildTask" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a3A098260014A">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningTask.BuildTaskRefValidationAssignment    [Association] ==================== -->
        <Model:Association xmi.id="a3B4F4B87018E" name="BuildTaskRefValidationAssignment" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3B4F4B880208" name="validationAssignment" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3946969902A4">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3B4F4B88023A" name="buildTask" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a3A098260014A">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningTask.BuildTaskRefInputAssignment    [Association] ==================== -->
        <Model:Association xmi.id="a3B4DB1520022" name="BuildTaskRefInputAssignment" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3B4DB15301F1" name="settingsAssignment" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3946969902A4">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3B4DB153020F" name="buildTask" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a3A098260014A">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningTask.BuildTaskRefValidationData    [Association] ==================== -->
        <Model:Association xmi.id="a3B4F4C050081" name="BuildTaskRefValidationData" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3B4F4C0503AC" name="validationData" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a38B1E301035E">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3B4F4C060000" name="buildTask" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a3A098260014A">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.MiningTask.ApplyOutputHasContentItems    [Association] ==================== -->
        <Model:Association xmi.id="a39FF3C900156" name="ApplyOutputHasContentItems" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a39FF3C9001D9" name="item" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a39FF3C4202A9">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="-1" is_ordered="true" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a39FF3C9001ED" name="applyOutput" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a39FF3C21039C">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
      </Model:Namespace.contents>
    </Model:Package>
    <!-- ==================== MiningCore.org.omg.mof.idl_substitute_name=MiningTaskModule    [Tag] ==================== -->
    <Model:Tag xmi.id="G.980" name="org.omg.mof.idl_substitute_name=MiningTaskModule" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a395CF99A0101">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">MiningTaskModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== MiningCore.EntryPoint    [Package] ==================== -->
    <Model:Package xmi.id="a395FA5C40159" name="EntryPoint" annotation="This package defines the top-level objects of DataMining package which can be used as entry point in application programming." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
      <Model:Namespace.contents>
        <!-- ==================== MiningCore.EntryPoint.AuxiliaryObject    [Class] ==================== -->
        <Model:Class xmi.id="a3B4F35EE02D9" name="AuxiliaryObject" annotation="This contains ancillary objects that must be part of a schema." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.EntryPoint.AuxiliaryObject.attributeAssignmentSet    [Reference] ==================== -->
            <Model:Reference xmi.id="a3B582CE301AC" name="attributeAssignmentSet" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3946969902A4" referencedEnd="a3B4F3549023B">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.EntryPoint.Catalog    [Class] ==================== -->
        <Model:Class xmi.id="a38FE352002E0" name="Catalog" annotation="This object is the top level entry point for CWM Data Mining package. It contains a set of schema." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5D19033E">
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.EntryPoint.Catalog.schema    [Reference] ==================== -->
            <Model:Reference xmi.id="a3B4C434B020F" name="schema" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a38FE324B00DE" referencedEnd="a38FE353F0280">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.EntryPoint.Schema    [Class] ==================== -->
        <Model:Class xmi.id="a38FE324B00DE" name="Schema" annotation="Container for all data mining top level objects." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a32B69F3A0118">
          <Model:Namespace.contents>
            <!-- ==================== MiningCore.EntryPoint.Schema.logicalData    [Reference] ==================== -->
            <Model:Reference xmi.id="a3B4C42C400FC" name="logicalData" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a39C62A0A03B6" referencedEnd="a38FE37F00335">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.EntryPoint.Schema.categoryMatrix    [Reference] ==================== -->
            <Model:Reference xmi.id="a3B4C42D3032F" name="categoryMatrix" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a39CF8E7103CD" referencedEnd="a38FE374B0388">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.EntryPoint.Schema.miningModel    [Reference] ==================== -->
            <Model:Reference xmi.id="a3B4C42E10108" name="miningModel" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a39C623280312" referencedEnd="a3B4C42B101F9">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.EntryPoint.Schema.miningFunctionSettings    [Reference] ==================== -->
            <Model:Reference xmi.id="a3B4C42E80162" name="miningFunctionSettings" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a39C6234A0375" referencedEnd="a38FE36EE008B">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.EntryPoint.Schema.taxonomy    [Reference] ==================== -->
            <Model:Reference xmi.id="a3B4C42FA015E" name="taxonomy" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a39D110A50001" referencedEnd="a3B4CCB6001B8">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.EntryPoint.Schema.miningTask    [Reference] ==================== -->
            <Model:Reference xmi.id="a39690F0F037C" name="miningTask" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A0981130303" referencedEnd="a3B4C5F02001C">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.EntryPoint.Schema.result    [Reference] ==================== -->
            <Model:Reference xmi.id="a394801C001E0" name="result" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3B4C849F03BB" referencedEnd="a394801DF0177">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
            <!-- ==================== MiningCore.EntryPoint.Schema.auxObjects    [Reference] ==================== -->
            <Model:Reference xmi.id="a3B582D080390" name="auxObjects" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3B4F35EE02D9" referencedEnd="a3B4F360A01E8">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== MiningCore.EntryPoint.CatalogHasSchema    [Association] ==================== -->
        <Model:Association xmi.id="a38FE353F0172" name="CatalogHasSchema" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a38FE353F0280" name="schema" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a38FE324B00DE">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a38FE353F028A" name="catalog" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a38FE352002E0">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.EntryPoint.SchemaHasLogicalData    [Association] ==================== -->
        <Model:Association xmi.id="a38FE37F000F0" name="SchemaHasLogicalData" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a38FE37F00335" name="logicalData" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a39C62A0A03B6">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a38FE37F00349" name="schema" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a38FE324B00DE">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.EntryPoint.SchemaHasCategoryMatrix    [Association] ==================== -->
        <Model:Association xmi.id="a38FE374B025B" name="SchemaHasCategoryMatrix" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a38FE374B0388" name="categoryMatrix" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a39CF8E7103CD">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a38FE374B03A6" name="schema" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a38FE324B00DE">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.EntryPoint.SchemaHasAuxObjects    [Association] ==================== -->
        <Model:Association xmi.id="a3B4F360901FB" name="SchemaHasAuxObjects" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3B4F360A01E8" name="auxObjects" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3B4F35EE02D9">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3B4F360A01F2" name="schema" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a38FE324B00DE">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.EntryPoint.AuxObjectHasAttrAssignmentSet    [Association] ==================== -->
        <Model:Association xmi.id="a3B4F35470351" name="AuxObjectHasAttrAssignmentSet" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3B4F3549023B" name="attributeAssignmentSet" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3946969902A4">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3B4F35490281" name="auxiliaryObject" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a3B4F35EE02D9">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.EntryPoint.SchemaHasCategoryTaxonomy    [Association] ==================== -->
        <Model:Association xmi.id="a3B4CCB5F0351" name="SchemaHasCategoryTaxonomy" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3B4CCB6001B8" name="taxonomy" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a39D110A50001">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3B4CCB6001D6" name="schema" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a38FE324B00DE">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.EntryPoint.SchemaHasFunctionSettings    [Association] ==================== -->
        <Model:Association xmi.id="a38FE36ED02A6" name="SchemaHasFunctionSettings" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a38FE36EE008B" name="miningFunctionSettings" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a39C6234A0375">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a38FE36EE00A9" name="schema" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a38FE324B00DE">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.EntryPoint.SchemaHasMiningModel    [Association] ==================== -->
        <Model:Association xmi.id="a3B4C42B0025C" name="SchemaHasMiningModel" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3B4C42B101F9" name="miningModel" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a39C623280312">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3B4C42B10235" name="schema" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a38FE324B00DE">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.EntryPoint.SchemaHasMiningTask    [Association] ==================== -->
        <Model:Association xmi.id="a3B4C5F010197" name="SchemaHasMiningTask" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a3B4C5F02001C" name="miningTask" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A0981130303">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a3B4C5F020030" name="schema" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a38FE324B00DE">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
        <!-- ==================== MiningCore.EntryPoint.SchemaHasMiningResult    [Association] ==================== -->
        <Model:Association xmi.id="a394801DE03C4" name="SchemaHasMiningResult" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
          <Model:Namespace.contents>
            <Model:AssociationEnd xmi.id="a394801DF0177" name="result" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3B4C849F03BB">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
            <Model:AssociationEnd xmi.id="a394801DF0195" name="schema" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a38FE324B00DE">
              <Model:AssociationEnd.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:AssociationEnd.multiplicity>
            </Model:AssociationEnd>
          </Model:Namespace.contents>
        </Model:Association>
      </Model:Namespace.contents>
    </Model:Package>
    <!-- ==================== MiningCore.org.omg.mof.idl_substitute_name=EntryPointModule    [Tag] ==================== -->
    <Model:Tag xmi.id="G.981" name="org.omg.mof.idl_substitute_name=EntryPointModule" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a395FA5C40159">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">EntryPointModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
  </Model:Namespace.contents>
</Model:Package>
<!-- ==================== Clustering    [Package] ==================== -->
<Model:Package xmi.id="a3B66D6FE025C" name="Clustering" annotation="This package contains the metamodel that represents clustering function, models, and settings." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
  <Model:Namespace.contents>
    <!-- ==================== Clustering.org.omg.mof.idl_substitute_name=ClusteringModule    [Tag] ==================== -->
    <Model:Tag xmi.id="G.982" name="org.omg.mof.idl_substitute_name=ClusteringModule" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a3B66D6FE025C">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">ClusteringModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Clustering.org.omg.mof.idl_prefix=org.omg.cwm.analysis    [Tag] ==================== -->
    <Model:Tag xmi.id="G.983" name="org.omg.mof.idl_prefix=org.omg.cwm.analysis" annotation="" tagId="org.omg.mof.idl_prefix" elements="a3B66D6FE025C">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.cwm.analysis</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Clustering.org.omg.xmi.namespace=CWMDM    [Tag] ==================== -->
    <Model:Tag xmi.id="G.984" name="org.omg.xmi.namespace=CWMDM" annotation="" tagId="org.omg.xmi.namespace" elements="a3B66D6FE025C">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CWMDM</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Clustering.com.urep.jcr.java_prefix=org.omg.java.cwm.analysis    [Tag] ==================== -->
    <Model:Tag xmi.id="G.985" name="com.urep.jcr.java_prefix=org.omg.java.cwm.analysis" annotation="" tagId="com.urep.jcr.java_prefix" elements="a3B66D6FE025C">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.java.cwm.analysis</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <Model:Import xmi.id="G.986" name="Core" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A6600C5031F"/>
    <Model:Import xmi.id="G.987" name="MiningCore" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a39E71F94024D"/>
    <!-- ==================== Clustering.AggregationFunction    [DataType] ==================== -->
    <Model:DataType xmi.id="a38FB583A0260" name="AggregationFunction" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
      <Model:ModelElement.annotation>Per ClusteringModel, there is one aggregation function: depending on the attribute type. The aggregated value is optimal if it is 0 (for distance measure) or greater values indicate optimal fit (for simiarity measure).
In the definition of functions, Wi is the field weight in the attribute, and Xi and Yi are values.</Model:ModelElement.annotation>
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcEnum xmi.tcName="AggregationFunction">
          <XMI.CorbaTcEnumLabel xmi.tcName="euclidean"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="squaredEuclidean"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="chebychev"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="cityBlock"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="minkovski"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="simpleMatching"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="jaccard"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="tanimoto"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="binarySimilarity"/>
          </XMI.CorbaTcEnum>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== Clustering.AttributeComparisonFunction    [DataType] ==================== -->
    <Model:DataType xmi.id="a395CDEB402C5" name="AttributeComparisonFunction" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
      <Model:ModelElement.annotation>When two records are compared, then either the distance or similarity is of interest. In both cases the measures can be compouted by a combination of an "inner" function and an "outer" function. The inner function compares two single field values and the outer function computes an aggregation over all fields.
Each field has a comparison function, this is either defined as a default in ClusteringModel or it can be defined per attribute.</Model:ModelElement.annotation>
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcEnum xmi.tcName="AttributeComparisonFunction">
          <XMI.CorbaTcEnumLabel xmi.tcName="absDiff"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="gaussSim"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="delta"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="equal"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="table"/>
          </XMI.CorbaTcEnum>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== Clustering.ClusteringAttributeUsage    [Class] ==================== -->
    <Model:Class xmi.id="a3A0ADA06000E" name="ClusteringAttributeUsage" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a39C62D090070">
      <Model:ModelElement.annotation>A ClusteringAttributeUsage is a subclass of AttributeUsage to support attribute usages that are specific to clustering algorithms. 
</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Clustering.ClusteringAttributeUsage.attributeComparisonFunction    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A0ADA14027B" name="attributeComparisonFunction" annotation="When two records are compared then either the distance or the similarity is of interest. In both cases the measures can be computed by a combination of an 'inner' function and an 'outer' function. The inner function compares two single field values and the outer function computes an aggregation over all fields" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a395CDEB402C5">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Clustering.ClusteringAttributeUsage.similarityScale    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A0ADA8202FC" name="similarityScale" annotation="If the attributeComparisonFunction admits a value, then similarityScale is that value. Only valid for numerical attributes. NULL otherwise." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3C22376201E4">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Clustering.ClusteringAttributeUsage.comparisonMatrix    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A6E07CD01BB" name="comparisonMatrix" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a39CF8E7103CD" referencedEnd="a3A6E07E4011E">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Clustering.ClusteringFunctionSettings    [Class] ==================== -->
    <Model:Class xmi.id="a39C62B130259" name="ClusteringFunctionSettings" annotation="A ClusteringFunctionSettings object is a subclass of MiningFunctionSettings that supports features unique to clustering algorithms, such as: self-organizing map and k-means." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a39C6234A0375">
      <Model:Namespace.contents>
        <!-- ==================== Clustering.ClusteringFunctionSettings.maxNumberOfClusters    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a39D1120601B8" name="maxNumberOfClusters" annotation="The maxNumberOfClusters attribute specifies the maximum number of clusters the clustering algorithm should generate." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Clustering.ClusteringFunctionSettings.minClusterSize    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A0AD6190316" name="minClusterSize" annotation="The minClusterSize attribute specifies the minimum number of records (cases) that must be present in a cluster to establish a cluster." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Clustering.ClusteringFunctionSettings.aggregationFunction    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a395CDCD702D3" name="aggregationFunction" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a38FB583A0260">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Clustering.ClusteringModelCBasis    [DataType] ==================== -->
    <Model:DataType xmi.id="a3B41BD9F03C5" name="ClusteringModelCBasis" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
      <Model:DataType.typeCode>
        <XMI.CorbaTypeCode>
          <XMI.CorbaTcEnum xmi.tcName="ClusteringModelCBasis">
          <XMI.CorbaTcEnumLabel xmi.tcName="centerBased"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="probabilityBased"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="partitionBased"/>
          <XMI.CorbaTcEnumLabel xmi.tcName="aggregationBased"/>
          </XMI.CorbaTcEnum>
        </XMI.CorbaTypeCode>
      </Model:DataType.typeCode>
    </Model:DataType>
    <!-- ==================== Clustering.ClusteringAttrUsageRefComparisonMatrix    [Association] ==================== -->
    <Model:Association xmi.id="a3A6E07E3016D" name="ClusteringAttrUsageRefComparisonMatrix" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A6E07E4011E" name="comparisonMatrix" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a39CF8E7103CD">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A6E07E40146" name="attribueUsage" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a3A0ADA06000E">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
  </Model:Namespace.contents>
</Model:Package>
<!-- ==================== AssociationRules    [Package] ==================== -->
<Model:Package xmi.id="a395CFA0702B6" name="AssociationRules" annotation="This package contains the metamodel that represents the constructs for frequent itemset, association rules and sequence algorithms." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
  <Model:Namespace.contents>
    <!-- ==================== AssociationRules.org.omg.mof.idl_substitute_name=AssociationRulesModule    [Tag] ==================== -->
    <Model:Tag xmi.id="G.988" name="org.omg.mof.idl_substitute_name=AssociationRulesModule" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a395CFA0702B6">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">AssociationRulesModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== AssociationRules.org.omg.mof.idl_prefix=org.omg.cwm.analysis    [Tag] ==================== -->
    <Model:Tag xmi.id="G.989" name="org.omg.mof.idl_prefix=org.omg.cwm.analysis" annotation="" tagId="org.omg.mof.idl_prefix" elements="a395CFA0702B6">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.cwm.analysis</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== AssociationRules.org.omg.xmi.namespace=CWMDM    [Tag] ==================== -->
    <Model:Tag xmi.id="G.990" name="org.omg.xmi.namespace=CWMDM" annotation="" tagId="org.omg.xmi.namespace" elements="a395CFA0702B6">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CWMDM</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== AssociationRules.com.urep.jcr.java_prefix=org.omg.java.cwm.analysis    [Tag] ==================== -->
    <Model:Tag xmi.id="G.991" name="com.urep.jcr.java_prefix=org.omg.java.cwm.analysis" annotation="" tagId="com.urep.jcr.java_prefix" elements="a395CFA0702B6">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.java.cwm.analysis</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <Model:Import xmi.id="G.992" name="Core" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A6600C5031F"/>
    <Model:Import xmi.id="G.993" name="MiningCore" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a39E71F94024D"/>
    <!-- ==================== AssociationRules.AssociationRulesFunctionSettings    [Class] ==================== -->
    <Model:Class xmi.id="a3B03B37C032E" name="AssociationRulesFunctionSettings" annotation="An AssociationRulesFunctionSettings is a subclass of FrequentItemSetFunctionSettings that supports features that are unique to association rules algorithms." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3B4F140E0397">
      <Model:Namespace.contents>
        <!-- ==================== AssociationRules.AssociationRulesFunctionSettings.minimumConfidence    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3B4F11950274" name="minimumConfidence" annotation="This specifies the minimum confidence value of each association rule to be found." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3C22376201E4">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== AssociationRules.AssociationRulesFunctionSettings.maximumRuleLength    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3B4F119B009C" name="maximumRuleLength" annotation="This is the maximum length of the antecedent and consequent item set sizes." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== AssociationRules.FrequentItemSetFunctionSettings    [Class] ==================== -->
    <Model:Class xmi.id="a3B4F140E0397" name="FrequentItemSetFunctionSettings" annotation="This is a subclass of MiningFunctionSettings that specifies the parameters specific to frequent itemset algorithms." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a39C6234A0375">
      <Model:Namespace.contents>
        <!-- ==================== AssociationRules.FrequentItemSetFunctionSettings.minimumSupport    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3B4F14A20277" name="minimumSupport" annotation="This specifies the minimum support of each frequent itemset to be found." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3C22376201E4">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== AssociationRules.FrequentItemSetFunctionSettings.exclusion    [Reference] ==================== -->
        <Model:Reference xmi.id="a3B4F14D7001B" name="exclusion" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a39D11046025E" referencedEnd="a3B4DFE0301E6">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== AssociationRules.FrequentItemSetFunctionSettings.maximumSetSize    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3B4F150601D1" name="maximumSetSize" annotation="This specifies the maximum number of items to be included in any frequent itemset to be found." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== AssociationRules.SequenceFunctionSettings    [Class] ==================== -->
    <Model:Class xmi.id="a3B03B2B2021F" name="SequenceFunctionSettings" annotation="A SequenceFunctionSettings is a subclass of FrequentItemSetFunctionSettings that supports features that are unique to sequence rules algorithms." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3B4F140E0397">
      <Model:Namespace.contents>
        <!-- ==================== AssociationRules.SequenceFunctionSettings.windowSize    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3B03C5B900CF" name="windowSize" annotation="This specifies the size of the window to be considered when executing sequence algorithm in terms of the number of items." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== AssociationRules.SettingsRefExcludedCategories    [Association] ==================== -->
    <Model:Association xmi.id="a3B4DFE030019" name="SettingsRefExcludedCategories" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3B4DFE0301E6" name="exclusion" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a39D11046025E">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3B4DFE03024A" name="settings" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a3B4F140E0397">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
  </Model:Namespace.contents>
</Model:Package>
<!-- ==================== Supervised    [Package] ==================== -->
<Model:Package xmi.id="a395CFA1100D0" name="Supervised" annotation="This package contains the metamodel that represents the constructs for supervised learning algorithms. Approximation, attribute importance and classification must implement this package." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
  <Model:Namespace.contents>
    <!-- ==================== Supervised.org.omg.mof.idl_substitute_name=SupervisedModule    [Tag] ==================== -->
    <Model:Tag xmi.id="G.994" name="org.omg.mof.idl_substitute_name=SupervisedModule" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a395CFA1100D0">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">SupervisedModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Supervised.org.omg.mof.idl_prefix=org.omg.cwm.analysis    [Tag] ==================== -->
    <Model:Tag xmi.id="G.995" name="org.omg.mof.idl_prefix=org.omg.cwm.analysis" annotation="" tagId="org.omg.mof.idl_prefix" elements="a395CFA1100D0">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.cwm.analysis</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Supervised.org.omg.xmi.namespace=CWMDM    [Tag] ==================== -->
    <Model:Tag xmi.id="G.996" name="org.omg.xmi.namespace=CWMDM" annotation="" tagId="org.omg.xmi.namespace" elements="a395CFA1100D0">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CWMDM</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Supervised.com.urep.jcr.java_prefix=org.omg.java.cwm.analysis    [Tag] ==================== -->
    <Model:Tag xmi.id="G.997" name="com.urep.jcr.java_prefix=org.omg.java.cwm.analysis" annotation="" tagId="com.urep.jcr.java_prefix" elements="a395CFA1100D0">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.java.cwm.analysis</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <Model:Import xmi.id="G.998" name="Core" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A6600C5031F"/>
    <Model:Import xmi.id="G.999" name="MiningCore" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a39E71F94024D"/>
    <!-- ==================== Supervised.LiftAnalysisPoint    [Class] ==================== -->
    <Model:Class xmi.id="a38FB5ED003D7" name="LiftAnalysisPoint" annotation="This represents the lift result for the quantile of the input data specified in this object." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:Namespace.contents>
        <!-- ==================== Supervised.LiftAnalysisPoint.subsetOfRecords    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a38FB5F2100A8" name="subsetOfRecords" annotation="The number of records for which the lift (sum of target predictions or actual target values) is given." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Supervised.LiftAnalysisPoint.aggregateTarget    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a38FB5F0302D6" name="aggregateTarget" annotation="The lift, i.e. the sum of actual positive targets for classification or the sum of the actual values for regression, for the specified subset of records." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3C22376201E4">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Supervised.LiftAnalysis    [Class] ==================== -->
    <Model:Class xmi.id="a3B4C601B0020" name="LiftAnalysis" annotation="This represents the result of lift computation applied to a supervised model." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:Namespace.contents>
        <!-- ==================== Supervised.LiftAnalysis.point    [Reference] ==================== -->
        <Model:Reference xmi.id="a3B4C60EC0360" name="point" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a38FB5ED003D7" referencedEnd="a3B0397570326">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Supervised.LiftAnalysis.targetAttributeName    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3B4C6163039D" name="targetAttributeName" annotation="This represents the name of the target attribute." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Supervised.LiftAnalysis.positiveTargetCategory    [Reference] ==================== -->
        <Model:Reference xmi.id="a3B4C611E02D6" name="positiveTargetCategory" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a39D11046025E" referencedEnd="a3B4C612C0362">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Supervised.MiningTestTask    [Class] ==================== -->
    <Model:Class xmi.id="a3B4F5015016D" name="MiningTestTask" annotation="This represents a mining task that is used to check some aspect of the quality of a classification or regression model." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3A0981130303">
      <Model:Namespace.contents>
        <!-- ==================== Supervised.MiningTestTask.computeLift    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3B4F5047006A" name="computeLift" annotation="This indicates to perform lift computation as part of test task, if true. The default is false." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Supervised.MiningTestTask.positiveTargetCategory    [Reference] ==================== -->
        <Model:Reference xmi.id="a3C34D56B02A9" name="positiveTargetCategory" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a39D11046025E" referencedEnd="a3B4A1766005C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Supervised.SupervisedFunctionSettings    [Class] ==================== -->
    <Model:Class xmi.id="a39C62B1602AD" name="SupervisedFunctionSettings" annotation="A SupervisedFunctionSettings is a subclass of MiningFunctionSettings that supports features that are unique and shared by  supervised functions, e.g., classification and approximation, as well as algorithms, e.g., decision trees and neural networks." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a39C6234A0375"/>
    <!-- ==================== Supervised.MiningTestResult    [Class] ==================== -->
    <Model:Class xmi.id="a3B4F2B420262" name="MiningTestResult" annotation="This represents the result of a test task applied to a supervised model." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3B4C849F03BB">
      <Model:Namespace.contents>
        <!-- ==================== Supervised.MiningTestResult.numberOfTestRecords    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3B4F2B5A027A" name="numberOfTestRecords" annotation="This represents the number of records applied to the test task." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Supervised.MiningTestResult.liftAnalysis    [Reference] ==================== -->
        <Model:Reference xmi.id="a3B4F509603D5" name="liftAnalysis" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3B4C601B0020" referencedEnd="a3B4F50A302D0">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Supervised.TestResultHasLiftAnalysis    [Association] ==================== -->
    <Model:Association xmi.id="a3B4F50A30009" name="TestResultHasLiftAnalysis" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3B4F50A302D0" name="liftAnalysis" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3B4C601B0020">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3B4F50A302F8" name="testResult" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a3B4F2B420262">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Supervised.LiftHasAnalysisPoint    [Association] ==================== -->
    <Model:Association xmi.id="a3B0397570324" name="LiftHasAnalysisPoint" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3B0397570325" name="liftAnalysis" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a3B4C601B0020">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3B0397570326" name="point" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a38FB5ED003D7">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Supervised.LiftRefPositiveTargetCategory    [Association] ==================== -->
    <Model:Association xmi.id="a3B4C612C0113" name="LiftRefPositiveTargetCategory" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3B4C612C0362" name="positiveTargetCategory" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a39D11046025E">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3B4C612C03DA" name="liftAnalysis" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a3B4C601B0020">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Supervised.TestTaskRefPositiveTarget    [Association] ==================== -->
    <Model:Association xmi.id="a3B4A176502DC" name="TestTaskRefPositiveTarget" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3B4A1766005C" name="positiveTargetCategory" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a39D11046025E">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3B4A176600A3" name="testTask" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a3B4F5015016D">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
  </Model:Namespace.contents>
</Model:Package>
<!-- ==================== Classification    [Package] ==================== -->
<Model:Package xmi.id="a395CFA4201E9" name="Classification" annotation="This package contains the metamodel that represents classification function, models, and settings." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
  <Model:Namespace.contents>
    <!-- ==================== Classification.org.omg.mof.idl_substitute_name=ClassificationModule    [Tag] ==================== -->
    <Model:Tag xmi.id="G.1000" name="org.omg.mof.idl_substitute_name=ClassificationModule" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a395CFA4201E9">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">ClassificationModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Classification.org.omg.mof.idl_prefix=org.omg.cwm.analysis    [Tag] ==================== -->
    <Model:Tag xmi.id="G.1001" name="org.omg.mof.idl_prefix=org.omg.cwm.analysis" annotation="" tagId="org.omg.mof.idl_prefix" elements="a395CFA4201E9">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.cwm.analysis</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Classification.org.omg.xmi.namespace=CWMDM    [Tag] ==================== -->
    <Model:Tag xmi.id="G.1002" name="org.omg.xmi.namespace=CWMDM" annotation="" tagId="org.omg.xmi.namespace" elements="a395CFA4201E9">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CWMDM</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Classification.com.urep.jcr.java_prefix=org.omg.java.cwm.analysis    [Tag] ==================== -->
    <Model:Tag xmi.id="G.1003" name="com.urep.jcr.java_prefix=org.omg.java.cwm.analysis" annotation="" tagId="com.urep.jcr.java_prefix" elements="a395CFA4201E9">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.java.cwm.analysis</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <Model:Import xmi.id="G.1004" name="Core" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A6600C5031F"/>
    <Model:Import xmi.id="G.1005" name="MiningCore" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a39E71F94024D"/>
    <Model:Import xmi.id="G.1006" name="Supervised" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a395CFA1100D0"/>
    <!-- ==================== Classification.ApplyTargetValueItem    [Class] ==================== -->
    <Model:Class xmi.id="a395258E801C7" name="ApplyTargetValueItem" annotation="This indicates that the probability value of the given target value is to appear in the output." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a39FF3C4202A9">
      <Model:Namespace.contents>
        <!-- ==================== Classification.ApplyTargetValueItem.targetValue    [Reference] ==================== -->
        <Model:Reference xmi.id="a3952599401F6" name="targetValue" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a39D11046025E" referencedEnd="a38EB32A302E7">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Classification.ClassificationAttributeUsage    [Class] ==================== -->
    <Model:Class xmi.id="a3B33A98F02FE" name="ClassificationAttributeUsage" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a39C62D090070">
      <Model:ModelElement.annotation>As a subclass of AttributeUsage, CategoricalAttributeUsage provides additional specification for categorical attributes only, in particular, a set of the positive categories. 

Positive categories are provided here since different models may choose different postive categories, hence it is not a characteristic of the data.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Classification.ClassificationAttributeUsage.positiveCategory    [Reference] ==================== -->
        <Model:Reference xmi.id="a3B33A9A2028D" name="positiveCategory" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a39D11046025E" referencedEnd="a3B33A9DB01E5">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Classification.ClassificationAttributeUsage.priors    [Reference] ==================== -->
        <Model:Reference xmi.id="a3B4F0399012C" name="priors" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A26E731037A" referencedEnd="a3B4F0378027B">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Classification.ClassificationFunctionSettings    [Class] ==================== -->
    <Model:Class xmi.id="a39C92E0C029C" name="ClassificationFunctionSettings" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a39C62B1602AD">
      <Model:ModelElement.annotation>A ClassificationFunctionSettings object is a subclass of SupervisedFunctionSettings that supports features unique to the classification mining function and corresponding algorithms, specifically costMatrix.

The costMatrix must be associated with the target MiningAttribute.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Classification.ClassificationFunctionSettings.costMatrix    [Reference] ==================== -->
        <Model:Reference xmi.id="a39D3814402FB" name="costMatrix" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a39CF8E7103CD" referencedEnd="a3A28144703CB">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Classification.ClassificationTestResult    [Class] ==================== -->
    <Model:Class xmi.id="a3B4C99FD00DC" name="ClassificationTestResult" annotation="This represents the result of a test task applied to a classification model." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3B4F2B420262">
      <Model:Namespace.contents>
        <!-- ==================== Classification.ClassificationTestResult.confusionMatrix    [Reference] ==================== -->
        <Model:Reference xmi.id="a3B4F2BC90338" name="confusionMatrix" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a39CF8E7103CD" referencedEnd="a3B039BB502E5">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Classification.ClassificationTestResult.accuracy    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3B4F2BF20143" name="accuracy" annotation="If state is successful, the absolute number or the  percentage (between 0 and 100) of correct predictions on the inputData (test data). NULL in other states." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3C22376201E4">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Classification.ClassificationTestTask    [Class] ==================== -->
    <Model:Class xmi.id="a39D10AD40335" name="ClassificationTestTask" annotation="This represents a task to check the quality of a classification model. An overall accuracy and a 'class by class' confusion matrix can be computed." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3B4F5015016D">
      <Model:Namespace.contents>
        <!-- ==================== Classification.ClassificationTestTask.testResult    [Reference] ==================== -->
        <Model:Reference xmi.id="a39D10B23034D" name="testResult" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3B4C99FD00DC" referencedEnd="a3B4F2B2D0226">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Classification.PriorProbabilities    [Class] ==================== -->
    <Model:Class xmi.id="a3A26E731037A" name="PriorProbabilities" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:ModelElement.annotation>This represents a set of prior probabilities of the categories in a mining attribute. Mostly applies to a target MiningAttribute  used for classification.
The sum of the probabilities in all priorsEntries must not exceed 1.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Classification.PriorProbabilities.prior    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A26E73E00EE" name="prior" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a39CF8F97036B" referencedEnd="a39D365070129">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Classification.PriorProbabilitiesEntry    [Class] ==================== -->
    <Model:Class xmi.id="a39CF8F97036B" name="PriorProbabilitiesEntry" annotation="This represents the probability of a category in the original data, i.e. before performing biased sampling to enrich individual values." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:Namespace.contents>
        <!-- ==================== Classification.PriorProbabilitiesEntry.targetValue    [Reference] ==================== -->
        <Model:Reference xmi.id="a39CF8FB801B0" name="targetValue" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a39D11046025E" referencedEnd="a390DC2830126">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== Classification.PriorProbabilitiesEntry.priorProbability    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a39CF8FBD0261" name="priorProbability" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3C22376201E4">
          <Model:ModelElement.annotation>This represents the probability of the targetValue in the original data.
The value must be in [0,1]</Model:ModelElement.annotation>
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Classification.ClassificationSettingsRefCostMatrix    [Association] ==================== -->
    <Model:Association xmi.id="a3A2814470262" name="ClassificationSettingsRefCostMatrix" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A28144703CB" name="costMatrix" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a39CF8E7103CD">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A28144703DF" name="settings" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a39C92E0C029C">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Classification.ClassificationAttrUsageRefCategory    [Association] ==================== -->
    <Model:Association xmi.id="a3B33A9DB0036" name="ClassificationAttrUsageRefCategory" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3B33A9DB01E5" name="positiveCategory" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a39D11046025E">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3B33A9DB0221" name="usage" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a3B33A98F02FE">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Classification.ClassificationAttrUsageHasPriors    [Association] ==================== -->
    <Model:Association xmi.id="a3B4F03780279" name="ClassificationAttrUsageHasPriors" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3B4F0378027A" name="usage" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a3B33A98F02FE">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3B4F0378027B" name="priors" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A26E731037A">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Classification.PriorProbabilitiesHasEntries    [Association] ==================== -->
    <Model:Association xmi.id="a39D365060272" name="PriorProbabilitiesHasEntries" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a39D365070129" name="prior" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a39CF8F97036B">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a39D365070133" name="priors" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a3A26E731037A">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Classification.PriorRefCategory    [Association] ==================== -->
    <Model:Association xmi.id="a390DC282021F" name="PriorRefCategory" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a390DC2830126" name="targetValue" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a39D11046025E">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a390DC2830130" name="priorsEntry" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a39CF8F97036B">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Classification.TestResultHasConfusionMatrix    [Association] ==================== -->
    <Model:Association xmi.id="a3B039BB40239" name="TestResultHasConfusionMatrix" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3B039BB502E5" name="confusionMatrix" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a39CF8E7103CD">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3B039BB50303" name="testResult" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a3B4C99FD00DC">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Classification.ClassificationTestTaskHasResult    [Association] ==================== -->
    <Model:Association xmi.id="a3B4F2B2C02C4" name="ClassificationTestTaskHasResult" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3B4F2B2D0226" name="testResult" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3B4C99FD00DC">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3B4F2B2D023A" name="testTask" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a39D10AD40335">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== Classification.TargetValueItemRefCategory    [Association] ==================== -->
    <Model:Association xmi.id="a38EB32A300AC" name="TargetValueItemRefCategory" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a38EB32A302E7" name="targetValue" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a39D11046025E">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a38EB32A30319" name="targetValueItem" annotation="" isNavigable="false" aggregation="none" isChangeable="true" type="a395258E801C7">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
  </Model:Namespace.contents>
</Model:Package>
<!-- ==================== Approximation    [Package] ==================== -->
<Model:Package xmi.id="a395CFA550060" name="Approximation" annotation="This package contains the metamodel that represents the constructs for approximation model (as known as regression)." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
  <Model:Namespace.contents>
    <!-- ==================== Approximation.org.omg.mof.idl_substitute_name=ApproximationModule    [Tag] ==================== -->
    <Model:Tag xmi.id="G.1007" name="org.omg.mof.idl_substitute_name=ApproximationModule" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a395CFA550060">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">ApproximationModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Approximation.org.omg.mof.idl_prefix=org.omg.cwm.analysis    [Tag] ==================== -->
    <Model:Tag xmi.id="G.1008" name="org.omg.mof.idl_prefix=org.omg.cwm.analysis" annotation="" tagId="org.omg.mof.idl_prefix" elements="a395CFA550060">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.cwm.analysis</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Approximation.org.omg.xmi.namespace=CWMDM    [Tag] ==================== -->
    <Model:Tag xmi.id="G.1009" name="org.omg.xmi.namespace=CWMDM" annotation="" tagId="org.omg.xmi.namespace" elements="a395CFA550060">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CWMDM</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== Approximation.com.urep.jcr.java_prefix=org.omg.java.cwm.analysis    [Tag] ==================== -->
    <Model:Tag xmi.id="G.1010" name="com.urep.jcr.java_prefix=org.omg.java.cwm.analysis" annotation="" tagId="com.urep.jcr.java_prefix" elements="a395CFA550060">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.java.cwm.analysis</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <Model:Import xmi.id="G.1011" name="MiningCore" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a39E71F94024D"/>
    <Model:Import xmi.id="G.1012" name="Supervised" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a395CFA1100D0"/>
    <!-- ==================== Approximation.ApproximationFunctionSettings    [Class] ==================== -->
    <Model:Class xmi.id="a39C92E160340" name="ApproximationFunctionSettings" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a39C62B1602AD">
      <Model:ModelElement.annotation>An ApproximationFunctionSettings is a subclass of SupervisedFunctionSettings that supports features that are unique to approximate numerical values. 

This originally was named "RegressionFunctionSettings", however, this implies a restriction on the type of algorithms that can be applied to solve the problem of approximation, or curve fitting.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Approximation.ApproximationFunctionSettings.toleratedError    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3B4F0D3E03B7" name="toleratedError" annotation="The toleratedError is defined in terms of R-squared" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3C22376201E4">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Approximation.ApproximationTestResult    [Class] ==================== -->
    <Model:Class xmi.id="a3B4C971700CB" name="ApproximationTestResult" annotation="This represents the result of a test task applied to an approximation model." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3B4F2B420262">
      <Model:Namespace.contents>
        <!-- ==================== Approximation.ApproximationTestResult.meanPredictedValue    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3B4F2DB202EB" name="meanPredictedValue" annotation="Mean of the predicted values for test data. NULL if not computed." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3C22376201E4">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Approximation.ApproximationTestResult.meanActualValue    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3B4F2DB701E4" name="meanActualValue" annotation="Mean of the actual values in the target attribute for test data. NULL if not computed." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3C22376201E4">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Approximation.ApproximationTestResult.meanAbsoluteError    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3B4F2DBE0068" name="meanAbsoluteError" annotation="Mean of the absolute values of the prediction error on the test data.. NULL if not computed." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3C22376201E4">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Approximation.ApproximationTestResult.rmsError    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3B4F2DC400F3" name="rmsError" annotation="Root of the mean squared errors on the test data. NULL if not computed." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3C22376201E4">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== Approximation.ApproximationTestResult.rSquared    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3B4F2DC80062" name="rSquared" annotation="The squared Pearson correlation coefficient computed on the test data. NULL if not computed." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3C22376201E4">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Approximation.ApproximationTestTask    [Class] ==================== -->
    <Model:Class xmi.id="a38FB5F4802DF" name="ApproximationTestTask" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3B4F5015016D">
      <Model:ModelElement.annotation>This represents a task to check the quality of a regression model. A comparison of mean predicted values and mean actual values can be done and a number of numerical error measures can be computed.
NULL values mean that the model did not compute the value.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== Approximation.ApproximationTestTask.testResult    [Reference] ==================== -->
        <Model:Reference xmi.id="a3B4F4FAF0102" name="testResult" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3B4C971700CB" referencedEnd="a3B4F2B91028E">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== Approximation.ApproximationTestResultHasResult    [Association] ==================== -->
    <Model:Association xmi.id="a3B4F2B9003C3" name="ApproximationTestResultHasResult" annotation="" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3B4F2B91028E" name="testResult" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3B4C971700CB">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3B4F2B9102A2" name="testTask" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a38FB5F4802DF">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
  </Model:Namespace.contents>
</Model:Package>
<!-- ==================== AttributeImportance    [Package] ==================== -->
<Model:Package xmi.id="a395CFCB3036E" name="AttributeImportance" annotation="This package contains the metamodel that represents the constructs for attribute importance model." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
  <Model:Namespace.contents>
    <!-- ==================== AttributeImportance.org.omg.mof.idl_substitute_name=AttributeImportanceModule    [Tag] ==================== -->
    <Model:Tag xmi.id="G.1013" name="org.omg.mof.idl_substitute_name=AttributeImportanceModule" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a395CFCB3036E">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">AttributeImportanceModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== AttributeImportance.org.omg.mof.idl_prefix=org.omg.cwm.analysis    [Tag] ==================== -->
    <Model:Tag xmi.id="G.1014" name="org.omg.mof.idl_prefix=org.omg.cwm.analysis" annotation="" tagId="org.omg.mof.idl_prefix" elements="a395CFCB3036E">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.cwm.analysis</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== AttributeImportance.org.omg.xmi.namespace=CWMDM    [Tag] ==================== -->
    <Model:Tag xmi.id="G.1015" name="org.omg.xmi.namespace=CWMDM" annotation="" tagId="org.omg.xmi.namespace" elements="a395CFCB3036E">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CWMDM</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== AttributeImportance.com.urep.jcr.java_prefix=org.omg.java.cwm.analysis    [Tag] ==================== -->
    <Model:Tag xmi.id="G.1016" name="com.urep.jcr.java_prefix=org.omg.java.cwm.analysis" annotation="" tagId="com.urep.jcr.java_prefix" elements="a395CFCB3036E">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.java.cwm.analysis</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <Model:Import xmi.id="G.1017" name="Core" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A6600C5031F"/>
    <Model:Import xmi.id="G.1018" name="Supervised" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a395CFA1100D0"/>
    <!-- ==================== AttributeImportance.AttributeImportanceSettings    [Class] ==================== -->
    <Model:Class xmi.id="a3B4C9A120321" name="AttributeImportanceSettings" annotation="This is a subclass of MiningFunctionSettings that supports features unique to attribute importance identification, as known as feature selection." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a39C62B1602AD">
      <Model:Namespace.contents>
        <!-- ==================== AttributeImportance.AttributeImportanceSettings.maximumResultSize    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3B4F1858033C" name="maximumResultSize" annotation="The attribute maximumResultSize indicates to return the top N most important attributes. It may return fewer." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== AttributeImportance.AttributeImportanceSettings.returnTop    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3B4F19AD00F7" name="returnTop" annotation="If true, returns the most important attributes. If false, the least important." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
  </Model:Namespace.contents>
</Model:Package>
<!-- ==================== InformationVisualization    [Package] ==================== -->
<Model:Package xmi.id="a3857006102D5" name="InformationVisualization" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
  <Model:ModelElement.annotation>The CWM Information Visualization metamodel defines metadata supporting the problem domain of "information publishing" or, more generally, "information visualization".

Within the data warehousing environment, data is collected from numerous, diverse sources and transformed into a unified representation that facilitates the analysis of data for purposes of gaining business insight. Robust and flexible information visualization tools are key to the effective analysis of this information. Information visualization tools must be capable of understanding and preserving the "logical structure" of data warehouse information, while enabling the user to perform any number of "rendering transformations" on information content (e.g., displaying the same query result set in several different formats, such as a printed report, Web page, pie chart, bar graph, etc.).

Since information visualization is a very broad problem domain, with a diverse set of possible solutions and many evolving standards, the CWM Information Visualization metamodel defines very generic, container-like metadata constructs that either contain or reference more complex visualization mechanisms at the M1-level. These metadata structures are intended to support the minimal metadata required to interchange more complex M1 models of visualization mechanisms.

The Information Visualization package depends on the following packages:

    org.omg.cwm.objectmodel.core
    org.omg.cwm.foundation.expressions

RenderedObject is the logical proxy for an arbitrary ModelElement that is to be rendered via some rendering transformation or process. A RenderedObject may be composed of an arbitrary number of other RenderedObjects (i.e., components), and may have topological relationships to still other RenderedObjects. The formula attribute allows for the specification of any implementation-dependent expression that completes the definition of a RenderedObject. For example, the formula might specify the position of the RenderedObject within a two-dimensional grid, or in relation to one of its neighbors; e.g., formula = "neighbor(x, y) + (delta-x, delta-y)".

A RenderedObject generally references one or more Renderings that specify how the enderedObject is actually presented. One of these associated Renderings may optionally be designated as a default Rendering. 

A Rendering is semantically equivalent to a transformation, in that it transforms a source RenderedObject to some target "displayed" (or otherwise "presented" object -- e.g., a displayed image or an audio clip) . An instance of Rendering is fully specified via its formula attribute, which, like RenderedObject, contains an implementation-dependent expression.

Thus, a RenderedObject may be viewed as the "logical description" of an object to be rendered, independently of how it is actually presented by any of its associated Renderings, and Renderings may be viewed as transformations that control the presentation of the RenderedObject while preserving its logical structure. 

Note that a RenderedObject may be the target of a complex transformation (i.e., utilizing the CWM Transformation package). For example, an N-dimensional OLAP cube might be transformed into an equivalent, two-dimensional, composite RenderedObject, with several dimensions mapped to row and column edges, respectively, and all other dimensions constrained to single member values. Several Renderings may then be defined and associated with the resultant RenderedObject, mapping the two-dimensional logical structure to the surface of a display screen in various different formats (e.g., spreadsheet, pie chart, bar graph, etc.).

Possible types of Renderings include: Screen, paper, voice, Web, HTML documents, XML/XSL, languages based on extensions to XML, SVG, visual objects, responses to keying (e.g., keying interception plus rules), etc. 

XSLRendering represents a useful subtype of Rendering thats based on XSL (e.g., this subtypes formula might contain a procedure that uses XSL to create an HTML document).

Finally, RenderedObjectSet represents a simple container of both logical RenderedObjects and available Renderings.

The inheritance of the Information Visualization metamodel from the Object Model is shown in Fig. 16-2.

OCL Representation of Information Visualization Constraints

[C-1] The set of Renderings includes the default Rendering.
context RenderedObject inv:
self.defaultRendering-&gt;notEmpty implies
self.rendering-&gt;includes( self.defaultRendering )

[C-2] A RenderedObject may not reference itself as a Neighbor nor as a Component.
context RenderedObject
inv: self.neighbor-&gt;excludes( self )
inv: self.component-&gt;excludes( self )

[C-3] A RenderedObject may not reference one of its Neighbors as a Component (and vice versa).
context RenderedObject inv:
(self.neighbor-&gt;notEmpty and self.component-&gt;notEmpty) implies
self.neighbor-&gt;intersection( self.component )-&gt;isEmpty

The transitive closure of Neighbors of an instance of RenderedObject must not include the RenderedObject instance.

The transitive closure of Components of an instance of RenderedObject must not include the RenderedObject instance.</Model:ModelElement.annotation>
  <Model:Namespace.contents>
    <!-- ==================== InformationVisualization.org.omg.mof.idl_prefix=org.omg.cwm.analysis    [Tag] ==================== -->
    <Model:Tag xmi.id="G.1019" name="org.omg.mof.idl_prefix=org.omg.cwm.analysis" annotation="" tagId="org.omg.mof.idl_prefix" elements="a3857006102D5">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.cwm.analysis</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== InformationVisualization.org.omg.xmi.namespace=CWMIV    [Tag] ==================== -->
    <Model:Tag xmi.id="G.1020" name="org.omg.xmi.namespace=CWMIV" annotation="" tagId="org.omg.xmi.namespace" elements="a3857006102D5">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CWMIV</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== InformationVisualization.org.omg.mof.idl_substitute_name=InformationVisualizationModule    [Tag] ==================== -->
    <Model:Tag xmi.id="G.1021" name="org.omg.mof.idl_substitute_name=InformationVisualizationModule" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a3857006102D5">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">InformationVisualizationModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== InformationVisualization.com.urep.jcr.java_prefix=org.omg.java.cwm.analysis    [Tag] ==================== -->
    <Model:Tag xmi.id="G.1022" name="com.urep.jcr.java_prefix=org.omg.java.cwm.analysis" annotation="" tagId="com.urep.jcr.java_prefix" elements="a3857006102D5">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.java.cwm.analysis</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <Model:Import xmi.id="G.1023" name="Core" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A6600C5031F"/>
    <Model:Import xmi.id="G.1024" name="Expressions" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a38207A600078"/>
    <!-- ==================== InformationVisualization.RenderedObject    [Class] ==================== -->
    <Model:Class xmi.id="a385703C20213" name="RenderedObject" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a32989FB2023D">
      <Model:ModelElement.annotation>RenderedObject serves as a logical "proxy" for an arbitrary ModelElement that is to be
rendered.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== InformationVisualization.RenderedObject.formula    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a38577C6D0153" name="formula" annotation="Allows for the specification of any implementation-dependent expression that completes the definition of a RenderedObject." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a376A84310237">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== InformationVisualization.RenderedObject.action    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A5E4382018E" name="action" annotation="Specifies some implementation-dependent action associated with a RenderedObject." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== InformationVisualization.RenderedObject.fileName    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A5E438603B1" name="fileName" annotation="Specifies the name of a file persisting an instance of RenderedObject." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== InformationVisualization.RenderedObject.type    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A5E438C02E7" name="type" annotation="Specifies some implementation-dependent type associated with a RenderedObject" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== InformationVisualization.RenderedObject.url    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A5E439003E7" name="url" annotation="Specifies a URL identifying some instance of RenderedObject." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== InformationVisualization.RenderedObject.rendering    [Reference] ==================== -->
        <Model:Reference xmi.id="a386E7A1703DF" name="rendering" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a385700B8019A" referencedEnd="a3857050B00A8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== InformationVisualization.RenderedObject.defaultRendering    [Reference] ==================== -->
        <Model:Reference xmi.id="a386E6B4A02AB" name="defaultRendering" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a385700B8019A" referencedEnd="a38570BCA03D0">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== InformationVisualization.RenderedObject.component    [Reference] ==================== -->
        <Model:Reference xmi.id="a386E7A800191" name="component" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a385703C20213" referencedEnd="a38570471026F">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== InformationVisualization.RenderedObject.composite    [Reference] ==================== -->
        <Model:Reference xmi.id="a386E7A8D0258" name="composite" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a385703C20213" referencedEnd="a385704710265">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== InformationVisualization.RenderedObject.neighbor    [Reference] ==================== -->
        <Model:Reference xmi.id="a386E7A93004E" name="neighbor" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a385703C20213" referencedEnd="a38577D790018">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== InformationVisualization.RenderedObject.referencingNeighbor    [Reference] ==================== -->
        <Model:Reference xmi.id="a38825AB30336" name="referencingNeighbor" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a385703C20213" referencedEnd="a38577D79002C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== InformationVisualization.RenderedObject.modelElement    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A5E3A360300" name="modelElement" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A5C7301CC" referencedEnd="a38570F9B01DD">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== InformationVisualization.RenderedObject.renderedObjectSet    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A5E3C7D0378" name="renderedObjectSet" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3857880001B9" referencedEnd="a3A5E3AAA0021">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== InformationVisualization.RenderedObjectSet    [Class] ==================== -->
    <Model:Class xmi.id="a3857880001B9" name="RenderedObjectSet" annotation="RenderedObjectSet is a container of RenderedObjects and available Renderings." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5D19033E">
      <Model:Namespace.contents>
        <!-- ==================== InformationVisualization.RenderedObjectSet.renderedObject    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A5E3BAD0182" name="renderedObject" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a385703C20213" referencedEnd="a3A5E3AA9032D">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== InformationVisualization.RenderedObjectSet.rendering    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A5E3C2C000A" name="rendering" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a385700B8019A" referencedEnd="a3A5E3AB90005">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== InformationVisualization.org.omg.mof.idl_substitute_name=CwmRenderedObjectSet    [Tag] ==================== -->
    <Model:Tag xmi.id="G.1025" name="org.omg.mof.idl_substitute_name=CwmRenderedObjectSet" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a3857880001B9">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CwmRenderedObjectSet</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== InformationVisualization.Rendering    [Class] ==================== -->
    <Model:Class xmi.id="a385700B8019A" name="Rendering" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a32989F9700FE">
      <Model:ModelElement.annotation>Rendering is a specification of how an associated RenderedObject is to be "rendered" in some medium.  This usually consists of a projection of an object of arbitrary dimensionality onto a 2-dimensional surface, but it may also include non-physical representations as well (such as audio).

A Rendering is semantically equivalent to a Transformation, in that it transforms a source RenderedObject to some target "presented" object.  An instance of Rendering is fully specified via its formula attribute, which contains an implementation-dependent expression that defines the transformation and tracks transformation lineage.

Possible types of instances of Rendering:
Screen, Paper, Voice, Web, HTML Document, XML/XSL, languages based on extensions to XML, SVG, Visual objects, responses to keying (keying interception plus rules), etc.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== InformationVisualization.Rendering.formula    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3857021E01F1" name="formula" annotation="Implementation-dependent procedure for generating the Rendering (e.g., a usage of XSL to generate an HTML document).  Tracks the transformation lineage of the Rendering." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a376A84310237">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== InformationVisualization.Rendering.action    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A5E475D00AA" name="action" annotation="Specifies some implementation-dependent action associated with a Rendering." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== InformationVisualization.Rendering.fileName    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A5E475D00C8" name="fileName" annotation="Specifies the name of a file persisting an instance of Rendering." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== InformationVisualization.Rendering.type    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A5E475D00E6" name="type" annotation="Specifies some implementation-dependent type associated with a Rendering." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== InformationVisualization.Rendering.url    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3A5E475D014A" name="url" annotation="Specifies a URL identifying some instance of Rendering." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== InformationVisualization.Rendering.renderedObject    [Reference] ==================== -->
        <Model:Reference xmi.id="a386E7BDB012C" name="renderedObject" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a385703C20213" referencedEnd="a3857050B00B2">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== InformationVisualization.Rendering.defaultedRenderedObject    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A676A47020A" name="defaultedRenderedObject" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a385703C20213" referencedEnd="a38570BCA03DA">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== InformationVisualization.Rendering.renderedObjectSet    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A5E3CC700A3" name="renderedObjectSet" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3857880001B9" referencedEnd="a3A5E3AB9007D">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== InformationVisualization.XSLRendering    [Class] ==================== -->
    <Model:Class xmi.id="a38596F6E005F" name="XSLRendering" annotation="XSLRendering represents a useful subclass of Rendering based on XSL (i.e., this subclass' formula might contain a procedure that uses XSL to create an HTML document)." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a385700B8019A"/>
    <!-- ==================== InformationVisualization.CompositesReferenceComponents    [Association] ==================== -->
    <Model:Association xmi.id="a385704620304" name="CompositesReferenceComponents" annotation="A RenderedObject may reference one or more &quot;component&quot; RenderedObjects, from which it is logically composed." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a385704710265" name="composite" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a385703C20213">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a38570471026F" name="component" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a385703C20213">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== InformationVisualization.RenderedObjectsReferenceRenderings    [Association] ==================== -->
    <Model:Association xmi.id="a3857050A0179" name="RenderedObjectsReferenceRenderings" annotation="A RenderedObject may reference any number of Renderings.  A Rendering may be referenced by any number of RenderedObjects." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3857050B00A8" name="rendering" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a385700B8019A">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3857050B00B2" name="renderedObject" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a385703C20213">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== InformationVisualization.RenderedObjectsReferenceDefaultRendering    [Association] ==================== -->
    <Model:Association xmi.id="a38570BC90157" name="RenderedObjectsReferenceDefaultRendering" annotation="A RenderedObject may reference a default Rendering." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a38570BCA03D0" name="defaultRendering" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a385700B8019A">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a38570BCA03DA" name="defaultedRenderedObject" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a385703C20213">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== InformationVisualization.RenderedObjectsReferenceModelElement    [Association] ==================== -->
    <Model:Association xmi.id="a38570F9A0240" name="RenderedObjectsReferenceModelElement" annotation="One or more RenderedObjects may reference an arbitrary ModelElement." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a38570F9B01D3" name="renderedObject" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a385703C20213">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a38570F9B01DD" name="modelElement" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a327A5C7301CC">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== InformationVisualization.NeighborsReferenceNeighbors    [Association] ==================== -->
    <Model:Association xmi.id="a38577D6B0375" name="NeighborsReferenceNeighbors" annotation="A RenderedObject may reference one or more &quot;neighboring&quot; RenderedObjects." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a38577D790018" name="neighbor" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a385703C20213">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a38577D79002C" name="referencingNeighbor" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a385703C20213">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== InformationVisualization.RenderedObjectSetOwnsRenderedObjects    [Association] ==================== -->
    <Model:Association xmi.id="a3A5E3AA90002" name="RenderedObjectSetOwnsRenderedObjects" annotation="A RenderedObjectSet may own any number of RenderedObjects." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A5E3AA9032D" name="renderedObject" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a385703C20213">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A5E3AAA0021" name="renderedObjectSet" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a3857880001B9">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== InformationVisualization.RenderedObjectSetOwnsRenderings    [Association] ==================== -->
    <Model:Association xmi.id="a3A5E3AB8007C" name="RenderedObjectSetOwnsRenderings" annotation="A RenderedObjectSet may own any number of Renderings." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A5E3AB90005" name="rendering" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a385700B8019A">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A5E3AB9007D" name="renderedObjectSet" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a3857880001B9">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
  </Model:Namespace.contents>
</Model:Package>
<!-- ==================== BusinessNomenclature    [Package] ==================== -->
<Model:Package xmi.id="a381DE0120379" name="BusinessNomenclature" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
  <Model:ModelElement.annotation>Business users of data warehouses need to have a good understanding of what information and tools exist in a data warehouse. They need to understand what the information means from a business perspective, how it is derived, from what data resources it is derived, and what analysis and reporting tools exist for manipulating and reporting the information. They may also need to subscribe to analysis and reporting tools, and have them run with results delivered to them on a regular basis.
 
The BusinessNomenclature package contains classes and associations that can be used to represent business metadata. Easy access to this business metadata enables business users to exploit the value of the information in a data warehouse. It can also aid technical users in certain tasks. An example is the use of common business terms and concepts for discussing information requirements with business users. Another example is accessing business intelligence tools for analyzing the impact of warehouse design changes.

The scope of the BusinessNomenclature package is restricted to the domain of data warehousing and business intelligence.

This section provides a description of the main features of the BusinessNomenclature package.

The BusinessNomenclature package provides two main constructs to represent business terms and concepts and related semantics:

    Taxonomy is a collection of concepts that provide the context for the meaning of a particular term.
    Glossary is a collection of terms and various related forms of the term.

A taxonomy is a collection of concepts. Concepts represent semantic information and relationships. Concepts are identified by terms, which in turn are manifested by a word or phrase. More than one term may describe the same concept and a given term may describe more than one concept.
A glossary is a collection of terms that are related through explicit or implicit relationships. Terms may be preferred (the term best representing its concept) and thus represent the vocabulary of a business domain or user. Terms may be synonyms and point at the preferred term. A preferred term and its synonyms represent the fact that several terms describe the same concept although with different shades of meaning.

Terms may be arranged into a hierarchy of more generic and more specific elements. This relationship allows substituting a narrower term, such as "USA", for a wider term, such as "country".

The BusinessNomenclature package depends on the following packages:

    omg.org::CWM::ObjectModel::Core

The metamodel diagram for the BusinessNomenclature package is split into two parts. The first diagram shows the BusinessNomenclature classes and associations, while the second shows the inheritance hierarchy.

OCL Representation of Business Nomenclature Constraints
[C-1] A Concept may not relate to itself.
context Concept
inv: self.relatedConcept-&gt;forAll ( p | p &lt;&gt; self )

[C-2] The parent of a Glossary must be a Glossary.
context Glossary
inv: self.parent.oclIsKindOf( Glossary )

[C-3] The child of a Glossary must be a Glossary.
context Glossary
inv: self.child-&gt;forAll( p | p.oclIsKindOf( Glossary ) )

[C-4] The parent of a Taxonomy must be a Taxonomy.
context Taxonomy
inv: self.parent.oclIsKindOf( Taxonomy )

[C-5] The child of a Taxonomy must be a Taxonomy.
context Taxonomy
inv: self.child-&gt;forAll( p | p.oclIsKindOf( Taxonomy ) )

[C-6] A Term may not relate to itself.
context Term
inv: self.relatedTerm-&gt;forAll ( p | p &lt;&gt; self )

[C-7] A VocabularyElement may not relate to itself.
context Vocabulary
inv: self.relatedElement-&gt;forAll ( p | p &lt;&gt; self )

[C-8] The RelatedConcepts association is derived from the RelatedVocabularyElements association. All ends of the RelatedConcepts association must be Concepts.
context RelatedConcepts
inv: RelatedVocabularyElements.allInstances.select( element.oclIsKindOf( Concept )
and relatedElement.oclIsKindOf( Concept ) )

[C-9] The RelatedTerms association is derived from the RelatedVocabularyElements association. All ends of the RelatedTerms association must beTerms.
context RelatedTerms
inv: RelatedVocabularyElements.allInstances.select( element.oclIsKindOf( Term ) and
relatedElement.oclIsKindOf( Term ) )</Model:ModelElement.annotation>
  <Model:Namespace.contents>
    <!-- ==================== BusinessNomenclature.org.omg.xmi.namespace=CWMBUS    [Tag] ==================== -->
    <Model:Tag xmi.id="G.1026" name="org.omg.xmi.namespace=CWMBUS" annotation="" tagId="org.omg.xmi.namespace" elements="a381DE0120379">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CWMBUS</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== BusinessNomenclature.org.omg.mof.idl_prefix=org.omg.cwm.analysis    [Tag] ==================== -->
    <Model:Tag xmi.id="G.1027" name="org.omg.mof.idl_prefix=org.omg.cwm.analysis" annotation="" tagId="org.omg.mof.idl_prefix" elements="a381DE0120379">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.cwm.analysis</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== BusinessNomenclature.org.omg.mof.idl_substitute_name=BusinessNomenclatureModule    [Tag] ==================== -->
    <Model:Tag xmi.id="G.1028" name="org.omg.mof.idl_substitute_name=BusinessNomenclatureModule" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a381DE0120379">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">BusinessNomenclatureModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== BusinessNomenclature.com.urep.jcr.java_prefix=org.omg.java.cwm.analysis    [Tag] ==================== -->
    <Model:Tag xmi.id="G.1029" name="com.urep.jcr.java_prefix=org.omg.java.cwm.analysis" annotation="" tagId="com.urep.jcr.java_prefix" elements="a381DE0120379">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.java.cwm.analysis</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <Model:Import xmi.id="G.1030" name="Core" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A6600C5031F"/>
    <!-- ==================== BusinessNomenclature.VocabularyElement    [Class] ==================== -->
    <Model:Class xmi.id="a381DEBC70094" name="VocabularyElement" annotation="This represents a common superclass for Concepts and Terms." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:Namespace.contents>
        <!-- ==================== BusinessNomenclature.VocabularyElement.definition    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3872DF6203B7" name="definition" annotation="Provides the definition of the VocabularyElement." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== BusinessNomenclature.VocabularyElement.example    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a381F7FC702D3" name="example" annotation="Provides examples of the VocabularyElement." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== BusinessNomenclature.VocabularyElement.usage    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a381F7FE20065" name="usage" annotation="Identifies typical usage of the VocabularyElement." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== BusinessNomenclature.VocabularyElement.modelElement    [Reference] ==================== -->
        <Model:Reference xmi.id="a38739987017F" name="modelElement" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A5C7301CC" referencedEnd="a385A8A640279">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== BusinessNomenclature.Nomenclature    [Class] ==================== -->
    <Model:Class xmi.id="a381DED5D031C" name="Nomenclature" annotation="This represents a common superclass for Taxonomy and Glossary." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5D19033E"/>
    <!-- ==================== BusinessNomenclature.Taxonomy    [Class] ==================== -->
    <Model:Class xmi.id="a381DED100072" name="Taxonomy" annotation="This represents a collection of Concepts that form an ontology." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a381DED5D031C">
      <Model:Namespace.contents>
        <!-- ==================== BusinessNomenclature.Taxonomy.domain    [Reference] ==================== -->
        <Model:Reference xmi.id="a3872E25D02DB" name="domain" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a32B69F3A0118" referencedEnd="a3A2C18630036">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== BusinessNomenclature.Taxonomy.concept    [Reference] ==================== -->
        <Model:Reference xmi.id="a3872E29402B2" name="concept" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A5C7301CC" referencedEnd="a3A2C186203A1">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== BusinessNomenclature.Taxonomy.subtaxonomy    [Reference] ==================== -->
        <Model:Reference xmi.id="a38739E62026E" name="subtaxonomy" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a381DED5D031C" referencedEnd="a38739C70024A">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== BusinessNomenclature.Glossary    [Class] ==================== -->
    <Model:Class xmi.id="a381DED3F028C" name="Glossary" annotation="This represents a collection of Terms." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a381DED5D031C">
      <Model:Namespace.contents>
        <!-- ==================== BusinessNomenclature.Glossary.language    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a385A91470056" name="language" annotation="Identifies the language that the Glossary is represented in." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== BusinessNomenclature.Glossary.taxonomy    [Reference] ==================== -->
        <Model:Reference xmi.id="a3872E3B601F4" name="taxonomy" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a381DED100072" referencedEnd="a381F260702A3">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== BusinessNomenclature.Glossary.term    [Reference] ==================== -->
        <Model:Reference xmi.id="a3872E3E601FD" name="term" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A5C7301CC" referencedEnd="a3A2C186203A1">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== BusinessNomenclature.Glossary.subglossary    [Reference] ==================== -->
        <Model:Reference xmi.id="a38739EB00003" name="subglossary" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a381DED5D031C" referencedEnd="a38739C70024A">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== BusinessNomenclature.BusinessDomain    [Class] ==================== -->
    <Model:Class xmi.id="a385A82F8008F" name="BusinessDomain" annotation="This represents a business domain." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5D19033E">
      <Model:Namespace.contents>
        <!-- ==================== BusinessNomenclature.BusinessDomain.taxonomy    [Reference] ==================== -->
        <Model:Reference xmi.id="a3872E13A02D3" name="taxonomy" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A5C7301CC" referencedEnd="a3A2C186203A1">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== BusinessNomenclature.Concept    [Class] ==================== -->
    <Model:Class xmi.id="a381DEB1E0376" name="Concept" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a381DEBC70094">
      <Model:ModelElement.annotation>This represents a business idea or notion. 

Concepts are represented by Terms. Users use Terms that are familiar to them in their business environment to refer to Concepts.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== BusinessNomenclature.Concept.taxonomy    [Reference] ==================== -->
        <Model:Reference xmi.id="a3872E33F02CC" name="taxonomy" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a32B69F3A0118" referencedEnd="a3A2C18630036">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== BusinessNomenclature.Concept.relatedConcept    [Reference] ==================== -->
        <Model:Reference xmi.id="a3872E5C2016B" name="relatedConcept" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a381DEB1E0376" referencedEnd="a3823197B03CF">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== BusinessNomenclature.Term    [Class] ==================== -->
    <Model:Class xmi.id="a381DEB57026A" name="Term" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a381DEBC70094">
      <Model:ModelElement.annotation>This represents words or phrases used by business users to refer to Concepts.

A Term has a definition in a specific context. The context is provided by the referenced Concept that describes the underlying semantics.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== BusinessNomenclature.Term.glossary    [Reference] ==================== -->
        <Model:Reference xmi.id="a3872E5020273" name="glossary" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a32B69F3A0118" referencedEnd="a3A2C18630036">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== BusinessNomenclature.Term.concept    [Reference] ==================== -->
        <Model:Reference xmi.id="a3872E5310127" name="concept" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a381DEB1E0376" referencedEnd="a381F262B0359">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== BusinessNomenclature.Term.relatedTerm    [Reference] ==================== -->
        <Model:Reference xmi.id="a3872E61D0220" name="relatedTerm" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a381DEB57026A" referencedEnd="a3823198E039A">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== BusinessNomenclature.Term.preferredTerm    [Reference] ==================== -->
        <Model:Reference xmi.id="a3872E65B0247" name="preferredTerm" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a381DEB57026A" referencedEnd="a3872DB8B01C6">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== BusinessNomenclature.Term.narrowerTerm    [Reference] ==================== -->
        <Model:Reference xmi.id="a3872E69600DA" name="narrowerTerm" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a381DEB57026A" referencedEnd="a3872DC7A014B">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== BusinessNomenclature.GlossaryToTaxonomy    [Association] ==================== -->
    <Model:Association xmi.id="a381F260402BD" name="GlossaryToTaxonomy" annotation="This association relates a Glossary to its Taxonomies." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a381F2607028F" name="glossary" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a381DED3F028C">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a381F260702A3" name="taxonomy" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a381DED100072">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== BusinessNomenclature.TermToConcept    [Association] ==================== -->
    <Model:Association xmi.id="a381F262A01D1" name="TermToConcept" annotation="This association relates a Term to its Concepts." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a381F262B0359" name="concept" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a381DEB1E0376">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a381F262B036E" name="term" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a381DEB57026A">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== BusinessNomenclature.RelatedVocabularyElements    [Association] ==================== -->
    <Model:Association xmi.id="a3823161402C4" name="RelatedVocabularyElements" annotation="This association relates a VocabularyElement to its related VocabularyElements." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a382316240335" name="relatedElement" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a381DEBC70094">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a382316240349" name="element" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a381DEBC70094">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== BusinessNomenclature.RelatedConcepts    [Association] ==================== -->
    <Model:Association xmi.id="a3823197402A3" name="RelatedConcepts" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:ModelElement.annotation>This association relates a Concept to its related Concepts.

This association is derived from the RelatedVocabularyElements association. All ends of the association must be Concepts. [C-8]</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3823197B03CF" name="relatedConcept" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a381DEB1E0376">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3823197B03E3" name="concept" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a381DEB1E0376">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== BusinessNomenclature.RelatedTerms    [Association] ==================== -->
    <Model:Association xmi.id="a3823198200CC" name="RelatedTerms" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:ModelElement.annotation>This association relates a Term to its related Terms.

This association is derived from the RelatedVocabularyElements association. All ends of the association must be Terms.[C-9]</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3823198E039A" name="relatedTerm" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a381DEB57026A">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3823198E03AE" name="term" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a381DEB57026A">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== BusinessNomenclature.VocabularyElementToModelElement    [Association] ==================== -->
    <Model:Association xmi.id="a385A8A620208" name="VocabularyElementToModelElement" annotation="This association relates a VocabularyElement to the ModelElements for which the VocabularyElement provides business meaning." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a385A8A640279" name="modelElement" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a327A5C7301CC">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a385A8A6602E0" name="vocabularyElement" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a381DEBC70094">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== BusinessNomenclature.SynonymToPreferredTerm    [Association] ==================== -->
    <Model:Association xmi.id="a3872DB7D01C6" name="SynonymToPreferredTerm" annotation="This association relates a synonym to its preferred term." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3872DB8B01C6" name="preferredTerm" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a381DEB57026A">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3872DB8B01EE" name="synonym" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a381DEB57026A">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== BusinessNomenclature.WiderToNarrowerTerm    [Association] ==================== -->
    <Model:Association xmi.id="a3872DC6F00B9" name="WiderToNarrowerTerm" annotation="This association relates a wider term to its narrower terms." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3872DC7A0123" name="widerTerm" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a381DEB57026A">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3872DC7A014B" name="narrowerTerm" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a381DEB57026A">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== BusinessNomenclature.NomenclatureHierarchy    [Association] ==================== -->
    <Model:Association xmi.id="a38739C68011C" name="NomenclatureHierarchy" annotation="This aggregation relates a parent Nomenclature to its child Nomenclatures." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a38739C700236" name="parent" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a381DED5D031C">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a38739C70024A" name="child" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a381DED5D031C">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
  </Model:Namespace.contents>
</Model:Package>
<!-- ==================== WarehouseProcess    [Package] ==================== -->
<Model:Package xmi.id="a357DC1E5015B" name="WarehouseProcess" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
  <Model:ModelElement.annotation>The Warehouse Process package documents the process flows used to execute transformations. These process flows may be documented at the level of a complete TransformationActivity or its individual TransformationSteps. A WarehouseProcess object associates a transformation with a set of events which will be used to trigger the execution of the transformation.

The Warehouse Process package depends on the following packages:

    org.omg::CWM::ObjectModel::Core
    org.omg::CWM::ObjectModel::Behavioral
    org.omg::CWM::Analysis::Transformation

A WarehouseProcess object represents the processing of a transformation. It is instantiated as one of its subtypes WarehouseActivity or WarehouseStep, depending on whether it represents the processing of a TransformationActivity or a Transformation Step.

A WarehouseProcess may be associated with one or more WarehouseEvents, each identifying events that cause the processing to be initiated. It may also be associated with one or more internal events that will be triggered when processing terminates. A ProcessPackage may be used to group together related WarehouseActivities.

WarehouseEvents are divided into three categories: scheduled, external and internal. Scheduled events can either be defined as a point in time (each Wednesday at 2 pm) or be defined by intervals (every five minutes). A point in time event can be defined as a custom calendar which contains a set of calendar dates. This allows a series of dates to be reused across several WarehouseProcesses.

External events are triggered by something happening outside the data warehouse, for example by a batch process which is not described as a WarehouseProcess. Internal events are triggered by the termination of a WarehouseProcess. They can be either retry events or cascade events. Retry events normally trigger a rerun of the same WarehouseProcess, whereas cascade events normally trigger a different WarehouseProcess. An internal event may define a condition that determines whether or not the event is triggered. This condition can use details of the execution of the triggering WarehouseProcess recorded in the relevant ActivityExecution and StepExecution objects.

OCL Representation of Warehouse Process Constraints

[C-1] month must be specified when recurringType is everyYear.
context RecurringPointInTimeEvent inv:
self.recurringType=everyYear implies self.month-&gt;notEmpty

[C-2] month must be between 1 and 12 (inclusive) when specified.
context RecurringPointInTimeEvent inv:
self.month-&gt;notEmpty implies 1 &lt;= self.month &lt;= 12

[C-3] dayOfMonth must be specified when recurringType is everyYear or
everyMonth.
context RecurringPointInTimeEvent inv:
self.recurringType=everyYear or self.recurringType=everyMonth
implies self.dayOfMonth-&gt;notEmpty

[C-4] dayOfMonth must be between 1 and 31 (inclusive) when specified.
context RecurringPointInTimeEvent inv:
self.dayOfMonth-&gt;notEmpty implies 1 &lt;= self.dayOfMonth &lt;= 31

[C-5] dayOfWeek must be specified when recurringType is everyWeek.
context RecurringPointInTimeEvent inv:
self.recurringType=everyWeek implies self.dayOfWeek-&gt;notEmpty

[C-6] hour must be specified when recurringType is everyYear or everyMonth or
everyWeek or everyDay.
context RecurringPointInTimeEvent inv:
self.recurringType=everyYear or self.recurringType=everyMonth or
self.recurringType=everyWeek or self.recurringType=everyDay
implies self.hour-&gt;notEmpty

[C-7] hour must be between 0 and 23 (inclusive) when specified.
context RecurringPointInTimeEvent inv:
self.hour-&gt;notEmpty implies 0 &lt;= hour &lt;= 23

[C-8] minute must be specified when recurringType is not everyMinute.
context RecurringPointInTimeEvent inv:
self.recurringType&lt;&gt;everyMinute implies self.minute-&gt;notEmpty

[C-9] minute must be between 0 and 59 (inclusive) when specified.
context RecurringPointInTimeEvent inv:
self.minute-&gt;notEmpty implies 0 &lt;= self.minute &lt;= 59

[C-10] second must be between 0 and 59 (inclusive).
context RecurringPointInTimeEvent inv:
0 &lt;= self.second &lt;= 59</Model:ModelElement.annotation>
  <Model:Namespace.contents>
    <!-- ==================== WarehouseProcess.org.omg.xmi.namespace=CWMWHP    [Tag] ==================== -->
    <Model:Tag xmi.id="G.1031" name="org.omg.xmi.namespace=CWMWHP" annotation="" tagId="org.omg.xmi.namespace" elements="a357DC1E5015B">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CWMWHP</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== WarehouseProcess.org.omg.mof.idl_prefix=org.omg.cwm.management    [Tag] ==================== -->
    <Model:Tag xmi.id="G.1032" name="org.omg.mof.idl_prefix=org.omg.cwm.management" annotation="" tagId="org.omg.mof.idl_prefix" elements="a357DC1E5015B">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.cwm.management</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== WarehouseProcess.org.omg.mof.idl_substitute_name=WarehouseProcessModule    [Tag] ==================== -->
    <Model:Tag xmi.id="G.1033" name="org.omg.mof.idl_substitute_name=WarehouseProcessModule" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a357DC1E5015B">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">WarehouseProcessModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== WarehouseProcess.com.urep.jcr.java_prefix=org.omg.java.cwm.management    [Tag] ==================== -->
    <Model:Tag xmi.id="G.1034" name="com.urep.jcr.java_prefix=org.omg.java.cwm.management" annotation="" tagId="com.urep.jcr.java_prefix" elements="a357DC1E5015B">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.java.cwm.management</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <Model:Import xmi.id="G.1035" name="Core" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A6600C5031F"/>
    <Model:Import xmi.id="G.1036" name="Behavioral" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A6342A4000B"/>
    <Model:Import xmi.id="G.1037" name="Transformation" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a35E1B0B40042"/>
    <!-- ==================== WarehouseProcess.DataType    [Package] ==================== -->
    <Model:Package xmi.id="a37017CC20073" name="DataType" annotation="" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
      <Model:Namespace.contents>
        <!-- ==================== WarehouseProcess.DataType.RecurringType    [DataType] ==================== -->
        <Model:DataType xmi.id="a3701832502BF" name="RecurringType" annotation="everyYear, everyMonth, everyWeek, everyDay, everyHour, everyMinute" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
          <Model:DataType.typeCode>
            <XMI.CorbaTypeCode>
              <XMI.CorbaTcEnum xmi.tcName="RecurringType">
              <XMI.CorbaTcEnumLabel xmi.tcName="everyYear"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="everyMonth"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="everyWeek"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="everyDay"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="everyHour"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="everyMinute"/>
              </XMI.CorbaTcEnum>
            </XMI.CorbaTypeCode>
          </Model:DataType.typeCode>
        </Model:DataType>
        <!-- ==================== WarehouseProcess.DataType.DayOfWeek    [DataType] ==================== -->
        <Model:DataType xmi.id="a37018504023B" name="DayOfWeek" annotation="Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday, workingDay, nonworkingDay" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
          <Model:DataType.typeCode>
            <XMI.CorbaTypeCode>
              <XMI.CorbaTcEnum xmi.tcName="DayOfWeek">
              <XMI.CorbaTcEnumLabel xmi.tcName="monday"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="tuesday"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="wednesday"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="thursday"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="friday"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="saturday"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="sunday"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="workingDay"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="nonworkingDay"/>
              </XMI.CorbaTcEnum>
            </XMI.CorbaTypeCode>
          </Model:DataType.typeCode>
        </Model:DataType>
        <!-- ==================== WarehouseProcess.DataType.WaitRuleType    [DataType] ==================== -->
        <Model:DataType xmi.id="a370187A50033" name="WaitRuleType" annotation="waitForAll, waitForAny" isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis">
          <Model:DataType.typeCode>
            <XMI.CorbaTypeCode>
              <XMI.CorbaTcEnum xmi.tcName="WaitRuleType">
              <XMI.CorbaTcEnumLabel xmi.tcName="waitForAll"/>
              <XMI.CorbaTcEnumLabel xmi.tcName="waitForAny"/>
              </XMI.CorbaTcEnum>
            </XMI.CorbaTypeCode>
          </Model:DataType.typeCode>
        </Model:DataType>
      </Model:Namespace.contents>
    </Model:Package>
    <!-- ==================== WarehouseProcess.Events    [Package] ==================== -->
    <Model:Package xmi.id="a35E1B0C300D0" name="Events" annotation="" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
      <Model:Namespace.contents>
        <!-- ==================== WarehouseProcess.Events.WarehouseEvent    [Class] ==================== -->
        <Model:Class xmi.id="a37017E8501B5" name="WarehouseEvent" isRoot="false" isLeaf="false" isAbstract="true" visibility="public_vis" isSingleton="false" supertypes="a3288E51203DE">
          <Model:ModelElement.annotation>A virtual class to refer to any Event.

A WarehouseEvent (or its derivations) represents what triggers the running of a WarehouseProcess. An event can be initiated by a clock, by an external trigger, or by an internal trigger (the conclusion of some WarehouseProcess).</Model:ModelElement.annotation>
          <Model:Namespace.contents>
            <!-- ==================== WarehouseProcess.Events.WarehouseEvent.warehouseProcess    [Reference] ==================== -->
            <Model:Reference xmi.id="a3872729603A4" name="warehouseProcess" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a356E122A0336" referencedEnd="a3701811402BB">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== WarehouseProcess.Events.ScheduleEvent    [Class] ==================== -->
        <Model:Class xmi.id="a37017E8F0386" name="ScheduleEvent" annotation="A ScheduleEvent is an abstract class which covers all the clock based events." isRoot="false" isLeaf="false" isAbstract="true" visibility="public_vis" isSingleton="false" supertypes="a37017E8501B5"/>
        <!-- ==================== WarehouseProcess.Events.PointInTimeEvent    [Class] ==================== -->
        <Model:Class xmi.id="a37017E9B0012" name="PointInTimeEvent" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a37017E8F0386">
          <Model:ModelElement.annotation>A PointInTime event is triggered at a fixed time, independently of any external context.

The triggering time can be either defined functionally (as in the RecurringPointInTimeEvent extension of this class), or by an explicit list of times (CustomCalendarEvent).</Model:ModelElement.annotation>
        </Model:Class>
        <!-- ==================== WarehouseProcess.Events.CustomCalendarEvent    [Class] ==================== -->
        <Model:Class xmi.id="a37017EB3019D" name="CustomCalendarEvent" annotation="This event is controlled by a list of dates and times. To make the list easily shareable between multiple WarehouseProcesses the calendar itself is in a separate class." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a37017E9B0012">
          <Model:Namespace.contents>
            <!-- ==================== WarehouseProcess.Events.CustomCalendarEvent.customCalendar    [Reference] ==================== -->
            <Model:Reference xmi.id="a387272D3027F" name="customCalendar" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a37017EE303B9" referencedEnd="a370180FC00E0">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== WarehouseProcess.Events.CustomCalendar    [Class] ==================== -->
        <Model:Class xmi.id="a37017EE303B9" name="CustomCalendar" annotation="A named list of dates and times. " isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5D19033E">
          <Model:Namespace.contents>
            <!-- ==================== WarehouseProcess.Events.CustomCalendar.customCalendarEvent    [Reference] ==================== -->
            <Model:Reference xmi.id="a38727301023F" name="customCalendarEvent" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a37017EB3019D" referencedEnd="a370180FC00EA">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== WarehouseProcess.Events.CalendarDate    [Class] ==================== -->
        <Model:Class xmi.id="a37017EED006A" name="CalendarDate" annotation="An entry in a CustomCalendar representing a specific date and time." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
          <Model:Namespace.contents>
            <!-- ==================== WarehouseProcess.Events.CalendarDate.specificDate    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a370186A902EE" name="specificDate" annotation="The value of the date. " scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3A09E1C0001E">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== WarehouseProcess.Events.IntervalEvent    [Class] ==================== -->
        <Model:Class xmi.id="a37017F000053" name="IntervalEvent" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a37017E8F0386">
          <Model:ModelElement.annotation>An IntervalEvent controls a continuous run of a WarehouseProcess. The Warehouse Process will run, then wait for the duration specified in the event, then run again.

An IntervalEvent is not affected by the result of the WarehouseProcess.

</Model:ModelElement.annotation>
          <Model:Namespace.contents>
            <!-- ==================== WarehouseProcess.Events.IntervalEvent.duration    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a3701873601C4" name="duration" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a384FE9DE02A2">
              <Model:ModelElement.annotation>Indicates the length of time (in seconds) to wait after a run of the WarehouseProcess before triggering the next one.
</Model:ModelElement.annotation>
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== WarehouseProcess.Events.ExternalEvent    [Class] ==================== -->
        <Model:Class xmi.id="a37017F090132" name="ExternalEvent" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a37017E8501B5">
          <Model:ModelElement.annotation>An ExternalEvent allows the description of the triggering of a WarehouseProcess by a task which is not described in the model. This is merely a place holder. The actual behavior and the connection with the external trigger is left to the implementation of
the scheduler.</Model:ModelElement.annotation>
          <Model:Namespace.contents>
            <!-- ==================== WarehouseProcess.Events.ExternalEvent.description    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a37018757032A" name="description" annotation="A free text description of where the external triggering signal comes from." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== WarehouseProcess.Events.InternalEvent    [Class] ==================== -->
        <Model:Class xmi.id="a37017F12006D" name="InternalEvent" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a37017E8501B5">
          <Model:ModelElement.annotation>An event which may be triggered, depending on whether or not a condition is satisfied, by the conclusion of one or more WarehouseProcess runs.

There are two types of InternalEvents, depending whether the event triggers a series of different WarehouseProcesses, or whether the event triggers the same WarehouseProcess in an attempt to retry a failed run.</Model:ModelElement.annotation>
          <Model:Namespace.contents>
            <!-- ==================== WarehouseProcess.Events.InternalEvent.condition    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a3701877903A1" name="condition" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33CFA9DA01D6">
              <Model:ModelElement.annotation>Indicates what condition the triggering WarehouseProcess run must meet to be considered (success, failure, warnings, etc.).

How the condition is expressed, and how the result of a Transform is generated is left to the implementation of the scheduler and the transformation, respectively.</Model:ModelElement.annotation>
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
            <!-- ==================== WarehouseProcess.Events.InternalEvent.triggeringWP    [Reference] ==================== -->
            <Model:Reference xmi.id="a3872735100E6" name="triggeringWP" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a356E122A0336" referencedEnd="a3701811E00FD">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Reference>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== WarehouseProcess.Events.CascadeEvent    [Class] ==================== -->
        <Model:Class xmi.id="a37017F230343" name="CascadeEvent" annotation="A CascadeEvent indicates that completion of one or more triggering WarehouseProcesses triggers another WarehouseProcess." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a37017F12006D">
          <Model:Namespace.contents>
            <!-- ==================== WarehouseProcess.Events.CascadeEvent.waitRule    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a370187CE0119" name="waitRule" annotation="Indicates if the event should be triggered as soon as any of the triggering WarehouseProcesses has completed that satisfies the condition (inherited from InternalEvent) or only when all the triggering WarehouseProcesses have completed (provided the condition is satisfied)." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a370187A50033">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== WarehouseProcess.Events.RetryEvent    [Class] ==================== -->
        <Model:Class xmi.id="a37017F2E0262" name="RetryEvent" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a37017F12006D">
          <Model:ModelElement.annotation>Indicates that a WarehouseProcess should be retried upon failure. This type of event is used for example when a WarehouseProcess relies on sources with uncertain availability (connection or uptime).

In general, the triggering WarehouseProcess and the triggered WarehouseProcess are the same, and only one WarehouseProcess is involved. But this is not an imposed limitation. It is left to the schedulers to decide on the implementation behavior for complex cases.</Model:ModelElement.annotation>
          <Model:Namespace.contents>
            <!-- ==================== WarehouseProcess.Events.RetryEvent.waitDuration    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a370187F202DD" name="waitDuration" annotation="Indicates the length of time (in seconds) to wait before retrying the triggered WarehouseProcess." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a384FE9DE02A2">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
            <!-- ==================== WarehouseProcess.Events.RetryEvent.maxCount    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a3701881A010E" name="maxCount" annotation="Indicates how many times the triggered WarehouseProcess should be retried before being declared failed." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
          </Model:Namespace.contents>
        </Model:Class>
        <!-- ==================== WarehouseProcess.Events.RecurringPointInTimeEvent    [Class] ==================== -->
        <Model:Class xmi.id="a3701844602CE" name="RecurringPointInTimeEvent" annotation="This event triggers a WarehouseProcess on a regular basis such as a specific date or time (for example, the Wednesday of every other week, at 2:30 pm)." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a37017E9B0012">
          <Model:Namespace.contents>
            <!-- ==================== WarehouseProcess.Events.RecurringPointInTimeEvent.recurringType    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a3701846D03BB" name="recurringType" annotation="Indicates how often the event should be triggered (weekly, daily, etc.)." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3701832502BF">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
            <!-- ==================== WarehouseProcess.Events.RecurringPointInTimeEvent.frequencyFactor    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a3701849B0367" name="frequencyFactor" annotation="Indicates the repetition of the event. For example, for a weekly recurringType, a value of 1 will mean that it is to be triggered every week, a value of 2 will mean that it is to be triggered every other week, etc." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
            <!-- ==================== WarehouseProcess.Events.RecurringPointInTimeEvent.month    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a370184AC00C2" name="month" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
              <Model:ModelElement.annotation>Indicates which month of the year (from 1 to 12) an annual event is to be triggered.
</Model:ModelElement.annotation>
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
            <!-- ==================== WarehouseProcess.Events.RecurringPointInTimeEvent.dayOfMonth    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a370184BC004D" name="dayOfMonth" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
              <Model:ModelElement.annotation>Indicates which day of the month (from 1 to 31) a monthly or annual event is to be triggered. For a monthly event, if the day of the month is greater than the number of days in the month, it is assumed that the scheduler will run the WarehouseProcess on the last day of the month.
</Model:ModelElement.annotation>
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
            <!-- ==================== WarehouseProcess.Events.RecurringPointInTimeEvent.dayOfWeek    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a370184CA03D2" name="dayOfWeek" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a37018504023B">
              <Model:ModelElement.annotation>Indicates which day of the week a weekly schedule is running.
</Model:ModelElement.annotation>
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
            <!-- ==================== WarehouseProcess.Events.RecurringPointInTimeEvent.hour    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a3701853B036A" name="hour" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
              <Model:ModelElement.annotation>Indicates at what hour (from 0 to 23) an annual, monthly, weekly, or daily event is being triggered.
</Model:ModelElement.annotation>
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
            <!-- ==================== WarehouseProcess.Events.RecurringPointInTimeEvent.minute    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a3701854D03DE" name="minute" annotation="Indicates at what minute (from 0 to 59) an event is triggered. Applies to all events except the &quot;everyMinute&quot; ones." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
            <!-- ==================== WarehouseProcess.Events.RecurringPointInTimeEvent.second    [Attribute] ==================== -->
            <Model:Attribute xmi.id="a3701855901F0" name="second" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6FD7021C">
              <Model:ModelElement.annotation>Indicates at what second (from 0 to 59) an event must be run. Applies to all events.
</Model:ModelElement.annotation>
              <Model:StructuralFeature.multiplicity>
                <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
              </Model:StructuralFeature.multiplicity>
            </Model:Attribute>
          </Model:Namespace.contents>
        </Model:Class>
      </Model:Namespace.contents>
    </Model:Package>
    <!-- ==================== WarehouseProcess.WarehouseProcess    [Class] ==================== -->
    <Model:Class xmi.id="a356E122A0336" name="WarehouseProcess" isRoot="false" isLeaf="false" isAbstract="true" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:ModelElement.annotation>A WarehouseProcess represents the processing of a transformation. It is instantiated as one of its subtypes WarehouseActivity or WarehouseStep, depending on whether it represents the processing of a TransformationActivity or a Transformation Step.
A WarehouseProcess may be associated with one or more WarehouseEvents, each identifying events that cause the processing to be initiated. It may also be associated with one or more internal events that will be triggered when processing terminates.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== WarehouseProcess.WarehouseProcess.staticDefinition    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3614097A0297" name="staticDefinition" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:ModelElement.annotation>When a WarehouseProcess is a constant mapping (such as a Relational View of legacy data or a continuous data propagation process), this flag indicates that the mapping does not require to be run for the target to be up-to-date and in sync with
the source.

</Model:ModelElement.annotation>
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== WarehouseProcess.WarehouseProcess.isSequential    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a3703CA680311" name="isSequential" annotation="This flag indicates if more than one instance of this WarehouseProcess may run at a time. If this flag is true, the scheduler should fail any attempt to trigger this WarehouseProcess while an instance is already in progress." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== WarehouseProcess.WarehouseProcess.warehouseEvent    [Reference] ==================== -->
        <Model:Reference xmi.id="a3872724B0216" name="warehouseEvent" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a37017E8501B5" referencedEnd="a3701811402D9">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== WarehouseProcess.WarehouseProcess.internalEvent    [Reference] ==================== -->
        <Model:Reference xmi.id="a3872722C03CA" name="internalEvent" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a37017F12006D" referencedEnd="a3701811E011B">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== WarehouseProcess.WarehouseStep    [Class] ==================== -->
    <Model:Class xmi.id="a3A5B007F0117" name="WarehouseStep" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a356E122A0336">
      <Model:ModelElement.annotation>A WarehouseStep is a component of a WarehouseActivity. It represents the processing of an individual TransformationStep. It may be used to identify WarehouseEvents that trigger the processing of the TransformationStep and/or InternalEvents that are
triggered by the conclusion of the processing of the TransformationStep.

For example, a WarehouseStep may be used to document how a specific TransformationStep should be retried upon failure.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== WarehouseProcess.WarehouseStep.transformationStep    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A5B0CF90296" name="transformationStep" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a36D590F003B9" referencedEnd="a3A5B01E90384">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== WarehouseProcess.WarehouseStep.warehouseActivity    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A5B03EB02BB" name="warehouseActivity" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A5D80A6030D" referencedEnd="a3A5B02BF01B5">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== WarehouseProcess.ProcessPackage    [Class] ==================== -->
    <Model:Class xmi.id="a3A5B0DC10027" name="ProcessPackage" annotation="A group of related WarehouseActivities." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5D19033E"/>
    <!-- ==================== WarehouseProcess.WarehouseActivity    [Class] ==================== -->
    <Model:Class xmi.id="a3A5D80A6030D" name="WarehouseActivity" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a356E122A0336">
      <Model:ModelElement.annotation>A WarehouseActivity is a subtype of WarehouseProcess that represents the processing of a TransformationActivity. It may identify WarehouseEvents that trigger the processing of the TransformationActivity and InternalEvents that are triggered by the
conclusion of this processing. It may contain a set of WarehouseSteps that define in more detail the processing of the individual TransformationSteps of the TransformationActivity.</Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== WarehouseProcess.WarehouseActivity.transformationActivity    [Reference] ==================== -->
        <Model:Reference xmi.id="a387271E2028D" name="transformationActivity" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a36E070680112" referencedEnd="a3A5D81380355">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== WarehouseProcess.WarehouseActivity.warehouseStep    [Reference] ==================== -->
        <Model:Reference xmi.id="a3A5B126E0263" name="warehouseStep" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A5B007F0117" referencedEnd="a3A5B02BF01DE">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== WarehouseProcess.EventUsesCustomCalendar    [Association] ==================== -->
    <Model:Association xmi.id="a370180FB0070" name="EventUsesCustomCalendar" annotation="Indicates which custom calendar is used for this schedule" isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a370180FC00E0" name="customCalendar" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a37017EE303B9">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a370180FC00EA" name="customCalendarEvent" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a37017EB3019D">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== WarehouseProcess.Event    [Association] ==================== -->
    <Model:Association xmi.id="a3701811303B4" name="Event" annotation="Associates a WarehouseProcess with a set of events of various types, which will be used to trigger the execution of the WarehouseProcess and its associated transformations." isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3701811402BB" name="warehouseProcess" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a356E122A0336">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3701811402D9" name="warehouseEvent" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a37017E8501B5">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== WarehouseProcess.TriggeringProcess    [Association] ==================== -->
    <Model:Association xmi.id="a3701811B03D3" name="TriggeringProcess" annotation="Associates an internal event with the WarehouseProcess that triggers it when processing of that WarehouseProcess terminates." isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3701811E00FD" name="triggeringWP" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a356E122A0336">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3701811E011B" name="internalEvent" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a37017F12006D">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== WarehouseProcess.WarehouseStepRunsTransformationStep    [Association] ==================== -->
    <Model:Association xmi.id="a3A5B01E80333" name="WarehouseStepRunsTransformationStep" annotation="Identifies a TransformationStep that is run by a WarehouseStep." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A5B01E90384" name="transformationStep" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a36D590F003B9">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A5B01EA0001" name="warehouseStep" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A5B007F0117">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== WarehouseProcess.WarehouseActivityStep    [Association] ==================== -->
    <Model:Association xmi.id="a3A5B02BE01C8" name="WarehouseActivityStep" annotation="Associates a WarehouseActivity with its constituent WarehouseSteps." isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A5B02BF01B5" name="warehouseActivity" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a3A5D80A6030D">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A5B02BF01DE" name="warehouseStep" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A5B007F0117">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== WarehouseProcess.WarehouseActivityRunsTransformationActivity    [Association] ==================== -->
    <Model:Association xmi.id="a3A5D81380353" name="WarehouseActivityRunsTransformationActivity" annotation="Indicates which TransformationActivity is run by the WarehouseActivity." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a3A5D81380354" name="warehouseActivity" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A5D80A6030D">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a3A5D81380355" name="transformationActivity" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a36E070680112">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
  </Model:Namespace.contents>
</Model:Package>
<!-- ==================== WarehouseOperation    [Package] ==================== -->
<Model:Package xmi.id="a37419FF7000C" name="WarehouseOperation" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
  <Model:ModelElement.annotation>The Warehouse Operation package contains classes recording the day-to-day operation of the warehouse processes.

The package covers three separate areas:

    Transformation Executions
    Measurements
    Change Requests

Details of the most recent executions of transformations can be recorded, identifying when they ran and whether they completed successfully. This can be used to determine how complete and up-to-date specific information in the data warehouse is.

An ActivityExecution represents an execution of a whole TransformationActivity, and a StepExecution object represents an execution of an individual TransformationStep. If a TransformationStep involves the use of an Operation , an associated StepExecution may reference a CallAction that records the actual arguments passed to the Operation. These classes allow the lineage of data in a data warehouse to be preserved, by recording when and how it was derived, and where it came from.

Measurement objects allow metrics to be held for any ModelElement. For example, they may be used to hold actual, estimated or planned values for the size of a table.

ChangeRequests allow details of proposed changes affecting any ModelElement to be recorded. They may also be used to keep a historical record of changes implemented or rejected. 

The Warehouse Operation package depends on the following packages:

    org.omg::CWM::ObjectModel::Core
    org.omg::CWM::ObjectModel::Behavioral
    org.omg::CWM::Analysis::Transformation

Separate model diagrams are shown below for each of the three main areas supported by the package.

OCL Representation of Warehouse Operation Constraints

[C-1] A ChangeRequest instance must not apply to itself.
context ChangeRequest
inv: self.modelElement -&gt; forAll (element | element &lt;&gt; self)

[C-2] A completionDate may only be provided for a completed ChangeRequest.
context ChangeRequest
inv: self.completionDate-&gt;notEmpty implies self.completed

[C-3] A Measurement instance must not apply to itself.
context Measurement
inv: self.modelElement &lt;&gt; self

[C-4] If the TransformationExecution is not inProgress, the successful, status and endDate attributes must be present, and endDate must not be earlier than startDate.
context TransformationExecution
inv: self.inProgress=false implies (self.successful-&gt;notEmpty and
self.status-&gt;notEmpty and self.endDate-&gt;notEmpty and
self.endDate &gt;= self.startDate)
</Model:ModelElement.annotation>
  <Model:Namespace.contents>
    <!-- ==================== WarehouseOperation.org.omg.xmi.namespace=CWMWHO    [Tag] ==================== -->
    <Model:Tag xmi.id="G.1038" name="org.omg.xmi.namespace=CWMWHO" annotation="" tagId="org.omg.xmi.namespace" elements="a37419FF7000C">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CWMWHO</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== WarehouseOperation.org.omg.mof.idl_prefix=org.omg.cwm.management    [Tag] ==================== -->
    <Model:Tag xmi.id="G.1039" name="org.omg.mof.idl_prefix=org.omg.cwm.management" annotation="" tagId="org.omg.mof.idl_prefix" elements="a37419FF7000C">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.cwm.management</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== WarehouseOperation.org.omg.mof.idl_substitute_name=WarehouseOperationModule    [Tag] ==================== -->
    <Model:Tag xmi.id="G.1040" name="org.omg.mof.idl_substitute_name=WarehouseOperationModule" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a37419FF7000C">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">WarehouseOperationModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== WarehouseOperation.com.urep.jcr.java_prefix=org.omg.java.cwm.management    [Tag] ==================== -->
    <Model:Tag xmi.id="G.1041" name="com.urep.jcr.java_prefix=org.omg.java.cwm.management" annotation="" tagId="com.urep.jcr.java_prefix" elements="a37419FF7000C">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.java.cwm.management</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <Model:Import xmi.id="G.1042" name="Core" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A6600C5031F"/>
    <Model:Import xmi.id="G.1043" name="Behavioral" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A6342A4000B"/>
    <Model:Import xmi.id="G.1044" name="Transformation" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a35E1B0B40042"/>
    <!-- ==================== WarehouseOperation.Measurement    [Class] ==================== -->
    <Model:Class xmi.id="a37935233038F" name="Measurement" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:ModelElement.annotation>A Measurement object indicates the value of some attribute of an object. It can be the number of rows in a table, the number of pages in an index, the number of different values in a column, etc. 

The flexibility of this class allows for product specific extensions, without changing the model. </Model:ModelElement.annotation>
      <Model:Namespace.contents>
        <!-- ==================== WarehouseOperation.Measurement.value    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a37935291036C" name="value" annotation="The value of this Measurement." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a384FE9DE02A2">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== WarehouseOperation.Measurement.unit    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a379352F502F7" name="unit" annotation="The unit of measurement." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== WarehouseOperation.Measurement.type    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a379352F80021" name="type" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:ModelElement.annotation>Identifies how the value was computed.

The following values have specific meanings:

   measure (measured value)
   estimate (estimated value)
   plan (planned value)
   minimum (minimum value)
   maximum (maximum value)
   average (average value)</Model:ModelElement.annotation>
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== WarehouseOperation.Measurement.creationDate    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a379352F903E3" name="creationDate" annotation="When the value has been computed (see also effectiveDate)." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3A09E1C0001E">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== WarehouseOperation.Measurement.effectiveDate    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a379352FC0076" name="effectiveDate" annotation="When the value is effective. For measured values, effective and creation dates should be the same. For estimated actual values, the creation date may be later than the effective date. For plan values, the effective date is normally later than the creation date." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3A09E1C0001E">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== WarehouseOperation.Measurement.modelElement    [Reference] ==================== -->
        <Model:Reference xmi.id="a387335390109" name="modelElement" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A5C7301CC" referencedEnd="a37935A9F008C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== WarehouseOperation.org.omg.IDL Substitute Name=umlValue    [Tag] ==================== -->
    <Model:Tag xmi.id="G.1045" name="org.omg.IDL Substitute Name=umlValue" annotation="" tagId="org.omg.IDL Substitute Name" elements="a37935291036C">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">umlValue</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== WarehouseOperation.ChangeRequest    [Class] ==================== -->
    <Model:Class xmi.id="a379DC1A90234" name="ChangeRequest" annotation="This represents a request for change affecting one or more ModelElements. The change request may represent a proposed change or one that has been implemented or rejected." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:Namespace.contents>
        <!-- ==================== WarehouseOperation.ChangeRequest.changeDescription    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a379DCDEF0214" name="changeDescription" annotation="A description of the change." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== WarehouseOperation.ChangeRequest.changeReason    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a379DCE180140" name="changeReason" annotation="The reason or justification for the ChangeRequest." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== WarehouseOperation.ChangeRequest.status    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a379DCDA801EA" name="status" annotation="The status of the ChangeRequest. This would normally contain a string such as proposed, agreed, implemented or rejected." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD702401B8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== WarehouseOperation.ChangeRequest.completed    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a379DC9D9029C" name="completed" scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:ModelElement.annotation>Indicates that no further action is required for this change request, i.e. it has either
been implemented or been rejected.</Model:ModelElement.annotation>
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== WarehouseOperation.ChangeRequest.requestDate    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a379DCEB10231" name="requestDate" annotation="When the change request was raised." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3A09E1C0001E">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== WarehouseOperation.ChangeRequest.completionDate    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a379DCF020346" name="completionDate" annotation="The date when all action on the change request was completed (i.e. when implementation was completed or it was rejected)." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3A09E1C0001E">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== WarehouseOperation.ChangeRequest.modelElement    [Reference] ==================== -->
        <Model:Reference xmi.id="a3873345002DA" name="modelElement" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a327A5C7301CC" referencedEnd="a379DC2A001FD">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== WarehouseOperation.TransformationExecution    [Class] ==================== -->
    <Model:Class xmi.id="a3814873701EB" name="TransformationExecution" annotation="A TransformationExecution is used to record details of a specific execution." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a327A5C7301CC">
      <Model:Namespace.contents>
        <!-- ==================== WarehouseOperation.TransformationExecution.startDate    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a36E468BD029B" name="startDate" annotation="The date and time when the execution started." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3A09E1C0001E">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== WarehouseOperation.TransformationExecution.endDate    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a36E468FC00D9" name="endDate" annotation="The date and time when the execution ended." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a3A09E1C0001E">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== WarehouseOperation.TransformationExecution.inProgress    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a376A423902AF" name="inProgress" annotation="A boolean indicating whether or not the execution is in progress." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== WarehouseOperation.TransformationExecution.successful    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a36E469560218" name="successful" annotation="A boolean indicating whether or not the execution completed successfully." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33DD6F650276">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
        <!-- ==================== WarehouseOperation.TransformationExecution.status    [Attribute] ==================== -->
        <Model:Attribute xmi.id="a376A43F101F4" name="status" annotation="An expression that may be used to provide status details of the execution. For example it could provide comments for a successful execution, or details of errors for an unsuccessful execution." scope="instance_level" visibility="public_vis" isChangeable="true" isDerived="false" type="a33CFA00203A2">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Attribute>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== WarehouseOperation.ActivityExecution    [Class] ==================== -->
    <Model:Class xmi.id="a376A7BF10213" name="ActivityExecution" annotation="An ActivityExecution is used to record details of a specific execution of a TransformationActivity." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3814873701EB">
      <Model:Namespace.contents>
        <!-- ==================== WarehouseOperation.ActivityExecution.transformationActivity    [Reference] ==================== -->
        <Model:Reference xmi.id="a38732E330031" name="transformationActivity" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a36E070680112" referencedEnd="a376A7F99033C">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== WarehouseOperation.ActivityExecution.stepExecution    [Reference] ==================== -->
        <Model:Reference xmi.id="a38732DAF00A9" name="stepExecution" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a36E070B201EB" referencedEnd="a376A80390000">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== WarehouseOperation.StepExecution    [Class] ==================== -->
    <Model:Class xmi.id="a36E070B201EB" name="StepExecution" annotation="A StepExecution is used to record details of a specific execution of a TransformationStep." isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis" isSingleton="false" supertypes="a3814873701EB">
      <Model:Namespace.contents>
        <!-- ==================== WarehouseOperation.StepExecution.transformationStep    [Reference] ==================== -->
        <Model:Reference xmi.id="a38732EDD00C2" name="transformationStep" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a36D590F003B9" referencedEnd="a37494BEF03B9">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== WarehouseOperation.StepExecution.activityExecution    [Reference] ==================== -->
        <Model:Reference xmi.id="a38732F410043" name="activityExecution" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a376A7BF10213" referencedEnd="a376A803803D8">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
        <!-- ==================== WarehouseOperation.StepExecution.callAction    [Reference] ==================== -->
        <Model:Reference xmi.id="a387330030183" name="callAction" annotation="" scope="instance_level" visibility="public_vis" isChangeable="true" type="a3A638B7E0318" referencedEnd="a37B3F999020A">
          <Model:StructuralFeature.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:StructuralFeature.multiplicity>
        </Model:Reference>
      </Model:Namespace.contents>
    </Model:Class>
    <!-- ==================== WarehouseOperation.TransformationStepExecutions    [Association] ==================== -->
    <Model:Association xmi.id="a37494BEF000F" name="TransformationStepExecutions" annotation="Identifies the StepExecutions that record details of each execution of a TransformationStep." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a37494BEF03A9" name="execution" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a36E070B201EB">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a37494BEF03B9" name="transformationStep" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a36D590F003B9">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== WarehouseOperation.TransformationActivityExecutions    [Association] ==================== -->
    <Model:Association xmi.id="a376A7F980280" name="TransformationActivityExecutions" annotation="Identifies the ActivityExecutions that record details of each execution of a TransformationActivity." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a376A7F99033C" name="transformationActivity" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a36E070680112">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a376A7F99034B" name="execution" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a376A7BF10213">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== WarehouseOperation.ActivityStepExecutions    [Association] ==================== -->
    <Model:Association xmi.id="a376A8038004E" name="ActivityStepExecutions" annotation="Identifies all the StepExecutions associated with an ActivityExecution." isRoot="true" isLeaf="true" isAbstract="false" visibility="protected_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a376A803803D8" name="activityExecution" annotation="" isNavigable="true" aggregation="composite" isChangeable="true" type="a376A7BF10213">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a376A80390000" name="stepExecution" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a36E070B201EB">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== WarehouseOperation.ModelElementMeasurement    [Association] ==================== -->
    <Model:Association xmi.id="a37935A9E018F" name="ModelElementMeasurement" annotation="Associates a Measurement object to any ModelElement." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a37935A9F008C" name="modelElement" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a327A5C7301CC">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a37935A9F0140" name="measurement" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a37935233038F">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== WarehouseOperation.ModelElementChangeRequest    [Association] ==================== -->
    <Model:Association xmi.id="a379DC29F011F" name="ModelElementChangeRequest" annotation="Associates ChangeRequests with the ModelElement(s) which they affect." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a379DC2A001FD" name="modelElement" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a327A5C7301CC">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="1" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a379DC2A0029D" name="changeRequest" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a379DC1A90234">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="true" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
    <!-- ==================== WarehouseOperation.StepExecutionCallAction    [Association] ==================== -->
    <Model:Association xmi.id="a37B3F9970275" name="StepExecutionCallAction" annotation="Where a TransformationStep involves the use of an Operation, this association between StepExecution and CallAction allows the actual parameters used in a specific execution of the TransformationStep to be recorded." isRoot="true" isLeaf="true" isAbstract="false" visibility="public_vis" isDerived="false">
      <Model:Namespace.contents>
        <Model:AssociationEnd xmi.id="a37B3F999020A" name="callAction" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a3A638B7E0318">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="1" is_ordered="false" is_unique="false"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
        <Model:AssociationEnd xmi.id="a37B3F9990214" name="stepExecution" annotation="" isNavigable="true" aggregation="none" isChangeable="true" type="a36E070B201EB">
          <Model:AssociationEnd.multiplicity>
            <Model:MultiplicityType lower="0" upper="-1" is_ordered="false" is_unique="true"/>
          </Model:AssociationEnd.multiplicity>
        </Model:AssociationEnd>
      </Model:Namespace.contents>
    </Model:Association>
  </Model:Namespace.contents>
</Model:Package>
<!-- ==================== CWMComplete    [Package] ==================== -->
<Model:Package xmi.id="a3A78A3F9036D" name="CWMComplete" isRoot="false" isLeaf="false" isAbstract="false" visibility="public_vis">
  <Model:ModelElement.annotation>CWMComplete is a package that invokes all other CWM packages.  It does this by listing all of the other CWM metamodel packages in declaration order in the uml2mof.clusteredImport property of the MOF tab.  

CWMComplete is included as a convenience for software that wants to generate the entire CWM package.  It is non-normative, is not included in any normative CWM dtd file, and is not documented in either volume of the CWM specification.</Model:ModelElement.annotation>
  <Model:Namespace.contents>
    <!-- ==================== CWMComplete.org.omg.mof.idl_prefix=org.omg.cwm    [Tag] ==================== -->
    <Model:Tag xmi.id="G.1046" name="org.omg.mof.idl_prefix=org.omg.cwm" annotation="" tagId="org.omg.mof.idl_prefix" elements="a3A78A3F9036D">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.cwm</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== CWMComplete.org.omg.xmi.namespace=CWM    [Tag] ==================== -->
    <Model:Tag xmi.id="G.1047" name="org.omg.xmi.namespace=CWM" annotation="" tagId="org.omg.xmi.namespace" elements="a3A78A3F9036D">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CWM</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== CWMComplete.org.omg.mof.idl_substitute_name=CWMCompleteModule    [Tag] ==================== -->
    <Model:Tag xmi.id="G.1048" name="org.omg.mof.idl_substitute_name=CWMCompleteModule" annotation="" tagId="org.omg.mof.idl_substitute_name" elements="a3A78A3F9036D">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">CWMCompleteModule</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <!-- ==================== CWMComplete.com.urep.jcr.java_prefix=org.omg.java.cwm    [Tag] ==================== -->
    <Model:Tag xmi.id="G.1049" name="com.urep.jcr.java_prefix=org.omg.java.cwm" annotation="" tagId="com.urep.jcr.java_prefix" elements="a3A78A3F9036D">
      <Model:Tag.values>
        <XMI.any xmi.type="string" xmi.name="">org.omg.java.cwm</XMI.any>
      </Model:Tag.values>
    </Model:Tag>
    <Model:Import xmi.id="G.1050" name="Core" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A6600C5031F"/>
    <Model:Import xmi.id="G.1051" name="Behavioral" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A6342A4000B"/>
    <Model:Import xmi.id="G.1052" name="Relationships" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A63421F0357"/>
    <Model:Import xmi.id="G.1053" name="Instance" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3A6342930318"/>
    <Model:Import xmi.id="G.1054" name="BusinessInformation" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a38207A770114"/>
    <Model:Import xmi.id="G.1055" name="DataTypes" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a38207A4E0308"/>
    <Model:Import xmi.id="G.1056" name="Expressions" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a38207A600078"/>
    <Model:Import xmi.id="G.1057" name="KeysIndexes" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a38207A680191"/>
    <Model:Import xmi.id="G.1058" name="SoftwareDeployment" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3731C42F0314"/>
    <Model:Import xmi.id="G.1059" name="TypeMapping" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3817221D01F4"/>
    <Model:Import xmi.id="G.1060" name="Relational" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a362E34A201FF"/>
    <Model:Import xmi.id="G.1061" name="Record" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a35F6F41A0299"/>
    <Model:Import xmi.id="G.1062" name="Multidimensional" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a374EBFFB0357"/>
    <Model:Import xmi.id="G.1063" name="XML" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a379CA3670197"/>
    <Model:Import xmi.id="G.1064" name="Transformation" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a35E1B0B40042"/>
    <Model:Import xmi.id="G.1065" name="Olap" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a365348E80125"/>
    <Model:Import xmi.id="G.1066" name="BusinessNomenclature" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a381DE0120379"/>
    <Model:Import xmi.id="G.1067" name="MiningCore" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a39E71F94024D"/>
    <Model:Import xmi.id="G.1068" name="Clustering" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3B66D6FE025C"/>
    <Model:Import xmi.id="G.1069" name="AssociationRules" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a395CFA0702B6"/>
    <Model:Import xmi.id="G.1070" name="Supervised" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a395CFA1100D0"/>
    <Model:Import xmi.id="G.1071" name="Classification" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a395CFA4201E9"/>
    <Model:Import xmi.id="G.1072" name="Approximation" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a395CFA550060"/>
    <Model:Import xmi.id="G.1073" name="AttributeImportance" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a395CFCB3036E"/>
    <Model:Import xmi.id="G.1074" name="InformationVisualization" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a3857006102D5"/>
    <Model:Import xmi.id="G.1075" name="WarehouseProcess" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a357DC1E5015B"/>
    <Model:Import xmi.id="G.1076" name="WarehouseOperation" annotation="" visibility="public_vis" isClustered="true" importedNamespace="a37419FF7000C"/>
  </Model:Namespace.contents>
</Model:Package>
</XMI.content>
</XMI>