<?xml version="1.0" encoding="UTF-8"?>
<ecore:EPackage 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" name="qvtbase"
    nsURI="http://www.schema.omg.org/spec/QVT/1.0/qvtbase" nsPrefix="qvtbase">
  <eClassifiers xsi:type="ecore:EClass" name="Domain" eSuperTypes="emof.ecore#//NamedElement">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isCheckable" eType="ecore:EDataType emof.ecore#//Boolean"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isEnforceable" eType="ecore:EDataType emof.ecore#//Boolean"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="rule" lowerBound="1" eType="#//Rule"
        transient="true" eOpposite="#//Rule/domain"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="typedModel" eType="#//TypedModel"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Transformation" eSuperTypes="emof.ecore#//Class emof.ecore#//Package">
    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedTag" upperBound="-1"
        eType="ecore:EClass emof.ecore#//Tag" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="modelParameter" upperBound="-1"
        eType="#//TypedModel" containment="true" eOpposite="#//TypedModel/transformation"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="rule" upperBound="-1" eType="#//Rule"
        containment="true" eOpposite="#//Rule/transformation"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="extends" eType="#//Transformation"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="TypedModel" eSuperTypes="emof.ecore#//NamedElement">
    <eStructuralFeatures xsi:type="ecore:EReference" name="transformation" lowerBound="1"
        eType="#//Transformation" transient="true" eOpposite="#//Transformation/modelParameter"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="usedPackage" lowerBound="1"
        upperBound="-1" eType="ecore:EClass emof.ecore#//Package"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="dependsOn" upperBound="-1"
        eType="#//TypedModel"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Rule" eSuperTypes="emof.ecore#//NamedElement">
    <eStructuralFeatures xsi:type="ecore:EReference" name="domain" upperBound="-1"
        eType="#//Domain" containment="true" eOpposite="#//Domain/rule"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="transformation" lowerBound="1"
        eType="#//Transformation" transient="true" eOpposite="#//Transformation/rule"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="overrides" eType="#//Rule"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Pattern" eSuperTypes="emof.ecore#//Element">
    <eStructuralFeatures xsi:type="ecore:EReference" name="predicate" upperBound="-1"
        eType="#//Predicate" containment="true" eOpposite="#//Predicate/pattern"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="bindsTo" upperBound="-1"
        eType="ecore:EClass essentialocl.ecore#//Variable"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Predicate" eSuperTypes="emof.ecore#//Element">
    <eStructuralFeatures xsi:type="ecore:EReference" name="conditionExpression" lowerBound="1"
        eType="ecore:EClass essentialocl.ecore#//OclExpression" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="pattern" lowerBound="1"
        eType="#//Pattern" transient="true" eOpposite="#//Pattern/predicate"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Function" eSuperTypes="emof.ecore#//Operation">
    <eStructuralFeatures xsi:type="ecore:EReference" name="queryExpression" eType="ecore:EClass essentialocl.ecore#//OclExpression"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="FunctionParameter" eSuperTypes="emof.ecore#//Parameter essentialocl.ecore#//Variable"/>
</ecore:EPackage>
