blob: 57fa054df050e1baf682af7e6181a871377f2ccd [file] [log] [blame]
<?xml version="1.0" encoding="ASCII"?>
<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore">
<ecore:EPackage xmi:id="PrimitiveTypes" name="PrimitiveTypes" nsURI="http://schema.omg.org/spec/QVT/1.1/primitivetypes.xml"
nsPrefix="primitivetypes">
<eClassifiers xsi:type="ecore:EDataType" xmi:id="PrimitiveTypes.Boolean" name="Boolean"
instanceClassName="java.lang.Boolean"/>
<eClassifiers xsi:type="ecore:EDataType" xmi:id="PrimitiveTypes.Integer" name="Integer"
instanceClassName="java.lang.Integer"/>
<eClassifiers xsi:type="ecore:EDataType" xmi:id="PrimitiveTypes.Real" name="Real"
instanceClassName="java.lang.Float"/>
<eClassifiers xsi:type="ecore:EDataType" xmi:id="PrimitiveTypes.String" name="String"
instanceClassName="java.lang.String"/>
<eClassifiers xsi:type="ecore:EDataType" xmi:id="PrimitiveTypes.UnlimitedNatural"
name="UnlimitedNatural" instanceClassName="java.lang.Integer"/>
</ecore:EPackage>
<ecore:EPackage xmi:id="EMOF" name="EMOF" nsURI="http://schema.omg.org/spec/QVT/1.1/emof.xml"
nsPrefix="emof">
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.Class" name="Class" eSuperTypes="#EMOF.Type">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EMOF.Class.isAbstract"
name="isAbstract" eType="#PrimitiveTypes.Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Class.ownedAttribute"
name="ownedAttribute" upperBound="-1" eType="#EMOF.Property" containment="true"
resolveProxies="false" eOpposite="#EMOF.Property.class"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Class.ownedOperation"
name="ownedOperation" upperBound="-1" eType="#EMOF.Operation" containment="true"
resolveProxies="false" eOpposite="#EMOF.Operation.class"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Class.superClass"
name="superClass" ordered="false" upperBound="-1" eType="#EMOF.Class"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.Comment" name="Comment" eSuperTypes="#EMOF.Element">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Comment.annotatedElement"
name="annotatedElement" ordered="false" upperBound="-1" eType="#EMOF.NamedElement"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EMOF.Comment.body"
name="body" eType="#PrimitiveTypes.String"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.DataType" name="DataType" eSuperTypes="#EMOF.Type"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.Element" name="Element" abstract="true"
eSuperTypes="#EMOF.Object">
<eOperations xmi:id="EMOF.Element.container" name="container" eType="#EMOF.Element"/>
<eOperations xmi:id="EMOF.Element.equals" name="equals" eType="#PrimitiveTypes.Boolean">
<eParameters xmi:id="EMOF.Element.equals.object" name="object" eType="#EMOF.Object"/>
</eOperations>
<eOperations xmi:id="EMOF.Element.get" name="get" eType="#EMOF.Object">
<eParameters xmi:id="EMOF.Element.get.property" name="property" eType="#EMOF.Property"/>
</eOperations>
<eOperations xmi:id="EMOF.Element.getMetaClass" name="getMetaClass" eType="#EMOF.Class"/>
<eOperations xmi:id="EMOF.Element.isSet" name="isSet" eType="#PrimitiveTypes.Boolean">
<eParameters xmi:id="EMOF.Element.isSet.property" name="property" eType="#EMOF.Property"/>
</eOperations>
<eOperations xmi:id="EMOF.Element.set" name="set">
<eParameters xmi:id="EMOF.Element.set.property" name="property" eType="#EMOF.Property"/>
<eParameters xmi:id="EMOF.Element.set.object" name="object" eType="#EMOF.Object"/>
</eOperations>
<eOperations xmi:id="EMOF.Element.unset" name="unset">
<eParameters xmi:id="EMOF.Element.unset.property" name="property" eType="#EMOF.Property"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Element.ownedComment"
name="ownedComment" ordered="false" upperBound="-1" eType="#EMOF.Comment"
containment="true" resolveProxies="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.Enumeration" name="Enumeration"
eSuperTypes="#EMOF.DataType">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Enumeration.ownedLiteral"
name="ownedLiteral" upperBound="-1" eType="#EMOF.EnumerationLiteral" containment="true"
resolveProxies="false" eOpposite="#EMOF.EnumerationLiteral.enumeration"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.EnumerationLiteral" name="EnumerationLiteral"
eSuperTypes="#EMOF.NamedElement">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.EnumerationLiteral.enumeration"
name="enumeration" eType="#EMOF.Enumeration" transient="true" resolveProxies="false"
eOpposite="#EMOF.Enumeration.ownedLiteral"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.Extent" name="Extent" eSuperTypes="#EMOF.Object">
<eOperations xmi:id="EMOF.Extent.elements" name="elements" eType="#EMOF.ReflectiveSequence"/>
<eOperations xmi:id="EMOF.Extent.useContainment" name="useContainment" eType="#PrimitiveTypes.Boolean"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.Factory" name="Factory" eSuperTypes="#EMOF.Element">
<eOperations xmi:id="EMOF.Factory.convertToString" name="convertToString" eType="#PrimitiveTypes.String">
<eParameters xmi:id="EMOF.Factory.convertToString.dataType" name="dataType"
eType="#EMOF.DataType"/>
<eParameters xmi:id="EMOF.Factory.convertToString.object" name="object" eType="#EMOF.Object"/>
</eOperations>
<eOperations xmi:id="EMOF.Factory.create" name="create" eType="#EMOF.Element">
<eParameters xmi:id="EMOF.Factory.create.metaClass" name="metaClass" eType="#EMOF.Class"/>
</eOperations>
<eOperations xmi:id="EMOF.Factory.createFromString" name="createFromString"
eType="#EMOF.Object">
<eParameters xmi:id="EMOF.Factory.createFromString.dataType" name="dataType"
eType="#EMOF.DataType"/>
<eParameters xmi:id="EMOF.Factory.createFromString.string" name="string" eType="#PrimitiveTypes.String"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Factory.package"
name="package" lowerBound="1" eType="#EMOF.Package"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.MultiplicityElement" name="MultiplicityElement"
abstract="true">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EMOF.MultiplicityElement.isOrdered"
name="isOrdered" eType="#PrimitiveTypes.Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EMOF.MultiplicityElement.isUnique"
name="isUnique" eType="#PrimitiveTypes.Boolean" defaultValueLiteral="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EMOF.MultiplicityElement.lower"
name="lower" eType="#PrimitiveTypes.Integer" defaultValueLiteral="1"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EMOF.MultiplicityElement.upper"
name="upper" eType="#PrimitiveTypes.UnlimitedNatural" defaultValueLiteral="1"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.NamedElement" name="NamedElement"
abstract="true" eSuperTypes="#EMOF.Element">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EMOF.NamedElement.name"
name="name" eType="#PrimitiveTypes.String"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.Object" name="Object"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.Operation" name="Operation"
eSuperTypes="#EMOF.TypedElement #EMOF.MultiplicityElement">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Operation.class"
name="class" eType="#EMOF.Class" transient="true" resolveProxies="false"
eOpposite="#EMOF.Class.ownedOperation"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Operation.ownedParameter"
name="ownedParameter" upperBound="-1" eType="#EMOF.Parameter" containment="true"
resolveProxies="false" eOpposite="#EMOF.Parameter.operation"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Operation.raisedException"
name="raisedException" ordered="false" upperBound="-1" eType="#EMOF.Type"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.Package" name="Package" eSuperTypes="#EMOF.NamedElement">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Package.nestedPackage"
name="nestedPackage" ordered="false" upperBound="-1" eType="#EMOF.Package"
containment="true" resolveProxies="false" eOpposite="#EMOF.Package.nestingPackage"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Package.nestingPackage"
name="nestingPackage" eType="#EMOF.Package" transient="true" resolveProxies="false"
eOpposite="#EMOF.Package.nestedPackage"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Package.ownedType"
name="ownedType" ordered="false" upperBound="-1" eType="#EMOF.Type" containment="true"
resolveProxies="false" eOpposite="#EMOF.Type.package"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EMOF.Package.uri" name="uri"
eType="#PrimitiveTypes.String"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.Parameter" name="Parameter"
eSuperTypes="#EMOF.TypedElement #EMOF.MultiplicityElement">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Parameter.operation"
name="operation" eType="#EMOF.Operation" transient="true" resolveProxies="false"
eOpposite="#EMOF.Operation.ownedParameter"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.PrimitiveType" name="PrimitiveType"
eSuperTypes="#EMOF.DataType"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.Property" name="Property" eSuperTypes="#EMOF.TypedElement #EMOF.MultiplicityElement">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Property.class"
name="class" eType="#EMOF.Class" transient="true" resolveProxies="false"
eOpposite="#EMOF.Class.ownedAttribute"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EMOF.Property.default"
name="default" eType="#PrimitiveTypes.String"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EMOF.Property.isComposite"
name="isComposite" eType="#PrimitiveTypes.Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EMOF.Property.isDerived"
name="isDerived" eType="#PrimitiveTypes.Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EMOF.Property.isID"
name="isID" eType="#PrimitiveTypes.Boolean"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EMOF.Property.isReadOnly"
name="isReadOnly" eType="#PrimitiveTypes.Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Property.opposite"
name="opposite" eType="#EMOF.Property"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.ReflectiveCollection" name="ReflectiveCollection"
eSuperTypes="#EMOF.Object">
<eOperations xmi:id="EMOF.ReflectiveCollection.add" name="add" eType="#PrimitiveTypes.Boolean">
<eParameters xmi:id="EMOF.ReflectiveCollection.add.object" name="object" eType="#EMOF.Object"/>
</eOperations>
<eOperations xmi:id="EMOF.ReflectiveCollection.addAll" name="addAll" eType="#PrimitiveTypes.Boolean">
<eParameters xmi:id="EMOF.ReflectiveCollection.addAll.objects" name="objects"
eType="#EMOF.ReflectiveSequence"/>
</eOperations>
<eOperations xmi:id="EMOF.ReflectiveCollection.clear" name="clear"/>
<eOperations xmi:id="EMOF.ReflectiveCollection.remove" name="remove" eType="#PrimitiveTypes.Boolean">
<eParameters xmi:id="EMOF.ReflectiveCollection.remove.object" name="object"
eType="#EMOF.Object"/>
</eOperations>
<eOperations xmi:id="EMOF.ReflectiveCollection.size" name="size" eType="#PrimitiveTypes.Integer"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.ReflectiveSequence" name="ReflectiveSequence"
eSuperTypes="#EMOF.ReflectiveCollection">
<eOperations xmi:id="EMOF.ReflectiveSequence.add" name="add">
<eParameters xmi:id="EMOF.ReflectiveSequence.add.index" name="index" eType="#PrimitiveTypes.Integer"/>
<eParameters xmi:id="EMOF.ReflectiveSequence.add.object" name="object" eType="#EMOF.Object"/>
</eOperations>
<eOperations xmi:id="EMOF.ReflectiveSequence.get" name="get" eType="#EMOF.Object">
<eParameters xmi:id="EMOF.ReflectiveSequence.get.index" name="index" eType="#PrimitiveTypes.Integer"/>
</eOperations>
<eOperations xmi:id="EMOF.ReflectiveSequence.remove" name="remove" eType="#EMOF.Object">
<eParameters xmi:id="EMOF.ReflectiveSequence.remove.index" name="index" eType="#PrimitiveTypes.Integer"/>
</eOperations>
<eOperations xmi:id="EMOF.ReflectiveSequence.set" name="set" eType="#EMOF.Object">
<eParameters xmi:id="EMOF.ReflectiveSequence.set.index" name="index" eType="#PrimitiveTypes.Integer"/>
<eParameters xmi:id="EMOF.ReflectiveSequence.set.object" name="object" eType="#EMOF.Object"/>
</eOperations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.Tag" name="Tag" eSuperTypes="#EMOF.Element">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Tag.element" name="element"
ordered="false" upperBound="-1" eType="#EMOF.Element"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EMOF.Tag.name" name="name"
eType="#PrimitiveTypes.String"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EMOF.Tag.value" name="value"
eType="#PrimitiveTypes.String"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.Type" name="Type" abstract="true"
eSuperTypes="#EMOF.NamedElement">
<eOperations xmi:id="EMOF.Type.isInstance" name="isInstance" eType="#PrimitiveTypes.Boolean">
<eParameters xmi:id="EMOF.Type.isInstance.object" name="object" eType="#EMOF.Object"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Type.package"
name="package" eType="#EMOF.Package" transient="true" resolveProxies="false"
eOpposite="#EMOF.Package.ownedType"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.TypedElement" name="TypedElement"
abstract="true" eSuperTypes="#EMOF.NamedElement">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.TypedElement.type"
name="type" eType="#EMOF.Type"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.URIExtent" name="URIExtent"
eSuperTypes="#EMOF.Extent">
<eOperations xmi:id="EMOF.URIExtent.contextURI" name="contextURI" eType="#PrimitiveTypes.String"/>
<eOperations xmi:id="EMOF.URIExtent.element" name="element" eType="#EMOF.Element">
<eParameters xmi:id="EMOF.URIExtent.element.uri" name="uri" eType="#PrimitiveTypes.String"/>
</eOperations>
<eOperations xmi:id="EMOF.URIExtent.uri" name="uri" eType="#PrimitiveTypes.String">
<eParameters xmi:id="EMOF.URIExtent.uri.element" name="element" eType="#EMOF.Element"/>
</eOperations>
</eClassifiers>
</ecore:EPackage>
<ecore:EPackage xmi:id="EssentialOCL" name="EssentialOCL" nsURI="http://schema.omg.org/spec/QVT/1.1/essentialocl.xml"
nsPrefix="essentialocl">
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.AnyType" name="AnyType"
eSuperTypes="#EMOF.Type"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.BagType" name="BagType"
eSuperTypes="#EssentialOCL.CollectionType"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.BooleanLiteralExp"
name="BooleanLiteralExp" eSuperTypes="#EssentialOCL.PrimitiveLiteralExp">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EssentialOCL.BooleanLiteralExp.booleanSymbol"
name="booleanSymbol" eType="#PrimitiveTypes.Boolean"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.CallExp" name="CallExp"
abstract="true" eSuperTypes="#EssentialOCL.OclExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.CallExp.source"
name="source" eType="#EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="appliedElement"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.CollectionItem" name="CollectionItem"
eSuperTypes="#EssentialOCL.CollectionLiteralPart">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.CollectionItem.item"
name="item" lowerBound="1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" xmi:id="EssentialOCL.CollectionKind" name="CollectionKind">
<eLiterals xmi:id="EssentialOCL.CollectionKind.Set" name="Set"/>
<eLiterals xmi:id="EssentialOCL.CollectionKind.OrderedSet" name="OrderedSet"
value="1"/>
<eLiterals xmi:id="EssentialOCL.CollectionKind.Bag" name="Bag" value="2"/>
<eLiterals xmi:id="EssentialOCL.CollectionKind.Sequence" name="Sequence" value="3"/>
<eLiterals xmi:id="EssentialOCL.CollectionKind.Collection" name="Collection"
value="4"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.CollectionLiteralExp"
name="CollectionLiteralExp" eSuperTypes="#EssentialOCL.LiteralExp">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EssentialOCL.CollectionLiteralExp.kind"
name="kind" eType="#EssentialOCL.CollectionKind"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.CollectionLiteralExp.part"
name="part" ordered="false" upperBound="-1" eType="#EssentialOCL.CollectionLiteralPart"
containment="true" resolveProxies="false" eOpposite="#EssentialOCL.CollectionLiteralPart.collectionLiteralExp"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.CollectionLiteralPart"
name="CollectionLiteralPart" abstract="true" eSuperTypes="#EMOF.TypedElement">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.CollectionLiteralPart.collectionLiteralExp"
name="collectionLiteralExp" lowerBound="1" eType="#EssentialOCL.CollectionLiteralExp"
transient="true" resolveProxies="false" eOpposite="#EssentialOCL.CollectionLiteralExp.part"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.CollectionRange" name="CollectionRange"
eSuperTypes="#EssentialOCL.CollectionLiteralPart">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.CollectionRange.first"
name="first" lowerBound="1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="firstOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.CollectionRange.last"
name="last" lowerBound="1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="lastOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.CollectionType" name="CollectionType"
eSuperTypes="#EMOF.DataType">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.CollectionType.elementType"
name="elementType" lowerBound="1" eType="#EMOF.Type"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.EnumLiteralExp" name="EnumLiteralExp"
eSuperTypes="#EssentialOCL.LiteralExp">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.EnumLiteralExp.referredEnumLiteral"
name="referredEnumLiteral" eType="#EMOF.EnumerationLiteral">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="literalExp"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.ExpressionInOcl" name="ExpressionInOcl"
eSuperTypes="#EMOF.TypedElement">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.ExpressionInOcl.bodyExpression"
name="bodyExpression" lowerBound="1" eType="#EssentialOCL.OclExpression"
containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="topExpression"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.ExpressionInOcl.contextVariable"
name="contextVariable" eType="#EssentialOCL.Variable" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="selfOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.ExpressionInOcl.generatedType"
name="generatedType" ordered="false" upperBound="-1" eType="#EMOF.Type"
containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="owningExpression"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.ExpressionInOcl.parameterVariable"
name="parameterVariable" ordered="false" upperBound="-1" eType="#EssentialOCL.Variable"
containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="varOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.ExpressionInOcl.resultVariable"
name="resultVariable" eType="#EssentialOCL.Variable" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="resultOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.FeatureCallExp" name="FeatureCallExp"
abstract="true" eSuperTypes="#EssentialOCL.CallExp"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.IfExp" name="IfExp"
eSuperTypes="#EssentialOCL.OclExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.IfExp.condition"
name="condition" lowerBound="1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="ifOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.IfExp.elseExpression"
name="elseExpression" lowerBound="1" eType="#EssentialOCL.OclExpression"
containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="elseOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.IfExp.thenExpression"
name="thenExpression" lowerBound="1" eType="#EssentialOCL.OclExpression"
containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="thenOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.IntegerLiteralExp"
name="IntegerLiteralExp" eSuperTypes="#EssentialOCL.NumericLiteralExp">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EssentialOCL.IntegerLiteralExp.integerSymbol"
name="integerSymbol" eType="#PrimitiveTypes.Integer"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.InvalidLiteralExp"
name="InvalidLiteralExp" eSuperTypes="#EssentialOCL.LiteralExp"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.InvalidType" name="InvalidType"
eSuperTypes="#EMOF.Type"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.IterateExp" name="IterateExp"
eSuperTypes="#EssentialOCL.LoopExp">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.IterateExp.result"
name="result" eType="#EssentialOCL.Variable" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="baseExp"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.IteratorExp" name="IteratorExp"
eSuperTypes="#EssentialOCL.LoopExp"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.LetExp" name="LetExp"
eSuperTypes="#EssentialOCL.OclExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.LetExp.in"
name="in" lowerBound="1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.LetExp.variable"
name="variable" lowerBound="1" eType="#EssentialOCL.Variable" containment="true"
resolveProxies="false" eOpposite="#EssentialOCL.Variable.letExp"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.LiteralExp" name="LiteralExp"
abstract="true" eSuperTypes="#EssentialOCL.OclExpression"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.LoopExp" name="LoopExp"
abstract="true" eSuperTypes="#EssentialOCL.CallExp #EssentialOCL.OclExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.LoopExp.body"
name="body" lowerBound="1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="loopBodyOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.LoopExp.iterator"
name="iterator" upperBound="-1" eType="#EssentialOCL.Variable" containment="true"
resolveProxies="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.NavigationCallExp"
name="NavigationCallExp" eSuperTypes="#EssentialOCL.FeatureCallExp"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.NullLiteralExp" name="NullLiteralExp"
eSuperTypes="#EssentialOCL.LiteralExp"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.NumericLiteralExp"
name="NumericLiteralExp" abstract="true" eSuperTypes="#EssentialOCL.PrimitiveLiteralExp"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.OclExpression" name="OclExpression"
abstract="true" eSuperTypes="#EMOF.TypedElement"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.OperationCallExp" name="OperationCallExp"
eSuperTypes="#EssentialOCL.FeatureCallExp">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.OperationCallExp.argument"
name="argument" upperBound="-1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="parentCall"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.OperationCallExp.referredOperation"
name="referredOperation" eType="#EMOF.Operation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="referringExp"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.OrderedSetType" name="OrderedSetType"
eSuperTypes="#EssentialOCL.CollectionType"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.PrimitiveLiteralExp"
name="PrimitiveLiteralExp" abstract="true" eSuperTypes="#EssentialOCL.LiteralExp"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.PropertyCallExp" name="PropertyCallExp"
eSuperTypes="#EssentialOCL.NavigationCallExp">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.PropertyCallExp.referredProperty"
name="referredProperty" eType="#EMOF.Property">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="referringExp"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.RealLiteralExp" name="RealLiteralExp"
eSuperTypes="#EssentialOCL.NumericLiteralExp">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EssentialOCL.RealLiteralExp.realSymbol"
name="realSymbol" eType="#PrimitiveTypes.Real"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.SequenceType" name="SequenceType"
eSuperTypes="#EssentialOCL.CollectionType"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.SetType" name="SetType"
eSuperTypes="#EssentialOCL.CollectionType"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.StringLiteralExp" name="StringLiteralExp"
eSuperTypes="#EssentialOCL.PrimitiveLiteralExp">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EssentialOCL.StringLiteralExp.stringSymbol"
name="stringSymbol" eType="#PrimitiveTypes.String"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.TemplateParameterType"
name="TemplateParameterType" eSuperTypes="#EMOF.Type">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EssentialOCL.TemplateParameterType.specification"
name="specification" eType="#PrimitiveTypes.String"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.TupleLiteralExp" name="TupleLiteralExp"
eSuperTypes="#EssentialOCL.LiteralExp">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.TupleLiteralExp.part"
name="part" ordered="false" upperBound="-1" eType="#EssentialOCL.TupleLiteralPart"
containment="true" resolveProxies="false" eOpposite="#EssentialOCL.TupleLiteralPart.tupleLiteralExp"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.TupleLiteralPart" name="TupleLiteralPart"
eSuperTypes="#EMOF.TypedElement">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.TupleLiteralPart.attribute"
name="attribute" eType="#EMOF.Property"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.TupleLiteralPart.tupleLiteralExp"
name="tupleLiteralExp" eType="#EssentialOCL.TupleLiteralExp" transient="true"
resolveProxies="false" eOpposite="#EssentialOCL.TupleLiteralExp.part"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.TupleLiteralPart.value"
name="value" lowerBound="1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.TupleType" name="TupleType"
eSuperTypes="#EMOF.Class #EMOF.DataType"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.TypeExp" name="TypeExp"
eSuperTypes="#EssentialOCL.OclExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.TypeExp.referredType"
name="referredType" eType="#EMOF.Type"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.UnlimitedNaturalExp"
name="UnlimitedNaturalExp" eSuperTypes="#EssentialOCL.NumericLiteralExp">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EssentialOCL.UnlimitedNaturalExp.symbol"
name="symbol" eType="#PrimitiveTypes.UnlimitedNatural"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.Variable" name="Variable"
eSuperTypes="#EMOF.TypedElement">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.Variable.initExpression"
name="initExpression" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="initializedElement"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.Variable.letExp"
name="letExp" eType="#EssentialOCL.LetExp" transient="true" resolveProxies="false"
eOpposite="#EssentialOCL.LetExp.variable"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.Variable.representedParameter"
name="representedParameter" eType="#EMOF.Parameter"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.VariableExp" name="VariableExp"
eSuperTypes="#EssentialOCL.OclExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.VariableExp.referredVariable"
name="referredVariable" eType="#EssentialOCL.Variable">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="referringExp"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.VoidType" name="VoidType"
eSuperTypes="#EMOF.Type"/>
</ecore:EPackage>
<ecore:EPackage xmi:id="ImperativeOCL" name="ImperativeOCL" nsURI="http://schema.omg.org/spec/QVT/1.1/imperativeocl.xml"
nsPrefix="imperativeocl">
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.AltExp" name="AltExp"
eSuperTypes="#ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.AltExp.body"
name="body" lowerBound="1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="altBodyOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.AltExp.condition"
name="condition" lowerBound="1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="altCondOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.AssertExp" name="AssertExp"
eSuperTypes="#ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.AssertExp.assertion"
name="assertion" lowerBound="1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="assertOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.AssertExp.log"
name="log" eType="#ImperativeOCL.LogExp" containment="true" resolveProxies="false"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="ImperativeOCL.AssertExp.severity"
name="severity" eType="#ImperativeOCL.SeverityKind" defaultValueLiteral="error"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.AssignExp" name="AssignExp"
eSuperTypes="#ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.AssignExp.defaultValue"
name="defaultValue" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="defaultOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="ImperativeOCL.AssignExp.isReset"
name="isReset" eType="#PrimitiveTypes.Boolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.AssignExp.left"
name="left" lowerBound="1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="leftOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.AssignExp.value"
name="value" upperBound="-1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="valueOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.BlockExp" name="BlockExp"
eSuperTypes="#ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.BlockExp.body"
name="body" upperBound="-1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="blockOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.BreakExp" name="BreakExp"
eSuperTypes="#ImperativeOCL.ImperativeExpression"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.CatchExp" name="CatchExp"
eSuperTypes="#ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.CatchExp.body"
name="body" upperBound="-1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.CatchExp.exception"
name="exception" upperBound="-1" eType="#EMOF.Type">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="tryExpression"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.ComputeExp" name="ComputeExp"
eSuperTypes="#ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.ComputeExp.body"
name="body" lowerBound="1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="computeOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.ComputeExp.returnedElement"
name="returnedElement" lowerBound="1" eType="#EssentialOCL.Variable" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="computeOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.ContinueExp" name="ContinueExp"
eSuperTypes="#ImperativeOCL.ImperativeExpression"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.DictLiteralExp" name="DictLiteralExp"
eSuperTypes="#EssentialOCL.LiteralExp">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.DictLiteralExp.part"
name="part" ordered="false" upperBound="-1" eType="#ImperativeOCL.DictLiteralPart"
containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="partOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.DictLiteralPart" name="DictLiteralPart"
eSuperTypes="#EMOF.Element">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.DictLiteralPart.key"
name="key" lowerBound="1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="keyOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.DictLiteralPart.value"
name="value" lowerBound="1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="valOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.DictionaryType" name="DictionaryType"
eSuperTypes="#EssentialOCL.CollectionType">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.DictionaryType.keyType"
name="keyType" eType="#EMOF.Type">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="keyDict"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.ForExp" name="ForExp"
eSuperTypes="#ImperativeOCL.ImperativeLoopExp"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.ImperativeExpression"
name="ImperativeExpression" abstract="true" eSuperTypes="#EssentialOCL.OclExpression"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.ImperativeIterateExp"
name="ImperativeIterateExp" eSuperTypes="#ImperativeOCL.ImperativeLoopExp">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.ImperativeIterateExp.target"
name="target" eType="#EssentialOCL.Variable" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="tgtOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.ImperativeLoopExp"
name="ImperativeLoopExp" abstract="true" eSuperTypes="#EssentialOCL.LoopExp #ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.ImperativeLoopExp.condition"
name="condition" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="loopCondOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.InstantiationExp"
name="InstantiationExp" eSuperTypes="#ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.InstantiationExp.argument"
name="argument" upperBound="-1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="argOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.InstantiationExp.extent"
name="extent" eType="#EssentialOCL.Variable"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.InstantiationExp.instantiatedClass"
name="instantiatedClass" lowerBound="1" eType="#EMOF.Class"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.ListLiteralExp" name="ListLiteralExp"
eSuperTypes="#EssentialOCL.LiteralExp">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.ListLiteralExp.element"
name="element" upperBound="-1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="elementOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.ListType" name="ListType"
eSuperTypes="#EssentialOCL.CollectionType"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.LogExp" name="LogExp"
eSuperTypes="#EssentialOCL.OperationCallExp #ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.LogExp.condition"
name="condition" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="logOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.OrderedTupleLiteralExp"
name="OrderedTupleLiteralExp" eSuperTypes="#EssentialOCL.LiteralExp">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.OrderedTupleLiteralExp.part"
name="part" upperBound="-1" eType="#ImperativeOCL.OrderedTupleLiteralPart"
containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="partOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.OrderedTupleLiteralPart"
name="OrderedTupleLiteralPart" eSuperTypes="#EMOF.Element">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.OrderedTupleLiteralPart.value"
name="value" lowerBound="1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="tupValOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.OrderedTupleType"
name="OrderedTupleType" eSuperTypes="#EMOF.Class">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.OrderedTupleType.elementType"
name="elementType" upperBound="-1" eType="#EMOF.Type">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="eltTuple"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.RaiseExp" name="RaiseExp"
eSuperTypes="#ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.RaiseExp.argument"
name="argument" eType="#EssentialOCL.OclExpression" containment="true" resolveProxies="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.RaiseExp.exception"
name="exception" lowerBound="1" eType="#EMOF.Type">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="raiseExpression"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.ReturnExp" name="ReturnExp"
eSuperTypes="#ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.ReturnExp.value"
name="value" eType="#EssentialOCL.OclExpression" containment="true" resolveProxies="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" xmi:id="ImperativeOCL.SeverityKind" name="SeverityKind">
<eLiterals xmi:id="ImperativeOCL.SeverityKind.error" name="error"/>
<eLiterals xmi:id="ImperativeOCL.SeverityKind.warning" name="warning" value="1"/>
<eLiterals xmi:id="ImperativeOCL.SeverityKind.fatal" name="fatal" value="2"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.SwitchExp" name="SwitchExp"
eSuperTypes="#ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.SwitchExp.alternativePart"
name="alternativePart" upperBound="-1" eType="#ImperativeOCL.AltExp" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="altOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.SwitchExp.elsePart"
name="elsePart" eType="#EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="elsePartOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.TryExp" name="TryExp"
eSuperTypes="#ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.TryExp.exceptClause"
name="exceptClause" upperBound="-1" eType="#ImperativeOCL.CatchExp" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="exceptOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.TryExp.tryBody"
name="tryBody" upperBound="-1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="tryBodyOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.Typedef" name="Typedef"
eSuperTypes="#EMOF.Class">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.Typedef.base"
name="base" lowerBound="1" eType="#EMOF.Type"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.Typedef.condition"
name="condition" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.UnlinkExp" name="UnlinkExp"
eSuperTypes="#ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.UnlinkExp.item"
name="item" lowerBound="1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="itemUnlink"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.UnlinkExp.target"
name="target" lowerBound="1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="tgtUnlink"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.UnpackExp" name="UnpackExp"
eSuperTypes="#ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.UnpackExp.source"
name="source" lowerBound="1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.UnpackExp.targetVariable"
name="targetVariable" lowerBound="1" upperBound="-1" eType="#EssentialOCL.Variable"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.VariableInitExp" name="VariableInitExp"
eSuperTypes="#ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.VariableInitExp.referredVariable"
name="referredVariable" lowerBound="1" eType="#EssentialOCL.Variable" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="declaration"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="ImperativeOCL.VariableInitExp.withResult"
name="withResult" eType="#PrimitiveTypes.Boolean" defaultValueLiteral="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.WhileExp" name="WhileExp"
eSuperTypes="#ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.WhileExp.body"
name="body" lowerBound="1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="whileOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.WhileExp.condition"
name="condition" lowerBound="1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="whileExpression"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
</ecore:EPackage>
<ecore:EPackage xmi:id="QVTBase" name="QVTBase" nsURI="http://schema.omg.org/spec/QVT/1.1/qvtbase.xml"
nsPrefix="qvtbase">
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTBase.Domain" name="Domain" abstract="true"
eSuperTypes="#EMOF.NamedElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="QVTBase.Domain.isCheckable"
name="isCheckable" eType="#PrimitiveTypes.Boolean"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="QVTBase.Domain.isEnforceable"
name="isEnforceable" eType="#PrimitiveTypes.Boolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTBase.Domain.rule"
name="rule" lowerBound="1" eType="#QVTBase.Rule" transient="true" resolveProxies="false"
eOpposite="#QVTBase.Rule.domain"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTBase.Domain.typedModel"
name="typedModel" eType="#QVTBase.TypedModel"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTBase.Function" name="Function"
eSuperTypes="#EMOF.Operation">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTBase.Function.queryExpression"
name="queryExpression" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTBase.FunctionParameter" name="FunctionParameter"
eSuperTypes="#EssentialOCL.Variable #EMOF.Parameter"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTBase.Pattern" name="Pattern"
eSuperTypes="#EMOF.Element">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTBase.Pattern.bindsTo"
name="bindsTo" ordered="false" upperBound="-1" eType="#EssentialOCL.Variable"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTBase.Pattern.predicate"
name="predicate" ordered="false" upperBound="-1" eType="#QVTBase.Predicate"
containment="true" resolveProxies="false" eOpposite="#QVTBase.Predicate.pattern"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTBase.Predicate" name="Predicate"
eSuperTypes="#EMOF.Element">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTBase.Predicate.conditionExpression"
name="conditionExpression" lowerBound="1" eType="#EssentialOCL.OclExpression"
containment="true" resolveProxies="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTBase.Predicate.pattern"
name="pattern" lowerBound="1" eType="#QVTBase.Pattern" transient="true"
resolveProxies="false" eOpposite="#QVTBase.Pattern.predicate"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTBase.Rule" name="Rule" abstract="true"
eSuperTypes="#EMOF.NamedElement">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTBase.Rule.domain"
name="domain" upperBound="-1" eType="#QVTBase.Domain" containment="true"
resolveProxies="false" eOpposite="#QVTBase.Domain.rule"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTBase.Rule.overrides"
name="overrides" eType="#QVTBase.Rule">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="overriden"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTBase.Rule.transformation"
name="transformation" eType="#QVTBase.Transformation" transient="true" resolveProxies="false"
eOpposite="#QVTBase.Transformation.rule"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTBase.Transformation" name="Transformation"
eSuperTypes="#EMOF.Class #EMOF.Package">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTBase.Transformation.extends"
name="extends" eType="#QVTBase.Transformation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="extendedBy"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTBase.Transformation.modelParameter"
name="modelParameter" upperBound="-1" eType="#QVTBase.TypedModel" containment="true"
resolveProxies="false" eOpposite="#QVTBase.TypedModel.transformation"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTBase.Transformation.ownedTag"
name="ownedTag" ordered="false" upperBound="-1" eType="#EMOF.Tag" containment="true"
resolveProxies="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTBase.Transformation.rule"
name="rule" ordered="false" upperBound="-1" eType="#QVTBase.Rule" containment="true"
resolveProxies="false" eOpposite="#QVTBase.Rule.transformation"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTBase.TypedModel" name="TypedModel"
eSuperTypes="#EMOF.NamedElement">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTBase.TypedModel.dependsOn"
name="dependsOn" ordered="false" upperBound="-1" eType="#QVTBase.TypedModel">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="dependent"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTBase.TypedModel.transformation"
name="transformation" lowerBound="1" eType="#QVTBase.Transformation" transient="true"
resolveProxies="false" eOpposite="#QVTBase.Transformation.modelParameter"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTBase.TypedModel.usedPackage"
name="usedPackage" ordered="false" lowerBound="1" upperBound="-1" eType="#EMOF.Package"/>
</eClassifiers>
</ecore:EPackage>
<ecore:EPackage xmi:id="QVTCore" name="QVTCore" nsURI="http://schema.omg.org/spec/QVT/1.1/qvtcore.xml"
nsPrefix="qvtcore">
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTCore.Area" name="Area" abstract="true">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.Area.bottomPattern"
name="bottomPattern" lowerBound="1" eType="#QVTCore.BottomPattern" containment="true"
resolveProxies="false" eOpposite="#QVTCore.BottomPattern.area"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.Area.guardPattern"
name="guardPattern" lowerBound="1" eType="#QVTCore.GuardPattern" containment="true"
resolveProxies="false" eOpposite="#QVTCore.GuardPattern.area"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTCore.Assignment" name="Assignment"
abstract="true" eSuperTypes="#EMOF.Element">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.Assignment.bottomPattern"
name="bottomPattern" lowerBound="1" eType="#QVTCore.BottomPattern" transient="true"
resolveProxies="false" eOpposite="#QVTCore.BottomPattern.assignment"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="QVTCore.Assignment.isDefault"
name="isDefault" eType="#PrimitiveTypes.Boolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.Assignment.value"
name="value" lowerBound="1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="valueAssignment"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTCore.BottomPattern" name="BottomPattern"
eSuperTypes="#QVTCore.CorePattern">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.BottomPattern.area"
name="area" lowerBound="1" eType="#QVTCore.Area" transient="true" resolveProxies="false"
eOpposite="#QVTCore.Area.bottomPattern"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.BottomPattern.assignment"
name="assignment" ordered="false" upperBound="-1" eType="#QVTCore.Assignment"
containment="true" resolveProxies="false" eOpposite="#QVTCore.Assignment.bottomPattern"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.BottomPattern.enforcementOperation"
name="enforcementOperation" ordered="false" upperBound="-1" eType="#QVTCore.EnforcementOperation"
containment="true" resolveProxies="false" eOpposite="#QVTCore.EnforcementOperation.bottomPattern"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.BottomPattern.realizedVariable"
name="realizedVariable" ordered="false" upperBound="-1" eType="#QVTCore.RealizedVariable"
containment="true" resolveProxies="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTCore.CoreDomain" name="CoreDomain"
eSuperTypes="#QVTBase.Domain #QVTCore.Area"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTCore.CorePattern" name="CorePattern"
eSuperTypes="#QVTBase.Pattern">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.CorePattern.variable"
name="variable" ordered="false" upperBound="-1" eType="#EssentialOCL.Variable"
containment="true" resolveProxies="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" xmi:id="QVTCore.EnforcementMode" name="EnforcementMode">
<eLiterals xmi:id="QVTCore.EnforcementMode.Creation" name="Creation"/>
<eLiterals xmi:id="QVTCore.EnforcementMode.Deletion" name="Deletion" value="1"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTCore.EnforcementOperation" name="EnforcementOperation"
eSuperTypes="#EMOF.Element">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.EnforcementOperation.bottomPattern"
name="bottomPattern" eType="#QVTCore.BottomPattern" transient="true" resolveProxies="false"
eOpposite="#QVTCore.BottomPattern.enforcementOperation"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="QVTCore.EnforcementOperation.enforcementMode"
name="enforcementMode" eType="#QVTCore.EnforcementMode"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.EnforcementOperation.operationCallExp"
name="operationCallExp" lowerBound="1" eType="#EssentialOCL.OperationCallExp"
containment="true" resolveProxies="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTCore.GuardPattern" name="GuardPattern"
eSuperTypes="#QVTCore.CorePattern">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.GuardPattern.area"
name="area" lowerBound="1" eType="#QVTCore.Area" transient="true" resolveProxies="false"
eOpposite="#QVTCore.Area.guardPattern"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTCore.Mapping" name="Mapping"
eSuperTypes="#QVTBase.Rule #QVTCore.Area">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.Mapping.context"
name="context" eType="#QVTCore.Mapping" transient="true" resolveProxies="false"
eOpposite="#QVTCore.Mapping.local"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.Mapping.local"
name="local" ordered="false" upperBound="-1" eType="#QVTCore.Mapping" containment="true"
resolveProxies="false" eOpposite="#QVTCore.Mapping.context"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.Mapping.refinement"
name="refinement" ordered="false" upperBound="-1" eType="#QVTCore.Mapping"
eOpposite="#QVTCore.Mapping.specification"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.Mapping.specification"
name="specification" ordered="false" upperBound="-1" eType="#QVTCore.Mapping"
eOpposite="#QVTCore.Mapping.refinement"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTCore.PropertyAssignment" name="PropertyAssignment"
eSuperTypes="#QVTCore.Assignment">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.PropertyAssignment.slotExpression"
name="slotExpression" lowerBound="1" eType="#EssentialOCL.OclExpression"
containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="slotAssignment"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.PropertyAssignment.targetProperty"
name="targetProperty" lowerBound="1" eType="#EMOF.Property">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="assignment"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTCore.RealizedVariable" name="RealizedVariable"
eSuperTypes="#EssentialOCL.Variable"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTCore.VariableAssignment" name="VariableAssignment"
eSuperTypes="#QVTCore.Assignment">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.VariableAssignment.targetVariable"
name="targetVariable" lowerBound="1" eType="#EssentialOCL.Variable">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="assignment"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
</ecore:EPackage>
<ecore:EPackage xmi:id="QVTTemplate" name="QVTTemplate" nsURI="http://schema.omg.org/spec/QVT/1.1/qvttemplate.xml"
nsPrefix="qvttemplate">
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTTemplate.CollectionTemplateExp"
name="CollectionTemplateExp" eSuperTypes="#QVTTemplate.TemplateExp">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTTemplate.CollectionTemplateExp.member"
name="member" ordered="false" upperBound="-1" eType="#EssentialOCL.OclExpression"
containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="listContainer"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTTemplate.CollectionTemplateExp.referredCollectionType"
name="referredCollectionType" lowerBound="1" eType="#EssentialOCL.CollectionType"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTTemplate.CollectionTemplateExp.rest"
name="rest" eType="#EssentialOCL.Variable">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="matchingExp"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTTemplate.ObjectTemplateExp" name="ObjectTemplateExp"
eSuperTypes="#QVTTemplate.TemplateExp">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTTemplate.ObjectTemplateExp.part"
name="part" ordered="false" upperBound="-1" eType="#QVTTemplate.PropertyTemplateItem"
containment="true" resolveProxies="false" eOpposite="#QVTTemplate.PropertyTemplateItem.objContainer"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTTemplate.ObjectTemplateExp.referredClass"
name="referredClass" lowerBound="1" eType="#EMOF.Class"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTTemplate.PropertyTemplateItem"
name="PropertyTemplateItem" eSuperTypes="#EMOF.Element">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="QVTTemplate.PropertyTemplateItem.isOpposite"
name="isOpposite" eType="#PrimitiveTypes.Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTTemplate.PropertyTemplateItem.objContainer"
name="objContainer" lowerBound="1" eType="#QVTTemplate.ObjectTemplateExp"
transient="true" resolveProxies="false" eOpposite="#QVTTemplate.ObjectTemplateExp.part"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTTemplate.PropertyTemplateItem.referredProperty"
name="referredProperty" lowerBound="1" eType="#EMOF.Property">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="propertyItem"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTTemplate.PropertyTemplateItem.value"
name="value" lowerBound="1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="propertyItem"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTTemplate.TemplateExp" name="TemplateExp"
abstract="true" eSuperTypes="#EssentialOCL.LiteralExp">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTTemplate.TemplateExp.bindsTo"
name="bindsTo" eType="#EssentialOCL.Variable"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTTemplate.TemplateExp.where"
name="where" eType="#EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="owner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
</ecore:EPackage>
<ecore:EPackage xmi:id="QVTRelation" name="QVTRelation" nsURI="http://schema.omg.org/spec/QVT/1.1/qvtrelation.xml"
nsPrefix="qvtrelation">
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTRelation.DomainPattern" name="DomainPattern"
eSuperTypes="#QVTBase.Pattern">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.DomainPattern.templateExpression"
name="templateExpression" eType="#QVTTemplate.TemplateExp" containment="true"
resolveProxies="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTRelation.Key" name="Key" eSuperTypes="#EMOF.Element">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.Key.identifies"
name="identifies" lowerBound="1" eType="#EMOF.Class"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.Key.oppositePart"
name="oppositePart" ordered="false" upperBound="-1" eType="#EMOF.Property">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="oppositeKey"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.Key.part"
name="part" ordered="false" upperBound="-1" eType="#EMOF.Property"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.Key.transformation"
name="transformation" eType="#QVTRelation.RelationalTransformation" transient="true"
resolveProxies="false" eOpposite="#QVTRelation.RelationalTransformation.ownedKey"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTRelation.OppositePropertyCallExp"
name="OppositePropertyCallExp" eSuperTypes="#EssentialOCL.PropertyCallExp"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTRelation.Relation" name="Relation"
eSuperTypes="#QVTBase.Rule">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="QVTRelation.Relation.isTopLevel"
name="isTopLevel" eType="#PrimitiveTypes.Boolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.Relation.operationalImpl"
name="operationalImpl" ordered="false" upperBound="-1" eType="#QVTRelation.RelationImplementation"
containment="true" resolveProxies="false" eOpposite="#QVTRelation.RelationImplementation.relation"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.Relation.variable"
name="variable" ordered="false" upperBound="-1" eType="#EssentialOCL.Variable"
containment="true" resolveProxies="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.Relation.when"
name="when" eType="#QVTBase.Pattern" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="whenOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.Relation.where"
name="where" eType="#QVTBase.Pattern" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="whereOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTRelation.RelationCallExp" name="RelationCallExp"
eSuperTypes="#EssentialOCL.OclExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.RelationCallExp.argument"
name="argument" lowerBound="2" upperBound="-1" eType="#EssentialOCL.OclExpression"
containment="true" resolveProxies="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.RelationCallExp.referredRelation"
name="referredRelation" lowerBound="1" eType="#QVTRelation.Relation"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTRelation.RelationDomain" name="RelationDomain"
eSuperTypes="#QVTBase.Domain">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.RelationDomain.defaultAssignment"
name="defaultAssignment" ordered="false" upperBound="-1" eType="#QVTRelation.RelationDomainAssignment"
containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="owner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.RelationDomain.pattern"
name="pattern" eType="#QVTRelation.DomainPattern" containment="true" resolveProxies="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.RelationDomain.rootVariable"
name="rootVariable" lowerBound="1" eType="#EssentialOCL.Variable"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTRelation.RelationDomainAssignment"
name="RelationDomainAssignment" eSuperTypes="#EMOF.Element">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.RelationDomainAssignment.valueExp"
name="valueExp" lowerBound="1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="domainAssignment"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.RelationDomainAssignment.variable"
name="variable" lowerBound="1" eType="#EssentialOCL.Variable">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="domainAssignment"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTRelation.RelationImplementation"
name="RelationImplementation" eSuperTypes="#EMOF.Element">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.RelationImplementation.impl"
name="impl" lowerBound="1" eType="#EMOF.Operation"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.RelationImplementation.inDirectionOf"
name="inDirectionOf" lowerBound="1" eType="#QVTBase.TypedModel"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.RelationImplementation.relation"
name="relation" eType="#QVTRelation.Relation" transient="true" resolveProxies="false"
eOpposite="#QVTRelation.Relation.operationalImpl"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTRelation.RelationalTransformation"
name="RelationalTransformation" eSuperTypes="#QVTBase.Transformation">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.RelationalTransformation.ownedKey"
name="ownedKey" ordered="false" upperBound="-1" eType="#QVTRelation.Key"
containment="true" resolveProxies="false" eOpposite="#QVTRelation.Key.transformation"/>
</eClassifiers>
</ecore:EPackage>
<ecore:EPackage xmi:id="QVTOperational" name="QVTOperational" nsURI="http://schema.omg.org/spec/QVT/1.1/qvtoperational.xml"
nsPrefix="qvtoperational">
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.Constructor" name="Constructor"
eSuperTypes="#QVTOperational.ImperativeOperation"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.ConstructorBody"
name="ConstructorBody" eSuperTypes="#QVTOperational.OperationBody"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.ContextualProperty"
name="ContextualProperty" eSuperTypes="#EMOF.Property">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.ContextualProperty.context"
name="context" lowerBound="1" eType="#EMOF.Class"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.ContextualProperty.initExpression"
name="initExpression" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="ownerProperty"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.ContextualProperty.overridden"
name="overridden" eType="#EMOF.Property">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="overriding"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" xmi:id="QVTOperational.DirectionKind" name="DirectionKind">
<eLiterals xmi:id="QVTOperational.DirectionKind.in" name="in"/>
<eLiterals xmi:id="QVTOperational.DirectionKind.inout" name="inout" value="1"/>
<eLiterals xmi:id="QVTOperational.DirectionKind.out" name="out" value="2"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.EntryOperation" name="EntryOperation"
eSuperTypes="#QVTOperational.ImperativeOperation"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.Helper" name="Helper"
eSuperTypes="#QVTOperational.ImperativeOperation">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="QVTOperational.Helper.isQuery"
name="isQuery" eType="#PrimitiveTypes.Boolean"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.ImperativeCallExp"
name="ImperativeCallExp" eSuperTypes="#EssentialOCL.OperationCallExp #ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="QVTOperational.ImperativeCallExp.isVirtual"
name="isVirtual" eType="#PrimitiveTypes.Boolean" defaultValueLiteral="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.ImperativeOperation"
name="ImperativeOperation" eSuperTypes="#EMOF.Operation">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.ImperativeOperation.body"
name="body" eType="#QVTOperational.OperationBody" containment="true" resolveProxies="false"
eOpposite="#QVTOperational.OperationBody.operation"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.ImperativeOperation.context"
name="context" eType="#QVTOperational.VarParameter" containment="true" resolveProxies="false"
eOpposite="#QVTOperational.VarParameter.ctxOwner"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="QVTOperational.ImperativeOperation.isBlackbox"
name="isBlackbox" eType="#PrimitiveTypes.Boolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.ImperativeOperation.overridden"
name="overridden" eType="#QVTOperational.ImperativeOperation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="overriding"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.ImperativeOperation.result"
name="result" upperBound="-1" eType="#QVTOperational.VarParameter" containment="true"
resolveProxies="false" eOpposite="#QVTOperational.VarParameter.resOwner"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" xmi:id="QVTOperational.ImportKind" name="ImportKind">
<eLiterals xmi:id="QVTOperational.ImportKind.extension" name="extension"/>
<eLiterals xmi:id="QVTOperational.ImportKind.access" name="access" value="1"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.Library" name="Library"
eSuperTypes="#QVTOperational.Module"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.MappingBody" name="MappingBody"
eSuperTypes="#QVTOperational.OperationBody">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.MappingBody.endSection"
name="endSection" upperBound="-1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="endOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.MappingBody.initSection"
name="initSection" upperBound="-1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="initOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.MappingCallExp" name="MappingCallExp"
eSuperTypes="#QVTOperational.ImperativeCallExp">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="QVTOperational.MappingCallExp.isStrict"
name="isStrict" eType="#PrimitiveTypes.Boolean"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.MappingOperation"
name="MappingOperation" eSuperTypes="#QVTOperational.ImperativeOperation">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.MappingOperation.disjunct"
name="disjunct" upperBound="-1" eType="#QVTOperational.MappingOperation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="disjuncter"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.MappingOperation.inherited"
name="inherited" upperBound="-1" eType="#QVTOperational.MappingOperation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="inheriting"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.MappingOperation.merged"
name="merged" upperBound="-1" eType="#QVTOperational.MappingOperation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="merging"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.MappingOperation.refinedRelation"
name="refinedRelation" eType="#QVTRelation.Relation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="refiningOperation"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.MappingOperation.when"
name="when" eType="#EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="whenOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.MappingOperation.where"
name="where" eType="#EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="whereOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.MappingParameter"
name="MappingParameter" eSuperTypes="#QVTOperational.VarParameter">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.MappingParameter.extent"
name="extent" eType="#QVTOperational.ModelParameter"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.MappingParameter.referredDomain"
name="referredDomain" eType="#QVTRelation.RelationDomain">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="referringParameter"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.ModelParameter" name="ModelParameter"
eSuperTypes="#QVTOperational.VarParameter"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.ModelType" name="ModelType"
eSuperTypes="#EMOF.Class">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.ModelType.additionalCondition"
name="additionalCondition" upperBound="-1" eType="#EssentialOCL.OclExpression"
containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="condOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="QVTOperational.ModelType.conformanceKind"
name="conformanceKind" eType="#PrimitiveTypes.String" defaultValueLiteral="effective"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.ModelType.metamodel"
name="metamodel" lowerBound="1" upperBound="-1" eType="#EMOF.Package"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.Module" name="Module"
eSuperTypes="#EMOF.Class #EMOF.Package">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.Module.configProperty"
name="configProperty" upperBound="-1" eType="#EMOF.Property"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.Module.entry"
name="entry" eType="#QVTOperational.EntryOperation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="entryContext"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="QVTOperational.Module.isBlackbox"
name="isBlackbox" eType="#PrimitiveTypes.Boolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.Module.moduleImport"
name="moduleImport" upperBound="-1" eType="#QVTOperational.ModuleImport"
containment="true" resolveProxies="false" eOpposite="#QVTOperational.ModuleImport.module"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.Module.ownedTag"
name="ownedTag" upperBound="-1" eType="#EMOF.Tag" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="owner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.Module.ownedVariable"
name="ownedVariable" ordered="false" upperBound="-1" eType="#EssentialOCL.Variable"
containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="variableOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.Module.usedModelType"
name="usedModelType" upperBound="-1" eType="#QVTOperational.ModelType"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.ModuleImport" name="ModuleImport"
eSuperTypes="#EMOF.Element">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.ModuleImport.binding"
name="binding" upperBound="-1" eType="#QVTOperational.ModelType"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.ModuleImport.importedModule"
name="importedModule" lowerBound="1" eType="#QVTOperational.Module">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="importingElement"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="QVTOperational.ModuleImport.kind"
name="kind" eType="#QVTOperational.ImportKind"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.ModuleImport.module"
name="module" eType="#QVTOperational.Module" transient="true" resolveProxies="false"
eOpposite="#QVTOperational.Module.moduleImport"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.ObjectExp" name="ObjectExp"
eSuperTypes="#ImperativeOCL.InstantiationExp">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.ObjectExp.body"
name="body" lowerBound="1" eType="#QVTOperational.ConstructorBody" containment="true"
resolveProxies="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.ObjectExp.referredObject"
name="referredObject" lowerBound="1" eType="#EssentialOCL.Variable">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="objectExpression"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.OperationBody" name="OperationBody"
eSuperTypes="#EMOF.Element">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.OperationBody.content"
name="content" upperBound="-1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="contentOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.OperationBody.operation"
name="operation" eType="#QVTOperational.ImperativeOperation" transient="true"
resolveProxies="false" eOpposite="#QVTOperational.ImperativeOperation.body"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.OperationBody.variable"
name="variable" ordered="false" upperBound="-1" eType="#EssentialOCL.Variable"
containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="opBody"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.OperationalTransformation"
name="OperationalTransformation" eSuperTypes="#QVTOperational.Module">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.OperationalTransformation.intermediateClass"
name="intermediateClass" upperBound="-1" eType="#EMOF.Class">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="transfClient"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.OperationalTransformation.intermediateProperty"
name="intermediateProperty" upperBound="-1" eType="#EMOF.Property">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="tranfClient"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.OperationalTransformation.modelParameter"
name="modelParameter" upperBound="-1" eType="#QVTOperational.ModelParameter"
containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="module"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.OperationalTransformation.refined"
name="refined" eType="#QVTRelation.RelationalTransformation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="refinement"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.OperationalTransformation.relation"
name="relation" upperBound="-1" eType="#QVTRelation.Relation" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="owner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.ResolveExp" name="ResolveExp"
eSuperTypes="#EssentialOCL.CallExp #ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.ResolveExp.condition"
name="condition" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="QVTOperational.ResolveExp.isDeferred"
name="isDeferred" eType="#PrimitiveTypes.Boolean"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="QVTOperational.ResolveExp.isInverse"
name="isInverse" eType="#PrimitiveTypes.Boolean"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="QVTOperational.ResolveExp.one"
name="one" eType="#PrimitiveTypes.Boolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.ResolveExp.target"
name="target" eType="#EssentialOCL.Variable" containment="true" resolveProxies="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.ResolveInExp" name="ResolveInExp"
eSuperTypes="#QVTOperational.ResolveExp">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.ResolveInExp.inMapping"
name="inMapping" eType="#QVTOperational.MappingOperation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="resolveExpression"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.VarParameter" name="VarParameter"
eSuperTypes="#EssentialOCL.Variable #EMOF.Parameter">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.VarParameter.ctxOwner"
name="ctxOwner" eType="#QVTOperational.ImperativeOperation" transient="true"
resolveProxies="false" eOpposite="#QVTOperational.ImperativeOperation.context"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="QVTOperational.VarParameter.kind"
name="kind" eType="#QVTOperational.DirectionKind"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.VarParameter.resOwner"
name="resOwner" eType="#QVTOperational.ImperativeOperation" transient="true"
resolveProxies="false" eOpposite="#QVTOperational.ImperativeOperation.result"/>
</eClassifiers>
</ecore:EPackage>
</xmi:XMI>