Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEd Willink2014-12-16 22:06:02 +0000
committerEd Willink2014-12-16 22:06:02 +0000
commit304ae3fc333caee54f9d07749f5c7d7ee113d0f4 (patch)
tree869f445d12e89fdb3ff6022f8e34e3def80e9cd3
parent8da58e0adedfcf8b33052b193a3587283d12bc56 (diff)
parentfb8a10e838237ee989606be27fa336f0a1ae4b2a (diff)
downloadorg.eclipse.qvtd-304ae3fc333caee54f9d07749f5c7d7ee113d0f4.tar.gz
org.eclipse.qvtd-304ae3fc333caee54f9d07749f5c7d7ee113d0f4.tar.xz
org.eclipse.qvtd-304ae3fc333caee54f9d07749f5c7d7ee113d0f4.zip
Merge remote-tracking branch 'origin/hhoyos/qvtr' into ewillink/ocl25
-rw-r--r--doc/org.eclipse.qvtd.doc/ROBOdoc/QVT-D.rc95
-rw-r--r--examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/.classpath2
-rw-r--r--examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/.project6
-rw-r--r--examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/.settings/org.eclipse.jdt.core.prefs5
-rw-r--r--examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/META-INF/MANIFEST.MF3
-rw-r--r--examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/Readme.txt8
-rw-r--r--examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/build.properties3
-rw-r--r--examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/AbstractToConcrete/AbtractToConcrete.qvtc103
-rw-r--r--examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/AbstractToConcrete/ClassAbstractToConcrete.ecore29
-rw-r--r--examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/AbstractToConcrete/ClassMM_IN.emof24
-rw-r--r--examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/HstmToStm.mwe232
-rw-r--r--examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/HstmToStm.mwe2.launch14
-rw-r--r--examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/hstmMM.emof47
-rw-r--r--examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/hstmMM.xml36
-rw-r--r--examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/hstmUM.xml24
-rw-r--r--examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/hstmtostm.qvt82
-rw-r--r--examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/hstmtostm.qvtr85
-rw-r--r--examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/stmMM.emof43
-rw-r--r--examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/stmMM.xml32
-rw-r--r--examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/stmUM.xml39
-rw-r--r--examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/src/org/eclipse/qvtd/examples/qvtrelation/modelmorf/MetamodelEntry.java43
-rw-r--r--examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/src/org/eclipse/qvtd/examples/qvtrelation/modelmorf/ModelEntry.java52
-rw-r--r--examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/src/org/eclipse/qvtd/examples/qvtrelation/modelmorf/ModelMorfComponent.java298
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/ExportAntTask.jardesc34
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/META-INF/MANIFEST.MF18
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/build.properties8
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/model/ECoreContainmentTree.ecore15
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/model/Graph.ecore38
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/model/Graph.genmodel37
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/model/GraphMlTypes.ecore54
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/model/GraphMlTypes.genmodel56
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/model/QVTcConfig.ecore (renamed from plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/config/QVTcConfig.ecore)31
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/model/QVTcDataDependencyGraph.ecore61
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/plugin.properties4
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/schema/graphml-structure.xsd1107
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/schema/graphml.xsd362
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/schema/xlink.xsd59
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/schema/yfeatures.xsd22
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/schema/ygraphics.xsd1813
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/schema/ygraphml.xsd128
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/schema/yprocessors.xsd87
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/EolTask.java183
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/EpsilonTask.java202
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/EtlTask.java77
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/FlockTask.java155
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/MtcBroker.java776
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/PivotModel.java206
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/PivotUtil.java37
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/QvtMtcExecutionException.java40
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/dependence/DominatorTree.eol0
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/dependence/QVTiDataDependencies.eol497
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/extras/EcoreToContainmentGraph.eol166
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/extras/GraphToGraphML.eol148
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/extras/QVTcToText.egl96
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/extras/QVTiToText.egl104
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/extras/QVTsToGraphML.etl0
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/extras/TreeToGraphML.eol40
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/helpers/ConfigQueries.eol82
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/helpers/DataDependenceGraphHelpers.eol262
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/helpers/Math.eol62
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/helpers/OCLExpressionAnalysis.eol202
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/helpers/OclLibHelper.eol44
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/helpers/PromoteToQVTModel.eol109
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/helpers/QVTHelpers.eol966
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/helpers/QVTsHelpers.eol42
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/Helpers.eol182
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/OclLibHelper.eol23
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/QVTcToQVTu.mig391
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/QVTmToQVTiPartition.etl493
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/QVTuToQVTm.mig674
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/QVTuToQVTmPartition.etl394
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/QvtuToQvtiMtc.xml82
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/qvtr/MiddleModelSytnthesis.etl21
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/scheduling/MapOrdering.eol164
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/scheduling/QVTpToSchedule.etl118
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/scheduling/QVTs-pToQVTi.etl409
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/scheduling/Scheduler.eol597
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/scheduling/qvtiScheduling.xml71
-rw-r--r--plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/utils/EcoreToContainmentTree.eol117
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/.classpath7
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/.gitignore1
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/.project28
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/.settings/org.eclipse.core.runtime.prefs2
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/.settings/org.eclipse.jdt.core.prefs95
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/META-INF/MANIFEST.MF24
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/build.properties9
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/plugin.properties4
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/Activator.java60
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/KeyBindings.java94
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/PivotPropertyKey.java40
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/QVTr2QVTcRelations.java1219
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/QvtrToQvtcTransformation.java507
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/RelToCoreRevised.qvtr2071
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/RelationKey.java11
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/Rule.java118
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/AbstractBindings.java114
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/AbstractRule.java122
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/OCLExpCopy.java4073
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/QVTcoreBaseBottomPatternKey.java39
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/QVTcoreBaseCoreDomainKey.java41
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/QVTcoreBaseGuardPatternKey.java40
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/QVTcoreMappingKey.java43
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/QVTcoreVariableKey.java45
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/RelationToTraceClass.java192
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/RelationalTransformationToMappingTransformation.java176
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/RelationalTransformationToTracePackage.java139
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/RuleBindings.java153
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/SubTemplateToTraceClassProps.java131
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/TROppositeDomainsToMappingForEnforcement.java19
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/TopLevelRelationToMappingForEnforcement.java313
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/OCLExpressionCopyMethods.egl104
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/OCLExpressionCopyMethods.launch19
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/QVTrCallTreeToGraphML.launch13
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/QVTrRelationCallsToGraphML.eol136
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/RelToCore.graphml1169
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/RelToCore.qvtras9512
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/RelationList.txt50
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/TransformationTraceData.java16
-rw-r--r--plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/TransformationTraceDataImpl.java36
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/.classpath7
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/.gitignore1
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/.project28
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/META-INF/MANIFEST.MF18
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/build.properties11
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/AbstractAction.java192
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/AbstractDatum.java191
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/ClassDatum.java21
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/DataParameter.java170
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/DistinctData.java97
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/InputAction.java17
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/MappingAction.java54
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/OutputAction.java17
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/Schedule.java63
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/AbstractActionImpl.java514
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/AbstractDatumImpl.java480
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/ClassDatumImpl.java39
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/DataParameterImpl.java476
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/DistinctDataImpl.java281
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/InputActionImpl.java39
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/MappingActionImpl.java157
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/OutputActionImpl.java39
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/ScheduleImpl.java206
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/qvtscheduleFactoryImpl.java161
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/qvtschedulePackageImpl.java688
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/qvtscheduleFactory.java96
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/qvtschedulePackage.java1474
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/util/qvtscheduleAdapterFactory.java264
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/util/qvtscheduleSwitch.java282
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/model/QVTSchedule.aird1000
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/model/QVTSchedule.ecore67
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/model/QVTSchedule.genmodel52
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/model/Schedule.di2
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/model/Schedule.notation591
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/model/Schedule.uml174
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/plugin.properties12
-rw-r--r--plugins/org.eclipse.qvtd.build.schedule/plugin.xml17
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/.classpath1
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/.settings/org.eclipse.jdt.core.prefs5
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/META-INF/MANIFEST.MF15
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/QVTTrace.log17
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/build.properties5
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/Activator.java (renamed from tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/Activator.java)2
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HLSNode.xmi296
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HLSNodeValidate.xmi29
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HLSTree.ecore15
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HLSTreeContainmentTree.xmi6
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS-QVTcToQVTu.launch12
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS-QVTuToQVTm.launch12
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.ecore16
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtc66
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtcas252
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtias377
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtm.qvtcas213
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtp.qvtias249
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtu.qvtcas223
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.xmi5765
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLSConfig.xmi11
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLSContainmentTree.xmi2
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLSSchdule.xmi52
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLSSchedule.xmi64
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSVNode.xmi37
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSVTree.ecore15
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSVTreeContainmentTree.xmi2
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/QVTdMtcTests.java279
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/QVTdMtcTests.launch21
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/MapOrdering.launch15
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/QVTcToQVTu.launch12
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/QVTiDependenceAnalysis.launch22
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/QVTiToText.launch18
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/QVTmToQVTiPartition.launch14
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/QVTmToText.launch18
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/QVTpToSchedule.launch14
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/QVTs-pToQVTi.launch14
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/QVTuToQVTm.launch12
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/Scheduling.launch17
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRDBMS.ecore (renamed from tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/UmlToRdbms/SimpleRDBMS.ecore)92
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRDBMS.ecore.oclas165
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRdbmsContainment.xmi30
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRdbmsContainmentTree.xmi51
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRdbmsEcoreToContainmentGraph.launch12
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRdbmsEcoreToContainmentTree.launch12
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleUML.ecore (renamed from tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/UmlToRdbms/SimpleUML.ecore)92
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleUML.ecore.oclas172
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleUMLPeople.xmi95
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleUmlContainment.xmi30
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleUmlContainmentTree.xmi2
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleUmlEcoreToContainmentTree.launch12
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UMLtoRDBMS.ecore136
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UMLtoRDBMS.ecore.oclas278
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms QvtuToQvti.launch (renamed from tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/UmlToRdbms/UmlToRdbms QvtuToQvti.launch)8
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtc (renamed from tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/UmlToRdbms/UmlToRdbms.qvtc)806
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtcas1761
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvti519
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtias2956
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtm.qvtcas2569
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtm.qvtcas.rc2569
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtp.qvtias2266
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtu.qvtcas1665
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsConfig.xmi (renamed from tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/UmlToRdbms/UmlToRdbmsConfig.xmi)24
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsContainment.xmi52
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsContainmentTree.xmi2
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsDataDep.xmi2
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsEcoreToContainmentTree.launch12
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsInterMap.xmi9
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsMergeDataDep.xmi2
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsReducedDataDep.xmi2
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsSchedule.xmi370
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsSimple.qvtias2137
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/VerySimpleUML.ecore9
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/Graph2Graph.xmi195
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/SimpleGraph.ecore27
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/SimpleGraph.xmi14
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/SimpleGraph2Graph.ecore27
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/SimpleGraph2GraphContainmentTree.xmi2
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/SimpleGraphContainmentTree.xmi19
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/SimpleGraphLower.xmi14
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/SimpleGraphLowerValidate.xmi47
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower QvtuToQvti.launch30
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower.qvtc95
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower.qvtcas423
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower.qvtias792
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower.qvtm.qvtcas396
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower.qvtp.qvtias530
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower.qvtu.qvtcas406
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLowerConfig.xmi (renamed from tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/GraphToGraphMinimal/UpperToLowerConfig.xmi)6
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLowerPartition.qvtm.qvtcas223
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLowerSchdule.xmi52
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLowerSchedule.xmi132
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UtoLGraphQVTiToText.launch18
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/build.properties (renamed from tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/GraphToGraphMinimal/build.properties)0
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/SimpleOCL/SimpleOCLMergeDataDep.graphml636
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/DataDepToGraphML.launch12
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/InterDepToGraphML.launch12
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/MergeDataDepToGraphML.launch12
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/ReducedDataDepToGraphML.launch12
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/SimpleUmlContainmentTree.graphml6
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/UmlToRdbmsContainmentTree.graphml6
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/UmlToRdbmsDataDep.graphml1085
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/UmlToRdbmsInterDep.graphml1076
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/UmlToRdbmsMergeDataDep.graphml1895
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/UmlToRdbmsReducedDataDep.graphml1916
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/flattening/InheritanceFlatenning.qvtc (renamed from tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/flattening/InheritanceFlatenning.qvtc)0
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/flattening/InheritanceFlatenning.qvtcas595
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/flattening/InheritanceFlatenning.qvtu.qvtcas530
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/flattening/InheritanceFlatenningConfig.xmi10
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/flattening/SimpleUmlToFlatUml.ecore (renamed from tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/flattening/SimpleUmlToFlatUml.ecore)106
-rw-r--r--tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/UmlToRdbms/UMLtoRDBMS.ecore63
-rw-r--r--tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/.classpath7
-rw-r--r--tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/.gitignore1
-rw-r--r--tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/.project28
-rw-r--r--tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/.settings/org.eclipse.core.runtime.prefs2
-rw-r--r--tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/META-INF/MANIFEST.MF12
-rw-r--r--tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/build.properties4
-rw-r--r--tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/QvtrToQvtcTests.java121
-rw-r--r--tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/QvtrToQvtcTests.launch16
-rw-r--r--tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/RelToCore.qvtr2043
-rw-r--r--tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/abstracttoconcrete/AbstractToConcrete.qvtras208
-rw-r--r--tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/abstracttoconcrete/ClassMM_IN.emof40
-rw-r--r--tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/classmodeltoclassmodel/ClassMM.emof29
-rw-r--r--tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/classmodeltoclassmodel/ClassModelToClassModel.qvtr96
-rw-r--r--tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/classmodeltoclassmodel/ClassModelToClassModel.qvtras209
-rw-r--r--tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/seqtostm/SeqMM.emof79
-rw-r--r--tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/seqtostm/SeqToStm.qvtr56
-rw-r--r--tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/seqtostm/SeqToStm.qvtras108
-rw-r--r--tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/seqtostm/StmcMM.emof78
289 files changed, 82256 insertions, 1707 deletions
diff --git a/doc/org.eclipse.qvtd.doc/ROBOdoc/QVT-D.rc b/doc/org.eclipse.qvtd.doc/ROBOdoc/QVT-D.rc
new file mode 100644
index 000000000..4403a7194
--- /dev/null
+++ b/doc/org.eclipse.qvtd.doc/ROBOdoc/QVT-D.rc
@@ -0,0 +1,95 @@
+# QVT-D.rc
+items:
+# General items
+ NAME
+ FUNCTION
+ CONTEXT
+ PARAMETERS
+ ANNOTATIONS
+ RESULT
+ TODO
+ SEE ALSO
+# FLOCK
+ ORIGINAL
+ EVOLVED
+ IGNORING
+ WHEN
+# ETL Specific
+ FROM
+ TO
+ GUARD
+ignore items:
+ HISTORY
+ BUGS
+item order:
+ NAME
+ FUNCTION
+ CONTEXT
+ PARAMETERS
+ FROM
+ TO
+ GUARD
+ ANNOTATIONS
+ RESULT
+ TODO
+ SEE ALSO
+source items:
+ SYNOPSIS
+preformatted items:
+ INPUTS
+ OUTPUTS
+format items:
+ FUNCTION
+ SIDE EFFECTS
+options:
+ --html
+ --multidoc
+ --index
+ --tabsize 4
+headertypes:
+ d "Delete" robo_deletes
+ f "Flock" robo_flock 1
+ l "Libraries" robo_libraries 1
+ m "Migrate" robo_migrates
+ o "Operations" robo_operations
+ r "Retype" robo_retypes
+ t "Transformation" robo_transformations 1
+ u "Rule" robo_rule
+ignore files:
+ README
+ CVS
+ *.bak
+ *.classpath
+ *.gitignore
+ *.properties
+ *.project
+ *.xml
+accept files:
+ *.eol
+ *.etl
+ *.mig
+ *.egl
+header markers:
+ /****
+ #****
+remark markers:
+ *
+ #
+end markers:
+ ****
+ #****
+header separate characters:
+ ,
+header ignore characters:
+ [
+remark begin markers:
+ /*
+remark end markers:
+ */
+source line comments:
+ //
+keywords:
+ if
+ do
+ while
+ for \ No newline at end of file
diff --git a/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/.classpath b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/.classpath
index 6003f2b92..5d8a76332 100644
--- a/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/.classpath
+++ b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/.classpath
@@ -2,7 +2,7 @@
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry excluding="**" kind="src" output="qvtrbin" path="qvtrsrc"/>
+ <classpathentry kind="src" output="qvtrbin" path="qvtrsrc"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/.project b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/.project
index a4fda5661..76ed06c03 100644
--- a/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/.project
+++ b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/.project
@@ -6,6 +6,11 @@
</projects>
<buildSpec>
<buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
@@ -13,5 +18,6 @@
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
</natures>
</projectDescription>
diff --git a/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/.settings/org.eclipse.jdt.core.prefs b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/.settings/org.eclipse.jdt.core.prefs
index af0f20f97..eb1cb4cf9 100644
--- a/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/.settings/org.eclipse.jdt.core.prefs
+++ b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/.settings/org.eclipse.jdt.core.prefs
@@ -1,7 +1,12 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.5
diff --git a/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/META-INF/MANIFEST.MF b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/META-INF/MANIFEST.MF
index c3f2ef625..ef97a36be 100644
--- a/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/META-INF/MANIFEST.MF
+++ b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/META-INF/MANIFEST.MF
@@ -6,3 +6,6 @@ Bundle-Version: 1.0.0.qualifier
Export-Package: org.eclipse.qvtd.examples.qvtrelation.modelmorf
Bundle-Vendor: Eclipse Modeling Project
Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Require-Bundle: org.eclipse.emf.mwe2.runtime;bundle-version="2.7.0",
+ org.eclipse.emf.mwe2.launch;bundle-version="2.7.0",
+ org.apache.log4j;bundle-version="1.2.15"
diff --git a/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/Readme.txt b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/Readme.txt
new file mode 100644
index 000000000..c71a425c9
--- /dev/null
+++ b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/Readme.txt
@@ -0,0 +1,8 @@
+- You need to get a copy of ModelMorf and have a valid licence. Download links and licence information can be found here: http://www.tcs-trddc.com/trddc_website/ModelMorf/ModelMorf.htm
+- You need to create two substition strings in your Eclipse (Windows->Preferences->Run/Debug->String Substitution)
+ - java_15: Should point to the java.exe of a Java 1.5 32-bit JVM executable.
+ - modelmorf: Should point to your ModelMorf installation path (i.e. C:\ModelMorf).
+- The workspace or git repository where the plugins exists can not have spaces in the path.
+- The *.qvt file is a copy of the *.qvtr file with some minor modifications due to syntax differences between ModelMorf and Eclipse QVTd concrete syntax. Hence, if you want to modify the source, recommended approach is to do it in the *.qvtr file to take advantage of error highlighting and type resolution and then copy the changes to the *.qvt file.
+- ModelMorf requires that all metamodels and models are *.xml files. Read "Modeling with EMF Editor.pdf" in your ModelMorf /Examples folder for a guide on how to get the xml files from Ecore and XMI files.
+ \ No newline at end of file
diff --git a/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/build.properties b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/build.properties
index 4d87a2ed0..551a7882e 100644
--- a/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/build.properties
+++ b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/build.properties
@@ -8,7 +8,8 @@
# Contributors:
# E.D.Willink - initial API and implementation
###############################################################################
-source.. = src/
+source.. = src/,\
+ qvtsrc/
output.. = bin/
bin.includes = META-INF/,\
.,\
diff --git a/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/AbstractToConcrete/AbtractToConcrete.qvtc b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/AbstractToConcrete/AbtractToConcrete.qvtc
new file mode 100644
index 000000000..dad448448
--- /dev/null
+++ b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/AbstractToConcrete/AbtractToConcrete.qvtc
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2007,2008 Tata Consultancy Services and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * TCS - initial implementation for ModelMorf
+ * E.D.Willink - alignment with evolved specification
+ *******************************************************************************/
+import UMLMM : 'ClassMM_IN.emof'::ClassMM;
+import ABS2CONC : 'ClassAbstractToConcrete.ecore'::abs2conc;
+
+transformation AbstractToConcrete {
+ uml1 imports UMLMM;
+ uml2 imports UMLMM;
+ imports ABS2CONC;
+}
+
+map AbstractClassToConcreteClass in AbstractToConcrete {
+ uml1 (cc1 : Class, ac : Class |
+ cc1.inheritsFrom = ac;
+ ac.isAbstract;)
+ {
+
+ }
+ enforce uml2 ()
+ {
+ realize cc2 : Class |
+ }
+ where () {
+ realize p2c : ParentToChild |
+ p2c.parent := ac;
+ p2c.class2 := cc2;
+ }
+}
+
+map OperationToOperation in AbstractToConcrete {
+ uml1 (pc : Class, aco:Operation |
+ pc.isAbstract;
+ aco.class = pc;)
+ {
+
+ }
+ enforce uml2 (cc2 : Class | )
+ {
+ realize cco:Operation |
+ cco.class := cc2;
+ }
+ where (p2c : ParentToChild |
+ p2c.parent = pc;
+ p2c.class2 = cc2;)
+ {
+ realize o2o : OperationToOperation |
+ o2o.op1 := aco;
+ o2o.op2 := cco;
+ o2o.class := p2c;
+ }
+ map
+ {
+ where() {
+ o2o.name := aco.name;
+ o2o.name := cco.name;
+ aco.name := o2o.name;
+ cco.name := o2o.name;
+ }
+ }
+}
+
+map ParameterToParameter in AbstractToConcrete {
+ uml1 (aco:Operation, acop:Parameter |)
+ {
+ acop.operation = aco;
+ }
+ uml2 (cco:Operation, ccop:Parameter |)
+ {
+ ccop.operation = cco;
+ }
+ where (o2o : OperationToOperation |
+ o2o.op1 = aco;
+ o2o.op2 = cco;)
+ {
+ realize p2p : ParameterToParameter |
+ p2p.param1 := acop;
+ p2p.param2 := ccop;
+ p2p.operation := o2o;
+ }
+ map
+ {
+ where ()
+ {
+ p2p.name := acop.name;
+ p2p.name := ccop.name;
+ acop.name := p2p.name;
+ ccop.name := p2p.name;
+ p2p.type := acop.type;
+ p2p.type := ccop.type;
+ acop.type := p2p.type;
+ ccop.type := p2p.type;
+ }
+ }
+}
diff --git a/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/AbstractToConcrete/ClassAbstractToConcrete.ecore b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/AbstractToConcrete/ClassAbstractToConcrete.ecore
new file mode 100644
index 000000000..97af561c9
--- /dev/null
+++ b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/AbstractToConcrete/ClassAbstractToConcrete.ecore
@@ -0,0 +1,29 @@
+<?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="abs2conc" nsURI="ClassAbstractToConcrete" nsPrefix="abs2conc">
+ <eAnnotations source="http://www.eclipse.org/OCL/Import">
+ <details key="classMM" value="ClassMM_IN.emof#ClassMM"/>
+ </eAnnotations>
+ <eClassifiers xsi:type="ecore:EClass" name="ParentToChild">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="operations" upperBound="-1"
+ eType="#//OperationToOperation" eOpposite="#//OperationToOperation/class"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eType="ecore:EClass ClassMM_IN.emof#ClassMM.Class"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="class2" eType="ecore:EClass ClassMM_IN.emof#ClassMM.Class"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="OperationToOperation">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="op1" eType="ecore:EClass ClassMM_IN.emof#ClassMM.Operation"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="op2" eType="ecore:EClass ClassMM_IN.emof#ClassMM.Operation"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="class" eType="#//ParentToChild"
+ eOpposite="#//ParentToChild/operations"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
+ eType="#//ParameterToParameter"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ParameterToParameter">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="param1" eType="ecore:EClass ClassMM_IN.emof#ClassMM.Parameter"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="param2" eType="ecore:EClass ClassMM_IN.emof#ClassMM.Parameter"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="ecore:EClass ClassMM_IN.emof#ClassMM.Type"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="operation" eType="#//OperationToOperation"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/AbstractToConcrete/ClassMM_IN.emof b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/AbstractToConcrete/ClassMM_IN.emof
index d3ea36d49..ec0f59d57 100644
--- a/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/AbstractToConcrete/ClassMM_IN.emof
+++ b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/AbstractToConcrete/ClassMM_IN.emof
@@ -1,18 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!--
- * Copyright (c) 2007,2008 Tata Consultancy Services and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * TCS - initial implementation for ModelMorf
- * E.D.Willink - alignment with evolved specification
--->
-<emof:Package xmi:version="2.0"
- xmlns:xmi="http://www.omg.org/XMI" xmlns:emof="http://schema.omg.org/spec/MOF/2.0/emof.xml" xmi:id="ClassMM"
- name="ClassMM" uri="ClassMM">
+<emof:Package xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:emof="http://schema.omg.org/spec/MOF/2.0/emof.xml"
+ xmi:id="ClassMM" name="ClassMM" uri="ClassMM">
<ownedType xmi:type="emof:Class" xmi:id="ClassMM.dummy" name="dummy">
<ownedAttribute xmi:id="ClassMM.dummy.hasType" name="hasType" upper="*" type="ClassMM.Type"
isComposite="true"/>
@@ -34,7 +22,7 @@
<ownedAttribute xmi:id="ClassMM.Operation.name" name="name">
<type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/MOF/2.0/emof.xml#String"/>
</ownedAttribute>
- <ownedAttribute xmi:id="ClassMM.Operation.class" name="class" lower="1" type="ClassMM.Class"
+ <ownedAttribute xmi:id="ClassMM.Operation.class" name="class" type="ClassMM.Class"
opposite="ClassMM.Class.operation"/>
<ownedAttribute xmi:id="ClassMM.Operation.parameter" name="parameter" upper="*"
type="ClassMM.Parameter" isComposite="true" opposite="ClassMM.Parameter.operation"/>
@@ -43,9 +31,9 @@
<ownedAttribute xmi:id="ClassMM.Parameter.name" name="name">
<type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/MOF/2.0/emof.xml#String"/>
</ownedAttribute>
- <ownedAttribute xmi:id="ClassMM.Parameter.type" name="type" lower="1" type="ClassMM.Type"/>
- <ownedAttribute xmi:id="ClassMM.Parameter.operation" name="operation" lower="1"
- type="ClassMM.Operation" opposite="ClassMM.Operation.parameter"/>
+ <ownedAttribute xmi:id="ClassMM.Parameter.type" name="type" type="ClassMM.Type"/>
+ <ownedAttribute xmi:id="ClassMM.Parameter.operation" name="operation" type="ClassMM.Operation"
+ opposite="ClassMM.Operation.parameter"/>
</ownedType>
<ownedType xmi:type="emof:Class" xmi:id="ClassMM.PrimitiveDataType" name="PrimitiveDataType"
superClass="ClassMM.Type"/>
diff --git a/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/HstmToStm.mwe2 b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/HstmToStm.mwe2
new file mode 100644
index 000000000..7e3fd370a
--- /dev/null
+++ b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/HstmToStm.mwe2
@@ -0,0 +1,32 @@
+module org.eclipse.qvtd.examples.qvtrelation.modelmorf.hstmtostm.HstmToStm
+
+import java.util.*
+
+import org.eclipse.qvtd.examples.qvtrelation.modelmorf.ModelMorfComponent
+
+Workflow {
+ component = ModelMorfComponent {
+ java15Path = "C:\\ModelMorf\\Java\\jdk1.5\\bin"
+ modelMorfPath = "C:\\ModelMorf"
+ metamodel = {
+ alias = "hstmMM_p"
+ file = "hstmMM.xml"
+ }
+ metamodel = {
+ alias = "stmMM_p"
+ file = "stmMM.xml"
+ }
+ qvtSpecificationFile = "hstmtostm.qvt"
+ model = {
+ variable = "hstm"
+ file = "hstmUM.xml"
+ }
+ model = {
+ variable = "stm"
+ file = "stmUM.xml"
+ }
+ transformationName = "HstmToStm"
+ directionDomain = "stm"
+ domainQualifier = "enforce"
+ }
+} \ No newline at end of file
diff --git a/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/HstmToStm.mwe2.launch b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/HstmToStm.mwe2.launch
new file mode 100644
index 000000000..cc53f4f89
--- /dev/null
+++ b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/HstmToStm.mwe2.launch
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.emf.mwe2.launch.Mwe2LaunchConfigurationType">
+<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${workspace}"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.qvtd.examples.qvtrelation.modelmorf"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jre7"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/HstmToStm.mwe2"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.qvtd.examples.qvtrelation.modelmorf"/>
+</launchConfiguration>
diff --git a/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/hstmMM.emof b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/hstmMM.emof
new file mode 100644
index 000000000..960a4b27c
--- /dev/null
+++ b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/hstmMM.emof
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2007,2008 Tata Consultancy Services and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * TCS - initial implementation for ModelMorf
+ * E.D.Willink - alignment with evolved specification
+-->
+<emof:Package xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:emof="http://schema.omg.org/spec/MOF/2.0/emof.xml" xmi:id="hstmMM_p"
+ name="hstmMM_p" uri="hstmMM_p">
+ <ownedType xmi:type="emof:Class" xmi:id="hstmMM_p.State" name="State">
+ <ownedAttribute xmi:id="hstmMM_p.State.containsState" name="containsState" upper="*"
+ type="hstmMM_p.State" opposite="hstmMM_p.State.containedInState"/>
+ <ownedAttribute xmi:id="hstmMM_p.State.containedInState" name="containedInState"
+ type="hstmMM_p.State" opposite="hstmMM_p.State.containsState"/>
+ <ownedAttribute xmi:id="hstmMM_p.State.outTrans" name="outTrans" upper="*" type="hstmMM_p.Trans"
+ opposite="hstmMM_p.Trans.fromState"/>
+ <ownedAttribute xmi:id="hstmMM_p.State.inTrans" name="inTrans" upper="*" type="hstmMM_p.Trans"
+ opposite="hstmMM_p.Trans.toState"/>
+ <ownedAttribute xmi:id="hstmMM_p.State.name" name="name">
+ <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/MOF/2.0/emof.xml#String"/>
+ </ownedAttribute>
+ </ownedType>
+ <ownedType xmi:type="emof:Class" xmi:id="hstmMM_p.Trans" name="Trans">
+ <ownedAttribute xmi:id="hstmMM_p.Trans.fromState" name="fromState" lower="1" type="hstmMM_p.State"
+ opposite="hstmMM_p.State.outTrans"/>
+ <ownedAttribute xmi:id="hstmMM_p.Trans.toState" name="toState" lower="1" type="hstmMM_p.State"
+ opposite="hstmMM_p.State.inTrans"/>
+ <ownedAttribute xmi:id="hstmMM_p.Trans.name" name="name">
+ <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/MOF/2.0/emof.xml#String"/>
+ </ownedAttribute>
+ </ownedType>
+ <ownedType xmi:type="emof:Class" xmi:id="hstmMM_p.dummy" name="dummy">
+ <ownedAttribute xmi:id="hstmMM_p.dummy.contains_state" name="contains_state" upper="*"
+ type="hstmMM_p.State" isComposite="true"/>
+ <ownedAttribute xmi:id="hstmMM_p.dummy.conatains_trans" name="conatains_trans"
+ upper="*" type="hstmMM_p.Trans" isComposite="true"/>
+ <ownedAttribute xmi:id="hstmMM_p.dummy.name" name="name">
+ <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/MOF/2.0/emof.xml#String"/>
+ </ownedAttribute>
+ </ownedType>
+</emof:Package>
diff --git a/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/hstmMM.xml b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/hstmMM.xml
new file mode 100644
index 000000000..ef158d408
--- /dev/null
+++ b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/hstmMM.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<emof:Package xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:emof="http://schema.omg.org/spec/mof/2.0/emof.xmi" xmi:id="hstmMM_p"
+ name="hstmMM_p" uri="hstmMM_p">
+ <ownedType xmi:type="emof:Class" xmi:id="hstmMM_p.State" name="State">
+ <ownedAttribute xmi:id="hstmMM_p.State.containsState" name="containsState" upper="*"
+ type="hstmMM_p.State" opposite="hstmMM_p.State.containedInState"/>
+ <ownedAttribute xmi:id="hstmMM_p.State.containedInState" name="containedInState"
+ type="hstmMM_p.State" opposite="hstmMM_p.State.containsState"/>
+ <ownedAttribute xmi:id="hstmMM_p.State.outTrans" name="outTrans" upper="*" type="hstmMM_p.Trans"
+ opposite="hstmMM_p.Trans.fromState"/>
+ <ownedAttribute xmi:id="hstmMM_p.State.inTrans" name="inTrans" upper="*" type="hstmMM_p.Trans"
+ opposite="hstmMM_p.Trans.toState"/>
+ <ownedAttribute xmi:id="hstmMM_p.State.name" name="name">
+ <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/mof/2.0/emof.xmi#String"/>
+ </ownedAttribute>
+ </ownedType>
+ <ownedType xmi:type="emof:Class" xmi:id="hstmMM_p.Trans" name="Trans">
+ <ownedAttribute xmi:id="hstmMM_p.Trans.fromState" name="fromState" lower="1" type="hstmMM_p.State"
+ opposite="hstmMM_p.State.outTrans"/>
+ <ownedAttribute xmi:id="hstmMM_p.Trans.toState" name="toState" lower="1" type="hstmMM_p.State"
+ opposite="hstmMM_p.State.inTrans"/>
+ <ownedAttribute xmi:id="hstmMM_p.Trans.name" name="name">
+ <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/mof/2.0/emof.xmi#String"/>
+ </ownedAttribute>
+ </ownedType>
+ <ownedType xmi:type="emof:Class" xmi:id="hstmMM_p.dummy" name="dummy">
+ <ownedAttribute xmi:id="hstmMM_p.dummy.contains_state" name="contains_state" upper="*"
+ type="hstmMM_p.State" isComposite="true"/>
+ <ownedAttribute xmi:id="hstmMM_p.dummy.conatains_trans" name="conatains_trans"
+ upper="*" type="hstmMM_p.Trans" isComposite="true"/>
+ <ownedAttribute xmi:id="hstmMM_p.dummy.name" name="name">
+ <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/mof/2.0/emof.xmi#String"/>
+ </ownedAttribute>
+ </ownedType>
+</emof:Package>
diff --git a/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/hstmUM.xml b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/hstmUM.xml
new file mode 100644
index 000000000..afd765fe6
--- /dev/null
+++ b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/hstmUM.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<null:dummy xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:null="hstmMM_p" xmi:id="_5qCwgELrEdu-SI8DyztHqw">
+ <contains_state xmi:id="_ax47IELsEdu-SI8DyztHqw" containsState="_bOzgoELsEdu-SI8DyztHqw _bZOn8ELsEdu-SI8DyztHqw" outTrans="_pI2ZoELsEdu-SI8DyztHqw" name="s1"/>
+ <contains_state xmi:id="_bDeaYELsEdu-SI8DyztHqw" containsState="_bx0uIELsEdu-SI8DyztHqw _b-VgIELsEdu-SI8DyztHqw" inTrans="_pI2ZoELsEdu-SI8DyztHqw" name="s2"/>
+ <contains_state xmi:id="_bOzgoELsEdu-SI8DyztHqw" containsState="_cHk7sELsEdu-SI8DyztHqw _cPoEcELsEdu-SI8DyztHqw" containedInState="_ax47IELsEdu-SI8DyztHqw" outTrans="_r_sD4ELsEdu-SI8DyztHqw" name="s3"/>
+ <contains_state xmi:id="_bZOn8ELsEdu-SI8DyztHqw" containsState="_cXXrMELsEdu-SI8DyztHqw _cerNEELsEdu-SI8DyztHqw" containedInState="_ax47IELsEdu-SI8DyztHqw" inTrans="_r_sD4ELsEdu-SI8DyztHqw" name="s4"/>
+ <contains_state xmi:id="_bx0uIELsEdu-SI8DyztHqw" containsState="_clhb8ELsEdu-SI8DyztHqw _c29xQELsEdu-SI8DyztHqw" containedInState="_bDeaYELsEdu-SI8DyztHqw" outTrans="_plw_IELsEdu-SI8DyztHqw" name="s5"/>
+ <contains_state xmi:id="_b-VgIELsEdu-SI8DyztHqw" containsState="_dbLRkELsEdu-SI8DyztHqw _dmyrsELsEdu-SI8DyztHqw" containedInState="_bDeaYELsEdu-SI8DyztHqw" inTrans="_plw_IELsEdu-SI8DyztHqw" name="s6"/>
+ <contains_state xmi:id="_cHk7sELsEdu-SI8DyztHqw" containedInState="_bOzgoELsEdu-SI8DyztHqw" outTrans="_p3yjQELsEdu-SI8DyztHqw" name="s7"/>
+ <contains_state xmi:id="_cPoEcELsEdu-SI8DyztHqw" containedInState="_bOzgoELsEdu-SI8DyztHqw" inTrans="_p3yjQELsEdu-SI8DyztHqw" name="s8"/>
+ <contains_state xmi:id="_cXXrMELsEdu-SI8DyztHqw" containedInState="_bZOn8ELsEdu-SI8DyztHqw" outTrans="_qKakUELsEdu-SI8DyztHqw" name="s9"/>
+ <contains_state xmi:id="_cerNEELsEdu-SI8DyztHqw" containedInState="_bZOn8ELsEdu-SI8DyztHqw" inTrans="_qKakUELsEdu-SI8DyztHqw" name="s10"/>
+ <contains_state xmi:id="_clhb8ELsEdu-SI8DyztHqw" containedInState="_bx0uIELsEdu-SI8DyztHqw" outTrans="_qf328ELsEdu-SI8DyztHqw" name="s11"/>
+ <contains_state xmi:id="_c29xQELsEdu-SI8DyztHqw" containedInState="_bx0uIELsEdu-SI8DyztHqw" inTrans="_qf328ELsEdu-SI8DyztHqw" name="s12"/>
+ <contains_state xmi:id="_dbLRkELsEdu-SI8DyztHqw" containedInState="_b-VgIELsEdu-SI8DyztHqw" outTrans="_q33gMELsEdu-SI8DyztHqw" name="s13"/>
+ <contains_state xmi:id="_dmyrsELsEdu-SI8DyztHqw" containedInState="_b-VgIELsEdu-SI8DyztHqw" inTrans="_q33gMELsEdu-SI8DyztHqw" name="s14"/>
+ <conatains_trans xmi:id="_pI2ZoELsEdu-SI8DyztHqw" fromState="_ax47IELsEdu-SI8DyztHqw" toState="_bDeaYELsEdu-SI8DyztHqw" name="t1_2"/>
+ <conatains_trans xmi:id="_r_sD4ELsEdu-SI8DyztHqw" fromState="_bOzgoELsEdu-SI8DyztHqw" toState="_bZOn8ELsEdu-SI8DyztHqw" name="t3_4"/>
+ <conatains_trans xmi:id="_plw_IELsEdu-SI8DyztHqw" fromState="_bx0uIELsEdu-SI8DyztHqw" toState="_b-VgIELsEdu-SI8DyztHqw" name="t5_6"/>
+ <conatains_trans xmi:id="_p3yjQELsEdu-SI8DyztHqw" fromState="_cHk7sELsEdu-SI8DyztHqw" toState="_cPoEcELsEdu-SI8DyztHqw" name="t7_8"/>
+ <conatains_trans xmi:id="_qKakUELsEdu-SI8DyztHqw" fromState="_cXXrMELsEdu-SI8DyztHqw" toState="_cerNEELsEdu-SI8DyztHqw" name="t9_10"/>
+ <conatains_trans xmi:id="_qf328ELsEdu-SI8DyztHqw" fromState="_clhb8ELsEdu-SI8DyztHqw" toState="_c29xQELsEdu-SI8DyztHqw" name="t11_12"/>
+ <conatains_trans xmi:id="_q33gMELsEdu-SI8DyztHqw" fromState="_dbLRkELsEdu-SI8DyztHqw" toState="_dmyrsELsEdu-SI8DyztHqw" name="t13_14"/>
+</null:dummy>
diff --git a/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/hstmtostm.qvt b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/hstmtostm.qvt
new file mode 100644
index 000000000..800509f8d
--- /dev/null
+++ b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/hstmtostm.qvt
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * Copyright (c) 2007,2008 Tata Consultancy Services and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * TCS - initial implementation for ModelMorf
+ * E.D.Willink - alignment with evolved specification
+ *******************************************************************************/
+transformation HstmToStm(hstm:hstmMM_p; stm:stmMM_p)
+{
+ key hstmMM_p::State {name};
+ key hstmMM_p::Trans {name, fromState, toState};
+ key stmMM_p::State {name};
+ key stmMM_p::Trans {name, fromState, toState};
+
+ query StateContainsState(cState:hstmMM_p::State, mState:hstmMM_p::State):Boolean
+ {
+ if (mState.containedInState->isEmpty())
+ then
+ false
+ else if (mState.containedInState = cState)
+ then
+ true
+ else
+ StateContainsState(cState, mState.containedInState)
+ endif
+ endif
+ }
+
+ top relation LStateToState -- Leaf States
+ {
+ n : String;
+
+ domain hstm s1:State
+ {
+ name = n
+ } {s1.containsState->isEmpty()};
+
+ enforce domain stm s2:State
+ {
+ name = n
+ };
+ }
+
+ top relation CStateToState -- Branch States
+ {
+ tn : String;
+ ms1: hstmMM_p::State;
+ ms2: hstmMM_p::State;
+ ts1: hstmMM_p::State;
+ ts2: stmMM_p::State;
+
+ domain hstm fs1:State
+ {
+ outTrans = t1:Trans {name = tn, toState = ts1}
+ };
+
+ enforce domain stm fs2:State
+ {
+ outTrans = t2:Trans {name = tn, toState = ts2}
+ };
+
+ when
+ {
+ LStateToState(ms1, fs2);
+ (
+ ms1 = fs1
+ or
+ StateContainsState(fs1, ms1)
+ );
+ LStateToState(ms2, ts2);
+ (
+ ms2 = ts1
+ or
+ StateContainsState(ts1, ms2)
+ );
+ }
+ }
+}
diff --git a/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/hstmtostm.qvtr b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/hstmtostm.qvtr
new file mode 100644
index 000000000..c90f62fea
--- /dev/null
+++ b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/hstmtostm.qvtr
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * Copyright (c) 2007,2008 Tata Consultancy Services and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * TCS - initial implementation for ModelMorf
+ * E.D.Willink - alignment with evolved specification
+ *******************************************************************************/
+import hstmMM_p : 'hstmMM.emof'::hstmMM_p;
+import stmMM_p : 'stmMM.emof'::stmMM_p;
+
+transformation HstmToStm(hstm:hstmMM_p, stm:stmMM_p)
+{
+ key hstmMM_p::State {name};
+ key hstmMM_p::Trans {name, fromState, toState};
+ key stmMM_p::State {name};
+ key stmMM_p::Trans {name, fromState, toState};
+
+ query StateContainsState(cState:hstmMM_p::State, mState:hstmMM_p::State):Boolean
+ {
+ if (mState.containedInState->isEmpty())
+ then
+ false
+ else if (mState.containedInState = cState)
+ then
+ true
+ else
+ StateContainsState(cState, mState.containedInState)
+ endif
+ endif
+ }
+
+ top relation LStateToState -- Leaf States
+ {
+ n : String;
+
+ domain hstm s1:State
+ {
+ name = n
+ } {s1.containsState->isEmpty()};
+
+ enforce domain stm s2:State
+ {
+ name = n
+ };
+ }
+
+ top relation CStateToState -- Branch States
+ {
+ tn : String;
+ ms1: hstmMM_p::State;
+ ms2: hstmMM_p::State;
+ ts1: hstmMM_p::State;
+ ts2: stmMM_p::State;
+
+ domain hstm fs1:State
+ {
+ outTrans = t1:Trans {name = tn, toState = ts1}
+ };
+
+ enforce domain stm fs2:State
+ {
+ outTrans = t2:Trans {name = tn, toState = ts2}
+ };
+
+ when
+ {
+ LStateToState(ms1, fs2);
+ (
+ ms1 = fs1
+ or
+ StateContainsState(fs1, ms1)
+ );
+ LStateToState(ms2, ts2);
+ (
+ ms2 = ts1
+ or
+ StateContainsState(ts1, ms2)
+ );
+ }
+ }
+}
diff --git a/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/stmMM.emof b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/stmMM.emof
new file mode 100644
index 000000000..b6652c735
--- /dev/null
+++ b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/stmMM.emof
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2007,2008 Tata Consultancy Services and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * TCS - initial implementation for ModelMorf
+ * E.D.Willink - alignment with evolved specification
+-->
+<emof:Package xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:emof="http://schema.omg.org/spec/MOF/2.0/emof.xml" xmi:id="stmMM_p"
+ name="stmMM_p" uri="stmMM_p">
+ <ownedType xmi:type="emof:Class" xmi:id="stmMM_p.State" name="State">
+ <ownedAttribute xmi:id="stmMM_p.State.outTrans" name="outTrans" upper="*" type="stmMM_p.Trans"
+ opposite="stmMM_p.Trans.fromState"/>
+ <ownedAttribute xmi:id="stmMM_p.State.inTrans" name="inTrans" upper="*" type="stmMM_p.Trans"
+ opposite="stmMM_p.Trans.toState"/>
+ <ownedAttribute xmi:id="stmMM_p.State.name" name="name">
+ <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/MOF/2.0/emof.xml#String"/>
+ </ownedAttribute>
+ </ownedType>
+ <ownedType xmi:type="emof:Class" xmi:id="stmMM_p.Trans" name="Trans">
+ <ownedAttribute xmi:id="stmMM_p.Trans.fromState" name="fromState" lower="1" type="stmMM_p.State"
+ opposite="stmMM_p.State.outTrans"/>
+ <ownedAttribute xmi:id="stmMM_p.Trans.toState" name="toState" lower="1" type="stmMM_p.State"
+ opposite="stmMM_p.State.inTrans"/>
+ <ownedAttribute xmi:id="stmMM_p.Trans.name" name="name">
+ <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/MOF/2.0/emof.xml#String"/>
+ </ownedAttribute>
+ </ownedType>
+ <ownedType xmi:type="emof:Class" xmi:id="stmMM_p.dummy" name="dummy">
+ <ownedAttribute xmi:id="stmMM_p.dummy.container_state" name="container_state"
+ upper="*" type="stmMM_p.State" isComposite="true"/>
+ <ownedAttribute xmi:id="stmMM_p.dummy.container_trans" name="container_trans"
+ upper="*" type="stmMM_p.Trans" isComposite="true"/>
+ <ownedAttribute xmi:id="stmMM_p.dummy.name" name="name">
+ <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/MOF/2.0/emof.xml#String"/>
+ </ownedAttribute>
+ </ownedType>
+</emof:Package>
diff --git a/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/stmMM.xml b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/stmMM.xml
new file mode 100644
index 000000000..6e908e7fb
--- /dev/null
+++ b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/stmMM.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<emof:Package xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:emof="http://schema.omg.org/spec/mof/2.0/emof.xmi" xmi:id="stmMM_p"
+ name="stmMM_p" uri="stmMM_p">
+ <ownedType xmi:type="emof:Class" xmi:id="stmMM_p.State" name="State">
+ <ownedAttribute xmi:id="stmMM_p.State.outTrans" name="outTrans" upper="*" type="stmMM_p.Trans"
+ opposite="stmMM_p.Trans.fromState"/>
+ <ownedAttribute xmi:id="stmMM_p.State.inTrans" name="inTrans" upper="*" type="stmMM_p.Trans"
+ opposite="stmMM_p.Trans.toState"/>
+ <ownedAttribute xmi:id="stmMM_p.State.name" name="name">
+ <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/mof/2.0/emof.xmi#String"/>
+ </ownedAttribute>
+ </ownedType>
+ <ownedType xmi:type="emof:Class" xmi:id="stmMM_p.Trans" name="Trans">
+ <ownedAttribute xmi:id="stmMM_p.Trans.fromState" name="fromState" lower="1" type="stmMM_p.State"
+ opposite="stmMM_p.State.outTrans"/>
+ <ownedAttribute xmi:id="stmMM_p.Trans.toState" name="toState" lower="1" type="stmMM_p.State"
+ opposite="stmMM_p.State.inTrans"/>
+ <ownedAttribute xmi:id="stmMM_p.Trans.name" name="name">
+ <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/mof/2.0/emof.xmi#String"/>
+ </ownedAttribute>
+ </ownedType>
+ <ownedType xmi:type="emof:Class" xmi:id="stmMM_p.dummy" name="dummy">
+ <ownedAttribute xmi:id="stmMM_p.dummy.container_state" name="container_state"
+ upper="*" type="stmMM_p.State" isComposite="true"/>
+ <ownedAttribute xmi:id="stmMM_p.dummy.container_trans" name="container_trans"
+ upper="*" type="stmMM_p.Trans" isComposite="true"/>
+ <ownedAttribute xmi:id="stmMM_p.dummy.name" name="name">
+ <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/mof/2.0/emof.xmi#String"/>
+ </ownedAttribute>
+ </ownedType>
+</emof:Package>
diff --git a/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/stmUM.xml b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/stmUM.xml
new file mode 100644
index 000000000..2b34c0116
--- /dev/null
+++ b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm/stmUM.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:stmMM_p="stmMM_p">
+ <stmMM_p:State xmi:id="c597ec6833546657-212edce7232a5161" name="s7" outTrans="df30581b960321ef-b976f4aeaaf4c004 925e374ba158c409-8c670e08b79f8cc5 8b5e2d58f1dbb0c2-aa85cc6e8540777d e035efbe553692f8-4124f6d3d2b07e88 630accd75fe84243-24fbd35a58e92d65 ac30f85e88688b9-630dafa7fef4a1b7 1e1e19305e4bfce9-38728937feea8895"/>
+ <stmMM_p:State xmi:id="a2d16df43a7f0624-3e6c6fc9774cdafb" name="s8" outTrans="69debe406ade59cb-ba069e49cf99195 786de056101c0456-9def8e91ba8f3ce7 98b235baa1f26bdb-cbc879c82198c50 18f63cd03e0ffdf2-ad594ee5dfc60310 9d5ea5a95630ddba-e11a4215c7d9cf28 8ae4d2cf1a1fb5d6-da441af4c9cb51dc" inTrans="1e1e19305e4bfce9-38728937feea8895"/>
+ <stmMM_p:State xmi:id="7d1d9b2cd9b0d32a-c487a386dbaac4ed" name="s9" outTrans="82b095bdf9e5c777-b8f9dc8c04c7edfd b444e76d52145246-aa81551d5d2b9799 2dafb3cf4027fb10-4cc3f164c8db9202 7c472b176d7e59c7-b6c929a31e6b70e8 ccd0ef084f8df07f-ec927b8fb1a863a1" inTrans="630accd75fe84243-24fbd35a58e92d65 9d5ea5a95630ddba-e11a4215c7d9cf28"/>
+ <stmMM_p:State xmi:id="fc4d4d81a70f08ba-6cef3292ba7e516c" name="s10" outTrans="466df9c8559e6e77-32ab772b5a9d7ddf ab273c8c42f4d7e-93db0ab7b1c13bd4 4661eeda84cb518f-2265f3065575826c 2ffda92c8b5f36d8-d6bdae642c93a88c" inTrans="ac30f85e88688b9-630dafa7fef4a1b7 8ae4d2cf1a1fb5d6-da441af4c9cb51dc ccd0ef084f8df07f-ec927b8fb1a863a1"/>
+ <stmMM_p:State xmi:id="9b76fae2368c51d2-5d15c2f9bd00b7a7" name="s11" outTrans="76b6dd246aa8b0c9-3bff4848997698bc 5ccca023e5bb5843-3d74cde098ce9b04 5717723e0977b7a5-3e30336eab10e5d6" inTrans="df30581b960321ef-b976f4aeaaf4c004 69debe406ade59cb-ba069e49cf99195 82b095bdf9e5c777-b8f9dc8c04c7edfd 466df9c8559e6e77-32ab772b5a9d7ddf"/>
+ <stmMM_p:State xmi:id="b3ccbf7c0b0e664d-31fd1f289118d0dd" name="s12" outTrans="bf63fb040b6b3ba9-93cc16fa17241615 fbc0f160fb76be4b-6f669e187abce49e" inTrans="925e374ba158c409-8c670e08b79f8cc5 786de056101c0456-9def8e91ba8f3ce7 b444e76d52145246-aa81551d5d2b9799 ab273c8c42f4d7e-93db0ab7b1c13bd4 5717723e0977b7a5-3e30336eab10e5d6"/>
+ <stmMM_p:State xmi:id="17e3ee6973eb6f49-c5543c6f279f2cf6" name="s13" outTrans="40820c6794bf8511-bdb6020058fd40f7" inTrans="8b5e2d58f1dbb0c2-aa85cc6e8540777d 98b235baa1f26bdb-cbc879c82198c50 2dafb3cf4027fb10-4cc3f164c8db9202 4661eeda84cb518f-2265f3065575826c 76b6dd246aa8b0c9-3bff4848997698bc bf63fb040b6b3ba9-93cc16fa17241615"/>
+ <stmMM_p:State xmi:id="c83211e9c010324d-d6b506081f5451b8" name="s14" inTrans="e035efbe553692f8-4124f6d3d2b07e88 18f63cd03e0ffdf2-ad594ee5dfc60310 7c472b176d7e59c7-b6c929a31e6b70e8 2ffda92c8b5f36d8-d6bdae642c93a88c 5ccca023e5bb5843-3d74cde098ce9b04 fbc0f160fb76be4b-6f669e187abce49e 40820c6794bf8511-bdb6020058fd40f7"/>
+ <stmMM_p:Trans xmi:id="df30581b960321ef-b976f4aeaaf4c004" name="t1_2" fromState="c597ec6833546657-212edce7232a5161" toState="9b76fae2368c51d2-5d15c2f9bd00b7a7"/>
+ <stmMM_p:Trans xmi:id="925e374ba158c409-8c670e08b79f8cc5" name="t1_2" fromState="c597ec6833546657-212edce7232a5161" toState="b3ccbf7c0b0e664d-31fd1f289118d0dd"/>
+ <stmMM_p:Trans xmi:id="8b5e2d58f1dbb0c2-aa85cc6e8540777d" name="t1_2" fromState="c597ec6833546657-212edce7232a5161" toState="17e3ee6973eb6f49-c5543c6f279f2cf6"/>
+ <stmMM_p:Trans xmi:id="e035efbe553692f8-4124f6d3d2b07e88" name="t1_2" fromState="c597ec6833546657-212edce7232a5161" toState="c83211e9c010324d-d6b506081f5451b8"/>
+ <stmMM_p:Trans xmi:id="69debe406ade59cb-ba069e49cf99195" name="t1_2" fromState="a2d16df43a7f0624-3e6c6fc9774cdafb" toState="9b76fae2368c51d2-5d15c2f9bd00b7a7"/>
+ <stmMM_p:Trans xmi:id="786de056101c0456-9def8e91ba8f3ce7" name="t1_2" fromState="a2d16df43a7f0624-3e6c6fc9774cdafb" toState="b3ccbf7c0b0e664d-31fd1f289118d0dd"/>
+ <stmMM_p:Trans xmi:id="98b235baa1f26bdb-cbc879c82198c50" name="t1_2" fromState="a2d16df43a7f0624-3e6c6fc9774cdafb" toState="17e3ee6973eb6f49-c5543c6f279f2cf6"/>
+ <stmMM_p:Trans xmi:id="18f63cd03e0ffdf2-ad594ee5dfc60310" name="t1_2" fromState="a2d16df43a7f0624-3e6c6fc9774cdafb" toState="c83211e9c010324d-d6b506081f5451b8"/>
+ <stmMM_p:Trans xmi:id="82b095bdf9e5c777-b8f9dc8c04c7edfd" name="t1_2" fromState="7d1d9b2cd9b0d32a-c487a386dbaac4ed" toState="9b76fae2368c51d2-5d15c2f9bd00b7a7"/>
+ <stmMM_p:Trans xmi:id="b444e76d52145246-aa81551d5d2b9799" name="t1_2" fromState="7d1d9b2cd9b0d32a-c487a386dbaac4ed" toState="b3ccbf7c0b0e664d-31fd1f289118d0dd"/>
+ <stmMM_p:Trans xmi:id="2dafb3cf4027fb10-4cc3f164c8db9202" name="t1_2" fromState="7d1d9b2cd9b0d32a-c487a386dbaac4ed" toState="17e3ee6973eb6f49-c5543c6f279f2cf6"/>
+ <stmMM_p:Trans xmi:id="7c472b176d7e59c7-b6c929a31e6b70e8" name="t1_2" fromState="7d1d9b2cd9b0d32a-c487a386dbaac4ed" toState="c83211e9c010324d-d6b506081f5451b8"/>
+ <stmMM_p:Trans xmi:id="466df9c8559e6e77-32ab772b5a9d7ddf" name="t1_2" fromState="fc4d4d81a70f08ba-6cef3292ba7e516c" toState="9b76fae2368c51d2-5d15c2f9bd00b7a7"/>
+ <stmMM_p:Trans xmi:id="ab273c8c42f4d7e-93db0ab7b1c13bd4" name="t1_2" fromState="fc4d4d81a70f08ba-6cef3292ba7e516c" toState="b3ccbf7c0b0e664d-31fd1f289118d0dd"/>
+ <stmMM_p:Trans xmi:id="4661eeda84cb518f-2265f3065575826c" name="t1_2" fromState="fc4d4d81a70f08ba-6cef3292ba7e516c" toState="17e3ee6973eb6f49-c5543c6f279f2cf6"/>
+ <stmMM_p:Trans xmi:id="2ffda92c8b5f36d8-d6bdae642c93a88c" name="t1_2" fromState="fc4d4d81a70f08ba-6cef3292ba7e516c" toState="c83211e9c010324d-d6b506081f5451b8"/>
+ <stmMM_p:Trans xmi:id="630accd75fe84243-24fbd35a58e92d65" name="t3_4" fromState="c597ec6833546657-212edce7232a5161" toState="7d1d9b2cd9b0d32a-c487a386dbaac4ed"/>
+ <stmMM_p:Trans xmi:id="ac30f85e88688b9-630dafa7fef4a1b7" name="t3_4" fromState="c597ec6833546657-212edce7232a5161" toState="fc4d4d81a70f08ba-6cef3292ba7e516c"/>
+ <stmMM_p:Trans xmi:id="9d5ea5a95630ddba-e11a4215c7d9cf28" name="t3_4" fromState="a2d16df43a7f0624-3e6c6fc9774cdafb" toState="7d1d9b2cd9b0d32a-c487a386dbaac4ed"/>
+ <stmMM_p:Trans xmi:id="8ae4d2cf1a1fb5d6-da441af4c9cb51dc" name="t3_4" fromState="a2d16df43a7f0624-3e6c6fc9774cdafb" toState="fc4d4d81a70f08ba-6cef3292ba7e516c"/>
+ <stmMM_p:Trans xmi:id="76b6dd246aa8b0c9-3bff4848997698bc" name="t5_6" fromState="9b76fae2368c51d2-5d15c2f9bd00b7a7" toState="17e3ee6973eb6f49-c5543c6f279f2cf6"/>
+ <stmMM_p:Trans xmi:id="5ccca023e5bb5843-3d74cde098ce9b04" name="t5_6" fromState="9b76fae2368c51d2-5d15c2f9bd00b7a7" toState="c83211e9c010324d-d6b506081f5451b8"/>
+ <stmMM_p:Trans xmi:id="bf63fb040b6b3ba9-93cc16fa17241615" name="t5_6" fromState="b3ccbf7c0b0e664d-31fd1f289118d0dd" toState="17e3ee6973eb6f49-c5543c6f279f2cf6"/>
+ <stmMM_p:Trans xmi:id="fbc0f160fb76be4b-6f669e187abce49e" name="t5_6" fromState="b3ccbf7c0b0e664d-31fd1f289118d0dd" toState="c83211e9c010324d-d6b506081f5451b8"/>
+ <stmMM_p:Trans xmi:id="1e1e19305e4bfce9-38728937feea8895" name="t7_8" fromState="c597ec6833546657-212edce7232a5161" toState="a2d16df43a7f0624-3e6c6fc9774cdafb"/>
+ <stmMM_p:Trans xmi:id="ccd0ef084f8df07f-ec927b8fb1a863a1" name="t9_10" fromState="7d1d9b2cd9b0d32a-c487a386dbaac4ed" toState="fc4d4d81a70f08ba-6cef3292ba7e516c"/>
+ <stmMM_p:Trans xmi:id="5717723e0977b7a5-3e30336eab10e5d6" name="t11_12" fromState="9b76fae2368c51d2-5d15c2f9bd00b7a7" toState="b3ccbf7c0b0e664d-31fd1f289118d0dd"/>
+ <stmMM_p:Trans xmi:id="40820c6794bf8511-bdb6020058fd40f7" name="t13_14" fromState="17e3ee6973eb6f49-c5543c6f279f2cf6" toState="c83211e9c010324d-d6b506081f5451b8"/>
+</xmi:XMI>
diff --git a/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/src/org/eclipse/qvtd/examples/qvtrelation/modelmorf/MetamodelEntry.java b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/src/org/eclipse/qvtd/examples/qvtrelation/modelmorf/MetamodelEntry.java
new file mode 100644
index 000000000..a3fe7afc4
--- /dev/null
+++ b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/src/org/eclipse/qvtd/examples/qvtrelation/modelmorf/MetamodelEntry.java
@@ -0,0 +1,43 @@
+package org.eclipse.qvtd.examples.qvtrelation.modelmorf;
+
+public class MetamodelEntry {
+
+ private String alias;
+ private String file;
+ private String reference;
+ private boolean relative = false;
+
+
+ public MetamodelEntry() {
+ }
+
+ public String getAlias() {
+ return alias;
+ }
+ public void setAlias(String alias) {
+ this.alias = alias;
+ }
+ public String getFile() {
+ return file;
+ }
+ public void setFile(String file) {
+ this.file = file;
+ setRelative(false);
+ }
+ public String getReference() {
+ return reference;
+ }
+ public void setReference(String reference) {
+ this.reference = reference;
+ setRelative(true);
+ }
+
+ public boolean isRelative() {
+ return relative;
+ }
+
+ public void setRelative(boolean relative) {
+ this.relative = relative;
+ }
+
+} \ No newline at end of file
diff --git a/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/src/org/eclipse/qvtd/examples/qvtrelation/modelmorf/ModelEntry.java b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/src/org/eclipse/qvtd/examples/qvtrelation/modelmorf/ModelEntry.java
new file mode 100644
index 000000000..dbdf2ce67
--- /dev/null
+++ b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/src/org/eclipse/qvtd/examples/qvtrelation/modelmorf/ModelEntry.java
@@ -0,0 +1,52 @@
+package org.eclipse.qvtd.examples.qvtrelation.modelmorf;
+
+public class ModelEntry {
+ private String variable;
+ private String file;
+ private String variableRef;
+ private String deltaFile;
+ private boolean bound = false;
+ private boolean delta = false;
+ public String getVariable() {
+ return variable;
+ }
+ public void setVariable(String variable) {
+ this.variable = variable;
+ }
+ public String getFile() {
+ return file;
+ }
+ public void setFile(String file) {
+ this.file = file;
+ setBound(false);
+ }
+ public String getVariableRef() {
+ return variableRef;
+ }
+ public void setVariableRef(String variableRef) {
+ this.variableRef = variableRef;
+ setBound(true);
+ }
+ public String getDeltaFile() {
+ return deltaFile;
+ }
+ public void setDeltaFile(String deltaFile) {
+ this.deltaFile = deltaFile;
+ setDelta(true);
+ }
+ public boolean isBound() {
+ return bound;
+ }
+ public void setBound(boolean bound) {
+ this.bound = bound;
+ }
+ public boolean hasDelta() {
+ return delta;
+ }
+ public void setDelta(boolean delta) {
+ this.delta = delta;
+ }
+
+
+
+} \ No newline at end of file
diff --git a/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/src/org/eclipse/qvtd/examples/qvtrelation/modelmorf/ModelMorfComponent.java b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/src/org/eclipse/qvtd/examples/qvtrelation/modelmorf/ModelMorfComponent.java
new file mode 100644
index 000000000..13c8c2bce
--- /dev/null
+++ b/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/src/org/eclipse/qvtd/examples/qvtrelation/modelmorf/ModelMorfComponent.java
@@ -0,0 +1,298 @@
+/*******************************************************************************
+ * Copyright (c) 2014 The University of York, Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Horacio Hoyos - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.qvtd.examples.qvtrelation.modelmorf;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.emf.mwe2.runtime.workflow.IWorkflowComponent;
+import org.eclipse.emf.mwe2.runtime.workflow.IWorkflowContext;
+
+public class ModelMorfComponent implements IWorkflowComponent {
+
+ private static final String METAMODEL_ALIAS = "-m";
+ private static final String METAMODEL_FILE = "-mf";
+ private static final String METAMODEL_REFERENCE = "-mi";
+ private static final String QVT_SPECIFICATION_FILE = "-c";
+ private static final String IMPORTED_QVT_FILE_DIR = "-qp";
+ private static final String MODEL_VARIABLE = "-u";
+ private static final String MODEL_FILE = "-f";
+ private static final String MODEL_REFERENCE = "-ui";
+ private static final String MODEL_DELTA = "-df";
+ private static final String TRANSFORMATION_NAME = "-t";
+ private static final String TOP_RELATION_NAME = "-r";
+ private static final String DIRECTION_DOMAIN = "-d";
+ private static final String DOMAIN_QUALIFIER = "-q";
+ private static final String TRACE_OUTPUT_FILE = "-tox";
+ private static final String TRACE_INPUT_FILE = "-tix";
+ private static final String INCREMENTAL = "-it";
+
+ private String java15Path; // Path to Java 1.5 bin folder
+ private String modelMorfPath; // Path to ModelMorf Installation
+ private String javaCommand = "java"; // Java command
+
+ private List<MetamodelEntry> metamodels;
+ private List<String> importedQvtFileDir;
+ private List<ModelEntry> models;
+
+ private String qvtSpecificationFile;
+ private String transformationName;
+ private String topRelationName;
+ private String directionDomain;
+ private String domainQualifier;
+ private String traceOutputFile;
+ private String traceInputFile;
+ private boolean incremental;
+
+
+
+ public ModelMorfComponent() {
+ metamodels = new ArrayList<MetamodelEntry>();
+ models = new ArrayList<ModelEntry>();
+ importedQvtFileDir = new ArrayList<String>();
+ }
+
+ public void preInvoke() {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void invoke(IWorkflowContext ctx) {
+ // TODO test all parameters are correct and required values set
+
+ List<String> arguments = new ArrayList<String>();
+ StringBuilder argBuilder = new StringBuilder();
+ // Create the java arguments
+ argBuilder.append(java15Path);
+ if (!java15Path.endsWith("\\")) {
+ argBuilder.append("\\");
+ }
+ argBuilder.append(javaCommand);
+ arguments.add(argBuilder.toString());
+ argBuilder.setLength(0);
+ arguments.add("-jar");
+ argBuilder.append(modelMorfPath);
+ if (!modelMorfPath.endsWith("\\")) {
+ argBuilder.append("\\");
+ }
+ argBuilder.append("qvt.jar");
+ arguments.add(argBuilder.toString());
+ argBuilder.setLength(0);
+ arguments.add("-p");
+ arguments.add(modelMorfPath);
+ // ( -m meta_model_alias ( -mf meta_model_file | -mi meta_model_ref ) )+
+ Iterator<MetamodelEntry> mmit = metamodels.iterator();
+ while (mmit.hasNext()) {
+ MetamodelEntry entry = mmit.next();
+ arguments.add(METAMODEL_ALIAS);
+ arguments.add(entry.getAlias());
+ if (entry.isRelative()) {
+ arguments.add(METAMODEL_REFERENCE);
+ arguments.add(entry.getReference());
+ } else {
+ arguments.add(METAMODEL_FILE);
+ arguments.add(entry.getFile());
+ }
+ }
+ // -c qvt_specification_file
+ arguments.add(QVT_SPECIFICATION_FILE);
+ arguments.add(getQvtSpecificationFile());
+ // [ -qp imported_qvt_file_dir ( ';' imported_qvt_file_dir )* ]
+ if (!importedQvtFileDir.isEmpty()) {
+ arguments.add(IMPORTED_QVT_FILE_DIR);
+ Iterator<String> lIt = importedQvtFileDir.iterator();
+ while(lIt.hasNext()) {
+ argBuilder.append(lIt.next());
+ if (lIt.hasNext()) {
+ argBuilder.append(";");
+ }
+ }
+ arguments.add(argBuilder.toString());
+ argBuilder.setLength(0);
+ }
+ // ( -u model_variable ( -f instance_model_file | -ui model_variable_ref ) [ -df model_delta_file ] )+
+ Iterator<ModelEntry> mit = models.iterator();
+ while (mit.hasNext()) {
+ ModelEntry entry = mit.next();
+ arguments.add(MODEL_VARIABLE);
+ arguments.add(entry.getVariable());
+ if (entry.isBound()) {
+ arguments.add(MODEL_REFERENCE);
+ arguments.add(entry.getVariableRef());
+ } else {
+ arguments.add(MODEL_FILE);
+ arguments.add(entry.getFile());
+ }
+ if (entry.hasDelta()) {
+ arguments.add(MODEL_DELTA);
+ arguments.add(entry.getDeltaFile());
+ }
+ }
+ // -t transformation_name [-r top_relation_name ]
+ arguments.add(TRANSFORMATION_NAME);
+ arguments.add(getTransformationName());
+ if (getTopRelationName() != null) {
+ arguments.add(TOP_RELATION_NAME);
+ arguments.add(getTransformationName());
+ }
+ // -d direction_domain -q domain_qualifier
+ arguments.add(DIRECTION_DOMAIN);
+ arguments.add(getDirectionDomain());
+ arguments.add(DOMAIN_QUALIFIER);
+ arguments.add(getDomainQualifier());
+ //[ -tox trace_output_file ] [ -tix trace_input_file ] [ -it ]
+ if (getTraceOutputFile() != null) {
+ arguments.add(TRACE_OUTPUT_FILE);
+ arguments.add(getTraceOutputFile());
+ }
+ if (getTraceInputFile() != null) {
+ arguments.add(TRACE_INPUT_FILE);
+ arguments.add(getTraceOutputFile());
+ }
+ if (isIncremental()) {
+ arguments.add(INCREMENTAL);
+ }
+
+ ProcessBuilder probuilder = new ProcessBuilder(arguments);
+ //process.redirectErrorStream(true);
+ File dir = new File("C:/git/org.eclipse.qvtd/examples/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/org/eclipse/qvtd/examples/qvtrelation/modelmorf/hstmtostm");
+ probuilder .directory(dir);
+ System.out.println(probuilder .directory());
+ probuilder.redirectErrorStream(true);
+ try {
+ Process process = probuilder .start();
+ //Read out dir output
+ InputStream is = process.getInputStream();
+ InputStreamReader isr = new InputStreamReader(is);
+ BufferedReader br = new BufferedReader(isr);
+ String line;
+ System.out.printf("Running ModelMorf with the given parameters.");
+ while ((line = br.readLine()) != null) {
+ System.out.println(line);
+ }
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ public void postInvoke() {
+ // TODO Auto-generated method stub
+
+ }
+
+ public String getJava15Path() {
+ return java15Path;
+ }
+
+ public void setJava15Path(String java15Path) {
+ this.java15Path = java15Path;
+ }
+
+ public String getModelMorfPath() {
+ return modelMorfPath;
+ }
+
+ public void setModelMorfPath(String modelMorfPath) {
+ this.modelMorfPath = modelMorfPath;
+ }
+
+ public String getJavaCommand() {
+ return javaCommand;
+ }
+
+ public void setJavaCommand(String javaCommand) {
+ this.javaCommand = javaCommand;
+ }
+
+ public String getQvtSpecificationFile() {
+ return qvtSpecificationFile;
+ }
+
+ public void setQvtSpecificationFile(String qvtSpecificationFile) {
+ this.qvtSpecificationFile = qvtSpecificationFile;
+ }
+
+ public String getTransformationName() {
+ return transformationName;
+ }
+
+ public void setTransformationName(String transformationName) {
+ this.transformationName = transformationName;
+ }
+
+ public String getTopRelationName() {
+ return topRelationName;
+ }
+
+ public void setTopRelationName(String topRelationName) {
+ this.topRelationName = topRelationName;
+ }
+
+ public String getDirectionDomain() {
+ return directionDomain;
+ }
+
+ public void setDirectionDomain(String directionDomain) {
+ this.directionDomain = directionDomain;
+ }
+
+ public String getDomainQualifier() {
+ return domainQualifier;
+ }
+
+ public void setDomainQualifier(String domainQualifier) {
+ this.domainQualifier = domainQualifier;
+ }
+
+ public String getTraceOutputFile() {
+ return traceOutputFile;
+ }
+
+ public void setTraceOutputFile(String traceOutputFile) {
+ this.traceOutputFile = traceOutputFile;
+ }
+
+ public String getTraceInputFile() {
+ return traceInputFile;
+ }
+
+ public void setTraceInputFile(String traceInputFile) {
+ this.traceInputFile = traceInputFile;
+ }
+
+ public boolean isIncremental() {
+ return incremental;
+ }
+
+ public void setIncremental(boolean incremental) {
+ this.incremental = incremental;
+ }
+
+ public void addMetamodel(MetamodelEntry metamodel){
+ metamodels.add(metamodel);
+ }
+
+ public void addImportedQvtFileDir(String fileDir){
+ importedQvtFileDir.add(fileDir);
+ }
+
+ public void addModel(ModelEntry model) {
+ models.add(model);
+ }
+
+}
diff --git a/plugins/org.eclipse.qvtd.build.etl/ExportAntTask.jardesc b/plugins/org.eclipse.qvtd.build.etl/ExportAntTask.jardesc
index 4878490a5..11730cad4 100644
--- a/plugins/org.eclipse.qvtd.build.etl/ExportAntTask.jardesc
+++ b/plugins/org.eclipse.qvtd.build.etl/ExportAntTask.jardesc
@@ -1,17 +1,17 @@
-<?xml version="1.0" encoding="WINDOWS-1252" standalone="no"?>
-<jardesc>
- <jar path="org.eclipse.qvtd.build.etl/org.eclipse.qvtd.build.ant.jar"/>
- <options buildIfNeeded="true" compress="true" descriptionLocation="/org.eclipse.qvtd.build.etl/ExportAntTask.jardesc" exportErrors="true" exportWarnings="true" includeDirectoryEntries="false" overwrite="true" saveDescription="false" storeRefactorings="false" useSourceFolders="false"/>
- <storedRefactorings deprecationInfo="true" structuralOnly="false"/>
- <selectedProjects/>
- <manifest generateManifest="true" manifestLocation="" manifestVersion="1.0" reuseManifest="false" saveManifest="false" usesManifest="true">
- <sealing sealJar="false">
- <packagesToSeal/>
- <packagesToUnSeal/>
- </sealing>
- </manifest>
- <selectedElements exportClassFiles="true" exportJavaFiles="false" exportOutputFolder="false">
- <folder path="/org.eclipse.qvtd.build.etl/META-INF"/>
- <javaElement handleIdentifier="=org.eclipse.qvtd.build.etl/src&lt;org.eclipse.qvtd.build.etl.ant"/>
- </selectedElements>
-</jardesc>
+<?xml version="1.0" encoding="WINDOWS-1252" standalone="no"?>
+<jardesc>
+ <jar path="org.eclipse.qvtd.build.etl/org.eclipse.qvtd.build.ant.jar"/>
+ <options buildIfNeeded="true" compress="true" descriptionLocation="/org.eclipse.qvtd.build.etl/ExportAntTask.jardesc" exportErrors="true" exportWarnings="true" includeDirectoryEntries="false" overwrite="true" saveDescription="false" storeRefactorings="false" useSourceFolders="false"/>
+ <storedRefactorings deprecationInfo="true" structuralOnly="false"/>
+ <selectedProjects/>
+ <manifest generateManifest="true" manifestLocation="" manifestVersion="1.0" reuseManifest="false" saveManifest="false" usesManifest="true">
+ <sealing sealJar="false">
+ <packagesToSeal/>
+ <packagesToUnSeal/>
+ </sealing>
+ </manifest>
+ <selectedElements exportClassFiles="true" exportJavaFiles="false" exportOutputFolder="false">
+ <folder path="/org.eclipse.qvtd.build.etl/META-INF"/>
+ <javaElement handleIdentifier="=org.eclipse.qvtd.build.etl/src&lt;org.eclipse.qvtd.build.etl.ant"/>
+ </selectedElements>
+</jardesc>
diff --git a/plugins/org.eclipse.qvtd.build.etl/META-INF/MANIFEST.MF b/plugins/org.eclipse.qvtd.build.etl/META-INF/MANIFEST.MF
index 4c7612933..2d11dd036 100644
--- a/plugins/org.eclipse.qvtd.build.etl/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.qvtd.build.etl/META-INF/MANIFEST.MF
@@ -1,8 +1,11 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Bundle-Name: Etl
+Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.qvtd.build.etl;singleton:=true
Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
Bundle-Activator: org.eclipse.qvtd.build.etl.Activator
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
@@ -12,6 +15,17 @@ Require-Bundle: org.eclipse.ui,
org.eclipse.qvtd.xtext.qvtbase.tests,
org.eclipse.qvtd.pivot.qvtcore,
org.apache.ant;bundle-version="1.8.4",
- org.eclipse.epsilon.eol.engine
+ org.eclipse.epsilon.etl.engine;bundle-version="1.2.0",
+ org.eclipse.epsilon.flock.engine;bundle-version="1.2.0",
+ org.eclipse.epsilon.emc.emf;bundle-version="1.1.0",
+ org.eclipse.qvtd.build.schedule;bundle-version="1.0.0"
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.qvtd.build.etl;
+ uses:="org.eclipse.ocl.examples.pivot,
+ org.eclipse.epsilon.eol.models,
+ org.eclipse.ui.plugin,
+ org.eclipse.epsilon.etl.trace,
+ org.osgi.framework,
+ org.eclipse.epsilon.eol",
+ org.eclipse.qvtd.build.etl.ant;uses:="org.eclipse.emf.ecore.resource,org.apache.tools.ant"
diff --git a/plugins/org.eclipse.qvtd.build.etl/build.properties b/plugins/org.eclipse.qvtd.build.etl/build.properties
index 34d2e4d2d..8e2cf6df0 100644
--- a/plugins/org.eclipse.qvtd.build.etl/build.properties
+++ b/plugins/org.eclipse.qvtd.build.etl/build.properties
@@ -1,4 +1,10 @@
source.. = src/
output.. = bin/
bin.includes = META-INF/,\
- .
+ .,\
+ src/,\
+ schema/,\
+ plugin.xml,\
+ plugin.properties,\
+ model/
+additional.bundles = org.eclipse.ocl.jdt.annotation7
diff --git a/plugins/org.eclipse.qvtd.build.etl/model/ECoreContainmentTree.ecore b/plugins/org.eclipse.qvtd.build.etl/model/ECoreContainmentTree.ecore
new file mode 100644
index 000000000..d36554796
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/model/ECoreContainmentTree.ecore
@@ -0,0 +1,15 @@
+<?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="eCoreContainemntTree" nsURI="http://www.eclipse.org/qvt/examples/0.1/ECoreContainemntTree"
+ nsPrefix="eCoreContainemntTree">
+ <eClassifiers xsi:type="ecore:EClass" name="Node">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="EClassName" unique="false"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parent" upperBound="-1"
+ eType="#//Node" eOpposite="#//Node/children"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="children" upperBound="-1"
+ eType="#//Node" eOpposite="#//Node/parent"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="superTypes" upperBound="-1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.qvtd.build.etl/model/Graph.ecore b/plugins/org.eclipse.qvtd.build.etl/model/Graph.ecore
new file mode 100644
index 000000000..a8089230a
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/model/Graph.ecore
@@ -0,0 +1,38 @@
+<?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="graph" nsURI="http://www.eclipse.org/qvt/examples/0.1/Graph"
+ nsPrefix="graph">
+ <eClassifiers xsi:type="ecore:EClass" name="Node" eSuperTypes="#//Element">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="incoming" upperBound="-1"
+ eType="#//Edge" eOpposite="#//Edge/target"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="outgoing" upperBound="-1"
+ eType="#//Edge" eOpposite="#//Edge/source"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="label" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//NodeType"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Edge" eSuperTypes="#//Element">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="target" lowerBound="1"
+ eType="#//Node" eOpposite="#//Node/incoming"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="source" lowerBound="1"
+ eType="#//Node" eOpposite="#//Node/outgoing"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//EdgeType"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Element" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="graph" lowerBound="1" eType="#//Graph"
+ eOpposite="#//Graph/element"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ElementType" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="graph" lowerBound="1" eType="#//Graph"
+ eOpposite="#//Graph/elementType"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Graph">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="element" upperBound="-1"
+ eType="#//Element" containment="true" eOpposite="#//Element/graph"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="elementType" upperBound="-1"
+ eType="#//ElementType" eOpposite="#//ElementType/graph"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EdgeType" eSuperTypes="#//ElementType"/>
+ <eClassifiers xsi:type="ecore:EClass" name="NodeType" eSuperTypes="#//ElementType"/>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.qvtd.build.etl/model/Graph.genmodel b/plugins/org.eclipse.qvtd.build.etl/model/Graph.genmodel
new file mode 100644
index 000000000..87351b686
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/model/Graph.genmodel
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.qvtd.build.etl/src-gen" editDirectory="/org.eclipse.qvtd.build.etl.edit/src-gen"
+ editorDirectory="/org.eclipse.qvtd.build.etl.editor/src-gen" modelPluginID="org.eclipse.qvtd.build.etl"
+ modelName="Graph" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+ importerID="org.eclipse.emf.importer.ecore" complianceLevel="5.0" copyrightFields="false"
+ operationReflection="true" importOrganizing="true">
+ <foreignModel>Graph.ecore</foreignModel>
+ <genPackages prefix="Graph" basePackage="org.eclipse.qvtd.build.etl" disposableProviderFactory="true"
+ ecorePackage="Graph.ecore#/">
+ <genClasses ecoreClass="Graph.ecore#//Node">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Graph.ecore#//Node/incoming"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Graph.ecore#//Node/outgoing"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Graph.ecore#//Node/label"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EReference Graph.ecore#//Node/type"/>
+ </genClasses>
+ <genClasses ecoreClass="Graph.ecore#//Edge">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Graph.ecore#//Edge/target"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Graph.ecore#//Edge/source"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EReference Graph.ecore#//Edge/type"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="Graph.ecore#//Element">
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference Graph.ecore#//Element/graph"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="Graph.ecore#//ElementType">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Graph.ecore#//ElementType/graph"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Graph.ecore#//ElementType/name"/>
+ </genClasses>
+ <genClasses ecoreClass="Graph.ecore#//Graph">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Graph.ecore#//Graph/element"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Graph.ecore#//Graph/name"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Graph.ecore#//Graph/elementType"/>
+ </genClasses>
+ <genClasses ecoreClass="Graph.ecore#//EdgeType"/>
+ <genClasses ecoreClass="Graph.ecore#//NodeType"/>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/plugins/org.eclipse.qvtd.build.etl/model/GraphMlTypes.ecore b/plugins/org.eclipse.qvtd.build.etl/model/GraphMlTypes.ecore
new file mode 100644
index 000000000..97ac5098c
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/model/GraphMlTypes.ecore
@@ -0,0 +1,54 @@
+<?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="graphmltypes" nsURI="http://www.eclipse.org/qvt/examples/0.1/GraphMlTypes"
+ nsPrefix="graphmltypes">
+ <eClassifiers xsi:type="ecore:EClass" name="GraphMLNodeType" eSuperTypes="Graph.ecore#//NodeType">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="color" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ defaultValueLiteral="#FFFFFF"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="shape" eType="#//ShapeType"
+ defaultValueLiteral="rectangle"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="GraphMLEdgeType" eSuperTypes="Graph.ecore#//EdgeType">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="color" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ defaultValueLiteral="#FFFFFF"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="lineStyle" eType="#//EdgeLineStyle"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="fromStyle" eType="#//EdgeEndStyle"
+ defaultValueLiteral="none"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="toStyle" eType="#//EdgeEndStyle"
+ defaultValueLiteral="standard"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="EdgeEndStyle">
+ <eLiterals name="standard"/>
+ <eLiterals name="delta" value="1"/>
+ <eLiterals name="diamond" value="2"/>
+ <eLiterals name="whiteDiamond" value="3" literal="white_diamond"/>
+ <eLiterals name="whiteDelta" value="4" literal="white_delta"/>
+ <eLiterals name="none" value="5"/>
+ <eLiterals name="plain" value="6"/>
+ <eLiterals name="concave" value="7"/>
+ <eLiterals name="convex" value="8"/>
+ <eLiterals name="circle" value="9"/>
+ <eLiterals name="dash" value="10"/>
+ <eLiterals name="transparentCircle" value="11" literal="transparent_circle"/>
+ <eLiterals name="skewedDash" value="12" literal="skewed_dash"/>
+ <eLiterals name="tShape" value="13" literal="t_shape"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="EdgeLineStyle">
+ <eLiterals name="line"/>
+ <eLiterals name="dashed" value="1"/>
+ <eLiterals name="dotted" value="2"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="ShapeType">
+ <eLiterals name="rectangle"/>
+ <eLiterals name="roundrectangle" value="1"/>
+ <eLiterals name="ellipse" value="2"/>
+ <eLiterals name="parallelogram" value="3"/>
+ <eLiterals name="hexagon" value="4"/>
+ <eLiterals name="octagon" value="5"/>
+ <eLiterals name="diamond" value="6"/>
+ <eLiterals name="triangle" value="7"/>
+ <eLiterals name="trapezoid" value="8"/>
+ <eLiterals name="trapezoid2" value="9"/>
+ <eLiterals name="rectangle3d" value="10"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.qvtd.build.etl/model/GraphMlTypes.genmodel b/plugins/org.eclipse.qvtd.build.etl/model/GraphMlTypes.genmodel
new file mode 100644
index 000000000..00578e1a8
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/model/GraphMlTypes.genmodel
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.qvtd.build.etl/src-gen" editDirectory="/org.eclipse.qvtd.build.etl.edit/src-gen"
+ editorDirectory="/org.eclipse.qvtd.build.etl.editor/src-gen" modelPluginID="org.eclipse.qvtd.build.etl"
+ modelName="GraphMlTypes" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+ importerID="org.eclipse.emf.importer.ecore" complianceLevel="5.0" copyrightFields="false"
+ usedGenPackages="Graph.genmodel#//graph" operationReflection="true" importOrganizing="true">
+ <foreignModel>GraphMlTypes.ecore</foreignModel>
+ <genPackages prefix="Graphmltypes" basePackage="org.eclipse.qvtd.build.etl" disposableProviderFactory="true"
+ ecorePackage="GraphMlTypes.ecore#/">
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="GraphMlTypes.ecore#//EdgeEndStyle">
+ <genEnumLiterals ecoreEnumLiteral="GraphMlTypes.ecore#//EdgeEndStyle/standard"/>
+ <genEnumLiterals ecoreEnumLiteral="GraphMlTypes.ecore#//EdgeEndStyle/delta"/>
+ <genEnumLiterals ecoreEnumLiteral="GraphMlTypes.ecore#//EdgeEndStyle/diamond"/>
+ <genEnumLiterals ecoreEnumLiteral="GraphMlTypes.ecore#//EdgeEndStyle/whiteDiamond"/>
+ <genEnumLiterals ecoreEnumLiteral="GraphMlTypes.ecore#//EdgeEndStyle/whiteDelta"/>
+ <genEnumLiterals ecoreEnumLiteral="GraphMlTypes.ecore#//EdgeEndStyle/none"/>
+ <genEnumLiterals ecoreEnumLiteral="GraphMlTypes.ecore#//EdgeEndStyle/plain"/>
+ <genEnumLiterals ecoreEnumLiteral="GraphMlTypes.ecore#//EdgeEndStyle/concave"/>
+ <genEnumLiterals ecoreEnumLiteral="GraphMlTypes.ecore#//EdgeEndStyle/convex"/>
+ <genEnumLiterals ecoreEnumLiteral="GraphMlTypes.ecore#//EdgeEndStyle/circle"/>
+ <genEnumLiterals ecoreEnumLiteral="GraphMlTypes.ecore#//EdgeEndStyle/dash"/>
+ <genEnumLiterals ecoreEnumLiteral="GraphMlTypes.ecore#//EdgeEndStyle/transparentCircle"/>
+ <genEnumLiterals ecoreEnumLiteral="GraphMlTypes.ecore#//EdgeEndStyle/skewedDash"/>
+ <genEnumLiterals ecoreEnumLiteral="GraphMlTypes.ecore#//EdgeEndStyle/tShape"/>
+ </genEnums>
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="GraphMlTypes.ecore#//EdgeLineStyle">
+ <genEnumLiterals ecoreEnumLiteral="GraphMlTypes.ecore#//EdgeLineStyle/line"/>
+ <genEnumLiterals ecoreEnumLiteral="GraphMlTypes.ecore#//EdgeLineStyle/dashed"/>
+ <genEnumLiterals ecoreEnumLiteral="GraphMlTypes.ecore#//EdgeLineStyle/dotted"/>
+ </genEnums>
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="GraphMlTypes.ecore#//ShapeType">
+ <genEnumLiterals ecoreEnumLiteral="GraphMlTypes.ecore#//ShapeType/rectangle"/>
+ <genEnumLiterals ecoreEnumLiteral="GraphMlTypes.ecore#//ShapeType/roundrectangle"/>
+ <genEnumLiterals ecoreEnumLiteral="GraphMlTypes.ecore#//ShapeType/ellipse"/>
+ <genEnumLiterals ecoreEnumLiteral="GraphMlTypes.ecore#//ShapeType/parallelogram"/>
+ <genEnumLiterals ecoreEnumLiteral="GraphMlTypes.ecore#//ShapeType/hexagon"/>
+ <genEnumLiterals ecoreEnumLiteral="GraphMlTypes.ecore#//ShapeType/octagon"/>
+ <genEnumLiterals ecoreEnumLiteral="GraphMlTypes.ecore#//ShapeType/diamond"/>
+ <genEnumLiterals ecoreEnumLiteral="GraphMlTypes.ecore#//ShapeType/triangle"/>
+ <genEnumLiterals ecoreEnumLiteral="GraphMlTypes.ecore#//ShapeType/trapezoid"/>
+ <genEnumLiterals ecoreEnumLiteral="GraphMlTypes.ecore#//ShapeType/trapezoid2"/>
+ <genEnumLiterals ecoreEnumLiteral="GraphMlTypes.ecore#//ShapeType/rectangle3d"/>
+ </genEnums>
+ <genClasses ecoreClass="GraphMlTypes.ecore#//GraphMLNodeType">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute GraphMlTypes.ecore#//GraphMLNodeType/colour"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute GraphMlTypes.ecore#//GraphMLNodeType/shape"/>
+ </genClasses>
+ <genClasses ecoreClass="GraphMlTypes.ecore#//GraphMLEdgeType">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute GraphMlTypes.ecore#//GraphMLEdgeType/color"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute GraphMlTypes.ecore#//GraphMLEdgeType/lineStyle"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute GraphMlTypes.ecore#//GraphMLEdgeType/fromStyle"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute GraphMlTypes.ecore#//GraphMLEdgeType/toStyle"/>
+ </genClasses>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/config/QVTcConfig.ecore b/plugins/org.eclipse.qvtd.build.etl/model/QVTcConfig.ecore
index a55692165..851da5700 100644
--- a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/config/QVTcConfig.ecore
+++ b/plugins/org.eclipse.qvtd.build.etl/model/QVTcConfig.ecore
@@ -3,23 +3,30 @@
xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="QVTcConfig" nsURI="http://www.eclipse.org/qvt/examples/0.1/QVTcConfig"
nsPrefix="qvtcconfig">
<eClassifiers xsi:type="ecore:EClass" name="Configuration">
- <eStructuralFeatures xsi:type="ecore:EReference" name="inputDirection" eType="#//Direction"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="outputDirection" upperBound="-1"
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inputDirection" lowerBound="1"
+ eType="#//Direction"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="outputDirection" eType="#//Direction"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="mode" lowerBound="1" eType="#//Mode"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="transformation" lowerBound="1"
+ eType="#//Transformation" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="middle" lowerBound="1"
eType="#//Direction"/>
- <eStructuralFeatures xsi:type="ecore:EAttribute" name="mode" eType="#//Mode"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="transformation" eType="#//Transformation"
- containment="true"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="middle" eType="#//Direction"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Direction" eSuperTypes="#//NamedElement">
- <eStructuralFeatures xsi:type="ecore:EReference" name="imports" eType="#//Import"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="imports" lowerBound="1"
+ upperBound="-1" eType="#//Import"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="NamedElement" abstract="true">
- <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ defaultValueLiteral=""/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Import" eSuperTypes="#//NamedElement">
- <eStructuralFeatures xsi:type="ecore:EAttribute" name="metamodel" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- <eStructuralFeatures xsi:type="ecore:EAttribute" name="package" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="metamodelFile" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ defaultValueLiteral=""/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="metamodelUri" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ defaultValueLiteral=""/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="package" upperBound="-1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" defaultValueLiteral=""/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Transformation" eSuperTypes="#//NamedElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="direction" upperBound="-1"
@@ -28,7 +35,7 @@
eType="#//Import" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="Mode">
- <eLiterals name="checking"/>
- <eLiterals name="enforcement" value="1"/>
+ <eLiterals name="check" literal="check"/>
+ <eLiterals name="enforce" value="1" literal="enforce"/>
</eClassifiers>
</ecore:EPackage>
diff --git a/plugins/org.eclipse.qvtd.build.etl/model/QVTcDataDependencyGraph.ecore b/plugins/org.eclipse.qvtd.build.etl/model/QVTcDataDependencyGraph.ecore
new file mode 100644
index 000000000..5285b17f3
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/model/QVTcDataDependencyGraph.ecore
@@ -0,0 +1,61 @@
+<?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="qVTcDataDependencyGraph" nsURI="http://www.eclipse.org/qvt/examples/0.2/QVTcDataDependencyGraph"
+ nsPrefix="qVTcDataDependencyGraph">
+ <eClassifiers xsi:type="ecore:EClass" name="ClassNode" eSuperTypes="#//Node">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="model" eType="#//Model"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="superTypes" upperBound="-1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DataTypeNode" eSuperTypes="#//Node">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="attribute" lowerBound="1"
+ eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" lowerBound="1" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DependencyEdge" eSuperTypes="#//Edge">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="derived" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="multiple" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="direction" lowerBound="1"
+ eType="#//DependencyDirection"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Edge" eSuperTypes="#//Element">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="target" lowerBound="1"
+ eType="#//Node" eOpposite="#//Node/incoming"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="source" lowerBound="1"
+ eType="#//Node" eOpposite="#//Node/outgoing"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="referredProperty" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Element" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="graph" lowerBound="1" eType="#//Graph"
+ eOpposite="#//Graph/elements"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Graph">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="elements" upperBound="-1"
+ eType="#//Element" containment="true" eOpposite="#//Element/graph"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="MappingNode" eSuperTypes="#//Node"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Node" eSuperTypes="#//Element">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="incoming" upperBound="-1"
+ eType="#//Edge" eOpposite="#//Edge/target"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="outgoing" upperBound="-1"
+ eType="#//Edge" eOpposite="#//Edge/source"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="label" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="qvtAstNode" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ReferenceEdge" eSuperTypes="#//Edge"/>
+ <eClassifiers xsi:type="ecore:EClass" name="ContainmentEdge" eSuperTypes="#//Edge">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="model" eType="#//Model"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="Model">
+ <eLiterals name="middle" literal="middle"/>
+ <eLiterals name="input" value="1" literal="input"/>
+ <eLiterals name="output" value="2" literal="output"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="DependencyDirection">
+ <eLiterals name="input"/>
+ <eLiterals name="output" value="1"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.qvtd.build.etl/plugin.properties b/plugins/org.eclipse.qvtd.build.etl/plugin.properties
new file mode 100644
index 000000000..2d9ddef2b
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = QVTScheduling Model
+providerName = www.example.org
diff --git a/plugins/org.eclipse.qvtd.build.etl/schema/graphml-structure.xsd b/plugins/org.eclipse.qvtd.build.etl/schema/graphml-structure.xsd
new file mode 100644
index 000000000..6e1a92c1f
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/schema/graphml-structure.xsd
@@ -0,0 +1,1107 @@
+<?xml version="1.0"?>
+
+<xs:schema
+ targetNamespace="http://graphml.graphdrawing.org/xmlns/graphml"
+
+ xmlns="http://graphml.graphdrawing.org/xmlns/graphml"
+ xmlns:g="http://graphml.graphdrawing.org/xmlns/graphml"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified"
+ >
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ The schema corresponding to this document defines the structural
+ layer of the Graph Markup Language (GraphML).
+ Although a DTD is provided, this schema is, together with its extensions
+ http://graphml.graphdrawing.org/xmlns/1.0/graphml-attributes.xsd
+ and
+ http://graphml.graphdrawing.org/xmlns/1.0/graphml-parseinfo.xsd,
+ the only normative reference.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:import namespace="http://www.w3.org/1999/xlink"
+ schemaLocation="xlink.xsd">
+ <xs:annotation>
+ <xs:documentation
+ xml:lang="en">
+ Get access to the xlink attribute groups for the attributes
+ xlink:href and xlink:type of locator.type.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:import>
+
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ The attribute groups &lt;element_name>.extra.attrib may be used
+ for adding user defined attributes to the elements
+ &lt;element_name>.
+ The attribute group common.extra.attrib may be used for adding
+ user defined attributes to all elements.
+ </xs:documentation>
+ </xs:annotation>
+
+
+ <xs:attributeGroup name="common.extra.attrib"/>
+
+
+ <xs:attributeGroup name="graphml.extra.attrib">
+ <xs:attributeGroup ref="common.extra.attrib"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="data.extra.attrib">
+ <xs:attributeGroup ref="common.extra.attrib"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="key.extra.attrib">
+ <xs:attributeGroup ref="common.extra.attrib"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="default.extra.attrib">
+ <xs:attributeGroup ref="common.extra.attrib"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="graph.extra.attrib">
+ <xs:attributeGroup ref="common.extra.attrib"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="node.extra.attrib">
+ <xs:attributeGroup ref="common.extra.attrib"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="edge.extra.attrib">
+ <xs:attributeGroup ref="common.extra.attrib"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="port.extra.attrib">
+ <xs:attributeGroup ref="common.extra.attrib"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="hyperedge.extra.attrib">
+ <xs:attributeGroup ref="common.extra.attrib"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="endpoint.extra.attrib">
+ <xs:attributeGroup ref="common.extra.attrib"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="locator.extra.attrib">
+ <xs:attributeGroup ref="common.extra.attrib"/>
+ </xs:attributeGroup>
+
+
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Complex type definitions for the GraphML structural layer elements:
+ &lt;data>, &lt;default>, &lt;key>, &lt;graphml>, &lt;graph>,
+ &lt;node>, &lt;port>,
+ &lt;edge>, &lt;hyperedge>, &lt;endpoint> and &lt;locator>.
+ The names of the complex types are constructed corresponding
+ to the pattern element_name.type.
+ (The only remaining GraphML structural layer element
+ &lt;desc> is of simple type xs:string.)
+ </xs:documentation>
+ </xs:annotation>
+
+
+ <xs:complexType name="data-extension.type" mixed="true">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Extension mechanism for the content of &lt;data> and &lt;default>.
+ The complex type data-extension.type is empty per default.
+ Users may redefine this type in order to add content to
+ the complex types data.type and default.type which are
+ extensions of data-extension.type.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:complexType>
+
+
+ <xs:complexType name="data.type" final="#all">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Complex type for the &lt;data> element.
+ data.type is mixed, that is, &lt;data> may contain #PCDATA.
+ Content type: extension of data-extension.type which is empty
+ per default.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent mixed="true">
+ <xs:extension base="data-extension.type">
+ <xs:attribute name="key" type="xs:NMTOKEN" use="required">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">refers to the id attribute of a &lt;key>.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="id" type="xs:NMTOKEN" use="optional">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">identifies this &lt;data>.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attributeGroup ref="data.extra.attrib">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ user defined extra attributes for &lt;data> elements
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attributeGroup>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+
+ <xs:complexType name="default.type" final="#all">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Complex type for the &lt;default> element.
+ default.type is mixed, that is, data may contain #PCDATA.
+ Content type: extension of data-extension.type which is empty
+ per default.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent mixed="true">
+ <xs:extension base="data-extension.type">
+ <xs:attributeGroup ref="default.extra.attrib">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ user defined extra attributes for &lt;default> elements
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attributeGroup>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+
+ <xs:simpleType name="key.for.type" final="#all">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Simple type for the for attribute of &lt;key>.
+ key.for.type is a restriction of xs:NMTOKEN
+ Allowed values: all, graphml, graph, node, edge, hyperedge, port and endpoint.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="all"/>
+ <xs:enumeration value="graph"/>
+ <xs:enumeration value="node"/>
+ <xs:enumeration value="edge"/>
+ <xs:enumeration value="hyperedge"/>
+ <xs:enumeration value="port"/>
+ <xs:enumeration value="endpoint"/>
+ <xs:enumeration value="graphml"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+
+ <xs:complexType name="key.type" final="#all">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Complex type for the &lt;key> element.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element ref="desc" minOccurs="0"/>
+ <xs:element ref="default" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="id" type="xs:NMTOKEN" use="required">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">identifies this &lt;key>.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="for" type="key.for.type" default="all">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ describes the domain of definition for
+ the corresponding graph attribute.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attributeGroup ref="key.extra.attrib">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ user defined extra attributes for &lt;key> elements.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attributeGroup>
+ </xs:complexType>
+
+
+ <xs:complexType name="graphml.type" final="#all">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Complex type for the &lt;graphml> element.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element ref="desc" minOccurs="0"/>
+ <xs:element ref="key" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="graph"/>
+ <xs:element ref="data"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:sequence>
+ <xs:attributeGroup ref="graphml.extra.attrib">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ user defined extra attributes for &lt;graphml> elements.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attributeGroup>
+ </xs:complexType>
+
+
+ <xs:simpleType name="graph.edgedefault.type" final="#all">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Simple type for the edgedefault attribute of &lt;graph>.
+ graph.edgedefault.type is a restriction of xs:NMTOKEN
+ Allowed values: directed, undirected.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="directed"/>
+ <xs:enumeration value="undirected"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+
+ <xs:complexType name="graph.type" final="#all">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Complex type for the &lt;graph> element.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element ref="desc" minOccurs="0"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="data"/>
+ <xs:element ref="node"/>
+ <xs:element ref="edge"/>
+ <xs:element ref="hyperedge"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:element ref="locator"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="graph.extra.attrib">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ user defined extra attributes for &lt;graph> elements.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attributeGroup>
+ <xs:attribute name="id" type="xs:NMTOKEN">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ identifies this graph .
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="edgedefault"
+ type="graph.edgedefault.type" use="required">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ describes whether edges of this graph are considered
+ as directed or undirected per default (unless
+ specified by the attribute directed of &lt;edge>).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+
+
+ <xs:complexType name="node.type" final="#all">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Complex type for the &lt;node> element.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element ref="desc" minOccurs="0"/>
+ <xs:choice>
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="data"/>
+ <xs:element ref="port"/>
+ </xs:choice>
+ <xs:element ref="graph" minOccurs="0"/>
+ </xs:sequence>
+ <xs:element ref="locator"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="node.extra.attrib">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ user defined extra attributes for &lt;node elements.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attributeGroup>
+ <xs:attribute name="id" type="xs:NMTOKEN" use="required">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ identifies this node.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+
+
+ <xs:complexType name="port.type" final="#all">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Complex type for the &lt;port> element.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element ref="desc" minOccurs="0"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="data"/>
+ <xs:element ref="port"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="port.extra.attrib">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ user defined extra attributes for &lt;port> elements.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attributeGroup>
+ <xs:attribute name="name" type="xs:NMTOKEN" use="required">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ identifies this port, within the node it is contained in.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+
+
+ <xs:complexType name="edge.type" final="#all">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Complex type for the &lt;edge> element.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element ref="desc" minOccurs="0"/>
+ <xs:element ref="data" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element ref="graph" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="edge.extra.attrib">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ user defined extra attributes for &lt;edge> elements.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attributeGroup>
+ <xs:attribute name="id" type="xs:NMTOKEN">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ identifies this edge .
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="directed" type="xs:boolean">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ overwrites the edgedefault attribute of &lt;graph> .
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="source" type="xs:NMTOKEN" use="required">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ points to the id attribute of the source &lt;node>.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="target" type="xs:NMTOKEN" use="required">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ points to the id attribute of the target &lt;node>.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="sourceport" type="xs:NMTOKEN">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ points to the name attribute of the source &lt;port>.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="targetport" type="xs:NMTOKEN">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ points to the name attribute of the target &lt;port>.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+
+
+ <xs:complexType name="hyperedge.type" final="#all">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Complex type for the &lt;hyperedge> element.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element ref="desc" minOccurs="0"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="data"/>
+ <xs:element ref="endpoint"/>
+ </xs:choice>
+ <xs:element ref="graph" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="hyperedge.extra.attrib">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ user defined extra attributes for &lt;hyperedge> elements.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attributeGroup>
+ <xs:attribute name="id" type="xs:NMTOKEN">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ identifies this &lt;hyperedge> .
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+
+
+ <xs:simpleType name="endpoint.type.type" final="#all">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Simple type for the type attribute of &lt;endpoint>.
+ endpoint.type.type is a restriction of xs:NMTOKEN
+ Allowed values: in, out, undir.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="in"/>
+ <xs:enumeration value="out"/>
+ <xs:enumeration value="undir"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:complexType name="endpoint.type" final="#all">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Complex type for the &lt;endpoint> element.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element ref="desc" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="endpoint.extra.attrib">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ user defined extra attributes for &lt;endpoint> elements.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attributeGroup>
+ <xs:attribute name="id" type="xs:NMTOKEN">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ identifies this &lt;endpoint> .
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="port" type="xs:NMTOKEN">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ points to the name of the port, to which this endpoint is
+ connected .
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="node" type="xs:NMTOKEN" use="required">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ points to the id of the node, to which this endpoint is connected.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="type" type="endpoint.type.type" default="undir">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ defines the direction on this endpoint (undirected per default).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+
+
+ <xs:complexType name="locator.type" final="#all">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Complex type for the &lt;locator> element.
+ Content type: (empty)
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attributeGroup ref="locator.extra.attrib">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ user defined extra attributes for &lt;locator> elements.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attributeGroup>
+ <xs:attribute ref="xlink:href" use="required">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ points to the resource of this locator.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <!-- xs:attribute ref="xlink:type" fixed="simple"-->
+ <xs:attribute ref="xlink:type">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ type of the hyperlink (fixed as simple).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+
+ <!--========================================================-->
+
+ <xs:element name="desc" type="xs:string" block="#all">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Description: Provides human-readable descriptions for the GraphML
+ element containing this &lt;desc> as its first child.
+ Occurence: &lt;key>, &lt;graphml>, &lt;graph>,
+ &lt;node>, &lt;port>, &lt;edge>, &lt;hyperedge>, and
+ &lt;endpoint>.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+
+ <xs:element name="locator" type="locator.type" block="#all">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Description: Graphs and nodes are declared by the elements
+ &lt;graph> and &lt;node>, respectively. The optional
+ &lt;locator>-child of these elements point to
+ their definition. (If there is no &lt;locator>-child
+ the graphs/nodes are defined by their content).
+ Occurence: &lt;graph>, and &lt;node>.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="data" type="data.type" block="#all">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Description: In GraphML there may be data-functions attached
+ to graphs, nodes, ports, edges, hyperedges and
+ endpoint and to the whole collection of
+ graphs described by the content of &lt;graphml>.
+ These functions are declared by &lt;key> elements
+ (children of &lt;graphml>) and defined by &lt;data>
+ elements.
+ Occurence: &lt;graphml>, &lt;graph>, &lt;node>, &lt;port>,
+ &lt;edge>, &lt;hyperedge>, and &lt;endpoint>.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:unique name="data_data_key_unique">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Ensures: uniqueness of the key attributes of &lt;data> children
+ of this &lt;data> element.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:selector xpath="./g:data"/>
+ <xs:field xpath="@key"/>
+ </xs:unique>
+
+ </xs:element>
+
+
+ <xs:element name="key" type="key.type" block="#all">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Description: In GraphML there may be data-functions attached
+ to graphs, nodes, ports, edges, hyperedges and
+ endpoint and to the whole collection of
+ graphs described by the content of &lt;graphml>.
+ These functions are declared by &lt;key> elements
+ (children of &lt;graphml>) and defined by &lt;data>
+ elements.
+ Occurence: &lt;graphml>.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="default" type="default.type" block="#all">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Description: In GraphML there may be data-functions attached
+ to graphs, nodes, ports, edges, hyperedges and
+ endpoint and to the whole collection of
+ graphs described by the content of &lt;graphml>.
+ These functions are declared by &lt;key> elements
+ (children of &lt;graphml>) and defined by &lt;data>
+ elements.
+ The (optional) &lt;default> child of &lt;key> gives
+ the default value for the corresponding function.
+ Occurence: &lt;key>.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="graphml" type="graphml.type" block="#all">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Description: &lt;graphml> is the root element of each GraphML
+ document.
+ Occurence: root.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:unique name="graphml_data_key_unique">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Ensures: uniqueness of the key attributes of &lt;data> children
+ of this &lt;graphml> element.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:selector xpath="./g:data"/>
+ <xs:field xpath="@key"/>
+ </xs:unique>
+
+ <xs:key name="key_id_key">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Ensures: existence and uniqueness of the id attributes of
+ each &lt;key> element in this document.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:selector xpath=".//g:key"/>
+ <xs:field xpath="@id"/>
+ </xs:key>
+
+
+ <xs:unique name="graph_id_unique">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Ensures: uniqueness of the id attributes of
+ each &lt;graph> element in this document.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:selector xpath=".//g:graph"/>
+ <xs:field xpath="@id"/>
+ </xs:unique>
+
+ <xs:keyref name="data_key_ref" refer="key_id_key">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Ensures: for the key attribute of each &lt;data> in this document,
+ the existence of an id attribute of
+ &lt;key> which matches the value of it.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:selector xpath=".//g:data"/>
+ <xs:field xpath="@key"/>
+ </xs:keyref>
+
+ </xs:element>
+
+
+ <xs:element name="graph" type="graph.type" block="#all">
+
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Description: Describes one graph in this document.
+ Occurence: &lt;graphml>, &lt;node>, &lt;edge>, &lt;hyperedge>.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:unique name="graph_data_key_unique">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Ensures: uniqueness of the key attributes of &lt;data> children
+ of this &lt;graph> element.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:selector xpath="./g:data"/>
+ <xs:field xpath="@key"/>
+ </xs:unique>
+
+ <xs:key name="node_id_key">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Ensures: existence and uniqueness of the id attributes of
+ each &lt;node> element in this graph.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:selector xpath=".//g:node"/>
+ <xs:field xpath="@id"/>
+ </xs:key>
+
+ <xs:unique name="edge_id_unique">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Ensures: uniqueness of the id attributes of
+ each &lt;edge> element in this graph.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:selector xpath=".//g:edge"/>
+ <xs:field xpath="@id"/>
+ </xs:unique>
+
+ <xs:unique name="hyperedge_id_unique">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Ensures: uniqueness of the id attributes of
+ each &lt;hyperedge> element in this graph.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:selector xpath=".//g:hyperedge"/>
+ <xs:field xpath="@id"/>
+ </xs:unique>
+
+ <xs:unique name="endpoint_id_unique">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Ensures: uniqueness of the id attributes of
+ each &lt;endpoint> element in this graph.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:selector xpath=".//g:endpoint"/>
+ <xs:field xpath="@id"/>
+ </xs:unique>
+
+ <xs:keyref name="edge_source_ref" refer="node_id_key">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Ensures: for the source attribute of each &lt;edge> in this graph,
+ the existence of an id attribute of
+ &lt;node> which matches the value of it.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:selector xpath=".//g:edge"/>
+ <xs:field xpath="@source"/>
+ </xs:keyref>
+
+ <xs:keyref name="edge_target_ref" refer="node_id_key">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Ensures: for the target attribute of each &lt;edge> in this graph,
+ the existence of an id attribute of
+ &lt;node> which matches the value of it.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:selector xpath=".//g:edge"/>
+ <xs:field xpath="@target"/>
+ </xs:keyref>
+
+ <xs:keyref name="endpoint_node_ref" refer="node_id_key">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Ensures: for the node attribute of each &lt;endpoint> in this graph,
+ the existence of an id attribute of
+ &lt;node> which matches the value of it.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:selector xpath=".//g:endpoint"/>
+ <xs:field xpath="@node"/>
+ </xs:keyref>
+
+ </xs:element>
+
+
+ <xs:element name="node" type="node.type" block="#all">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Description: Describes one node in the &lt;graph>
+ containing this &lt;node>.
+ Occurence: &lt;graph>.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:key name="port_name_key">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Ensures: existence and uniqueness of the name attributes of
+ each &lt;port> element within this &lt;node>.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:selector xpath=".//g:port"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ <xs:unique name="node_data_key_unique">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Ensures: uniqueness of the key attributes of &lt;data> children
+ of this &lt;node> element.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:selector xpath="./g:data"/>
+ <xs:field xpath="@key"/>
+ </xs:unique>
+
+ </xs:element>
+
+
+ <xs:element name="port" type="port.type" block="#all">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Description: Nodes may be structured by ports; thus edges
+ are not only attached to a node but to a certain
+ port in this node.
+ Occurence: &lt;node>, &lt;port>.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:unique name="port_data_key_unique">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Ensures: uniqueness of the key attributes of &lt;data> children
+ of this &lt;port> element.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:selector xpath="./g:data"/>
+ <xs:field xpath="@key"/>
+ </xs:unique>
+
+ </xs:element>
+
+
+ <xs:element name="edge" type="edge.type" block="#all">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Description: Describes an edge in the &lt;graph> which contains this
+ &lt;edge>.
+ Occurence: &lt;graph>.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:unique name="edge_data_key_unique">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Ensures: uniqueness of the key attributes of &lt;data> children
+ of this &lt;edge> element.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:selector xpath="./g:data"/>
+ <xs:field xpath="@key"/>
+ </xs:unique>
+
+ </xs:element>
+
+
+ <xs:element name="hyperedge" type="hyperedge.type" block="#all">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Description: While edges describe relations between two nodes,
+ a hyperedge describes a relation between an arbitrary
+ number of nodes.
+ Occurence: &lt;graph>.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:unique name="hyperedge_data_key_unique">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Ensures: uniqueness of the key attributes of &lt;data> children
+ of this &lt;hyperedge> element.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:selector xpath="./g:data"/>
+ <xs:field xpath="@key"/>
+ </xs:unique>
+
+ </xs:element>
+
+
+ <xs:element name="endpoint" type="endpoint.type" block="#all">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Description: The list of &lt;endpoints> within a hyperedge
+ points to the nodes contained in this hyperedge.
+ Occurence: &lt;hyperedge>.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+</xs:schema>
+
+ <!--======================================================-->
+ <!-- end of file: graphml-structure.xsd -->
+ <!--======================================================-->
diff --git a/plugins/org.eclipse.qvtd.build.etl/schema/graphml.xsd b/plugins/org.eclipse.qvtd.build.etl/schema/graphml.xsd
new file mode 100644
index 000000000..5c9259a9d
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/schema/graphml.xsd
@@ -0,0 +1,362 @@
+<?xml version="1.0"?>
+
+<xs:schema
+ targetNamespace="http://graphml.graphdrawing.org/xmlns/graphml"
+
+ xmlns="http://graphml.graphdrawing.org/xmlns/graphml"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified"
+ >
+
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ This document defines the GraphML language including GraphML attributes and GraphML parseinfo.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:redefine schemaLocation="graphml-structure.xsd">
+ <xs:attributeGroup name="key.extra.attrib">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Redefinition of file graphml-structure.xsd.
+ Extends the attribute group key.extra.attrib (which takes
+ part in the attribute list of &lt;key>) by adding the
+ attribute group key.attributes.attrib which is defined below.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attributeGroup ref="key.extra.attrib"/>
+ <xs:attributeGroup ref="key.attributes.attrib"/>
+ </xs:attributeGroup>
+
+
+ <xs:attributeGroup name="graph.extra.attrib">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Redefinition of file graphml-structure.xsd.
+ Extends the attribute group node.extra.attrib (which takes
+ part in the attribute list of &lt;node>) by adding the
+ attribute group node.parseinfo.attrib which is defined below.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attributeGroup ref="graph.extra.attrib"/>
+ <xs:attributeGroup ref="graph.parseinfo.attrib"/>
+ </xs:attributeGroup>
+
+
+ <xs:attributeGroup name="node.extra.attrib">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Redefinition of file graphml-structure.xsd.
+ Extends the attribute group graph.extra.attrib (which takes
+ part in the attribute list of &lt;graph>) by adding the
+ attribute group graph.parseinfo.attrib which is defined below.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attributeGroup ref="node.extra.attrib"/>
+ <xs:attributeGroup ref="node.parseinfo.attrib"/>
+ </xs:attributeGroup>
+
+ </xs:redefine>
+
+
+ <!--types as in graphml-attributes.xsd -->
+
+ <xs:simpleType name="key.name.type" final="#all">
+
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/(Dokumentation der Attributes Erweiterung; entsprechende Stelle.html)"
+ xml:lang="en">
+ Simple type for the attr.name attribute of &lt;key>.
+ key.name.type is final, that is, it may not be extended
+ or restricted.
+ key.name.type is a restriction of xs:NMTOKEN
+ Allowed values: (no restriction)
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NMTOKEN"/>
+ </xs:simpleType>
+
+
+ <xs:simpleType name="key.type.type" final="#all">
+
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/(Dokumentation der Attributes Erweiterung; entsprechende Stelle.html)"
+ xml:lang="en">
+ Simple type for the attr.type attribute of &lt;key>.
+ key.type.type is final, that is, it may not be extended
+ or restricted.
+ key.type.type is a restriction of xs:NMTOKEN
+ Allowed values: boolean, int, long, float, double, string, complex.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="boolean"/>
+ <xs:enumeration value="int"/>
+ <xs:enumeration value="long"/>
+ <xs:enumeration value="float"/>
+ <xs:enumeration value="double"/>
+ <xs:enumeration value="string"/>
+ <xs:enumeration value="complex"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+
+ <xs:attributeGroup name="key.attributes.attrib">
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Definition of the attribute group key.attributes.attrib.
+ This group consists of the two optional attributes
+ - attr.name (gives the name for the data function)
+ - attr.type (declares the range of values for the data function)
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="attr.name" type="key.name.type" use="optional"/>
+ <xs:attribute name="attr.type" type="key.type.type" use="optional"/>
+ </xs:attributeGroup>
+
+ <!--types as in graphml-parseinfo.xsd -->
+
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Simple type definitions for the new graph attributes.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:simpleType name="graph.order.type" final="#all">
+
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Simple type for the parse.order attribute of &lt;graph>.
+ graph.order.type is final, that is, it may not be extended
+ or restricted.
+ graph.order.type is a restriction of xs:NMTOKEN
+ Allowed values: free, nodesfirst, adjacencylist.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="free"/>
+ <xs:enumeration value="nodesfirst"/>
+ <xs:enumeration value="adjacencylist"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="graph.nodes.type" final="#all">
+
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Simple type for the parse.nodes attribute of &lt;graph>.
+ graph.nodes.type is final, that is, it may not be extended
+ or restricted.
+ graph.nodes.type is a restriction of xs:nonNegativeInteger
+ Allowed values: (no restriction).
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:restriction base="xs:nonNegativeInteger"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="graph.edges.type" final="#all">
+
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Simple type for the parse.edges attribute of &lt;graph>.
+ graph.edges.type is final, that is, it may not be extended
+ or restricted.
+ graph.edges.type is a restriction of xs:nonNegativeInteger
+ Allowed values: (no restriction).
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:restriction base="xs:nonNegativeInteger"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="graph.maxindegree.type" final="#all">
+
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Simple type for the parse.maxindegree attribute of &lt;graph>.
+ graph.maxindegree.type is final, that is, it may not be extended
+ or restricted.
+ graph.maxindegree.type is a restriction of xs:nonNegativeInteger
+ Allowed values: (no restriction).
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:restriction base="xs:nonNegativeInteger"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="graph.maxoutdegree.type" final="#all">
+
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Simple type for the parse.maxoutdegree attribute of &lt;graph>.
+ graph.maxoutdegree.type is final, that is, it may not be extended
+ or restricted.
+ graph.maxoutdegree.type is a restriction of xs:nonNegativeInteger
+ Allowed values: (no restriction).
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:restriction base="xs:nonNegativeInteger"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="graph.nodeids.type" final="#all">
+
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Simple type for the parse.nodeids attribute of &lt;graph>.
+ graph.nodeids.type is final, that is, it may not be extended
+ or restricted.
+ graph.nodeids.type is a restriction of xs:string
+ Allowed values: (no restriction).
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="canonical"/>
+ <xs:enumeration value="free"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="graph.edgeids.type" final="#all">
+
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Simple type for the parse.edgeids attribute of &lt;graph>.
+ graph.edgeids.type is final, that is, it may not be extended
+ or restricted.
+ graph.edgeids.type is a restriction of xs:string
+ Allowed values: (no restriction).
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="canonical"/>
+ <xs:enumeration value="free"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:attributeGroup name="graph.parseinfo.attrib">
+
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Definition of the attribute group graph.parseinfo.attrib.
+ This group consists of the seven attributes:
+ <ul>
+ <li><code>parse.nodeids</code></li> (fixed to 'canonical' meaning that the id attribute
+ of &lt;node> follows the pattern 'n[number]),
+ <li><code>parse.edgeids</code></li> (fixed to 'canonical' meaning that the id attribute
+ of &lt;edge> follows the pattern 'e[number]),
+ <li><code>parse.order</code></li> (required; one of the values 'nodesfirst',
+ 'adjacencylist' or 'free'),
+ <li><code>parse.nodes</code></li> (required; number of nodes in this graph),
+ <li><code>parse.edges</code></li> (required; number of edges in this graph),
+ <li><code>parse.maxindegree</code></li> (optional; maximal indegree of a node in this graph),
+ <li><code>parse.maxoutdegree</code></li> (optional; maximal outdegree of a node in this graph)
+ </ul>
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:attribute name="parse.nodeids" type="graph.nodeids.type"/>
+ <xs:attribute name="parse.edgeids" type="graph.edgeids.type"/>
+ <xs:attribute name="parse.order" type="graph.order.type"/>
+ <xs:attribute name="parse.nodes" type="graph.nodes.type"/>
+ <xs:attribute name="parse.edges" type="graph.edges.type"/>
+ <xs:attribute name="parse.maxindegree" type="graph.maxindegree.type" use="optional"/>
+ <xs:attribute name="parse.maxoutdegree" type="graph.maxoutdegree.type" use="optional"/>
+ </xs:attributeGroup>
+
+
+
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Simple type definitions for the new node attributes.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:simpleType name="node.indegree.type" final="#all">
+
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Simple type for the parse.indegree attribute of &lt;node>.
+ node.indegree.type is final, that is, it may not be extended
+ or restricted.
+ node.indegree.type is a restriction of xs:nonNegativeInteger
+ Allowed values: (no restriction).
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:restriction base="xs:nonNegativeInteger"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="node.outdegree.type" final="#all">
+
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Simple type for the parse.outdegree attribute of &lt;node>.
+ node.outdegree.type is final, that is, it may not be extended
+ or restricted.
+ node.outdegree.type is a restriction of xs:nonNegativeInteger
+ Allowed values: (no restriction).
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:restriction base="xs:nonNegativeInteger"/>
+ </xs:simpleType>
+
+ <xs:attributeGroup name="node.parseinfo.attrib">
+
+ <xs:annotation>
+ <xs:documentation
+ source="http://graphml.graphdrawing.org/"
+ xml:lang="en">
+ Definition of the attribute group node.parseinfo.attrib.
+ This group consists of two attributes
+ - parse.indegree (optional; indegree of this node),
+ - parse.outdegree (optional; outdegree of this node).
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:attribute name="parse.indegree" type="node.indegree.type" use="optional"/>
+ <xs:attribute name="parse.outdegree" type="node.outdegree.type" use="optional"/>
+ </xs:attributeGroup>
+
+</xs:schema>
diff --git a/plugins/org.eclipse.qvtd.build.etl/schema/xlink.xsd b/plugins/org.eclipse.qvtd.build.etl/schema/xlink.xsd
new file mode 100644
index 000000000..4de85194f
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/schema/xlink.xsd
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+
+<xs:schema
+ targetNamespace="http://www.w3.org/1999/xlink"
+
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified"
+>
+
+<xs:attribute name="type">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="simple"/>
+ <xs:enumeration value="extended"/>
+ <xs:enumeration value="locator"/>
+ <xs:enumeration value="arc"/>
+ </xs:restriction>
+ </xs:simpleType>
+</xs:attribute>
+
+<xs:attribute name="href" type="xs:anyURI" />
+
+<xs:attribute name="role" type="xs:string" />
+
+<xs:attribute name="arcrole" type="xs:string" />
+
+<xs:attribute name="title" type="xs:string" />
+
+<xs:attribute name="show" default="embed">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="new"/>
+ <xs:enumeration value="replace"/>
+ <xs:enumeration value="embed"/>
+ <xs:enumeration value="other"/>
+ <xs:enumeration value="none"/>
+ </xs:restriction>
+ </xs:simpleType>
+</xs:attribute>
+
+<xs:attribute name="actuate" default="onLoad">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="onLoad"/>
+ <xs:enumeration value="onRequest"/>
+ <xs:enumeration value="other"/>
+ <xs:enumeration value="none"/>
+ </xs:restriction>
+ </xs:simpleType>
+</xs:attribute>
+
+<xs:attribute name="from" type="xs:string" />
+
+<xs:attribute name="to" type="xs:string" />
+
+</xs:schema>
diff --git a/plugins/org.eclipse.qvtd.build.etl/schema/yfeatures.xsd b/plugins/org.eclipse.qvtd.build.etl/schema/yfeatures.xsd
new file mode 100644
index 000000000..e5dc8b910
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/schema/yfeatures.xsd
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ targetNamespace="http://www.yworks.com/xml/graphml"
+
+ xmlns="http://www.yworks.com/xml/graphml"
+ xmlns:g="http://graphml.graphdrawing.org/xmlns/graphml"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified">
+
+ <xs:annotation>
+ <xs:documentation>
+ Schema definitions for yFiles GraphML graphics and
+ postprocessor extensions.
+ </xs:documentation>
+ </xs:annotation>
+<xs:include schemaLocation="ygraphics.xsd"/>
+<xs:include schemaLocation="yprocessors.xsd"/>
+</xs:schema>
+
diff --git a/plugins/org.eclipse.qvtd.build.etl/schema/ygraphics.xsd b/plugins/org.eclipse.qvtd.build.etl/schema/ygraphics.xsd
new file mode 100644
index 000000000..e7adc1486
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/schema/ygraphics.xsd
@@ -0,0 +1,1813 @@
+<?xml version="1.0"?>
+
+<!-- Header -->
+<xs:schema
+ targetNamespace="http://www.yworks.com/xml/graphml"
+
+ xmlns="http://www.yworks.com/xml/graphml"
+ xmlns:y="http://www.yworks.com/xml/graphml"
+ xmlns:g="http://graphml.graphdrawing.org/xmlns/graphml"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified"
+ >
+
+ <!-- -->
+ <!-- Enumeration Types -->
+ <!-- -->
+
+
+ <!-- LineType -->
+ <xs:simpleType name="lineType.type">
+ <xs:annotation>
+ <xs:documentation>
+ The valid line types for an edge or node realizer.
+ <p>
+ Valid values are:
+ <ul>
+ <li><b>line</b>: for a continous line</li>
+ <li><b>dashed</b>: for a dashed line</li>
+ <li><b>dotted</b>: for a dotted line</li>
+ </ul>
+ </p>
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="line"/>
+ <xs:enumeration value="dashed"/>
+ <xs:enumeration value="dotted"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <!-- Font styles -->
+ <xs:simpleType name="fontStyle.type">
+ <xs:annotation>
+ <xs:documentation>
+ The valid font types for a label.
+ <p>
+ Valid values are:
+ <ul>
+ <li><b>plain</b>: for a plain font</li>
+ <li><b>bold</b>: for a bold font</li>
+ <li><b>italic</b>: for an italic font</li>
+ <li><b>bolditalic</b>: for a bold and italic font</li>
+ </ul>
+ </p>
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="plain"/>
+ <xs:enumeration value="bold"/>
+ <xs:enumeration value="italic"/>
+ <xs:enumeration value="bolditalic"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <!-- Shape of Shape Nodes -->
+ <xs:simpleType name="shapeType.type">
+
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:annotation>
+ <xs:documentation>
+ The shape types for a ShapeNodeRealizer.
+ <p>
+ Valid values are:
+ <ul>
+ <li><b>rectangle</b>: for a rectangular shape</li>
+ <li><b>roundrectangle</b>: for a rectangular shape with rounded corners</li>
+ <li><b>ellipse</b>: for an elliptical shape</li>
+ <li><b>parallelogram</b>: for a parallelogram shape</li>
+ <li><b>hexagon</b>: for a hexagonal shape</li>
+ <li><b>octagon</b>: for a octagonal shape</li>
+ <li><b>diamond</b>: for a diamond shape</li>
+ <li><b>triangle</b>: for a triangular shape</li>
+ <li><b>trapezoid</b>: for a trapezoidal shape, whose upper line is half as long as its lower line</li>
+ <li><b>trapezoid2</b>: for a trapezoidal shape, whose lower line is half as long as its upper line</li>
+ <li><b>rectangle3d</b>: for a rectangular shape with 3D-ish looks</li>
+ </ul>
+ </p>
+ </xs:documentation>
+ </xs:annotation>
+ <xs:enumeration value="rectangle"/>
+ <xs:enumeration value="roundrectangle"/>
+ <xs:enumeration value="ellipse"/>
+ <xs:enumeration value="parallelogram"/>
+ <xs:enumeration value="hexagon"/>
+ <xs:enumeration value="octagon"/>
+ <xs:enumeration value="diamond"/>
+ <xs:enumeration value="triangle"/>
+ <xs:enumeration value="trapezoid"/>
+ <xs:enumeration value="trapezoid2"/>
+ <xs:enumeration value="rectangle3d"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <!-- Arrow types -->
+ <xs:simpleType name="arrowType.type">
+ <xs:annotation>
+ <xs:documentation>
+ The arrow types for EdgeRealizers.
+ <p>
+ Valid values are:
+ <ul>
+ <li><b>standard</b>: for the default arrow</li>
+ <li><b>delta</b>: for a triangular arrow shape</li>
+ <li><b>white_delta</b>: like delta, but filled white</li>
+ <li><b>diamond</b>: for a diamond arrow shape</li>
+ <li><b>white_diamond</b>: like diamond, but filled white</li>
+ <li><b>none</b>: for no arrow</li>
+ <li><b>plain</b>: for the plain arrow</li>
+ <li><b>concave</b>: for a concave arrow</li>
+ <li><b>convex</b>: for a convex arrow</li>
+ <li><b>circle</b>: for a circle arrow</li>
+ <li><b>dash</b>: for a dash arrow</li>
+ <li><b>transparent_circle</b>: for a transparent circle arrow</li>
+ <li><b>skewed_dash</b>: for a skewed dash arrow</li>
+ <li><b>t_shape</b>: for a T-shaped arrow</li>
+ </ul>
+ </p>
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="standard"/>
+ <xs:enumeration value="delta"/>
+ <xs:enumeration value="diamond"/>
+ <xs:enumeration value="white_diamond"/>
+ <xs:enumeration value="white_delta"/>
+ <xs:enumeration value="none"/>
+ <xs:enumeration value="plain"/>
+ <xs:enumeration value="concave"/>
+ <xs:enumeration value="convex"/>
+ <xs:enumeration value="circle"/>
+ <xs:enumeration value="dash"/>
+ <xs:enumeration value="transparent_circle"/>
+ <xs:enumeration value="skewed_dash"/>
+ <xs:enumeration value="t_shape"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+
+ <!-- Alignment of Labels -->
+ <xs:simpleType name="alignment.type">
+ <xs:annotation>
+ <xs:documentation>
+ The valid alignemts for labels.
+ <p>
+ Valid values are:
+ <ul>
+ <li><b>center</b>: center alignment</li>
+ <li><b>left</b>: left alignment</li>
+ <li><b>right</b>: right alignment</li>
+ </ul>
+ </p>
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="center"/>
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <!-- Node Label Models -->
+
+ <xs:simpleType name="nodeLabelModel.type">
+ <xs:annotation>
+ <xs:documentation>
+ The valid label models for node labels.
+ <p>
+ Valid values are:
+ <ul>
+ <li><b>free</b>: free model</li>
+ <li><b>sides</b>: sides model</li>
+ <li><b>corners</b>: corners model</li>
+ <li><b>eight_pos</b>: sides+corners model</li>
+ <li><b>sandwich</b>: sandwich model</li>
+ <li><b>internal</b>: internal model</li>
+ </ul>
+ </p>
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="free"/>
+ <xs:enumeration value="sides"/>
+ <xs:enumeration value="corners"/>
+ <xs:enumeration value="eight_pos"/>
+ <xs:enumeration value="sandwich"/>
+ <xs:enumeration value="internal"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <!-- Node Label Positions -->
+
+ <xs:simpleType name="nodeLabelPosition.type">
+ <xs:annotation>
+ <xs:documentation>
+ The valid label positions for node labels.
+ <p>
+ <b>Note:</b>
+ For a given node label model, the set of valid
+ label positions is a subset of this enumeration that depends on the
+ actual node label model.
+ </p>
+ <p>
+ Valid values are:
+ <ul>
+ <li><b>n</b>: north (outside)</li>
+ <li><b>nw</b>: north west (outside)</li>
+ <li><b>ne</b>: north east(outside)</li>
+ <li><b>w</b>: west (outside)</li>
+ <li><b>e</b>: east (outside)</li>
+ <li><b>sw</b>: south west (outside)</li>
+ <li><b>s</b>: south (outside)</li>
+ <li><b>se</b>: south east (outside)</li>
+ <li><b>c</b>: center (inside)</li>
+ <li><b>tl</b>: top left (inside)</li>
+ <li><b>t</b>: top (inside)</li>
+ <li><b>tr</b>: top right (inside)</li>
+ <li><b>r</b>: right (inside)</li>
+ <li><b>l</b>: left (inside)</li>
+ <li><b>bl</b>: bottom left (inside)</li>
+ <li><b>b</b>: bottom (inside)</li>
+ <li><b>br</b>: bottom right (inside)</li>
+ <li><b>anywhere</b>: anywhere</li>
+ </ul>
+ </p>
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="n"/>
+ <xs:enumeration value="nw"/>
+ <xs:enumeration value="ne"/>
+ <xs:enumeration value="w"/>
+ <xs:enumeration value="e"/>
+ <xs:enumeration value="sw"/>
+ <xs:enumeration value="s"/>
+ <xs:enumeration value="se"/>
+ <xs:enumeration value="c"/>
+ <xs:enumeration value="tl"/>
+ <xs:enumeration value="t"/>
+ <xs:enumeration value="tr"/>
+ <xs:enumeration value="r"/>
+ <xs:enumeration value="l"/>
+ <xs:enumeration value="bl"/>
+ <xs:enumeration value="b"/>
+ <xs:enumeration value="br"/>
+ <xs:enumeration value="anywhere"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <!-- AutoSizePolicy -->
+
+ <xs:simpleType name="autoSizePolicy.type">
+ <xs:annotation>
+ <xs:documentation>
+ The auto size policies for node labels.
+ <p>
+ Valid values are:
+ <ul>
+ <li><b>node_width</b>: resize to node width</li>
+ <li><b>node_height</b>:resize to node height</li>
+ <li><b>content</b>: resize to content size</li>
+ </ul>
+ </p>
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="node_width"/>
+ <xs:enumeration value="node_height"/>
+ <xs:enumeration value="content"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <!-- Edge Label Models -->
+
+ <xs:simpleType name="edgeLabelModel.type">
+ <xs:annotation>
+ <xs:documentation>
+ The valid label models for node labels.
+ <p>
+ Valid values are:
+ <ul>
+ <li><b>centered</b>: edge center</li>
+ <li><b>center_slider</b>: edge center, freeley movable</li>
+ <li><b>side_slider</b>: edge side, freely movable</li>
+ <li><b>free</b>: free model</li>
+ <li><b>two_pos</b>: source or target only</li>
+ <li><b>three_center</b>: three positions at edge center</li>
+ <li><b>six_pos</b>: three positions at either source or target</li>
+ </ul>
+ </p>
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="centered"/>
+ <xs:enumeration value="center_slider"/>
+ <xs:enumeration value="side_slider"/>
+ <xs:enumeration value="free"/>
+ <xs:enumeration value="two_pos"/>
+ <xs:enumeration value="three_center"/>
+ <xs:enumeration value="six_pos"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <!-- Edge Label Positions -->
+
+ <xs:simpleType name="edgeLabelPosition.type">
+ <xs:annotation>
+ <xs:documentation>
+ The valid label positions for edge labels.
+ <p>
+ <b>Note:</b>
+ For a given edge label model, the set of valid
+ label positions is a subset of this enumeration that depends on the
+ actual edge label model.
+ </p>
+ <p>
+ Valid values are:
+ <ul>
+ <li><b>center</b>: at source on the edge segment</li>
+ <li><b>tcentr</b>: at target on the edge segment</li>
+ <li><b>scentr</b>: at center on the edge segment</li>
+ <li><b>stail</b>: at source below the edge segment</li>
+ <li><b>ttail</b>: at target below the edge segment</li>
+ <li><b>tail</b>: at center below the edge segment</li>
+ <li><b>shead</b>: at source above the edge segment</li>
+ <li><b>thead</b>: at target above the edge segment</li>
+ <li><b>head</b>: at center above the edge segment</li>
+ <li><b>anywhere</b>: anywhere</li>
+ </ul>
+ </p>
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="center"/>
+ <xs:enumeration value="tcentr"/>
+ <xs:enumeration value="scentr"/>
+ <xs:enumeration value="anywhere"/>
+ <xs:enumeration value="stail"/>
+ <xs:enumeration value="ttail"/>
+ <xs:enumeration value="tail"/>
+ <xs:enumeration value="shead"/>
+ <xs:enumeration value="thead"/>
+ <xs:enumeration value="head"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <!-- Preferred Edge Label Positions -->
+
+ <xs:simpleType name="preferredPlacement.type">
+ <xs:annotation>
+ <xs:documentation>
+ The valid preferred label positions for edge labels.
+ <p>
+ <b>Note:</b>
+ For a given edge label model, the set of valid
+ preferred label positions is a subset of this enumeration that depends on the
+ actual edge label model. This value is evaluated by automatic label layout algorithms and may differ
+ from the actual label position.
+ </p>
+ <p>
+ Valid values are:
+ <ul>
+ <li><b>target_right</b>: at target right from the edge segment</li>
+ <li><b>target</b>: anywhere at the target</li>
+ <li><b>target_left</b>: at target left from the edge segment</li>
+ <li><b>target_on_edge</b>: at target on the edge segment</li>
+ <li><b>source_right</b>: at source right from the edge segment</li>
+ <li><b>source</b>: anywhere at the source</li>
+ <li><b>source_left</b>: at source left from the edge segment</li>
+ <li><b>source_on_edge</b>: at source on the edge segment</li>
+ <li><b>center_right</b>: at center right from the edge segment</li>
+ <li><b>center</b>: anywhere at the center</li>
+ <li><b>center_left</b>: at center left from the edge segment</li>
+ <li><b>center_on_edge</b>: at center on the edge segment</li>
+ <li><b>anywhere</b>: anywhere</li>
+ <li><b>on_edge</b>: anywhere on the edge</li>
+ <li><b>left</b>: anywhere left from the edge</li>
+ <li><b>right</b>: anywhere right from the edge</li>
+ </ul>
+ </p>
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="target_right"/>
+ <xs:enumeration value="target"/>
+ <xs:enumeration value="target_left"/>
+ <xs:enumeration value="target_on_edge"/>
+ <xs:enumeration value="source_right"/>
+ <xs:enumeration value="source"/>
+ <xs:enumeration value="source_left"/>
+ <xs:enumeration value="source_on_edge"/>
+ <xs:enumeration value="center_right"/>
+ <xs:enumeration value="center"/>
+ <xs:enumeration value="center_left"/>
+ <xs:enumeration value="center_on_edge"/>
+ <xs:enumeration value="anywhere"/>
+ <xs:enumeration value="on_edge"/>
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+
+ </xs:restriction>
+ </xs:simpleType>
+
+ <!-- horizontalTextPosition value type for labels -->
+ <xs:simpleType name="horizontalTextPosition.type">
+ <xs:annotation>
+ <xs:documentation>
+ The valid horizontal text vs. icon alignements for labels.
+ <p>
+ Valid values are:
+ <ul>
+ <li><b>left</b>: place text to the left of the icon</li>
+ <li><b>right</b>: place text to the right of the icon</li>
+ <li><b>center</b>: place text on center of the icon</li>
+ <li><b>left_aligned</b>: align text to the left of the icon</li>
+ <li><b>right_aligned</b>: align text to the right of the icon</li>
+ </ul>
+ </p>
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="center"/>
+ <xs:enumeration value="left_aligned"/>
+ <xs:enumeration value="right_aligned"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <!-- verticalTextPosition value type for labels -->
+
+ <xs:simpleType name="verticalTextPosition.type">
+ <xs:annotation>
+ <xs:documentation>
+ The valid vertical text vs. icon alignements for labels.
+ <p>
+ Valid values are:
+ <ul>
+ <li><b>top</b>: place text above the icon</li>
+ <li><b>bottom</b>: place text below the icon</li>
+ <li><b>center</b>: place text on center of the icon</li>
+ </ul>
+ </p>
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="bottom"/>
+ <xs:enumeration value="center"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <!-- -->
+ <!-- Geometric types -->
+ <!-- -->
+
+ <!-- Location defined by x,y coordinates -->
+ <xs:attributeGroup name="Location.group">
+ <xs:annotation>
+ <xs:documentation>
+ Attribute group that describes a two-dimensional location, specified by the x and y attribute.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="x" type="xs:double" use="required">
+ <xs:annotation>
+ <xs:documentation>
+ The x coordinate of the point.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="y" type="xs:double" use="required">
+ <xs:annotation>
+ <xs:documentation>
+ The y coordinate of the point.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:attributeGroup>
+
+ <!-- Location defined by x,y coordinates and width,height -->
+ <xs:attributeGroup name="Rectangle.group">
+ <xs:annotation>
+ <xs:documentation>
+ Attribute group that describes a two-dimensional rectangle.
+ <p>
+ The location is specified by the x and y attribute, the dimension by the width and height attributes.
+ </p>
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="x" type="xs:double" use="required">
+ <xs:annotation>
+ <xs:documentation>
+ The x coordinate of the rectangle.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="y" type="xs:double" use="required">
+ <xs:annotation>
+ <xs:documentation>
+ The y coordinate of the rectangle.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="width" type="xs:double" use="required">
+ <xs:annotation>
+ <xs:documentation>
+ The width of the rectangle.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="height" type="xs:double" use="required">
+ <xs:annotation>
+ <xs:documentation>
+ The height of the rectangle.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:attributeGroup>
+
+ <!-- type for required rectangles -->
+ <xs:complexType name="Rectangle.type">
+ <xs:annotation>
+ <xs:documentation>
+ Type definition for rectangles.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attributeGroup ref="Rectangle.group"/>
+ </xs:complexType>
+
+ <!-- type for optional rectangles -->
+ <xs:attributeGroup name="OpRectangle.group">
+ <xs:annotation>
+ <xs:documentation>
+ Attribute group that describes a two-dimensional rectangle, where attribtue values are optional.
+ <p>
+ The location is specified by the x and y attribute, the dimension by the width and height attributes.
+ </p>
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="x" type="xs:double" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The x coordinate of the rectangle.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="y" type="xs:double" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The y coordinate of the rectangle.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="width" type="xs:double" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The width of the rectangle.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="height" type="xs:double" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The height of the rectangle.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:attributeGroup>
+
+ <!-- type for a path -->
+ <xs:complexType name="Path.type">
+ <xs:annotation>
+ <xs:documentation>
+ Attribute group that describes a two-dimensional path, consisting of a point list together with optional source
+ and target locations.
+ <p>
+ The source resp. target location is specified by the sx and sy resp. tx and ty attributes.
+ </p>
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="Point" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ Single control point for two dimensional paths.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:attributeGroup ref="Location.group"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="reversedPathRendering" type="xs:boolean" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ true iff the path should be rendered in reverse order.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="sx" type="xs:double" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The x coordinate of the source point.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="sy" type="xs:double" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The y coordinate of the source point.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="tx" type="xs:double" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The x coordinate of the target point.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="ty" type="xs:double" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The y coordinate of the target point.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+
+
+ <!-- -->
+ <!-- Misc Types -->
+ <!-- -->
+
+ <!-- color -->
+
+ <xs:simpleType name="color.type">
+ <xs:annotation>
+ <xs:documentation>
+ Simple type that encodes a color value.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="#(([A-F]|[0-9]){2}){3,4}"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <!-- Style for a line -->
+
+ <xs:complexType name="LineStyle.type">
+ <xs:annotation>
+ <xs:documentation>
+ Complex type that describes the attributes of a line style.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="color" type="color.type" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The color of the line.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="hasColor" type="xs:boolean" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ Whether the line has a color set. If false, the line is invisible.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="type" type="lineType.type" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The type of the line.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="width" type="xs:double" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The width of the line.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+
+ <!-- drop shadow style -->
+ <xs:complexType name="DropShadow.type">
+ <xs:annotation>
+ <xs:documentation>
+ Complex type that describes the attributes of a drop shadow.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="color" type="color.type" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The color of the drop shadow.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="offsetX" type="xs:byte" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The offset in x direction.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="offsetY" type="xs:byte" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The offset in y direction.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+
+ <!-- -->
+ <!-- Labels -->
+ <!-- -->
+
+ <!-- Basic properties of all kind of labels -->
+ <xs:complexType name="Label.type">
+ <xs:annotation>
+ <xs:documentation>
+ Complex type that describes the common attributes of node and edge labels.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attributeGroup ref="OpRectangle.group"/>
+ <xs:attribute name="visible" type="xs:boolean" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ Whether the label is visible or not.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="alignment" type="alignment.type" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The alignment of the label.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="textColor" type="color.type" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The text color of the label.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="lineColor" type="color.type" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The border color of the label's content rectangle.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="hasLineColor" type="xs:boolean" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ Whether the label border should be painted.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="backgroundColor" type="color.type" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The background color of the label's content rectangle.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="hasBackgroundColor" type="xs:boolean" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ Whether the label background should be painted.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="fontFamily" type="xs:string" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The font family for the label text.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="fontSize" type="xs:unsignedByte" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The font size for the label text.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="fontStyle" type="fontStyle.type" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The font style for the label text.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="rotationAngle" type="xs:double" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The rotation angle style for the label.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="icon" type="xs:anyURI" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The URL of an icon for the label.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="image" type="xs:string" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ Reference to an embedded image resource.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="iconData" type="xs:string" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ Reference to an embedded arbitrary serializable resource.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="underlinedText" type="xs:boolean" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ Whether to underline the label text.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="horizontalTextPosition" type="horizontalTextPosition.type" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The horizontal text position wrt to an optional icon.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="verticalTextPosition" type="verticalTextPosition.type" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The vertical text position wrt to an optional icon.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="iconTextGap" type="xs:byte" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The distance between the label text and an optional icon.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <!-- Node Labels -->
+ <xs:complexType name="NodeLabel.type">
+ <xs:annotation>
+ <xs:documentation>
+ Complex type that describes the additional attributes of node labels.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleContent>
+ <xs:extension base="Label.type">
+ <xs:attribute name="modelName" type="nodeLabelModel.type" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The label model.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="modelPosition" type="nodeLabelPosition.type" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The actual label position in the current label model.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="autoSizePolicy" type="autoSizePolicy.type" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The auto size policy of the label.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <!-- Edge Labels -->
+ <xs:complexType name="EdgeLabel.type">
+ <xs:annotation>
+ <xs:documentation>
+ Complex type that describes the additional attributes of edge labels.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:simpleContent>
+ <xs:extension base="Label.type">
+ <xs:attribute name="modelName" type="edgeLabelModel.type" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The label model.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="modelPosition" type="edgeLabelPosition.type" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The actual label position in the current label model.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="preferredPlacement" type="preferredPlacement.type" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The preferred label position in the current label model.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="distance" type="xs:double" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The current label distance from the edge.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="ratio" type="xs:double" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The current label position along the edge, expressed as ratio from source to target.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <xs:complexType name="Geometry.type">
+ <xs:annotation>
+ <xs:documentation>
+ Complex type that describes the geometry of simple graph elements.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attributeGroup ref="Rectangle.group"/>
+ </xs:complexType>
+
+ <!-- -->
+ <!-- Nodes -->
+ <!-- -->
+
+ <!-- Generic attributes for all nodes -->
+ <xs:complexType name="Node.type">
+ <xs:annotation>
+ <xs:documentation>
+ Complex type that describes the common attributes of a node realizer in yFiles.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="Geometry" minOccurs="0" maxOccurs="1" type="Geometry.type">
+ <xs:annotation>
+ <xs:documentation>
+ The location and size of the node.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Fill" minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation>
+ The fill attributes of the node.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:attribute name="hasColor" type="xs:boolean" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ Whether the node has a visible fill color.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="color" type="xs:string" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The first fill color.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="color2" type="xs:string" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The second fill color (for gradient fills).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="transparent" type="xs:boolean" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ Whether the node is transparent.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="BorderStyle" type="LineStyle.type" minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation>
+ The LineStyle of the border.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="NodeLabel" type="NodeLabel.type" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ The (optional) node label.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="selected" type="xs:boolean" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ Whether the node is currently selected.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+
+ <!-- Shape Node -->
+ <xs:complexType name="ShapeNode.type">
+ <xs:annotation>
+ <xs:documentation>
+ Complex type that describes the attributes of a ShapeNodeRealizer in yFiles.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="Node.type">
+ <xs:sequence>
+ <xs:element name="Shape" minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation>
+ The actual shape of a ShapeNodeRealizer.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:attribute name="type" type="shapeType.type" use="required">
+ <xs:annotation>
+ <xs:documentation>
+ The shape type.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="DropShadow" type="DropShadow.type" minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation>
+ The drop shadow.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <!-- Image Node -->
+ <xs:complexType name="ImageNode.type">
+ <xs:annotation>
+ <xs:documentation>
+ Complex type that describes the attributes of an ImageNodeRealizer in yFiles.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="Node.type">
+ <xs:sequence>
+ <xs:element name="Image">
+ <xs:annotation>
+ <xs:documentation>
+ Encodes an image for an ImageNodeRealizer.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:attribute name="href" type="xs:anyURI" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The URL of an image for external image sources.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="alphaImage" type="xs:boolean" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ Whether to use alpha channel information from the image.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="refid" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ Reference to an inlined image resource.
+ <p>The refid must point to an existing inlined image resource in a toplevel graphml y:Resource
+ block.
+ </p>
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="Insets.type">
+ <xs:annotation>
+ <xs:documentation>
+ Type that can be used to describe insets in both integer and double precision.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="top" type="xs:nonNegativeInteger" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The minimal inset at the top in integer precision.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="bottom" type="xs:nonNegativeInteger" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The minimal inset at the bottom in integer precision.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="left" type="xs:nonNegativeInteger" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The minimal inset at the left in integer precision.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="right" type="xs:nonNegativeInteger" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The minimal inset at the right in integer precision.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="topF" type="xs:double" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The minimal inset at the top in double precision.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="bottomF" type="xs:double" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The minimal inset at the bottom in double precision.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="leftF" type="xs:double" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The minimal inset at the left in double precision.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="rightF" type="xs:double" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The minimal inset at the right in double precision.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+
+ <!-- Group Node -->
+ <xs:complexType name="GroupNode.type">
+ <xs:annotation>
+ <xs:documentation>
+ Complex type that describes the attributes of a GroupNodeRealizer in yFiles.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="Node.type">
+ <xs:sequence>
+ <xs:element name="Shape" minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation>
+ The actual shape of a GroupNodeRealizer.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:attribute name="type" type="shapeType.type" use="required">
+ <xs:annotation>
+ <xs:documentation>
+ The shape type.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="DropShadow" type="DropShadow.type" minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation>
+ The drop shadow.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="State" minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation>
+ The state of a GroupNodeRealizer (open/closed etc.).
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:attribute name="closed" type="xs:boolean" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ Whether the group is currently closed.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="innerGraphDisplayEnabled" type="xs:boolean" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ Whether to display the inner graph even in closed state.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Insets" type="Insets.type" minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation>
+ The minimal insets of a GroupNodeRealizer.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="BorderInsets" type="Insets.type" minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation>
+ The extra insets of a GroupNodeRealizer.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <!-- Proxy Shape Node -->
+ <xs:complexType name="ProxyShapeNode.type">
+ <xs:annotation>
+ <xs:documentation>
+ Complex type that describes the attributes of a ProxyShapeNodeRealizer in yFiles.
+ <p>This Realizer can multiplex between several different realizers for a node.</p>
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="Realizers">
+ <xs:annotation>
+ <xs:documentation>
+ List of subordinate realizers for this node realizer.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
+ </xs:sequence>
+ <xs:attribute name="active" type="xs:nonNegativeInteger" use="required">
+ <xs:annotation>
+ <xs:documentation>
+ The list index of the currently active realizer (zero based).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="UserData.type">
+ <xs:annotation>
+ <xs:documentation>
+ Type for the UserData that holds the actual state of a generic Node or Edge Realizer.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="class" type="xs:string" use="required">
+ <xs:annotation>
+ <xs:documentation>
+ Class name of the data holder instance.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="value" type="xs:string" use="required">
+ <xs:annotation>
+ <xs:documentation>
+ String representation of the user data value.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+
+ <!-- Generic Node -->
+ <xs:complexType name="GenericNode.type">
+ <xs:annotation>
+ <xs:documentation>
+ Complex type that describes the attributes of a GenericNodeRealizer in yFiles.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="Node.type">
+ <xs:sequence>
+ <xs:element name="UserData" type="UserData.type" minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation>
+ Represents the UserData that holds the actual state of this realizer instance.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="configuration" type="xs:string" use="required">
+ <xs:annotation>
+ <xs:documentation>
+ The name of the configuration. This configuration must have been registered previously.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <!-- Generic Group Node -->
+ <xs:complexType name="GenericGroupNode.type">
+ <xs:annotation>
+ <xs:documentation>
+ Complex type that describes the attributes of a GenericGroupNodeRealizer in yFiles.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="GenericNode.type">
+ <xs:sequence>
+ <xs:element name="State" minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation>
+ The state of a GenericGroupNodeRealizer (open/closed etc.).
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:attribute name="closed" type="xs:boolean" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ Whether the group is currently closed.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="autoResize" type="xs:boolean" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ Whether the group node should automatically resize itself.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="closedHeight" type="xs:double" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The height of the group node in closed state.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="closedWidth" type="xs:double" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The width of the group node in closed state.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Insets" type="Insets.type" minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation>
+ The minimal insets of a GroupNodeRealizer.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="BorderInsets" type="Insets.type" minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation>
+ The extra insets of a GroupNodeRealizer.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <!-- Element Definitions for Nodes -->
+ <xs:element name="ShapeNode" type="ShapeNode.type">
+ <xs:annotation>
+ <xs:documentation>
+ ShapeNodeRealizer element definition.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ImageNode" type="ImageNode.type">
+ <xs:annotation>
+ <xs:documentation>
+ ImageNodeRealizer element definition.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="GroupNode" type="GroupNode.type">
+ <xs:annotation>
+ <xs:documentation>
+ GroupNodeRealizer element definition.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="GenericNode" type="GenericNode.type">
+ <xs:annotation>
+ <xs:documentation>
+ GenericNodeRealizer element definition.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="GenericGroupNode" type="GenericGroupNode.type">
+ <xs:annotation>
+ <xs:documentation>
+ GenericGroupNodeRealizer element definition.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ProxyShapeNode" type="ProxyShapeNode.type">
+ <xs:annotation>
+ <xs:documentation>
+ ProxyShapeNodeRealizer element definition.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ProxyAutoBoundsNode" type="ProxyShapeNode.type">
+ <xs:annotation>
+ <xs:documentation>
+ ProxyAutoBoundsNodeRealizer element definition.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <!-- -->
+ <!-- Edges -->
+ <!-- -->
+
+ <!-- Generic attributes for all edges -->
+ <xs:complexType name="Edge.type">
+ <xs:annotation>
+ <xs:documentation>
+ Complex type that describes the common attributes of an edge realizer in yFiles.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="Path" type="Path.type" minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation>
+ The edge path.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="LineStyle" type="LineStyle.type" minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation>
+ The line style used to draw the edge.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Arrows" minOccurs="0" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation>
+ The source and target arrows.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:attribute name="source" type="arrowType.type">
+ <xs:annotation>
+ <xs:documentation>
+ The source arrow type.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="target" type="arrowType.type">
+ <xs:annotation>
+ <xs:documentation>
+ The target arrow type.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="EdgeLabel" type="EdgeLabel.type" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ The edge label(s).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="selected" type="xs:boolean" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ Whether the edge currently is selected.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+
+ <!-- Polyline edges -->
+ <xs:complexType name="PolyLineEdge.type">
+ <xs:annotation>
+ <xs:documentation>
+ Complex type that describes the attributes of a PolylineEdgeRealizer in yFiles.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="Edge.type">
+ <xs:sequence>
+ <xs:element name="BendStyle">
+ <xs:annotation>
+ <xs:documentation>
+ The style used to draw the bends.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:attribute name="smoothed" type="xs:boolean" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ Whether to draw smooth instead of angular bends.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+
+ <!-- Type of Arc edges -->
+ <xs:simpleType name="arc.type">
+ <xs:annotation>
+ <xs:documentation>
+ The arc types for ArcEdgeRealizers.
+ <p>
+ Valid values are:
+ <ul>
+ <li><b>fixedHeight</b>: fixed height, but variable ratio</li>
+ <li><b>fixedRatio</b>: fixed ration, but variable height</li>
+ </ul>
+ </p>
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="fixedHeight"/>
+ <xs:enumeration value="fixedRatio"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <!-- Arc edges -->
+ <xs:complexType name="ArcEdge.type">
+ <xs:annotation>
+ <xs:documentation>
+ Complex type that describes the attributes of an ArcEdgeRealizer in yFiles.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="Edge.type">
+ <xs:sequence>
+ <xs:element name="Arc">
+ <xs:annotation>
+ <xs:documentation>
+ The Arc.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:attribute name="type" type="arc.type" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The arc type.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="height" type="xs:double" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The current height of the arc.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="ratio" type="xs:double" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The current ratio of the arc.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <!-- QuadCurve edges -->
+ <xs:complexType name="QuadCurveEdge.type">
+ <xs:annotation>
+ <xs:documentation>
+ Complex type that describes the attributes of a QuadCurveEdgeRealizer in yFiles.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="Edge.type">
+ <xs:attribute name="straightness" type="xs:double" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The straightness of the curve.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <!-- Generic edges -->
+ <xs:complexType name="GenericEdge.type">
+ <xs:annotation>
+ <xs:documentation>
+ Complex type that describes the attributes of an GenericEdgeRealizer in yFiles.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="Edge.type">
+ <xs:sequence>
+ <xs:element name="UserData">
+ <xs:annotation>
+ <xs:documentation>
+ Represents the UserData that holds the actual state of this realizer instance.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:attribute name="class" type="xs:string" use="required">
+ <xs:annotation>
+ <xs:documentation>
+ Class name of the data holder instance.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="value" type="xs:string" use="required">
+ <xs:annotation>
+ <xs:documentation>
+ String representation of the user data value.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="configuration" type="xs:string" use="required">
+ <xs:annotation>
+ <xs:documentation>
+ The name of the configuration. This configuration must have been registered previously.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <!-- Element definitions for edges -->
+ <xs:element name="PolyLineEdge" type="PolyLineEdge.type">
+ <xs:annotation>
+ <xs:documentation>
+ PolyLineEdgeRealizer element definition.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ArcEdge" type="ArcEdge.type">
+ <xs:annotation>
+ <xs:documentation>
+ ArcEdgeRealizer element definition.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="BezierEdge" type="Edge.type">
+ <xs:annotation>
+ <xs:documentation>
+ BezierEdgeRealizer element definition.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="SplineEdge" type="Edge.type">
+ <xs:annotation>
+ <xs:documentation>
+ SplineEdgeRealizer element definition.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="QuadCurveEdge" type="QuadCurveEdge.type">
+ <xs:annotation>
+ <xs:documentation>
+ QuadCurveEdgeRealizer element definition.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="GenericEdge" type="GenericEdge.type">
+ <xs:annotation>
+ <xs:documentation>
+ GenericEdgeRealizer element definition.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <!-- Shared resource block definitions -->
+
+ <xs:complexType name="Resource.type" mixed="true">
+ <xs:annotation>
+ <xs:documentation>
+ Complex type for a shared resource element inside a resource block container.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:annotation>
+ <xs:documentation>
+ The actual content. Note that arbitrary (wellformed) content is allowed here.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:any minOccurs="0" maxOccurs="1" processContents="skip"/>
+ </xs:sequence>
+ <xs:attribute name="id" use="required">
+ <xs:annotation>
+ <xs:documentation>
+ The id of the shared resource. Needed to reference this resource.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="type" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The type of the shared resource.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="format" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The format of the shared resource.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+
+ </xs:complexType>
+
+ <xs:complexType name="ResourceBlock.type">
+ <xs:annotation>
+ <xs:documentation>
+ Complex type for a shared resource block container.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="Resource" type="Resource.type" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ A shared resource element.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:element name="Resources" type="ResourceBlock.type">
+ <xs:annotation>
+ <xs:documentation>
+ Resource block element definition.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:key name="resource_id_key">
+ <xs:annotation>
+ <xs:documentation>
+ Ensures: existence and uniqueness of the id attributes of
+ each &lt;Resource> element in this resource block.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:selector xpath=".//y:Resource"/>
+ <xs:field xpath="@id"/>
+ </xs:key>
+ </xs:element>
+</xs:schema>
diff --git a/plugins/org.eclipse.qvtd.build.etl/schema/ygraphml.xsd b/plugins/org.eclipse.qvtd.build.etl/schema/ygraphml.xsd
new file mode 100644
index 000000000..438d5eef3
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/schema/ygraphml.xsd
@@ -0,0 +1,128 @@
+<?xml version="1.0"?>
+
+<!-- Header -->
+<xs:schema
+ targetNamespace="http://graphml.graphdrawing.org/xmlns/graphml"
+
+ xmlns="http://graphml.graphdrawing.org/xmlns/graphml"
+ xmlns:g="http://graphml.graphdrawing.org/xmlns/graphml"
+ xmlns:y="http://www.yworks.com/xml/graphml"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified"
+ >
+
+ <xs:annotation>
+ <xs:documentation>
+ GraphML core language definitions including GraphML attributes and GraphML parseinfo.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:import namespace="http://www.yworks.com/xml/graphml" schemaLocation="yfeatures.xsd"/>
+
+ <!--<xs:include schemaLocation="graphml-parseinfo.xsd"/>-->
+
+ <!-- Redefinition of the elements in the graphml-structure schema -->
+ <xs:redefine schemaLocation="graphml.xsd">
+
+ <xs:attributeGroup name="key.extra.attrib">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition of file graphml-structure.xsd.
+ <p>Extends the attribute group key.extra.attrib (which takes
+ part in the attribute list of &lt;key>) by adding the
+ attribute yfiles.type which is defined below.
+ </p>
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attributeGroup ref="key.extra.attrib"/>
+ <xs:attribute name="yfiles.type" type="xs:string" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ Custom yfiles specific attribute that allows to specify an additional data type.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:attributeGroup>
+
+ <!-- Definition of the different grouping types -->
+ <!-- The grouping type is stored as attribute at the node element -->
+ <xs:attributeGroup name="node.extra.attrib">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition of file graphml-structure.xsd.
+ <p>Extends the attribute group node.extra.attrib (which takes
+ part in the attribute list of &lt;node>) by adding a
+ yfiles specific attribute for the folder type.
+ </p>
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attributeGroup ref="node.extra.attrib"/>
+ <xs:attribute name="yfiles.foldertype" type="yfiles.foldertype.type" use="optional">
+ <xs:annotation>
+ <xs:documentation>
+ The foldertype for group/folder nodes.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:attributeGroup>
+
+ <!-- Definition of the different node and edge types -->
+ <xs:complexType name="data-extension.type">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition of file graphml-structure.xsd.
+ <p>Extends the type data-extension.type to allow specifically the content below (i.e. text only or
+ all defined edge and node relaizers, resource blocks or postprocessors)
+ </p>
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent mixed="true">
+ <xs:extension base="data-extension.type">
+ <xs:choice minOccurs="0" maxOccurs="1">
+ <xs:element ref="y:ShapeNode"/>
+ <xs:element ref="y:ImageNode"/>
+ <xs:element ref="y:GroupNode"/>
+ <xs:element ref="y:GenericNode"/>
+ <xs:element ref="y:GenericGroupNode"/>
+ <xs:element ref="y:ProxyShapeNode"/>
+ <xs:element ref="y:ProxyAutoBoundsNode"/>
+ <xs:element ref="y:PolyLineEdge"/>
+ <xs:element ref="y:ArcEdge"/>
+ <xs:element ref="y:BezierEdge"/>
+ <xs:element ref="y:SplineEdge"/>
+ <xs:element ref="y:QuadCurveEdge"/>
+ <xs:element ref="y:GenericEdge"/>
+ <xs:element ref="y:Postprocessors"/>
+ <xs:element ref="y:Resources"/>
+ </xs:choice>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:redefine>
+
+ <!-- Type of Grouping -->
+ <xs:simpleType name="yfiles.foldertype.type">
+ <xs:annotation>
+ <xs:documentation>
+ The valid folder types for a folder/group node.
+ <p>Valid values are
+ <ul>
+ <li><b>folder</b>: for folder nodes</li>
+ <li><b>group</b>: for group nodes</li>
+ <li><b>leaf</b>: for leaf nodes (this is the implied value)</li>
+ </ul>
+ </p>
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="folder"/>
+ <xs:enumeration value="group"/>
+ <xs:enumeration value="leaf"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+</xs:schema>
+
+
diff --git a/plugins/org.eclipse.qvtd.build.etl/schema/yprocessors.xsd b/plugins/org.eclipse.qvtd.build.etl/schema/yprocessors.xsd
new file mode 100644
index 000000000..769916a0e
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/schema/yprocessors.xsd
@@ -0,0 +1,87 @@
+<?xml version="1.0"?>
+
+<!-- Header -->
+<xs:schema
+ targetNamespace="http://www.yworks.com/xml/graphml"
+
+ xmlns="http://www.yworks.com/xml/graphml"
+ xmlns:g="http://graphml.graphdrawing.org/xmlns/graphml"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified"
+ >
+
+ <!-- Processor -->
+ <xs:complexType name="Processor.type">
+ <xs:annotation>
+ <xs:documentation>
+ Complex type definitions for a graphml postprocessor.
+ <p>Postprocessors are executed after the graph has been loaded.</p>
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="Option" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ Type definitions for the options for a graphml postprocessor.
+ <p>These options are the same as for xml serialized YModules.</p>
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:attribute name="name" type="xs:string" use="required">
+ <xs:annotation>
+ <xs:documentation>
+ The name of the option.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="value" type="xs:string" use="required">
+ <xs:annotation>
+ <xs:documentation>
+ The value of the option.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="class" type="xs:string" use="required">
+ <xs:annotation>
+ <xs:documentation>
+ The class of the postprocessor.
+ <p>This must resolve to a subclass of y.option.yModule</p>
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+
+ <!-- Postprocessors -->
+ <xs:complexType name="Postprocessors.type">
+ <xs:annotation>
+ <xs:documentation>
+ Complex type definitions for a list of graphml postprocessors.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="Processor" type="Processor.type" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>
+ Postprocessor element definition.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <!-- Element Definition for Postprocessors -->
+ <xs:element name="Postprocessors" type="Postprocessors.type">
+ <xs:annotation>
+ <xs:documentation>
+ Postprocessors element definition.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+</xs:schema>
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/EolTask.java b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/EolTask.java
new file mode 100644
index 000000000..654acdde2
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/EolTask.java
@@ -0,0 +1,183 @@
+/*******************************************************************************
+ * Copyright (c) 2013 The University of York, Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Horacio Hoyos - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.qvtd.build.etl;
+
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.epsilon.common.parse.problem.ParseProblem;
+import org.eclipse.epsilon.eol.EolModule;
+import org.eclipse.epsilon.eol.EolOperation;
+import org.eclipse.epsilon.eol.IEolExecutableModule;
+import org.eclipse.epsilon.eol.exceptions.EolRuntimeException;
+import org.eclipse.epsilon.eol.models.IModel;
+
+
+/**
+ * The EolTask is used to execute Epsilon Flock scripts in standalone mode.
+ */
+public class EolTask extends EpsilonTask {
+
+
+ /**
+ * Instantiates a new eol task.
+ *
+ * @param eolSourceURI the eol source uri
+ */
+ public EolTask(URI eolSourceURI) {
+ super();
+ this.sourceURI = eolSourceURI;
+ models = new ArrayList<IModel>();
+ }
+
+ /* (non-Javadoc)
+ * @see net.sourceforge.riskc.riskc.generator.epsilon.EpsilonStandalone#createModule()
+ */
+ @Override
+ public EolModule createModule() {
+ return new EolModule();
+ }
+
+
+ /* (non-Javadoc)
+ * @see net.sourceforge.riskc.riskc.generator.epsilon.EpsilonStandalone#getModels()
+ */
+ @Override
+ public List<IModel> getModels() {
+ return models;
+ }
+
+ /**
+ * Prepares the EOL engine's environment by parsing the source and loading
+ * the models. This method should be called before invoking {@link #executeOperation(String)}
+ * when invoking specific operations in the EOL source. When using this
+ * method, a call to the {@link close()} method should be made when no
+ * more operations are being executed.
+ *
+ * @throws QvtMtcExecutionException If there are errors parsing the source.
+ */
+ public void prepare() throws QvtMtcExecutionException {
+
+ module = createModule();
+ try {
+ module.parse(sourceURI);
+ } catch (Exception e) {
+ throw new QvtMtcExecutionException("There was an error loading the source.", e.getCause());
+ }
+
+ if (module.getParseProblems().size() > 0) {
+ StringBuilder sb = new StringBuilder();
+ for (ParseProblem problem : module.getParseProblems()) {
+ sb.append(problem.toString() + "\\n");
+ }
+ throw new QvtMtcExecutionException("Parse errors occured: " + sb.toString());
+ }
+ for (IModel model : getModels()) {
+ module.getContext().getModelRepository().addModel(model);
+ }
+
+ }
+
+ /**
+ * When executing specific operations ({@link executeOperation(String)})
+ * this this method should be called when no more operations are going to
+ * be invoked in order to store the models and remove them from the context.
+ *
+ * @throws QvtMtcExecutionException the qvt mtc execution exception
+ */
+ public void close() throws QvtMtcExecutionException {
+
+ for (IModel model : getModels()) {
+ if (model.isStoredOnDisposal()) {
+ try {
+ model.store();
+ }
+ catch (Exception e) {
+ throw new QvtMtcExecutionException(e.getMessage(),e.getCause());
+ }
+ }
+ module.getContext().getModelRepository().removeModel(model);
+ }
+ }
+
+
+ /**
+ * Execute a specific operation, identified by the operationName parameter.
+ * {@link #prepare()} should be invoked (once) before calling this method
+ * (and the method can then be called repeatedly). The result of executing
+ * the operation in the loaded model(s) is stored in the {@see #result} field.
+ *
+ * @param operationName The name of the operation in the EOL source
+ * @throws QvtMtcExecutionException If there was an error executing the operation
+ */
+ public void executeOperation(String operationName) throws QvtMtcExecutionException {
+
+ prepare();
+ preProcess();
+ result = executeOperation(module, operationName);
+ postProcess();
+ }
+
+
+ /**
+ * Executes the first operation found in the EOL source. To invoke a specific
+ * operation use {@link #executeOperation(IEolExecutableModule, String)}.
+ * The result of the operation will be stored in the result field.
+ *
+ * @throws QvtMtcExecutionException If there was an error executing the operation.
+ */
+ public void executeFromFirstOperation() throws QvtMtcExecutionException {
+ prepare();
+ EolOperation operation = module.getDeclaredOperations().get(0);
+ preProcess();
+ try {
+ result = operation.execute(null, Collections.EMPTY_LIST, module.getContext());
+ } catch (EolRuntimeException e) {
+ throw new QvtMtcExecutionException(e.getMessage(),e.getCause());
+ }
+ postProcess();
+ for (IModel model : getModels()) {
+ if (model.isStoredOnDisposal()) {
+ try {
+ model.store();
+ }
+ catch (Exception e) {
+ throw new QvtMtcExecutionException(e.getMessage(),e.getCause());
+ }
+ }
+ module.getContext().getModelRepository().removeModel(model);
+ }
+ }
+
+ /**
+ * Invokes the actual execution of an operation in the EOL source.
+ *
+ * @param module the module
+ * @param operationName the operation name
+ * @return the object
+ * @throws QvtMtcExecutionException the execution exception
+ */
+ private Object executeOperation(IEolExecutableModule module, String operationName) throws QvtMtcExecutionException {
+ EolOperation operation = module.getDeclaredOperations().getOperation(operationName);
+ if(operation != null) {
+ try {
+ return operation.execute(null, Collections.EMPTY_LIST, module.getContext());
+ } catch (EolRuntimeException e) {
+ e.printStackTrace();
+ throw new QvtMtcExecutionException(e.getMessage());
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/EpsilonTask.java b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/EpsilonTask.java
new file mode 100644
index 000000000..167100de0
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/EpsilonTask.java
@@ -0,0 +1,202 @@
+/*******************************************************************************
+ * Copyright (c) 2013 The University of York, Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Dimitrios Kolovos - initial API and implementation
+ * Horacio Hoyos - Adjust to QVT project
+ ******************************************************************************/
+package org.eclipse.qvtd.build.etl;
+
+import java.net.URI;
+import java.util.List;
+
+import org.eclipse.epsilon.common.parse.problem.ParseProblem;
+import org.eclipse.epsilon.eol.IEolExecutableModule;
+import org.eclipse.epsilon.eol.exceptions.EolRuntimeException;
+import org.eclipse.epsilon.eol.models.IModel;
+
+/**
+ * Provides the basic attributes and methods for the set of Epsilon standalone
+ * engines. Specific implementations for each of the Epsilon languages (i.e., EOL,
+ * ETL, etc.) override methods as required, and provide additional functionality
+ *
+ * @author Horacio Hoyos
+ */
+public abstract class EpsilonTask {
+
+ /** The EXL source URI. */
+ protected URI sourceURI;
+
+ /** The models. */
+ protected List<IModel> models;
+
+ /** The module. */
+ protected IEolExecutableModule module;
+
+ /** The result. */
+ protected Object result;
+
+ /**
+ * Creates the module used by the engine to execute the ExL source. Specific
+ * ExL language engines should provide a specific module.
+ *
+ * @return the EXL executable module
+ */
+ public abstract IEolExecutableModule createModule();
+
+
+ /**
+ * @return the ExL sourceURI
+ */
+ public URI getSourceURI() {
+ return sourceURI;
+ }
+
+ /**
+ * @param sourceURI the ExL source URI
+ */
+ public void setSourceURI(URI sourceURI) {
+ this.sourceURI = sourceURI;
+ }
+
+ /**
+ * Gets the list of models available to the engine
+ *
+ * @return the model list
+ */
+ public List<IModel> getModels() {
+ return models;
+ }
+
+ /**
+ * Sets the models available to the engine
+ *
+ * @param models the new models
+ */
+ public void setModels(List<IModel> models) {
+ this.models = models;
+ }
+
+
+ public void addModel(IModel model) {
+ this.models.add(model);
+ }
+
+ public void removeModel(IModel model) {
+ this.models.remove(model);
+ }
+
+ public void removeAllModels() {
+ this.models.clear();
+ }
+
+
+ /**
+ * Gets the models loaded to the engine. The loaded models can be different
+ * to the list of models, for example if a model fails to load.
+ *
+ * @return the module models
+ */
+ public List<IModel> getModuleModels() {
+ return module.getContext().getModelRepository().getModels();
+ }
+
+
+ /**
+ * This method is invoked after the engine has executed if there were no
+ * exceptions. Implementations should override this method o provide any
+ * required post-processing after the engine has executed. For example
+ * modifying the result object. This method should be called after module
+ * execution if the extending class has overridden {@link #execute()} to
+ * provide a more fined grained control over the module execution.
+ */
+ public void postProcess() {};
+
+ /**
+ * This method is invoked after the ExL source is parsed and the
+ * models are loaded to the engine's context. Implementations should
+ * override this method to provide any required pre-processing before the
+ * engine is executed. This method should be called after module execution
+ * if the extending class has overridden {@link #execute()}
+ * to provide a more fined grained control over the module execution.
+ */
+ public void preProcess() {};
+
+ /**
+ * Executes the Epsilon source on the loaded models using the engine.
+ * Parses the Epsilon source for errors, loads the models to the engine's
+ * repository, invokes the {@link #preProcess()} method, executes the engine
+ * and the invokes the {@link #postProcess()} method. The result of executing
+ * the engine is saved in the {@see #result} field. Models are disposed (i.e.
+ * un-loaded) after execution. Models are removed from the context to provide
+ * clean execution of next invocation.
+ *
+ * Different Epsilon modules may require to override this method to provide
+ * specific functionality.
+ * @throws QvtMtcExecutionException If there was an error executing the
+ * parsing or executing the script.
+ */
+ public void execute() throws QvtMtcExecutionException {
+
+ module = createModule();
+ try {
+ module.parse(sourceURI);
+ } catch (Exception e) {
+ throw new QvtMtcExecutionException("There was an error loading the source.", e.getCause());
+ }
+ if (module.getParseProblems().size() > 0) {
+ StringBuilder sb = new StringBuilder();
+ for (ParseProblem problem : module.getParseProblems()) {
+ sb.append(problem.toString() + "\\n");
+ }
+ throw new QvtMtcExecutionException("Parse errors occured: " + sb.toString());
+ }
+ for (IModel model : getModels()) {
+ module.getContext().getModelRepository().addModel(model);
+ }
+
+ preProcess();
+ try {
+ result = execute(module);
+ } catch (EolRuntimeException e) {
+ throw new QvtMtcExecutionException(e.getMessage(),e.getCause());
+ }
+ postProcess();
+ for (IModel model : getModels()) {
+ if (model.isStoredOnDisposal()) {
+ model.store();
+ }
+ module.getContext().getModelRepository().removeModel(model);
+ }
+ }
+
+
+ /**
+ * Execute. The actual module execution.
+ * Depending on the specific executor this method may be implemented
+ * differently.
+ *
+ * @param module the module
+ * @return the object
+ * @throws EolRuntimeException if there is an exception during parsing, loading
+ * of the models or execution of the engine.
+ */
+ protected Object execute(IEolExecutableModule module) throws EolRuntimeException {
+ return module.execute();
+ }
+
+
+ /**
+ * Gets the result.
+ *
+ * @return the result
+ */
+ public Object getResult() {
+ return result;
+ }
+
+}
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/EtlTask.java b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/EtlTask.java
new file mode 100644
index 000000000..62cefdc8f
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/EtlTask.java
@@ -0,0 +1,77 @@
+/*******************************************************************************
+ * Copyright (c) 2013 The University of York, Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Horacio Hoyos - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.qvtd.build.etl;
+
+import java.net.URI;
+import java.util.ArrayList;
+
+import org.eclipse.epsilon.eol.IEolExecutableModule;
+import org.eclipse.epsilon.eol.models.IModel;
+import org.eclipse.epsilon.etl.EtlModule;
+import org.eclipse.epsilon.etl.execute.context.EtlContext;
+import org.eclipse.epsilon.etl.trace.TransformationTrace;
+
+/**
+ * The EtlTask is used to execute Epsilon Flock scripts in standalone mode.
+ */
+public class EtlTask extends EpsilonTask {
+
+
+ /**
+ * Instantiates a new ETL task.
+ *
+ * @param etlSourceURI the ETL source uri
+ */
+ public EtlTask(URI etlSourceURI) {
+ super();
+ this.sourceURI = etlSourceURI;
+ models = new ArrayList<IModel>();
+ }
+
+ /**
+ * Instantiates a new ETL task.
+ *
+ * @param etlSourcePath the ETL source path
+ */
+ public EtlTask(String etlSourcePath) {
+ super();
+ this.sourceURI = URI.create(etlSourcePath);
+ models = new ArrayList<IModel>();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.qvtd.build.etl.EpsilonTask#createModule()
+ */
+ @Override
+ public IEolExecutableModule createModule() {
+
+ return new EtlModule();
+ }
+
+ /**
+ * Gets the transformation trace. This method should be called after executing
+ * the task.
+ *
+ * @return the transformation trace
+ * @throws QvtMtcExecutionException if the ETL module has not been initialised
+ */
+
+ public TransformationTrace getTransformationTrace() throws QvtMtcExecutionException {
+
+ if( module == null) {
+ throw new QvtMtcExecutionException("The ETL module has not ben initialized and the transformation may not have executed yet.");
+ }
+ EtlContext context = (EtlContext) module.getContext();
+ return context.getTransformationTrace();
+ }
+
+
+}
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/FlockTask.java b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/FlockTask.java
new file mode 100644
index 000000000..7a5c0cb96
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/FlockTask.java
@@ -0,0 +1,155 @@
+/*******************************************************************************
+ * Copyright (c) 2013 The University of York, Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Horacio Hoyos - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.qvtd.build.etl;
+
+import java.net.URI;
+import java.util.ArrayList;
+
+import org.eclipse.epsilon.common.parse.problem.ParseProblem;
+import org.eclipse.epsilon.eol.IEolExecutableModule;
+import org.eclipse.epsilon.eol.exceptions.EolRuntimeException;
+import org.eclipse.epsilon.eol.models.IModel;
+import org.eclipse.epsilon.flock.FlockModule;
+import org.eclipse.epsilon.flock.FlockResult;
+import org.eclipse.epsilon.flock.IFlockContext;
+import org.eclipse.epsilon.flock.execution.exceptions.FlockUnsupportedModelException;
+
+/**
+ * The FlockTask is used to execute Epsilon Flock scripts in standalone mode.
+ */
+public class FlockTask extends EpsilonTask {
+
+ /** The original model. */
+ private IModel originalModel;
+
+ /** The migrated model. */
+ private IModel migratedModel;
+
+ /**
+ * Instantiates a new flock task.
+ *
+ * @param flockSourceURI the etl source uri
+ */
+ public FlockTask(URI flockSourceURI) {
+ super();
+ this.sourceURI = flockSourceURI;
+ models = new ArrayList<IModel>();
+ }
+
+ /**
+ * Instantiates a new flock task.
+ *
+ * @param flockSourcePath the etl source path
+ */
+ public FlockTask(String flockSourcePath) {
+ super();
+ this.sourceURI = URI.create(flockSourcePath);
+ models = new ArrayList<IModel>();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.qvtd.build.etl.EpsilonTask#createModule()
+ */
+ @Override
+ public IEolExecutableModule createModule() {
+
+ return new FlockModule();
+ }
+
+ /**
+ * Gets the original model.
+ *
+ * @return the original model
+ */
+ public IModel getOriginalModel() {
+ return originalModel;
+ }
+
+ /**
+ * Sets the original model.
+ *
+ * @param originalModel the new original model
+ */
+ public void setOriginalModel(IModel originalModel) {
+ this.originalModel = originalModel;
+ addModel(originalModel);
+ }
+
+ /**
+ * Gets the migrated model.
+ *
+ * @return the migrated model
+ */
+ public IModel getMigratedModel() {
+ return migratedModel;
+ }
+
+ /**
+ * Sets the migrated model.
+ *
+ * @param migratedModel the new migrated model
+ */
+ public void setMigratedModel(IModel migratedModel) {
+ this.migratedModel = migratedModel;
+ addModel(migratedModel);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.qvtd.build.etl.EpsilonTask#execute()
+ */
+ @Override
+ public void execute() throws QvtMtcExecutionException {
+
+ module = createModule();
+ try {
+ module.parse(sourceURI);
+ } catch (Exception e) {
+ throw new QvtMtcExecutionException("There was an error loading the Flock script.", e.getCause());
+ }
+ if (module.getParseProblems().size() > 0) {
+ StringBuilder sb = new StringBuilder();
+ for (ParseProblem problem : module.getParseProblems()) {
+ sb.append(problem.toString() + "\\n");
+ }
+ throw new QvtMtcExecutionException("Parse errors occured: " + sb.toString());
+ }
+ for (IModel model : getModels()) {
+ module.getContext().getModelRepository().addModel(model);
+ }
+
+ try {
+ ((IFlockContext)module.getContext()).setOriginalModel(originalModel);
+ ((IFlockContext)module.getContext()).setMigratedModel(migratedModel);
+ } catch (FlockUnsupportedModelException e) {
+ throw new QvtMtcExecutionException(e.getMessage(),e.getCause());
+ }
+ preProcess();
+ try {
+ result = module.execute();
+ ((FlockResult)result).printWarnings(System.out);
+ } catch (EolRuntimeException e) {
+ throw new QvtMtcExecutionException(e.getMessage(),e.getCause());
+ }
+ postProcess();
+ for (IModel model : getModels()) {
+ if (model.isStoredOnDisposal()) {
+ try {
+ model.store();
+ }
+ catch (Exception e) {
+ throw new QvtMtcExecutionException(e.getMessage(),e.getCause());
+ }
+ }
+ module.getContext().getModelRepository().removeModel(model);
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/MtcBroker.java b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/MtcBroker.java
new file mode 100644
index 000000000..5e5822fd7
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/MtcBroker.java
@@ -0,0 +1,776 @@
+/*******************************************************************************
+ * Copyright (c) 2013 The University of York, Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Horacio Hoyos - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.qvtd.build.etl;
+
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.epsilon.common.util.StringProperties;
+import org.eclipse.epsilon.emc.emf.EmfModel;
+import org.eclipse.epsilon.eol.exceptions.models.EolModelLoadingException;
+import org.eclipse.ocl.pivot.manager.MetaModelManager;
+import org.eclipse.ocl.pivot.resource.OCLASResourceFactory;
+import org.eclipse.qvtd.build.qvtschedule.qvtscheduleFactory;
+import org.eclipse.qvtd.build.qvtschedule.impl.qvtscheduleFactoryImpl;
+
+/**
+ * The Class MtcBroker.
+ */
+public class MtcBroker {
+
+ /** The Constant ECORE_URI. */
+ private static final String ECORE_URI = "http://www.eclipse.org/emf/2002/Ecore";
+
+ /** The Constant CONFIG_MODEL_NAME. */
+ private static final String CONFIG_MODEL_NAME = "config";
+
+ /** The Constant CONFIG_MM. */
+ private static final String CONFIG_MM = "/QVTcConfig.ecore";
+
+ /** The Constant CONFIG_URI. */
+ private static final String CONFIG_URI = "http://www.eclipse.org/qvt/examples/0.1/QVTcConfig";
+
+ /** The Constant CONFIG_QUERIES_EOL. */
+ private static final String CONFIG_QUERIES_EOL = "helpers/ConfigQueries.eol";
+
+ /** The Constant ECORE_CONTAINMENT_MM. */
+ private static final String ECORE_CONTAINMENT_MM = "/ECoreContainmentTree.ecore";
+
+ /** The Constant ECORE_CONTAINMENT_URI. */
+ private static final String ECORE_CONTAINMENT_URI = "http://www.eclipse.org/qvt/examples/0.1/ECoreContainemntTree";
+
+ /** The Constant ECORE_TO_TREE_EOL. */
+ private static final String ECORE_TO_TREE_EOL = "utils/EcoreToContainmentTree.eol";
+
+ /** The Constant QVTS_MM. */
+ private static final String QVTS_MM = "/QVTSchedule.ecore";
+
+ /** The Constant QVTS_URI. */
+ private static final String QVTS_URI = "http://www.eclipse.org/qvt/0.1/QVTschedule/";
+
+ /** The Constant OCL_STD_LIB_MODEL_NAME. */
+ private static final String OCL_STD_LIB_MODEL_NAME = "oclStdLib";
+
+ /** The Constant OCL_STD_LIB_URI. */
+ private static final String OCL_STD_LIB_URI = "http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas";
+
+ /** The Constant PIVOT_URI. */
+ private static final String PIVOT_URI = "http://www.eclipse.org/ocl/3.1.0/Pivot";
+
+ /** The Constant QVTB_URI. */
+ private static final String QVTB_URI ="http://www.eclipse.org/qvt/0.9/QVTbase";
+
+ /** The Constant QVTCB_URI. */
+ private static final String QVTCB_URI = "http://www.eclipse.org/qvt/0.9/QVTcoreBase";
+
+ /** The Constant QVTC_URI. */
+ private static final String QVTC_URI = "http://www.eclipse.org/qvt/0.9/QVTcore";
+
+ /** The Constant QVTI_URI. */
+ private static final String QVTI_URI = "http://www.eclipse.org/qvt/0.9/QVTimperative";
+
+ /** The Constant QVTC_FULL_NS. */
+ private static final String QVTC_FULL_NS = QVTC_URI + "," + QVTCB_URI + "," + QVTB_URI + "," + PIVOT_URI;
+
+ /** The Constant QVTI_FULL_NS. */
+ protected static final String QVTI_FULL_NS = QVTI_URI + "," + QVTCB_URI + "," + QVTB_URI + "," + PIVOT_URI;
+
+ /** The Constant QVTS_FULL_NS. */
+ private static final String QVTS_FULL_NS = QVTS_URI + "," + QVTI_FULL_NS;
+
+ /** The Constant QVTC_TO_QVTU_FLOCK. */
+ private static final String QVTC_TO_QVTU_FLOCK = "mtc/QVTcToQVTu.mig";
+
+ /** The Constant QVTU_TO_QVTM_FLOCK. */
+ private static final String QVTU_TO_QVTM_FLOCK = "mtc/QVTuToQVTm.mig";
+
+ /** The Constant QVTM_TO_QVTP_ETL. */
+ private static final String QVTM_TO_QVTP_ETL = "mtc/QVTmToQVTiPartition.etl";
+
+ /** The Constant QVTP_TO_QVTS_ETL. */
+ private static final String QVTP_TO_QVTS_ETL = "scheduling/QVTpToSchedule.etl";
+
+ /** The Constant QVTP_SCHEDULE_EOL. */
+ private static final String QVTP_SCHEDULE_EOL = "scheduling/Scheduler.eol";
+
+ /** The Constant QVTPS_TO_QVTI_ETL. */
+ private static final String QVTPS_TO_QVTI_ETL = "scheduling/QVTs-pToQVTi.etl";
+
+ /** The Constant LEFT_DIR_NAME. */
+ @SuppressWarnings("unused")
+ private static final String LEFT_DIR_NAME = "L";
+
+ /** The Constant RIGHT_DIR_NAME. */
+ private static final String RIGHT_DIR_NAME = "R";
+
+ /** The Constant MIDDLE_DIR_NAME. */
+ @SuppressWarnings("unused")
+ private static final String MIDDLE_DIR_NAME = "M";
+
+ /** The qvtcas uri. */
+ private String qvtcasUri;
+
+ /** The qvtu uri. */
+ private String qvtuUri;
+
+ /** The qvtm uri. */
+ private String qvtmUri;
+
+ /** The partition uri. */
+ protected String partitionUri;
+
+ /** The qvti uri. */
+ protected String qvtiUri;
+
+ /** The config uri. */
+ private String configUri;
+
+ /** The schedule uri. */
+ protected String scheduleUri;
+
+ /** The owner clas of the MTC (used to find resources). */
+ private Class<?> owner;
+
+ /** The config model. */
+ private PivotModel configModel;
+
+ /** The ocl std lib model. */
+ protected PivotModel oclStdLibModel;
+
+ /** The r metamodel. */
+ @SuppressWarnings("unused")
+ private String rMetamodel;
+
+ /** The r metamodel model. */
+ @SuppressWarnings("unused")
+ private PivotModel rMetamodelModel;
+
+ /** The candidate metamodel containment trees. */
+ private Map<String, List<PivotModel>> candidateMetamodelContainmentTrees;
+
+ /** The meta model manager. */
+ private MetaModelManager metaModelManager;
+
+ private PivotModel cModel;
+ private PivotModel uModel;
+ private PivotModel mModel;
+ protected PivotModel pModel;
+ protected PivotModel sModel;
+ protected PivotModel iModel;
+
+
+ /**
+ * Instantiates a new MTC broker.
+ *
+ * @param qvtcasUri the qvtcas uri
+ * @param owner the owner
+ * @param metaModelManager the meta model manager
+ * @throws QvtMtcExecutionException If there is a problem registering the required metamodels.
+ */
+ public MtcBroker(String qvtcasUri, Class<?> owner, MetaModelManager metaModelManager) throws QvtMtcExecutionException {
+
+ this.metaModelManager = metaModelManager;
+ // Derive all the required paths
+ this.qvtcasUri = qvtcasUri;
+ this.owner = owner;
+ System.out.println(URI.createURI(qvtcasUri).lastSegment());
+
+ URI baseUri = URI.createURI(qvtcasUri).trimFileExtension();
+ this.qvtuUri = baseUri.appendFileExtension("qvtu.qvtcas").toString();
+ this.qvtmUri = baseUri.appendFileExtension("qvtm.qvtcas").toString();
+ this.partitionUri = baseUri.appendFileExtension("qvtp.qvtias").toString();
+ this.qvtiUri = baseUri.appendFileExtension("qvtias").toString();
+
+ this.configUri = URI.createURI(baseUri.toString() + "Config").appendFileExtension("xmi").toString();
+ this.scheduleUri = URI.createURI(baseUri.toString() + "Schedule").appendFileExtension("xmi").toString();
+ candidateMetamodelContainmentTrees = new HashMap<String, List<PivotModel>>();
+ registerMetamodels(metaModelManager);
+ }
+
+ /**
+ * @return the cModel
+ */
+ public PivotModel getcModel() {
+ return cModel;
+ }
+
+ /**
+ * @return the uModel
+ */
+ public PivotModel getuModel() {
+ return uModel;
+ }
+
+
+ /**
+ * @return the mModel
+ */
+ public PivotModel getmModel() {
+ return mModel;
+ }
+
+ /**
+ * @return the pModel
+ */
+ public PivotModel getpModel() {
+ return pModel;
+ }
+
+ /**
+ * @return the sModel
+ */
+ public PivotModel getsModel() {
+ return sModel;
+ }
+
+
+ /**
+ * @return the iModel
+ */
+ public PivotModel getiModel() {
+ return iModel;
+ }
+
+ /**
+ * Execute.
+ *
+ * @throws QvtMtcExecutionException If there is an exception at any point in
+ * the MTC execution.
+ */
+ public void execute() throws QvtMtcExecutionException {
+
+ loadConfigurationModel();
+ loadOclStdLibModel();
+ // This could be run on editor saves by reading the imports!
+ createContainmentTrees();
+ cModel = createModel(qvtcasUri, "QVTc", "QVT", QVTC_FULL_NS, true, false, true);
+ uModel = qvtcToQvtu(cModel);
+ uModel.setCachingEnabled(true);
+ uModel.clearCache();
+ mModel = qvtuToQvtm(uModel);
+ mModel.setCachingEnabled(true);
+ mModel.clearCache();
+ pModel = qvtmToQvtp(mModel);
+ pModel.setCachingEnabled(true);
+ pModel.clearCache();
+ sModel = qvtpToQvts(pModel);
+ sModel.setCachingEnabled(true);
+ sModel.clearCache();
+ pModel.setStoredOnDisposal(true);
+ sModel.setStoredOnDisposal(true);
+ qvtpScheduling(pModel, sModel);
+ iModel = qvtpQvtsToQvti(pModel, sModel);
+ }
+
+ public void disposeModels() {
+ cModel.dispose();
+ uModel.dispose();
+ mModel.dispose();
+ pModel.dispose();
+ sModel.dispose();
+ iModel.dispose();
+ }
+
+ /**
+ * QVTc to QVTu.
+ *
+ * @param cModel the QVTc model
+ * @return the QVTu model
+ * @throws QvtMtcExecutionException If there is a problem loading the models or
+ * executing the Flock script.
+ */
+ private PivotModel qvtcToQvtu(EmfModel cModel) throws QvtMtcExecutionException {
+
+ PivotModel uModel = null;
+ uModel = createASModel(qvtuUri, "QVTu", "QVT", QVTC_FULL_NS, false, true, false);
+ if (cModel != null && uModel != null ) {
+ FlockTask flock = null;
+ try {
+ flock = new FlockTask(java.net.URI.create(getResourceURI(QVTC_TO_QVTU_FLOCK)));
+ } catch (URISyntaxException e) {
+ throw new QvtMtcExecutionException(e.getMessage(),e.getCause());
+ } finally {
+ if (flock != null) {
+ flock.setOriginalModel(cModel);
+ flock.setMigratedModel(uModel);
+ flock.models.add(configModel);
+ flock.models.add(oclStdLibModel);
+ flock.execute();
+ }
+ }
+ }
+ return uModel;
+ }
+
+ /**
+ * QVTu to QVTm.
+ *
+ * @param uModel the QVTu model
+ * @return the QVTm model
+ * @throws QvtMtcExecutionException If there is a problem loading the models or
+ * executing the Flock script.
+ */
+ private PivotModel qvtuToQvtm(PivotModel uModel) throws QvtMtcExecutionException {
+
+ PivotModel mModel = null;
+ mModel = createASModel(qvtmUri, "QVTm", "QVT", QVTC_FULL_NS, false, true, false);
+ if (uModel != null && mModel != null ) {
+ FlockTask flock = null;
+ try {
+ flock = new FlockTask(java.net.URI.create(getResourceURI(QVTU_TO_QVTM_FLOCK)));
+ } catch (URISyntaxException e) {
+ throw new QvtMtcExecutionException(e.getMessage(),e.getCause());
+ } finally {
+ if (flock != null) {
+ flock.setOriginalModel(uModel);
+ flock.setMigratedModel(mModel);
+ flock.models.add(configModel);
+ flock.models.add(oclStdLibModel);
+ flock.execute();
+ }
+ }
+ }
+ return mModel;
+ }
+
+ /**
+ * QVTm to QVTp.
+ *
+ * @param mModel the QVTm model
+ * @return the QVTp model
+ * @throws QvtMtcExecutionException If there is a problem loading the models or
+ * executing the ETL script.
+ */
+ private PivotModel qvtmToQvtp(PivotModel mModel) throws QvtMtcExecutionException {
+
+ PivotModel pModel = null;
+ pModel = createASModel(partitionUri, "QVTp", "QVT", QVTI_FULL_NS, false, true, false);
+ if (mModel != null && pModel != null ) {
+ EtlTask etl = null;
+ try {
+ etl = new EtlTask(java.net.URI.create(getResourceURI(QVTM_TO_QVTP_ETL)));
+ } catch (URISyntaxException e) {
+ throw new QvtMtcExecutionException(e.getMessage(),e.getCause());
+ } finally {
+ if (etl != null) {
+ etl.models.add(mModel);
+ etl.models.add(pModel);
+ etl.models.add(configModel);
+ etl.models.add(oclStdLibModel);
+ etl.execute();
+ }
+ }
+ }
+ return pModel;
+ }
+
+ /**
+ * QVTp to QVTs.
+ *
+ * @param pModel the QVTp model
+ * @return the QVTs model
+ * @throws QvtMtcExecutionException If there is a problem loading the models or
+ * executing the ETL script.
+ */
+ protected PivotModel qvtpToQvts(PivotModel pModel) throws QvtMtcExecutionException {
+ PivotModel sModel = null;
+ sModel = createModel(scheduleUri, "QVTs", "", QVTS_FULL_NS, false, true, false);
+ if (pModel != null && sModel != null ) {
+ EtlTask etl = null;
+ try {
+ etl = new EtlTask(java.net.URI.create(getResourceURI(QVTP_TO_QVTS_ETL)));
+ } catch (URISyntaxException e) {
+ throw new QvtMtcExecutionException(e.getMessage(),e.getCause());
+ } finally {
+ if (etl != null) {
+ etl.models.add(pModel);
+ etl.models.add(sModel);
+ etl.models.add(configModel);
+ etl.models.add(oclStdLibModel);
+ etl.execute();
+ }
+ }
+ }
+ return sModel;
+ }
+
+ /**
+ * QVTp scheduling.
+ *
+ * @param pModel the QVTp model
+ * @param sModel the QVTs s model
+ * @throws QvtMtcExecutionException If there is a problem loading the models or
+ * executing the EOL script.
+ */
+ protected void qvtpScheduling(PivotModel pModel, PivotModel sModel) throws QvtMtcExecutionException {
+
+ if (pModel != null && sModel != null ) {
+ EolTask eol = null;
+ try {
+ eol = new EolTask(java.net.URI.create(getResourceURI(QVTP_SCHEDULE_EOL)));
+ } catch (URISyntaxException e) {
+ throw new QvtMtcExecutionException(e.getMessage(),e.getCause());
+ }
+ if (eol != null) {
+ eol.models.add(pModel);
+ eol.models.add(sModel);
+ eol.models.add(oclStdLibModel);
+ eol.models.add(configModel);
+ // TODO HOw to deal with multiple candidate metamodels?
+ eol.models.add(candidateMetamodelContainmentTrees.get(RIGHT_DIR_NAME).get(0));
+ eol.execute();
+ }
+ }
+ }
+
+ /**
+ * QVTp and QVTs to QVTi.
+ *
+ * @param pModel the QVTp model
+ * @param sModel the QVTs model
+ * @return the QVTi model
+ * @throws QvtMtcExecutionException If there is a problem loading the models or
+ * executing the ETL script.
+ */
+ protected PivotModel qvtpQvtsToQvti(PivotModel pModel, PivotModel sModel) throws QvtMtcExecutionException {
+
+ PivotModel iModel = null;
+ iModel = createASModel(qvtiUri, "QVTi", "QVT", QVTI_FULL_NS, false, true, false);
+ if (pModel != null && sModel != null && iModel != null ) {
+ EtlTask etl = null;
+ try {
+ etl = new EtlTask(java.net.URI.create(getResourceURI(QVTPS_TO_QVTI_ETL)));
+ } catch (URISyntaxException e) {
+ throw new QvtMtcExecutionException(e.getMessage(),e.getCause());
+ } finally {
+ if (etl != null) {
+ etl.models.add(pModel);
+ etl.models.add(sModel);
+ etl.models.add(iModel);
+ etl.models.add(configModel);
+ etl.models.add(oclStdLibModel);
+ etl.execute();
+ }
+ }
+ }
+ return iModel;
+ }
+
+ /**
+ * Creates the containment trees.
+ *
+ * @throws QvtMtcExecutionException If there is a problem loading the models or
+ * executing the EOL script.
+ */
+ protected void createContainmentTrees() throws QvtMtcExecutionException {
+
+ EolTask eol = null;
+ List<String> loadedUris = new ArrayList<String>();
+ try {
+ eol = new EolTask(java.net.URI.create(getResourceURI(ECORE_TO_TREE_EOL)));
+ } catch (URISyntaxException e) {
+ throw new QvtMtcExecutionException(e.getMessage(),e.getCause());
+ }
+ if (eol != null) {
+ Map<String, List<String>> mms = getCandidateMetamodels();
+ //Map<PivotModel, PivotModel> emfModels = new HashMap<PivotModel, PivotModel>();
+ Iterator<Map.Entry<String, List<String>>> it = mms.entrySet().iterator();
+ while (it.hasNext()) {
+ Map.Entry<String, List<String>> pairs = it.next();
+ List<PivotModel> trees = new ArrayList<PivotModel>();
+ for (String mm : pairs.getValue()) {
+ //TODO Check if the containment Tree exist (file)?
+ //TODO Check if the tree has been already generated
+ String modelUri = null;
+ try {
+ modelUri = getResourceUriFromClass(this.owner, mm);
+ } catch (URISyntaxException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } finally {
+ if (modelUri != null && !loadedUris.contains(modelUri)) {
+ loadedUris.add(modelUri);
+ PivotModel mmModel = null;
+ PivotModel treeModel = null;
+ mmModel = createModel(changeResourceToSource(modelUri), "mm", "", ECORE_URI, true, false, true);
+ String cgUri = mmModel.getModelFileUri().trimFileExtension().toString() + "ContainmentTree.xmi";
+ treeModel = createModel(cgUri, "tree", pairs.getKey().toLowerCase()+"Tree", ECORE_CONTAINMENT_URI, false, true, true);
+ if (mmModel != null && treeModel != null ) {
+ eol.models.add(mmModel);
+ eol.models.add(treeModel);
+ eol.execute();
+ eol.models.clear();
+ trees.add(treeModel);
+ }
+ }
+ }
+ }
+ candidateMetamodelContainmentTrees.put(pairs.getKey(), trees);
+ }
+ }
+ }
+
+ /**
+ * Gets the candidate metamodels.
+ *
+ * @return the candidate metamodels
+ * @throws QvtMtcExecutionException If there is a problem loading the models or
+ * executing the EOL script.
+ */
+ private Map<String, List<String>> getCandidateMetamodels() throws QvtMtcExecutionException {
+ // 2. Run the EOL operations to get the candidate models and generate the Containment Tree
+ Map<String, List<String>> result = new HashMap<String, List<String>>();
+ EolTask eol = null;
+ try {
+ eol = new EolTask(java.net.URI.create(getResourceURI(CONFIG_QUERIES_EOL)));
+ } catch (URISyntaxException e) {
+ throw new QvtMtcExecutionException(e.getMessage(),e.getCause());
+ }
+ if (eol != null) {
+ eol.addModel(configModel);
+ eol.executeOperation("getAllMetamodelFiles");
+ Object mmList = eol.getResult();
+ @SuppressWarnings("unchecked")
+ Iterator<Map.Entry<String,List<String>>> it = ((Map<String,List<String>>)mmList).entrySet().iterator();
+ while (it.hasNext()) {
+ Map.Entry<String,List<String>> pairs = it.next();
+ System.out.println(pairs.getKey() + " = " + pairs.getValue());
+ result.put(pairs.getKey(), pairs.getValue());
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Load configuration model.
+ *
+ * @throws QvtMtcExecutionException If there is a problem loading the model.
+ */
+ protected void loadConfigurationModel() throws QvtMtcExecutionException {
+
+ configModel = createModel(configUri, CONFIG_MODEL_NAME, "", CONFIG_URI, true, false, true);
+ }
+
+ /**
+ * Load OCLStdLib model.
+ *
+ * @throws QvtMtcExecutionException If there is a problem loading the model.
+ */
+ protected void loadOclStdLibModel() throws QvtMtcExecutionException {
+
+ OCLASResourceFactory.INSTANCE.getClass();
+ Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap( ).put("oclas", OCLASResourceFactory.INSTANCE);
+ oclStdLibModel = createModel(OCL_STD_LIB_URI, OCL_STD_LIB_MODEL_NAME, "", PIVOT_URI, true, false, true);
+ }
+
+ /**
+ * Register metamodels.
+ *
+ * @param metaModelManager the meta model manager
+ * @throws QvtMtcExecutionException If there is a problem finding the metamodels
+ */
+ private void registerMetamodels(MetaModelManager metaModelManager) throws QvtMtcExecutionException {
+
+ String path = null;
+ Resource r;
+ EObject eObject;
+ // Configuration Metamodel
+ try {
+ path = getResourceURI(CONFIG_MM);
+ } catch (URISyntaxException e) {
+ throw new QvtMtcExecutionException(e.getMessage(),e.getCause());
+ } finally {
+ if (path != null) {
+ r = metaModelManager.getExternalResourceSet().getResource(URI.createURI(path, false), true);
+ eObject = r.getContents().get(0);
+ if (eObject instanceof EPackage) {
+ EPackage p = (EPackage)eObject;
+ metaModelManager.getExternalResourceSet().getPackageRegistry().put(p.getNsURI(), p);
+ }
+ }
+ }
+ // Containment tree metamodel
+ try {
+ path = getResourceURI(ECORE_CONTAINMENT_MM);
+ } catch (URISyntaxException e) {
+ throw new QvtMtcExecutionException(e.getMessage(),e.getCause());
+ } finally {
+ if (path != null) {
+ r = metaModelManager.getExternalResourceSet().getResource(URI.createURI(path, false), true);
+ eObject = r.getContents().get(0);
+ if (eObject instanceof EPackage) {
+ EPackage p = (EPackage)eObject;
+ metaModelManager.getExternalResourceSet().getPackageRegistry().put(p.getNsURI(), p);
+ }
+ }
+
+ }
+ // Schedule metamodel
+ try {
+ qvtscheduleFactory sf = new qvtscheduleFactoryImpl();
+ path = getResourceUriFromClass(sf.getClass(), QVTS_MM);
+ } catch (URISyntaxException e) {
+ throw new QvtMtcExecutionException(e.getMessage(),e.getCause());
+ } finally {
+ if (path != null) {
+ r = metaModelManager.getExternalResourceSet().getResource(URI.createURI(path, false), true);
+ eObject = r.getContents().get(0);
+ if (eObject instanceof EPackage) {
+ EPackage p = (EPackage)eObject;
+ metaModelManager.getExternalResourceSet().getPackageRegistry().put(p.getNsURI(), p);
+ }
+ }
+ }
+ }
+
+
+ /**
+ * Creates a Pivot Model with the given attributes. The models are not expanded
+ * by default.
+ *
+ * @param modeUri the mode uri
+ * @param modelName the model name
+ * @param modelAliases the model aliases (Comma separated string)
+ * @param metamodelUris the metamodel URIs
+ * @param readOnLoad read on load flag
+ * @param storeOnDispoal store on disposal flag
+ * @param cached cached flag
+ * @return the pivot model
+ * @throws QvtMtcExecutionException There was an error loading the model
+ */
+ protected PivotModel createModel(String modeUri, String modelName, String modelAliases, String metamodelUris,
+ boolean readOnLoad, boolean storeOnDispoal, boolean cached) throws QvtMtcExecutionException {
+
+ PivotModel model = new PivotModel(metaModelManager, false);
+ StringProperties properties = new StringProperties();
+ properties.put(EmfModel.PROPERTY_NAME, modelName);
+ properties.put(EmfModel.PROPERTY_ALIASES, modelAliases);
+ properties.put(EmfModel.PROPERTY_METAMODEL_URI, metamodelUris);
+ properties.put(EmfModel.PROPERTY_MODEL_URI, modeUri);
+ properties.put(EmfModel.PROPERTY_READONLOAD, String.valueOf(readOnLoad));
+ properties.put(EmfModel.PROPERTY_STOREONDISPOSAL, String.valueOf(storeOnDispoal));
+ properties.put(EmfModel.PROPERTY_CACHED, String.valueOf(cached));
+ properties.put(EmfModel.PROPERTY_EXPAND, String.valueOf(false));
+ try {
+ model.load(properties, "");
+ } catch (EolModelLoadingException e) {
+ throw new QvtMtcExecutionException(e.getMessage(),e.getCause());
+ }
+ return model;
+ }
+
+
+ private PivotModel createASModel(String modeUri, String modelName, String modelAliases, String metamodelUris,
+ boolean readOnLoad, boolean storeOnDispoal, boolean cached) throws QvtMtcExecutionException {
+
+ PivotModel model = new PivotModel(metaModelManager, true);
+ StringProperties properties = new StringProperties();
+ properties.put(EmfModel.PROPERTY_NAME, modelName);
+ properties.put(EmfModel.PROPERTY_ALIASES, modelAliases);
+ properties.put(EmfModel.PROPERTY_METAMODEL_URI, metamodelUris);
+ properties.put(EmfModel.PROPERTY_MODEL_URI, modeUri);
+ properties.put(EmfModel.PROPERTY_READONLOAD, String.valueOf(readOnLoad));
+ properties.put(EmfModel.PROPERTY_STOREONDISPOSAL, String.valueOf(storeOnDispoal));
+ properties.put(EmfModel.PROPERTY_CACHED, String.valueOf(cached));
+ properties.put(EmfModel.PROPERTY_EXPAND, String.valueOf(false));
+ try {
+ model.load(properties, "");
+ } catch (EolModelLoadingException e) {
+ throw new QvtMtcExecutionException(e.getMessage(),e.getCause());
+ }
+ return model;
+}
+
+ /**
+ * Change resource to source.
+ *
+ * @param resourcePath the resource path
+ * @return the string
+ */
+ public static String changeResourceToSource(String resourcePath) {
+
+ String result;
+ if (resourcePath.indexOf("/bin/") > -1) {
+ result = resourcePath.replaceAll("/bin/", "/src/");
+ }
+ else {
+ result= resourcePath;
+ }
+ return result;
+ }
+
+ /**
+ * Change model resource to source.
+ *
+ * @param resourcePath the resource path
+ * @return the string
+ */
+ public static String changeModelResourceToSource(String resourcePath) {
+
+ String result;
+ if (resourcePath.indexOf("/bin/") > -1) {
+ result = resourcePath.replaceAll("/bin/", "/model/");
+ }
+ else {
+ result= resourcePath;
+ }
+ return result;
+ }
+
+
+
+ /**
+ * Return a java.net.URI for an specified filename
+ *
+ * @param fileName filename to obtain the URI
+ * @return URI for the provided filename
+ *
+ private java.net.URI getURI(String fileName) {
+ return java.net.URI.create(URI.createPlatformResourceURI(fileName, false).toString());
+ } */
+
+ /**
+ * Return a string representing the URI for a resource.
+ *
+ * @param resource resource to obtain an URI
+ * @return the URI for the provided resource
+ * @throws URISyntaxException the URI syntax exception
+ */
+ private String getResourceURI(String resource) throws URISyntaxException {
+ URL r = MtcBroker.class.getResource(resource);
+ String uri = r.toURI().toString();
+ return uri;
+ }
+
+ /**
+ * Gets the resource uri from class.
+ *
+ * @param c the c
+ * @param resource the resource
+ * @return the resource uri from class
+ * @throws URISyntaxException the URI syntax exception
+ */
+ private String getResourceUriFromClass(Class<?> c, String resource) throws URISyntaxException {
+ URL r = c.getResource(resource);
+ String uri = r.toURI().toString();
+ return uri;
+ }
+
+}
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/PivotModel.java b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/PivotModel.java
new file mode 100644
index 000000000..adb861b1e
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/PivotModel.java
@@ -0,0 +1,206 @@
+/*******************************************************************************
+ * Copyright (c) 2013 The University of York, Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Horacio Hoyos - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.qvtd.build.etl;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EEnumLiteral;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EPackage.Registry;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.epsilon.emc.emf.ContainmentChangeAdapter;
+import org.eclipse.epsilon.emc.emf.EmfModel;
+import org.eclipse.epsilon.emc.emf.EmfUtil;
+import org.eclipse.epsilon.eol.exceptions.models.EolEnumerationValueNotFoundException;
+import org.eclipse.epsilon.eol.exceptions.models.EolModelElementTypeNotFoundException;
+import org.eclipse.epsilon.eol.exceptions.models.EolModelLoadingException;
+import org.eclipse.epsilon.eol.exceptions.models.EolNotInstantiableModelElementTypeException;
+import org.eclipse.ocl.pivot.manager.MetaModelManager;
+import org.eclipse.qvtd.pivot.qvtbase.Transformation;
+import org.eclipse.qvtd.pivot.qvtimperative.ImperativeModel;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Pivot Model extends the EmfModel to provide access to the utilities
+ * provided by the OCL framework.
+ */
+public class PivotModel extends EmfModel {
+
+ /** The meta model manager. */
+ private MetaModelManager metaModelManager;
+
+ private boolean isASResource;
+
+ /**
+ * Instantiates a new pivot model.
+ *
+ * @param metaModelManager the meta model manager
+ */
+ public PivotModel(MetaModelManager metaModelManager, boolean isASResource) {
+
+ this.isASResource = isASResource;
+ this.metaModelManager = metaModelManager;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.epsilon.emc.emf.EmfModel#loadModelFromUri()
+ */
+ @Override
+ public void loadModelFromUri() throws EolModelLoadingException {
+
+ ResourceSet rSet = isASResource ? metaModelManager.getASResourceSet() : metaModelManager.getExternalResourceSet();
+ try {
+ if (readOnLoad) {
+ modelImpl = rSet.getResource(modelUri, true);
+ if (expand) {
+ EcoreUtil.resolveAll(modelImpl);
+ }
+ } else {
+ modelImpl = rSet.createResource(modelUri);
+ }
+ } catch (RuntimeException e) {
+ throw new EolModelLoadingException(e, this);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.epsilon.emc.emf.AbstractEmfModel#createInstanceInModel(java.lang.String)
+ */
+ protected EObject createInstanceInModel(String type) throws EolModelElementTypeNotFoundException, EolNotInstantiableModelElementTypeException {
+
+ EClass eClass = classForName(type);
+ //if (eClass == null) throw new EolModelElementTypeNotFoundException(this.getName(), type);
+ if (eClass.isAbstract()) throw new EolNotInstantiableModelElementTypeException(this.name, type);
+
+ EObject instance = eClass.getEPackage().getEFactoryInstance().create(eClass);
+ modelImpl.getContents().add(instance);
+ instance.eAdapters().add(new ContainmentChangeAdapter(instance, modelImpl));
+ return instance;
+
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.epsilon.emc.emf.AbstractEmfModel#classForName(java.lang.String, org.eclipse.emf.ecore.EPackage.Registry)
+ */
+ @Override
+ protected EClass classForName(String name, Registry registry) {
+ boolean absolute = name.indexOf("::") > -1;
+
+ for (String nsURI : getMetamodelUris()) {
+ EClass eClass = classForName(name, absolute, registry.getEPackage(nsURI));
+ if (eClass != null) {
+ return eClass;
+ }
+ }
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.epsilon.emc.emf.AbstractEmfModel#getEnumerationValue(java.lang.String, java.lang.String)
+ */
+ @Override
+ public Object getEnumerationValue(String enumeration, String label) throws EolEnumerationValueNotFoundException {
+
+ for (String nsURI : getMetamodelUris()) {
+ for (EClassifier classifier : EmfUtil.getAllEClassifiers(getPackageRegistry().getEPackage(nsURI))) {
+ if (classifier instanceof EEnum &&
+ (((EEnum) classifier).getName().equals(enumeration) ||
+ getFullyQualifiedName(classifier).equals(enumeration))){
+ EEnum eEnum = (EEnum) classifier;
+ EEnumLiteral literal = eEnum.getEEnumLiteral(label);
+ if (literal != null) return literal.getInstance();
+ }
+ }
+ }
+ throw new EolEnumerationValueNotFoundException(enumeration,label,this.getName());
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.epsilon.emc.emf.AbstractEmfModel#getAllTypeNamesOf(java.lang.Object)
+ */
+ @Override
+ public Collection<String> getAllTypeNamesOf(Object instance) {
+ final Collection<String> allTypeNames = new ArrayList<String>();
+
+ if (isModelElement(instance)) {
+ final EClass type = (EClass)getTypeOf(instance);
+
+ allTypeNames.add(type.getName());
+
+ for (EClass supertype : type.getEAllSuperTypes()) {
+ if (!supertype.isInterface())
+ allTypeNames.add(supertype.getName());
+ }
+ }
+
+ return allTypeNames;
+ }
+
+ /**
+ * Class for name.
+ *
+ * @param name the name
+ * @param absolute the absolute
+ * @param pkg the pkg
+ * @return the e class
+ */
+ private EClass classForName(String name, boolean absolute, EPackage pkg) {
+ if (pkg != null) {
+ for (EClassifier eClassifier : EmfUtil.getAllEClassifiers(pkg)) {
+ if (eClassifier instanceof EClass) {
+ String eClassifierName = "";
+ if (absolute) {
+ eClassifierName = getFullyQualifiedName(eClassifier);
+ }
+ else {
+ eClassifierName = eClassifier.getName();
+ }
+
+ if (eClassifierName.compareTo(name) == 0) {
+ return (EClass) eClassifier;
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Gets the root eObject.
+ *
+ * @return the roote object
+ */
+ public EObject getRooteObject() {
+ return modelImpl.getContents().get(0);
+ }
+
+ // FIXME this method is not suitable for a PivotModel
+ public Transformation getTransformation() throws Exception {
+ for (EObject eContent : modelImpl.getContents()) {
+ if (eContent instanceof ImperativeModel) {
+ for (EObject eObject : ((ImperativeModel)eContent).getOwnedPackages()) {
+ if (eObject instanceof Transformation) {
+ return (Transformation) eObject;
+ }
+ }
+ }
+ }
+ throw new Exception("The QVTi model does not have a Transformation element.");
+ }
+
+}
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/PivotUtil.java b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/PivotUtil.java
index 24b3e7987..61baea5b0 100644
--- a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/PivotUtil.java
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/PivotUtil.java
@@ -15,9 +15,8 @@ import java.util.List;
import java.util.Set;
import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.ocl.pivot.internal.impl.ClassImpl;
-import org.eclipse.ocl.pivot.internal.impl.TypedElementImpl;
-
+import org.eclipse.ocl.pivot.TypedElement;
+//import org.eclipse.ocl.pivot.impl.ClassImpl;
/**
* The Class PivotUtil. Provides helper methods for analysing pivot model elements
@@ -33,9 +32,9 @@ public class PivotUtil {
* @param vars the variables
* @return The lowest ranking variable
*/
- public TypedElementImpl getLowestRankVariable(Set<TypedElementImpl> vars) {
+ public TypedElement getLowestRankVariable(Set<TypedElement> vars) {
- return getLowestRankVariable(new ArrayList<TypedElementImpl>(vars));
+ return getLowestRankVariable(new ArrayList<TypedElement>(vars));
}
@@ -46,28 +45,40 @@ public class PivotUtil {
* @param vars the variables
* @return The lowest rank variable
*/
- public TypedElementImpl getLowestRankVariable(List<TypedElementImpl> vars) {
+ public TypedElement getLowestRankVariable(List<TypedElement> vars) {
- TypedElementImpl min = vars.get(0);
- EStructuralFeature typeFeat = min.eClass().getEStructuralFeature("type");
- ClassImpl minType = null;
+ TypedElement min = vars.get(0);
+ EStructuralFeature typeFeat = min.eClass().getEStructuralFeature("type");
+ org.eclipse.ocl.pivot.Class minType = null;
for(int i = 1; i < vars.size(); ++i) {
- minType = (ClassImpl) min.eGet(typeFeat);
- if (((ClassImpl)vars.get(i).eGet(typeFeat)).getSuperClasses().contains(minType)) {
+ minType = (org.eclipse.ocl.pivot.Class) min.eGet(typeFeat);
+ if (((org.eclipse.ocl.pivot.Class)vars.get(i).eGet(typeFeat)).getSuperClasses().contains(minType)) {
min = vars.get(i);
}
}
// Verify that the min is actually the min, i.e. all the other variables are superiors
// in the hierarchy
- for (TypedElementImpl var : vars) {
+ /*for (TypedElement var : vars) {
if (!var.equals(min)) {
+<<<<<<< HEAD
if (!((ClassImpl)min.eGet(typeFeat)).getSuperClasses().contains(var.eGet(typeFeat))) {
// Error
+=======
+ if (!((ClassImpl)min.eGet(typeFeat)).getSuperClass().contains(var.eGet(typeFeat))) {
+ System.out.println("min is not min");
+>>>>>>> refs/remotes/origin/hhoyos/qvtr
return null;
}
}
- }
+ }*/
return min;
}
+
+ // typeA is either equal to typeB or a subclass
+/* public Boolean isKindOf(Type typeA, Type typeB) {
+ //System.out.println("TypeA" + typeA);
+ //System.out.println("TypeB" + typeB);
+ return typeA.equals(typeB) || typeA.getSuperClass().contains(typeB);
+ } */
}
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/QvtMtcExecutionException.java b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/QvtMtcExecutionException.java
new file mode 100644
index 000000000..bf8e49368
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/QvtMtcExecutionException.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2013 The University of York, Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Horacio Hoyos - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.qvtd.build.etl;
+
+/**
+ * The Class QvtMtcExecutionException that wraps Epsilon execution exceptions.
+ */
+public class QvtMtcExecutionException extends Exception {
+
+ /** The Constant serialVersionUID. */
+ private static final long serialVersionUID = 4172842347806568754L;
+
+ /**
+ * Instantiates a new epsilon standalone exception.
+ *
+ * @param msg the msg
+ */
+ public QvtMtcExecutionException(String msg){
+ super(msg);
+ }
+
+ /**
+ * Instantiates a new epsilon standalone exception.
+ *
+ * @param msg the msg
+ * @param t the previous Throwable cause
+ */
+ public QvtMtcExecutionException(String msg, Throwable t){
+ super(msg,t);
+ }
+
+}
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/dependence/DominatorTree.eol b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/dependence/DominatorTree.eol
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/dependence/DominatorTree.eol
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/dependence/QVTiDataDependencies.eol b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/dependence/QVTiDataDependencies.eol
new file mode 100644
index 000000000..be6063f57
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/dependence/QVTiDataDependencies.eol
@@ -0,0 +1,497 @@
+/******************************************************************************
+ * Copyright (c) 2013 The University of York and Willink Transformations.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Horacio Hoyos - initial implementation
+ ******************************************************************************/
+import "../helpers/DataDependenceGraphHelpers.eol";
+import "../helpers/Math.eol";
+
+/****l* /org.eclipse.qvtd.build.etl/dependence/QVTiDataDependencies
+ * NAME
+ * QVTiDataDependencies.eol -- A set of EOL operations to perform mapping data
+ * dependence analysis for a QVTi transformation.
+ *
+ * SEE ALSO
+ *
+ ******
+ */
+
+/****o* org.eclipse.qvtd.build.etl/dependence/QVTiDataDependencies/mappingDataDependencies
+ * NAME
+ * mappingDataDependencies - Analysis of the data dependencies of mappings.
+ * FUNCTION
+ * Creates a scheduling model to store the data dependencies between mappings
+ * in the transformation.
+ *
+ * CONTEXT
+ * QVT!Transformation The transformation being analyzed
+ * PARAMETERS
+ * graph The graph to populate
+ * inputVarMap The map of mapings to input variables
+ * outputVarMap The map of mapings to output variables
+ * SEE ALSO
+ *
+ */
+operation QVT!Transformation mappingDataDependencies(graph : ddg!Graph, inputVarMap : Map, outputVarMap : Map, dataTypeAssignments : Map) {
+ var ruleMap : Map; // Cache nodes for mappings nodes (AST, graph!Node)
+ var varMap : Map; // Cache nodes for mappings nodes (AST, graph!Node)
+ var assgMap : Map; // Cache nodes for DataType assignemnt nodes (Sequence, graph!Node)
+
+ for (r in self.rule.select(r | not r.context.isDefined())) {
+ var ruleNode = graph.getNodeForQvtAstNode(r, ruleMap).first();
+ varMap.clear();
+ assgMap.clear();
+ //r.println();
+ // Input variables relations
+ for (vA in inputVarMap.get(r)) {
+ //vA.println("vA ");
+ for (vaNode in graph.getNodeForQvtAstNode(vA, varMap)) {
+ var e = graph.owningModel().createInstance("DependencyEdge");
+ //var vaNode = graph.getNodeForQvtAstNode(vA, varMap);
+ e.source = vaNode;
+ e.target = ruleNode;
+ e.direction = ddg!DependencyDirection#input;
+ graph.elements.add(e);
+ }
+ vA.variableRelations(graph, inputVarMap.get(r).excluding(vA), varMap);
+ }
+ // Output variables relations
+ for (vA in outputVarMap.get(r)) {
+ //vA.println("vA ");
+ for (vaNode in graph.getNodeForQvtAstNode(vA, varMap)) {
+ //var vaNode = graph.getNodeForQvtAstNode(vA, varMap);
+ var e = graph.owningModel().createInstance("DependencyEdge");
+ e.source = ruleNode;
+ e.target = vaNode;
+ e.direction = ddg!DependencyDirection#output;
+ graph.elements.add(e);
+
+ }
+ vA.variableRelations(graph, outputVarMap.get(r).excluding(vA), varMap);
+ }
+ // Input to Output variable relations
+ for (vIn in inputVarMap.get(r)) {
+ vIn.variableRelations(graph, outputVarMap.get(r), varMap);
+ }
+ // DataType assignments treatd as outputs
+ if (not dataTypeAssignments.get(r).isEmpty()) {
+ var dtNode = graph.getNodeForDataType(dataTypeAssignments.get(r), assgMap);
+ var e = graph.owningModel().createInstance("DependencyEdge");
+ e.source = ruleNode;
+ e.target = dtNode;
+ e.direction = ddg!DependencyDirection#output;
+ graph.elements.add(e);
+ }
+ // Find DataType Uses, treated as inputs
+ for (r2 in self.rule.select(r | not r.context.isDefined()).excluding(r)) {
+ if (not dataTypeAssignments.get(r2).isEmpty()) {
+ var value = dataTypeAssignments.get(r2);
+ if (r.hasDataTypeUse(value)) {
+ var dtNode = graph.getNodeForDataType(value, assgMap);
+ if (not graph.elements.exists(e : ddg!DependencyEdge | e.source == dtNode and e.target==ruleNode)) {
+ var e = graph.owningModel().createInstance("DependencyEdge");
+ e.source = dtNode;
+ e.target = ruleNode;
+ e.direction = ddg!DependencyDirection#input;
+ graph.elements.add(e);
+ }
+ }
+ }
+ }
+ }
+}
+
+
+/****o* org.eclipse.qvtd.build.etl/dependence/QVTiDataDependencies/mergedMappingDataDependencies
+ * NAME
+ * mergedMappingDataDependencies - Merge the data dependencies of mappings.
+ * FUNCTION
+ * The merged dependencies merges all the dependencies contained in the data
+ * dependencies graph. Reference edges are removed.
+ *
+ * CONTEXT
+ * ddg!Graph The data dependencies graph being merged
+ * PARAMETERS
+ * mergeGraph The graph (merged) to populate
+ * containmentTrees The map of domains (metamodels) and their containment trees
+ * SEE ALSO
+ * org.eclipse.qvtd.build.etl/dependence/QVTiDataDependencies/mappingDataDependencies
+ */
+operation ddg!Graph mergedMappingDataDependencies(mergeGraph : ddg!Graph, containmentTrees : Map) {
+
+ // Import the tree nodes to the merged graph
+ var mergeMap : Map; // //!< Cache nodes for nodes (AST, graph!Node)(x, Node)
+ for(key in containmentTrees.keySet()) {
+ mergeGraph.importContainmentTree(containmentTrees.get(key), key, mergeMap);
+ }
+ for (m in self.elements.select(n: ddg!MappingNode | true).sortBy(n | n.incoming.size())) {
+ var outputVarNodes = m.outgoing.collect(e | e.target).flatten();
+ var inputVarNodes = m.incoming.collect(e | e.source).flatten();
+
+ // For each variable, find the corresponding type in the domain containment tree
+ // and make the connection. For input variables, if the type is abstrac (does
+ // not exist in the tree), connect it to all its subtypes.
+ var mappingNode = mergeGraph.getNodeCopy(m, mergeMap);
+ for (vN in inputVarNodes) {
+ var sources = new Sequence;
+ // Search in containment tree
+ for(key in containmentTrees.keySet()) {
+ sources = containmentTrees.get(key).select(n | (n.EClassName == vN.label) or n.superTypes.includes(vN.label));
+ if (not sources.isEmpty()) {
+ break;
+ }
+ }
+ if (sources.isEmpty()) {
+ //vN.println("vN Empty ");
+ if (vN.isTypeOf(ddg!DataTypeNode)) {
+ var n = mergeGraph.elements.selectOne(n : ddg!DataTypeNode | n.label = vN.label and n.type = vN.type);
+ if (n == null) {
+ n = mergeGraph.owningModel().createInstance("DataTypeNode");
+ n.label = vN.label;
+ n.type = vN.type;
+ n.attribute = vN.attribute;
+ mergeGraph.element.add(n);
+ }
+ var e = mergeGraph.owningModel().createInstance("DependencyEdge");
+ e.direction = ddg!DependencyDirection#input;
+ e.source = n;
+ e.target = mappingNode;
+ mergeGraph.elements.add(e);
+ } else {
+ vN.errln("mergedMappingDataDependencies Not valid type found for input: "); // Error. WE should never get here!
+ }
+ } else {
+ for (s in sources) {
+ var e = mergeGraph.owningModel().createInstance("DependencyEdge");
+ // If there is another edge to the input, is a double input
+ e.multiple = mergeGraph.elements.exists(e : ddg!Edge| e.source == mergeMap.get(s) and e.target == mappingNode);
+ e.direction = ddg!DependencyDirection#input;
+ e.source = mergeMap.get(s);
+ e.target = mappingNode;
+ mergeGraph.elements.add(e);
+ }
+ }
+ }
+ for (vN in outputVarNodes) {
+ var targets = new Sequence;
+ for(key in containmentTrees.keySet()) {
+ targets = containmentTrees.get(key).select(n | (n.EClassName == vN.label));
+ if (not targets.isEmpty()) {
+ break;
+ }
+ }
+ if (targets.isEmpty()) {
+ if (vN.isTypeOf(ddg!DataTypeNode)) {
+ var n = mergeGraph.elements.selectOne(n : ddg!DataTypeNode | n.label = vN.label and n.type = vN.type);
+ if (n == null) {
+ n = mergeGraph.owningModel().createInstance("DataTypeNode");
+ n.label = vN.label;
+ n.type = vN.type;
+ n.attribute = vN.attribute;
+ mergeGraph.elements.add(n);
+ }
+ var e = mergeGraph.owningModel().createInstance("DependencyEdge");
+ e.direction = ddg!DependencyDirection#output;
+ e.source = mappingNode;
+ e.target = n;
+ mergeGraph.elements.add(e);
+ } else {
+ vN.errln("mergedMappingDataDependencies Not valid type found for output: "); // Error. WE should never get here!
+ }
+ } else {
+ for (t in targets) {
+ var e = mergeGraph.owningModel().createInstance("DependencyEdge");
+ e.source = mappingNode;
+ e.target = mergeMap.get(t);
+ e.direction = ddg!DependencyDirection#output;
+ mergeGraph.elements.add(e);
+ }
+ }
+
+ }
+ }
+}
+
+
+/****o* org.eclipse.qvtd.build.etl/dependence/QVTiDataDependencies/reducedMergedMappingDataDependencies
+ * NAME
+ * reducedMergedMappingDataDependencies - Do a reduction of data dependencies
+ * to identify derivable variables .
+ * FUNCTION
+ * Reduced [merged] data dependencies of mappings. The reduced dependencies
+ * takes the same considerations as the merged data dependencies and
+ * additionally analyses the maping predicates to identfy variables that can
+ * be derived from other variables.
+ *
+ * All outgoing edges in the data dependence graph are navigable, hence all
+ * targets of such edges are derivable. For incoming edges, it is necesary to
+ * analyze the relation represented by the edge and identify navigable
+ * opposites (upper bound = 1).
+ * CONTEXT
+ * ddg!Graph The data dependence graph
+ * PARAMETERS
+ * reduceGraph The graph to populate
+ * containmentTrees The containment trees of the candidate and middle meta-
+ * models
+ * RESULT
+ * A graph representing the reduced dependencies
+ * SEE ALSO
+ *
+ */
+operation ddg!Graph reducedMergedMappingDataDependencies(reduceGraph : ddg!Graph, containmentTrees : Map) {
+ // Import the tree nodes to the merged graph
+ var mergeMap : Map; // //!< Cache nodes for nodes (AST, graph!Node)(x, Node)
+ for(key in containmentTrees.keySet()) {
+ reduceGraph.importContainmentTree(containmentTrees.get(key), key, mergeMap);
+ }
+ for (m in self.elements.select(n: ddg!MappingNode | true).sortBy(n | n.incoming.size())) {
+ //m.println("Map ");
+ var inputVarNodes = m.incoming.collect(e | e.source).flatten();
+ // For each input node, get the set of variables that can be derived from it.
+ var derivedVars = new Map;
+ for (vN in inputVarNodes) {
+ var derived = new Sequence;
+ // We have to save both the variable and the relation
+ derived.addAll(vN.outgoing.select(e | inputVarNodes.includes(e.target)).collect(e | e.target));
+
+ for (ie in vN.incoming) {
+ if (ie.referredProperty.getOpposite().isDefined() and not ie.referredProperty.getOpposite().isMany()) {
+ derived.add(ie.source);
+ }
+ }
+ derivedVars.put(vN, derived);
+ }
+ // Now find the variable that provides the most derived variables = the union of
+ // its derived variables and the ones that can be derived from them.
+ var derivedVarsUnion = new Map;
+ for (key in derivedVars.keySet()) {
+ var derivedUnion = new Sequence;
+ derivedUnion.addAll(derivedVars.get(key));
+ for (d in derivedVars.get(key)) {
+ for (du in derivedVars.get(d)) {
+ if (du <> key) {
+ derivedUnion.add(du);
+ }
+ }
+ }
+ derivedVarsUnion.put(key, derivedUnion);
+ }
+ // Get the set cover from the derived variables union. The reslut are the direct
+ // inputs and the respective derived variables, derived.
+ var mappingNode = reduceGraph.getNodeCopy(m, mergeMap);
+
+ //inputVarNodes.println();
+ var C = greedySetCover(inputVarNodes.clone(), derivedVarsUnion);
+
+ //C.collect(c | c.label).println("cover set ");
+ //inputVarNodes.println();
+ var sources : Sequence;
+ for (vN in inputVarNodes) {
+ for(key in containmentTrees.keySet()) {
+ sources = containmentTrees.get(key).select(n | (n.EClassName == vN.label) or n.superTypes.includes(vN.label));
+ if (not sources.isEmpty()) {
+ break;
+ }
+ }
+ if (sources.isEmpty()) {
+ if (vN.isTypeOf(ddg!DataTypeNode)) {
+ var n = reduceGraph.elements.selectOne(n : ddg!DataTypeNode | n.label = vN.label and n.type = vN.type);
+ if (n == null) {
+ n = reduceGraph.owningModel().createInstance("DataTypeNode");
+ n.label = vN.label;
+ n.type = vN.type;
+ n.attribute = vN.attribute;
+ reduceGraph.elements.add(n);
+ }
+ var e = reduceGraph.owningModel().createInstance("DependencyEdge");
+ e.direction = ddg!DependencyDirection#input;
+ e.source = n;
+ e.target = mappingNode;
+ reduceGraph.elements.add(e);
+ } else {
+ vN.errln("reducedMergedMappingDataDependencies Not valid type found for input: "); // Error. WE should never get here!
+ }
+ } else {
+ for (s in sources) {
+ var e = reduceGraph.owningModel().createInstance("DependencyEdge");
+ // If there is another edge to the input, is a double input
+ e.multiple = reduceGraph.elements.exists(e : ddg!Edge| e.source == mergeMap.get(s) and e.target == mappingNode);
+ e.direction = ddg!DependencyDirection#input;
+ e.derived = not C.exists(c | c == vN);
+ e.source = mergeMap.get(s);
+ e.target = mappingNode;
+ reduceGraph.elements.add(e);
+ }
+ }
+
+ }
+ for (vN in m.outgoing.collect(e | e.target).flatten()) {
+ var targets : Collection;
+ for(key in containmentTrees.keySet()) {
+ targets = containmentTrees.get(key).select(n | (n.EClassName == vN.label));
+ if (not targets.isEmpty()) {
+ break;
+ }
+ }
+ if (targets.isEmpty()) {
+ if (vN.isTypeOf(ddg!DataTypeNode)) {
+ var n = reduceGraph.elements.selectOne(n : ddg!DataTypeNode | n.label = vN.label and n.type = vN.type);
+ if (n == null) {
+ n = reduceGraph.owningModel().createInstance("DataTypeNode");
+ n.label = vN.label;
+ n.type = vN.type;
+ n.attribute = vN.attribute;
+ reduceGraph.elements.add(n);
+ }
+ var e = reduceGraph.owningModel().createInstance("DependencyEdge");
+ e.direction = ddg!DependencyDirection#output;
+ e.source = mappingNode;
+ e.target = n;
+ reduceGraph.elements.add(e);
+ } else {
+ vN.errln("reducedMergedMappingDataDependencies Not valid type found for output: "); // Error. WE should never get here!
+ }
+ } else {
+ for (t in targets) {
+ var e = reduceGraph.owningModel().createInstance("DependencyEdge");
+ e.direction = ddg!DependencyDirection#output;
+ e.source = mappingNode;
+ e.target = mergeMap.get(t);
+ reduceGraph.elements.add(e);
+ }
+ }
+ }
+ }
+}
+
+/****o* org.eclipse.qvtd.build.etl/dependence/QVTiDataDependencies/reducedMergedMappingDataDependencies
+ * NAME
+ * reducedMergedMappingDataDependencies - Do a reduction of data dependencies
+ * to identify derivable variables .
+ * FUNCTION
+ * Reduced [merged] data dependencies of mappings. The reduced dependencies
+ * takes the same considerations as the merged data dependencies and
+ * additionally analyses the maping predicates to identfy variables that can
+ * be derived from other variables.
+ *
+ * All outgoing edges in the data dependence graph are navigable, hence all
+ * targets of such edges are derivable. For incoming edges, it is necesary to
+ * analyze the relation represented by the edge and identify navigable
+ * opposites (upper bound = 1).
+ * CONTEXT
+ * ddg!Graph The data dependence graph
+ * PARAMETERS
+ * reduceGraph The graph to populate
+ * containmentTrees The containment trees of the candidate and middle meta-
+ * models
+ * RESULT
+ * A graph representing the reduced dependencies
+ * SEE ALSO
+ *
+ */
+operation ddg!Graph reducedMergedMappingDataDependencies_New() {
+
+ // Remove the duplicate Class Nodes and edges, and fix edges to mappings and other Class Nodes
+ // Merge candidate model domain Class Nodes
+ var models = Sequence {ddg!Model#input, ddg!Model#middle, ddg!Model#output};
+ for (m in models) {
+ var classNames = self.elements.select(n : ddg!ClassNode | n.`model` == m).collect(n | n.label).asSet();
+ // For each class, merge the nodes
+ for (name in classNames) {
+ var nodesToMerge = self.elements.select(n : ddg!ClassNode | n.`model` == m and n.label = name);
+ //nodesToMerge.println();
+ var nodeToKeep = nodesToMerge.first();
+ // Redirect all Edges and delete Node
+ for (removeNode in nodesToMerge.excluding(nodeToKeep)) {
+ for (i in removeNode.incoming.clone()) {
+ i.target = nodeToKeep;
+ }
+ for (o in removeNode.outgoing.clone()) {
+ o.source = nodeToKeep;
+ }
+ self.elements.remove(removeNode);
+ }
+ }
+
+ }
+ // Merge DataType nodes
+ var predicates = self.elements.select(n : ddg!DataTypeNode | true).collect(n | n.label).asSet();
+ // For each class, merge the nodes
+ for (name in predicates) {
+ var nodesToMerge = self.elements.select(n : ddg!DataTypeNode | n.label = name);
+ var nodeToKeep = nodesToMerge.first();
+ // Redirect all Edges and delete Node
+ for (removeNode in nodesToMerge.excluding(nodeToKeep)) {
+ for (i in removeNode.incoming.clone()) {
+ i.target = nodeToKeep;
+ }
+ for (o in removeNode.outgoing.clone()) {
+ o.source = nodeToKeep;
+ }
+ delete removeNode;
+ }
+ }
+
+ // Delete duplicate incoming edges to Class Nodes
+ for (e in self.elements.collect(cn : ddg!ClassNode | cn.incoming.select(e : ddg!ContainmentEdge | cn.incoming.excluding(e).exists(e2 : ddg!ContainmentEdge | e.source == e2.source)))
+ .collect(s | s.collect(e | e.source).asSet().collect(l | s.select(e | e.source == l)).collect(s | s.asSet().excluding(s.asSet().first()))).flatten()) {
+
+ delete e;
+ }
+ for (e in self.elements.collect(cn : ddg!ClassNode | cn.incoming.select(e : ddg!ReferenceEdge | cn.incoming.excluding(e).exists(e2 : ddg!ReferenceEdge | e.source == e2.source)))
+ .collect(s | s.collect(e | e.source).asSet().collect(l | s.select(e | e.source == l)).collect(s | s.asSet().excluding(s.asSet().first()))).flatten()) {
+
+ delete e;
+ }
+
+ // Primary, derived and duplicate dependencies
+ for (m in self.elements.select(n: ddg!MappingNode | true).sortBy(n | n.incoming.size())) {
+ //m.println("Map ");
+ var inputVarNodes = m.incoming.collect(e | e.source).flatten();
+ // For each input node, get the set of variables that can be derived from it.
+ var derivedVars = new Map;
+ for (vN in inputVarNodes) {
+ //vN.println("vn ");
+ var derived : Sequence = vN.outgoing.select(e | not e.target.isTypeOf(ddg!MappingNode)).collect(e | e.target);
+ for (ie in vN.incoming.select(i | not i.source.isTypeOf(ddg!MappingNode))) {
+ if (ie.referredProperty.getOpposite().isDefined() and not ie.referredProperty.getOpposite().isMany()) {
+ derived.add(ie.source);
+ }
+ }
+ //derived.collect(v | v.label).println(vN.label + ": ");
+ derivedVars.put(vN, derived);
+ }
+
+ // Now find the variable that provides the most derived variables = the union of
+ // its derived variables and the ones that can be derived from them.
+ var derivedVarsUnion = new Map;
+ for (key in derivedVars.keySet()) {
+ var derivedUnion = new Sequence;
+ derivedUnion.addAll(derivedVars.get(key));
+ for (d in derivedVars.get(key)) {
+ for (du in derivedVars.get(d)) {
+ if (du <> key) {
+ derivedUnion.add(du);
+ }
+ }
+ }
+ derivedVarsUnion.put(key, derivedUnion);
+ }
+ // Get the set cover from the derived variables union. The reslut are the direct
+ // inputs and the respective derived variables, derived.
+ // TODO This might in fact not be required for scheduling.
+ var coverSet = greedySetCover(inputVarNodes.clone(), derivedVarsUnion);
+ for (e in m.incoming) {
+ // If there is another edge to the input, is a double input
+ e.multiple = m.incoming.excluding(e).exists(i | e.source == i.source and not i.multiple) ;
+ e.derived = not coverSet.exists(c | c == e.source);
+ }
+ }
+
+
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/extras/EcoreToContainmentGraph.eol b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/extras/EcoreToContainmentGraph.eol
new file mode 100644
index 000000000..82a078cf8
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/extras/EcoreToContainmentGraph.eol
@@ -0,0 +1,166 @@
+/*******************************************************************************
+ * Copyright (c) 2013 The University of York, Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Horacio Hoyos - initial implementation
+ ******************************************************************************/
+
+/****l* /org.eclipse.qvtd.build.etl/dependence/scheduling/EcoreToContainmentGraph
+ * NAME
+ * EcoreToContainmentGraph -- Craete the graph to hold candidate model containment
+ * information
+ *
+ * MODELS
+ * Required models to run the script:
+ * - NAME ALIASES METAMODEL ROL SOD
+ * - xxx mm Ecore X The candidate model Ecore
+ * - xxx cGraph QVTcDataDependencyGraph X The metamodel containment graph
+ * SEE ALSO
+ *
+ ******
+ */
+
+var visited : Map;
+var SEARCH_ITERATIONS : Integer = 3;
+
+//modelId.println("modelId ");
+for (p in mm!EPackage.all()) {
+ p.createContainmentGraph();
+}
+
+"Done".println();
+
+
+/****o* /org.eclipse.qvtd.build.etl/dependence/scheduling/EcoreToContainmentGraph/createContainmentGraph
+ * NAME
+ * createContainmentGraph - Returns a set of elements (nodes and edges) representing
+ * the containment relations in a package
+ *
+ * FUNCTION
+ * We are only interested in containemnet relations, so we only need to search
+ * EClasses. The algorithm does an iterative depth first search of containment
+ * relations. The search is repeated until no more new nodes are created during
+ * three iterations.
+ *
+ * Note: Ed Merks suggests there should only be one EPackage per metamodel, but
+ * since this is not a requirement, to be safe call this method on all packages
+ * in the model.
+ *
+ * TODO: Metamodles should be loaded dynamically from the configuraion!
+ * TODO: Number of no changes should be configurable!
+ *
+ * CONTEXT
+ * mm!EPackage The package
+ *
+ * OUTPUT
+ * Set A set of nodes and edges representing the containment relations
+ *
+ * SEE ALSO
+ */
+operation mm!EPackage createContainmentGraph() : Set {
+
+ var iterate = true;
+ var change = false;
+ var maxDepth : Integer;
+ var noChangeCount : Integer = 0;
+ var elements : Set;
+
+ //var parentNode = new cg!ClassNode;
+
+ //parentNode.label = self.name;
+ maxDepth = 1;
+
+ while (iterate) {
+ //maxDepth.println("IterativeDFS ");
+ change = false;
+ // Only non abstract classes which are not contained in other clases
+ for (c in self.eClassifiers.select(c | c.isKindOf(mm!EClass)
+ and not c.abstract
+ and not c.getEAllStructuralFeatures().exists(r : mm!EReference | r.container))) {
+ change = c.dfs(1, maxDepth, null, null) or change;
+ }
+ if (not change) {
+ noChangeCount = noChangeCount + 1;
+ if (noChangeCount > SEARCH_ITERATIONS) {
+ iterate = false;
+ }
+ }
+ maxDepth = maxDepth + 1;
+ if(maxDepth > 10) {
+ "Safe ending".errln();
+ iterate = false; // Safe ending
+ }
+
+ }
+
+}
+
+// Returns true if added
+operation mm!EClass dfs(depth, maxDepth, parentNode, relation) : Boolean {
+
+ var change = false;
+ //self.name.println("dfs ");
+ //"Max depth reached, do nothing".println(tabs);
+ if (depth <= maxDepth) {
+ // If self is abstract, consider all subclasses at same depth (flattening)
+ if (self.abstract) {
+ //"Abstract, do inheritance".println(tabs);
+ for (sc in mm!EClass.all().select(c | c.eSuperTypes.includes(self))) {
+ if (sc.name <> parentNode.label) {
+ sc.dfs(depth, maxDepth, parentNode, relation);
+ }
+ }
+ } else {
+ // Add Node or get node
+ var n;
+ if (visited.containsKey(self)) {
+ n = visited.get(self);
+ } else {
+ n = new cg!ClassNode;
+ n.label = self.name;
+ n.superTypes = self.eSuperTypes.select(st | st.abstract).collect(st | st.name).flatten();
+ n.`model` = getModel(modelId);
+ visited.put(self, n);
+ }
+ if (depth == maxDepth and parentNode <> null) {
+ var e = new cg!ContainmentEdge;
+ e.source = parentNode;
+ e.target = n;
+ e.referredProperty = relation;
+ e.`model` = getModel(modelId);
+ change = true;
+ }
+ // Navigate Containment, mine and inherited
+ //self.eStructuralFeatures.select(sf : mm!EReference | sf.containment)
+ // .includingAll(self.getAllSuperTypes().collect(st | st.eStructuralFeatures.select(sf : mm!EReference | sf.containment)).flatten()).println();
+ for (sf in self.eStructuralFeatures.select(sf : mm!EReference | sf.containment)
+ .includingAll(self.getAllSuperTypes().collect(st | st.eStructuralFeatures.select(sf : mm!EReference | sf.containment))).flatten()) {
+ change = sf.eReferenceType.dfs(depth+1, maxDepth, n, sf) or change;
+ }
+ }
+ }
+ return change;
+}
+
+@cached
+operation mm!EClass getAllSuperTypes() : Set {
+
+ var retVal : Set;
+ retVal.addAll(self.eSuperTypes);
+ for (st in self.eSuperTypes) {
+ retVal.addAll(st.getAllSuperTypes());
+ }
+ return retVal;
+}
+
+operation getModel(id) {
+ switch (id) {
+ case "l" : return cg!Model#input;
+ case "r" : return cg!Model#output;
+ case "m" : return cg!Model#middle;
+ }
+}
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/extras/GraphToGraphML.eol b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/extras/GraphToGraphML.eol
new file mode 100644
index 000000000..806eed464
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/extras/GraphToGraphML.eol
@@ -0,0 +1,148 @@
+var root : new gml!DocumentRoot;
+var graphml : new gml!GraphmlType;
+var g : new gml!GraphType;
+
+root.graphml = graphml;
+root.xMLNSPrefixMap.put("", "http://graphml.graphdrawing.org/xmlns");
+root.xMLNSPrefixMap.put("xsi", "http://www.w3.org/2001/XMLSchema-instance");
+root.xMLNSPrefixMap.put("y", "http://www.yworks.com/xml/graphml");
+root.xMLNSPrefixMap.put("yed", "http://www.yworks.com/xml/yed/3");
+root.xSISchemaLocation.put("http://graphml.graphdrawing.org/xmlns", "http://graphml.graphdrawing.org/xmlns/1.1/graphml.xsd");
+// Yed Node attributes
+// <key attr.name="description" attr.type="string" for="node" id="d5"/>
+var key5 : new gml!KeyType;
+key5.attrName = "description";
+key5.attrType = gml!KeyTypeType#string;
+key5.`for` = gml!KeyForType#node;
+key5.id = "d5";
+graphml.key.add(key5);
+// <key for="node" id="d6" yfiles.type="nodegraphics"/>
+var key6 : new gml!KeyType;
+key6.`for` = gml!KeyForType#node;
+key6.id = "d6";
+key6.yfilesType="nodegraphics";
+graphml.key.add(key6);
+
+//<key attr.name="description" attr.type="string" for="edge" id="d8"/>
+var key8 : new gml!KeyType;
+key8.attrName = "description";
+key8.attrType = gml!KeyTypeType#string;
+key8.`for` = gml!KeyForType#edge;
+key8.id = "d8";
+graphml.key.add(key8);
+//<key for="edge" id="d9" yfiles.type="edgegraphics"/>
+var key9 : new gml!KeyType;
+key9.`for` = gml!KeyForType#edge;
+key9.id = "d9";
+key9.yfilesType="edgegraphics";
+graphml.key.add(key9);
+
+// Graph information
+graphml.graph.add(g);
+g.edgedefault = gml!GraphEdgedefaultType#directed;
+g.id = "G";
+
+var nodeNodeMap : Map;
+for (gn in graph!Node.all()) {
+ var n = new gml!NodeType;
+ n.id = "n" + (loopCount-1);
+ g.node.add(n);
+ nodeNodeMap.put(gn, n.id);
+
+ /* Yed Information */
+ var d5 : new gml!DataType;
+ var d6 : new gml!DataType;
+ var sNode : new gml!ShapeNodeType;
+ var label : new gml!NodeLabelType;
+ var shape : new gml!ShapeType1;
+ var fill = new gml!FillType;
+
+ d5.key = key5.id;
+ n.data.add(d5);
+ d6.key = key6.id;
+ // Label
+ label.value = gn.label;
+ sNode.nodeLabel.add(label);
+ // Shape
+ // - MappingNode = round, orange
+ // - DataTypeNode = diamond
+ // - ClassNode = square
+ if (gn.isTypeOf(graph!MappingNode)) {
+ shape.type = gml!ShapeTypeType#ellipse;
+ fill.color = "#ff6600";
+ } else if (gn.isTypeOf(graph!DataTypeNode)) {
+ shape.type = gml!ShapeTypeType#diamond;
+ } else if (gn.isTypeOf(graph!ClassNode)) {
+ shape.type = gml!ShapeTypeType#rectangle;
+ }
+ if (gn.isTypeOf(graph!ClassNode)) {
+ switch (gn.`model`) {
+ case (graph!Model#input):
+ fill.color = "#ff00ff";
+ case (graph!Model#middle):
+ fill.color = "#ffcc00";
+ case (graph!Model#output):
+ fill.color = "#99ccff";
+ }
+
+ }
+ sNode.shape = shape;
+ fill.transparent = false;
+ sNode.fill = fill;
+ d6.shapeNode = sNode;
+ n.data.add(d6);
+}
+
+for (ge in graph!Edge.all()) {
+ var e = new gml!EdgeType;
+ e.source = nodeNodeMap.get(ge.source);
+ e.target = nodeNodeMap.get(ge.target);
+ e.id = "e" + (loopCount-1);
+ /* Yed Information */
+ var d9 = new gml!DataType;
+ d9.key = key9.id;
+ e.data.add(d9);
+ var plEdge = new gml!PolyLineEdgeType;
+ var arrow : new gml!ArrowsType;
+ arrow.target = gml!ArrowTypeType#standard;
+ arrow.source = gml!ArrowTypeType#none;
+ var style : new gml!LineStyleType;
+ style.type = gml!LineTypeType#line;
+ if (ge.isTypeOf(graph!DependencyEdge)) {
+ if (ge.multiple) {
+ style.color = "#ff0000";
+ } else {
+ if (ge.direction == graph!DependencyDirection#input) {
+ style.color = "#008000";
+ } else {
+ style.color = "#000000";
+ }
+
+ }
+ if (ge.derived) {
+ style.type = gml!LineTypeType#dotted;
+ }
+
+ } else if (ge.isTypeOf(graph!ReferenceEdge)) {
+ style.color = "#993366";
+ } else if (ge.isTypeOf(graph!ContainmentEdge)) {
+ switch (ge.`model`) {
+ case (graph!Model#input):
+ style.color = "#ff00ff";
+ case (graph!Model#middle):
+ style.color = "#ffcc00";
+ case (graph!Model#output):
+ style.color = "#0000ff";
+ }
+
+ }
+ plEdge.arrows= arrow;
+ plEdge.lineStyle = style;
+ d9.polyLineEdge = plEdge;
+ g.edge.add(e);
+}
+
+"Done".println();
+
+
+
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/extras/QVTcToText.egl b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/extras/QVTcToText.egl
new file mode 100644
index 000000000..264b7b5c6
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/extras/QVTcToText.egl
@@ -0,0 +1,96 @@
+[% for (i in qvtm!TypedModel.all()) { %]
+ [% for (p in i.usedPackage) { %]
+import [%=p.name.firstToUpperCase()%]: '[%=p.nsURI%]';
+ [% } %]
+[% } %]
+
+[% for (t in qvtm!Transformation.all()) { %]
+transformation [%=t.name %] {
+ [% for (mp in t.modelParameter) { %]
+ [%=mp.name%] imports [%=mp.usedPackage.collect(up | up.name.firstToUpperCase()).concat(",")%];
+ [%}%]
+}
+[% for (r in t.rule) {
+r.declaration(t);
+}
+}%]
+
+[% operation Mapping declaration(t) { %]
+map [%if (self.name.isDefined()){%][%=self.name%] in [%=t.name%][%}%] {
+[% for (d in self.domain) {
+ var domainName = "";
+ if (d.isCheckable) { domainName = "check ";}
+ if(d.isEnforceable) { domainName = domainName + "enforce ";}
+ domainName = domainName + d.name;%]
+ [%=domainName%] ([%
+ if (not d.guardPattern.variable.isEmpty()) {
+ for (v in d.guardPattern.variable){%]
+[%=v.name+":"+v.type.name%][%if(hasMore){%],
+[%out.print(" ");}%]
+ [%}%] |[%
+ }
+ if (not d.guardPattern.predicate.isEmpty()) {
+ for (p in d.guardPattern.predicate){%]
+
+ [%=p.toString()%];[%
+ }
+ }%]) {
+ [%
+ if (not d.bottomPattern.realizedVariable.includingAll(d.bottomPattern.variable).isEmpty()) {
+ for (v in d.bottomPattern.variable){%]
+ [%=v.name+":"+v.type.name%][%if(hasMore){%],[%}
+ }
+ for (v in d.bottomPattern.realizedVariable){%]
+ [%="realize "+v.name+":"+v.type.name%][%if(hasMore){%],[%}%]
+ [%}%] |[%
+ }
+ if (not d.bottomPattern.predicate.isEmpty()) {
+ for (p in d.bottomPattern.predicate){%]
+
+ [%=p.toString()%];[%
+ }
+ }
+ if (not d.bottomPattern.assignment.isEmpty()) {
+ for (p in d.bottomPattern.assignment){%]
+
+ [%=p.toString()%];[%
+ }
+ }%]
+ }
+ [%
+}%]
+ where ([%
+ if (not self.guardPattern.variable.isEmpty()) {
+ for (v in self.guardPattern.variable){%]
+[%=v.name+":"+v.type.name%][%if(hasMore){%],
+[%out.print(" ");}%]
+ [%}%] |[%
+ }
+ if (not self.guardPattern.predicate.isEmpty()) {
+ for (p in self.guardPattern.predicate){%]
+
+ [%=p.toString()%];[%
+ }
+ }%]) {
+ [%
+ for (v in self.bottomPattern.variable){%]
+ [%=v.name+":"+v.type.name%][%if(hasMore){%],[%}
+ }
+ for (v in self.bottomPattern.realizedVariable){%]
+ [%="realize "+v.name+":"+v.type.name%][%if(hasMore){%],[%}%]
+ [%}%] |[%
+ if (not self.bottomPattern.predicate.isEmpty()) {
+ for (p in self.bottomPattern.predicate){%]
+
+ [%=p.toString()%];[%
+ }
+ }
+ if (not self.bottomPattern.assignment.isEmpty()) {
+ for (p in self.bottomPattern.assignment){%]
+
+ [%=p.toString()%];[%
+ }
+ }%]}
+}
+
+[%}%]
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/extras/QVTiToText.egl b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/extras/QVTiToText.egl
new file mode 100644
index 000000000..4bf86d4fb
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/extras/QVTiToText.egl
@@ -0,0 +1,104 @@
+[%
+for (i in QVTi!TypedModel.all()) {
+ for (p in i.usedPackage) { %]
+import [%=p.name.firstToUpperCase()%]: '[%=p.nsURI%]';
+[%
+ }
+}
+for (t in QVTi!Transformation.all()) {%]
+
+transformation [%=t.name %] {
+[% for (mp in t.modelParameter) { %]
+ [%=mp.name%] imports [%=mp.usedPackage.collect(up | up.name.firstToUpperCase()).concat(",")%];
+[% }%]
+}
+[%
+ for (r in t.rule) {
+ r.declaration(t);
+ }
+}
+
+operation QVTi!Mapping declaration(t : QVTi!Transformation) {%]
+
+map [%if (self.name.isDefined()){%][%=self.name%] in [%=t.name%][%}%] {[%
+ for (d in self.domain) {
+ var domainName = "";
+ if (d.isCheckable) { domainName = "check ";}
+ if(d.isEnforceable) { domainName = domainName + "enforce ";}
+ domainName = domainName + d.name;%]
+
+ [%=domainName%][%=d.patterns()%][%
+ }%]
+
+ where[%=self.patterns()%]
+ [%if(self.mappingStatement.isDefined()) {%]
+[%=printMS(self.mappingStatement)%]
+ [%}%]
+}
+[%
+}
+
+operation QVTi!Area patterns() {%]
+ ([%
+ if (not self.guardPattern.variable.isEmpty()) {
+ for (v in self.guardPattern.variable){%]
+[%=v.name+":"+v.type.name%][%if(hasMore){%],
+[%out.print(" ");}%]
+[% }
+ }
+ if (not self.guardPattern.predicate.isEmpty()) {
+ for (p in self.guardPattern.predicate){%]
+[%=p.toString()%];
+[%if(hasMore){%]
+[%out.print(" ");}%]
+[%}}%]
+ ) {
+[%
+ if (not self.bottomPattern.realizedVariable.includingAll(self.bottomPattern.variable).isEmpty()) {
+ for (v in self.bottomPattern.variable){%]
+ [%=v.name+":"+v.type.name%][%if(hasMore){%],
+ [%}
+ }
+ for (v in self.bottomPattern.realizedVariable){%]
+ [%="realize "+v.name+":"+v.type.name%][%if(hasMore){%],
+ [%}%]
+[% }
+ }
+ if (not self.bottomPattern.predicate.isEmpty()) {
+ for (p in self.bottomPattern.predicate){%]
+
+ [%=p.toString()%];[%
+ }
+ }
+ if (not self.bottomPattern.assignment.isEmpty()) {
+ for (p in self.bottomPattern.assignment){%]
+
+ [%=p.toString()%];[%
+ }
+ }%]
+ }[%
+}
+
+operation printMS(call : QVTi!MappingCall) {%]
+call [%=call.referredMapping.name%] {
+ [% for (b in call.binding) {%]
+ [%=b.boundVariable.name%]:= [%=b.value.toString()%];
+ [%}%]
+ }
+[%}
+
+operation printMS(seq : QVTi!MappingSequence) {
+ for (ms in seq.mappingStatements) {
+ printMS(ms);
+ }
+}
+
+operation printMS(loop : QVTi!MappingLoop) {%]
+
+ for [%=loop.iterator.first().name%] in [%=loop.source.toString()%] {
+ [%if(loop.body.isDefined()) {%]
+ [%=printMS(loop.body)%]
+ [%}%]
+ }
+ [%
+}%]
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/extras/QVTsToGraphML.etl b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/extras/QVTsToGraphML.etl
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/extras/QVTsToGraphML.etl
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/extras/TreeToGraphML.eol b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/extras/TreeToGraphML.eol
new file mode 100644
index 000000000..12b09bf5d
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/extras/TreeToGraphML.eol
@@ -0,0 +1,40 @@
+var root : new gml!DocumentRoot;
+var graphml : new gml!GraphmlType;
+var g : new gml!GraphType;
+
+root.graphml = graphml;
+root.xMLNSPrefixMap.put("", "http://graphml.graphdrawing.org/xmlns");
+root.xMLNSPrefixMap.put("xsi", "http://www.w3.org/2001/XMLSchema-instance");
+root.xMLNSPrefixMap.put("y", "http://www.yworks.com/xml/graphml");
+root.xMLNSPrefixMap.put("yed", "http://www.yworks.com/xml/yed/3");
+root.xSISchemaLocation.put("http://graphml.graphdrawing.org/xmlns", "http://graphml.graphdrawing.org/xmlns/1.1/graphml.xsd");
+
+
+// Graph information
+graphml.graph.add(g);
+g.edgedefault = gml!GraphEdgedefaultType#directed;
+g.id = "G";
+
+for (l in tree!Node.all().select(n | not n.parent.isDefined())) {
+ var n = new gml!NodeType;
+ n.id = "n" + loopCount;
+ g.node.add(n);
+ l.addChildren(n);
+}
+
+"Done".println();
+
+operation tree!Node addChildren (parent : gml!NodeType) {
+ for (c in self.children) {
+ var n = new gml!NodeType;
+ n.id = parent.id + loopCount;
+ g.node.add(n);
+
+ var e = new gml!EdgeType;
+ e.source = parent.id;
+ e.target = n.id;
+ g.edge.add(e);
+ c.addChildren(n);
+ }
+}
+
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/helpers/ConfigQueries.eol b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/helpers/ConfigQueries.eol
new file mode 100644
index 000000000..ca4dab992
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/helpers/ConfigQueries.eol
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * Copyright (c) 2013 The University of York, Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Horacio Hoyos - initial implementation
+ ******************************************************************************/
+
+/****l* /org.eclipse.qvtd.build.etl/dependence/helpers/ConfigQueries
+ * NAME
+ * ConfigQueries -- Get information about the QVTc execution configuration
+ *
+ * MODELS
+ * Required models to run the script:
+ * - NAME ALIASES METAMODEL ROL SOD
+ * - config QVTcConfig.ecore X The candidate model Ecore
+ *
+ ******
+ */
+
+/****o* ConfigQueries/getAllMetamodelFiles
+ * NAME
+ * getAllMetamodelFiles - Returns a map of the metamodel files for the different
+ * directions of the transformation.
+ * FUNCTION
+ * The map returned is of the form: <dir, List<String>> where dir can be one of:
+ * "L", "M", "R".
+ * CONTEXT
+ * QVT!Area The are under test
+ * ANNOTATIONS
+ * cached
+ * SEE ALSO
+ * QVTHelpers/isMiddleDomain
+ * QVTHelpers/isOutputDomain
+ */
+operation getAllMetamodelFiles() : Map {
+
+ var files = new Map;
+ files.put("L",
+ config!Configuration.all().first().inputDirection.imports.collect(i | i.metamodelFile));
+ files.put("M",
+ config!Configuration.all().first().middle.imports.collect(i | i.metamodelFile));
+ files.put("R",
+ config!Configuration.all().first().outputDirection.collect(id | id.imports).collect(i | i.metamodelFile).flatten());
+ return files;
+}
+
+operation getLeftModelMetamodelFile() : String {
+
+ return config!Configuration.all().first().inputDirection.imports.collect(i | i.metamodelFile).flatten();
+}
+
+operation getMiddleModelMetamodelFile() : String {
+
+ return config!Configuration.all().first().middle.imports.collect(i | i.metamodelFile).flatten();
+}
+
+// TODO We can only handle 1 R model. This must be adjusted when we have many.
+operation getRightModelsMetamodelFiles() : String {
+
+ return config!Configuration.all().first().outputDirection.collect(id | id.imports).collect(i | i.metamodelFile).flatten().first();
+}
+
+
+
+operation getLeftModelPackage() : String {
+
+ return config!Configuration.all().first().inputDirection.`import`.package;
+}
+
+operation getMiddleModelPackage() : String {
+
+ return config!Configuration.all().first().middle.`import`.package;
+}
+
+operation getRightModelPackage() : String {
+
+ return config!Configuration.all().first().outputDirection.first().`import`.package;
+}
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/helpers/DataDependenceGraphHelpers.eol b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/helpers/DataDependenceGraphHelpers.eol
new file mode 100644
index 000000000..5c0eb34e9
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/helpers/DataDependenceGraphHelpers.eol
@@ -0,0 +1,262 @@
+/*******************************************************************************
+ * Copyright (c) 2013 The University of York and Willink Transformations.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Horacio Hoyos - initial implementation
+ ******************************************************************************/
+import "QVTHelpers.eol";
+
+/****l* /org.eclipse.qvtd.build.etl/helpers/DataDependenceGraphHelpers
+ * NAME
+ * DataDependenceGraphHelpers -- A set of EOL helpers to perform mapping data
+ * dependence analysis for a QVT transformation.
+ *
+ * SEE ALSO
+ *
+ ******
+ */
+
+
+
+/****o* org.eclipse.qvtd.build.etl/helpers/DataDependenceGraphHelpers/getNodeForQvtAstNode
+ * NAME
+ * getNodeForQvtAstNode - Get the correspoiding graph node for the AST node.
+ * FUNCTION
+ * If a graph node for the AST node does not exist, it creates a new one. If it
+ * exists, it returns the previously created one.
+ *
+ * CONTEXT
+ * ddg!Graph The data dependence graph
+ * PARAMETERS
+ * astNode The QVT AST node for whihc the corresponding graph node is wanted
+ * nodeMap The map to keep a cache of AST - Node relations
+ * RESULT
+ * ddg!Node The node that corresponds to the AST node
+ * SEE ALSO
+ *
+ */
+operation ddg!Graph getNodeForQvtAstNode(astNode : QVT!NamedElement, nodeMap : Map) : Set {
+ var res :Set;
+ if (nodeMap.containsKey(astNode)) {
+ return nodeMap.get(astNode);
+ } else {
+ // TODO Different node types for different AST node types. If the type of the AST node is DataType, things change!
+ if (astNode.isTypeOf(QVT!Mapping)) {
+ var n = self.owningModel().createInstance("MappingNode");
+ n.label = astNode.name;
+ n.qvtAstNode = astNode;
+ res.add(n);
+ } else if (astNode.isKindOf(QVT!Variable)) {
+ if (astNode.type.isTypeOf(QVT!PrimitiveType)) {
+ errln("getNodeForQvtAstNode -> PrimitiveType, should not get here.");
+ } else {
+ if (astNode.type.isAbstract) {
+ for (vSub in astNode.type.package.ownedType.select(t | t.superClass.includes(astNode.type))) {
+ var n = self.owningModel().createInstance("ClassNode");
+ if (astNode.oppositePattern().area.isMiddleDomain()) {
+ n.`model` = ddg!Model#middle;
+ } else if(astNode.oppositePattern().area.isInputDomain()) {
+ n.`model` = ddg!Model#input;
+ } else if(astNode.oppositePattern().area.isOutputDomain()) {
+ n.`model` = ddg!Model#output;
+ }
+ n.label = vSub.name;
+ n.qvtAstNode = astNode;
+ res.add(n);
+ }
+ } else {
+ var n = self.owningModel().createInstance("ClassNode");
+ if (astNode.oppositePattern().area.isMiddleDomain()) {
+ n.`model` = ddg!Model#middle;
+ } else if(astNode.oppositePattern().area.isInputDomain()) {
+ n.`model` = ddg!Model#input;
+ } else if(astNode.oppositePattern().area.isOutputDomain()) {
+ n.`model` = ddg!Model#output;
+ }
+ n.label = astNode.type.name;
+ n.qvtAstNode = astNode;
+ res.add(n);
+ }
+ }
+ } else {
+ astNode.println("why? ");
+ }
+ nodeMap.put(astNode, res);
+ }
+ self.elements.addAll(res);
+ return res;
+}
+
+
+/****o* org.eclipse.qvtd.build.etl/helpers/DataDependenceGraphHelpers/getNodeForDataType
+ * NAME
+ * getNodeForDataType - Get the correspoiding graph node for the AST node.
+ * FUNCTION
+ * If a graph node for the AST node does not exist, it creates a new one. If it
+ * exists, it returns the previously created one.
+ *
+ * CONTEXT
+ * ddg!Graph The data dependence graph
+ * PARAMETERS
+ * astNode The QVT AST node for whihc the corresponding graph node is wanted
+ * nodeMap The map to keep a cache of AST - Node relations
+ * RESULT
+ * ddg!Node The node that corresponds to the AST node
+ * SEE ALSO
+ *
+ */
+operation ddg!Graph getNodeForDataType(use : Sequence, nodeMap : Map) : ddg!Node {
+ var n;
+ if (nodeMap.containsKey(use)) {
+ n = nodeMap.get(use);
+ } else {
+ // TODO Different node types for different AST node types. If the type of the AST node is DataType, things change!
+ n = self.owningModel().createInstance("DataTypeNode");
+ n.label = use.collect(u | u.name).concat(".");
+ n.type = use.first();
+ n.attribute = use.last();
+ nodeMap.put(use, n);
+ self.elements.add(n);
+ }
+ return n;
+}
+
+/****o* org.eclipse.qvtd.build.etl/helpers/DataDependenceGraphHelpers/getNodeForTreeNode
+ * NAME
+ * getNodeForTreeNode - Get the correspoiding graph node for the tree node.
+ * FUNCTION
+ * If a graph node for the tree node does not exist, it creates a new one. If it
+ * exists, it returns the previously created one.
+ *
+ * CONTEXT
+ * ddg!Graph The data dependence graph
+ * PARAMETERS
+ * treeNode The tree node for which the corresponding graph node is wanted
+ * nodeMap The map to keep a cache of Tree - Node relations
+ * RESULT
+ * ddg!Node The node that corresponds to the AST node
+ * SEE ALSO
+ *
+ */
+operation ddg!Graph getNodeForTreeNode(treeNode : tree!Node, nodeMap : Map) : ddg!Node {
+ var n;
+ if (nodeMap.containsKey(treeNode)) {
+ n = nodeMap.get(treeNode);
+ } else {
+ n = self.owningModel().createInstance("ClassNode");
+ n.label = treeNode.EClassName;
+ nodeMap.put(treeNode, n);
+ self.elements.add(n);
+ }
+ return n;
+}
+
+/****o* org.eclipse.qvtd.build.etl/helpers/DataDependenceGraphHelpers/getNodeCopy
+ * NAME
+ * getNodeCopy - Get a copy of the Node
+ * FUNCTION
+ * Creates a new Node and copies all the attributes from the original one
+ * CONTEXT
+ * ddg!Graph The graph that owns the node
+ * PARAMETERS
+ * ddNode The node to copy
+ * mergeMap The cache of copyed nodes
+ * SEE ALSO
+ *
+ */
+operation ddg!Graph getNodeCopy(ddNode : ddg!Node, mergeMap : Map) : ddg!Node {
+ var n;
+ if (mergeMap.containsKey(ddNode)) {
+ n = mergeMap.get(ddNode);
+ } else {
+ if (ddNode.isTypeOf(ddg!ClassNode)) {
+ n = self.owningModel().createInstance("ClassNode");
+ n.`model` = ddNode.`model`;
+ } else if (ddNode.isTypeOf(ddg!DataTypeNode)) {
+ n = self.owningModel().createInstance("DataTypeNode");
+ n.attribute = ddNode.attribute;
+ } else if (ddNode.isTypeOf(ddg!MappingNode)) {
+ n = self.owningModel().createInstance("MappingNode");
+ }
+ n.label = ddNode.label;
+ n.qvtAstNode = ddNode.qvtAstNode;
+ mergeMap.put(ddNode, n);
+ self.elements.add(n);
+ }
+ return n;
+}
+
+
+
+/****o* org.eclipse.qvtd.build.etl/helpers/DataDependenceGraphHelpers/importContainmentTree
+ * NAME
+ * importContainmentTree - Import metamodel containment trees into data dependence graph.
+ * FUNCTION
+ * Copies all the nodes in the metamodel containment tree into the data
+ * dependence graph and creates containment edges between them.
+ * CONTEXT
+ * ddg!Graph The graph to where the tree is imported
+ * PARAMETERS
+ * treeNodes A set of the tree nodes to be copied into the graph
+ * treeType The type of tree being imported: l=left,m=middle,r=right
+ * SEE ALSO
+ *
+ */
+operation ddg!Graph importContainmentTree(treeNodes : Collection, treeType : String, mergeMap : Map) {
+ var m;
+ switch (treeType) {
+ case("l") :
+ m = ddg!Model#input;
+ case("m") :
+ m = ddg!Model#middle;
+ case("r") :
+ m = ddg!Model#output;
+ }
+ for (tn in treeNodes.excluding(treeNodes.selectOne(n | n.parent.isEmpty()))) {
+ var n = self.getNodeForTreeNode(tn, mergeMap);
+ n.`model` = m;
+ for (c in tn.children) {
+ var e = self.owningModel().createInstance("ContainmentEdge");
+ e.`model` = m;
+ e.source = n;
+ e.target = self.getNodeForTreeNode(c, mergeMap);
+ self.elements.add(e);
+ }
+ }
+}
+
+
+
+/****o* org.eclipse.qvtd.build.etl/helpers/DataDependenceGraphHelpers/dfsDerivedVariables
+ * NAME
+ * dfsDerivedVariables - Do a depth first search for derived variables.
+ * SYNOPSIS
+ *
+ * FUNCTION
+ * Traverses the outgoing edges which has a type different from
+ * ddg!EdgeType#primaryInput. There is no need to query opposite relations as
+ * the outgoing relations are the only valid ones.
+ * CONTEXT
+ * ddg!Node
+ * PARAMETERS
+ * varPool The set of variables we are looking for
+ * RESULT
+ * A set of all the derived variables
+ * SEE ALSO
+ *
+ */
+operation ddg!Node dfsDerivedVariables(varPool : Collection) : Set {
+ self.println("DFS ");
+ self.~visited = true; // mark to avoid loops
+ var derived = new Set;
+
+ // Find all the edges that connect to variables in the pool, in the
+ // data dependence graph, all outgoing edges are navigable
+ derived.addAll(self.outgoing.select(e | varPool.includes(e.target)).collect(e | e.target));
+ self.~visited = false; // So it can be visited by other searches
+ return derived;
+}
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/helpers/Math.eol b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/helpers/Math.eol
new file mode 100644
index 000000000..6eea191d8
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/helpers/Math.eol
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2013 The University of York and Willink Transformations.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Horacio Hoyos - initial implementation
+ ******************************************************************************/
+
+/****l* org.eclipse.qvtd.build.etl/helpers/Math
+ * Math helpers. Implementation of grapg, set, etc., algorithms
+ *
+ */
+
+/****o* org.eclipse.qvtd.build.etl/helpers/Math/greedySetCover
+ * NAME
+ * greedySetCover - Calculate the greedy solution for the set cover problem
+ * FUNCTION
+ * Input: Given a set U of n elements, a collection S1, S2, . . . Sm of
+ * subsets of U, with weights wi
+ * Goal: Find a collection C of these sets Si whose union is equal to U and
+ * such that
+ * |latex \begin{eqnarray}
+ * |latex \sum_{i\in C}w_i
+ * |latex \end{eqnarray}
+ * is minimized.
+ * PARAMETERS
+ * U Set to match
+ * S Map of {i, Si}
+ * RESULT
+ * A Collection of the subsests that cover U
+ *
+ */
+operation greedySetCover(U : Sequence, S : Map) : Sequence {
+ var C : Sequence;
+ var R = U;
+ while (not R.isEmpty()) {
+ //R.println("R ");
+ var min : Real = 1; // Since we have unit cost, 1 is the max possible value
+ var cS;
+ var sVal : Real;
+ for (k in S.keySet().excludingAll(C)) {
+ var s = S.get(k).including(k);
+ //if (not s.isEmpty()) {
+ //k.println("k ");
+ //s.println("s ");
+ //s.select(v | R.includes(v)).size().println("s \\U R ");
+ sVal = 1 / s.select(v | R.includes(v)).size().asReal();
+ //sVal.println("sVal ");
+ if (sVal <= min) {
+ min = sVal;
+ cS = k;
+ }
+ //}
+ }
+ C.add(cS);
+ R.removeAll(S.get(cS).including(cS));
+ }
+ return C;
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/helpers/OCLExpressionAnalysis.eol b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/helpers/OCLExpressionAnalysis.eol
new file mode 100644
index 000000000..c8fb682b0
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/helpers/OCLExpressionAnalysis.eol
@@ -0,0 +1,202 @@
+/*******************************************************************************
+ * Copyright (c) 2013 The University of York and Willink Transformations.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Horacio Hoyos - initial implementation
+ ******************************************************************************/
+import "../helpers/OclLibHelper.eol";
+
+/****l* /org.eclipse.qvtd.build.etl/helpers/OCLExpressionAnalysis
+ * NAME
+ * QVTiDependenceAnalysis -- Helper functions to analyze OCLExpressions in QVT
+ * and understand the relations between variables used in them.
+ */
+
+/****o* OCLExpressionAnalysis/fixVarReferences
+ * NAME
+ * fixVarReferences - Fixes all references to a variable within the OCL
+ * expression.
+ * FUNCTION
+ * Matches all variables in the expression with the same name and type as the
+ * input variable and replaces them by references to it.
+ * CONTEXT
+ * QVT!OCLExpression The expression for which the references are being fixed
+ * PARAMETERS
+ * v The variable to fix
+ */
+operation QVT!OCLExpression fixVarReferences(v : QVT!Variable) {
+ if (self.isTypeOf(QVT!VariableExp)) {
+ if (self.referredVariable.name = v.name) {
+ self.referredVariable = v;
+ }
+ } else if (self.isTypeOf(QVT!OperationCallExp)) {
+ self.source.fixVarReferences(v);
+ for (arg in self.argument) {
+ arg.fixVarReferences(v);
+ }
+ } else if (self.isKindOf(QVT!NavigationCallExp)) {
+ self.source.fixVarReferences(v);
+ } else if (self.isTypeOf(QVT!IfExp)) {
+ self.condition.fixVarReferences(v);
+ self.elseExpression.fixVarReferences(v);
+ self.thenExpression.fixVarReferences(v);
+ } else if (self.isTypeOf(QVT!CollectionLiteralExp)) {
+ for (p in self.part) {
+ if (p.isTypeOf(QVT!CollectionItem)) {
+ p.item.fixVarReferences(v);
+ } else if (p.isTypeOf(QVT!CollectionRange)) {
+ p.first.fixVarReferences(v);
+ p.last.fixVarReferences(v);
+ }
+ }
+ } else if (self.isKindOf(QVT!LiteralExp)) {
+ // Noting to fix
+ } else if (self.isKindOf(QVT!IteratorExp)) {
+ self.body.fixVarReferences(v);
+ self.source.fixVarReferences(v);
+ } else {
+ self.println();
+ throw "Error! Add fixVarReference() for " + self.type();
+ }
+ }
+
+/****o* OCLExpressionAnalysis/findReferencedVariables
+ * NAME
+ * findReferencedVariables - Returns the set of variables used in the OCL
+ * expression.
+ * CONTEXT
+ * QVT!OCLExpression The expression to analyze
+ *
+ */
+operation QVT!OCLExpression findReferencedVariables() : Set {
+ return self.findReferencedVariables(Set{});
+}
+
+/****o* OCLExpressionAnalysis/findReferencedVariables
+ * NAME
+ * findReferencedVariables - Returns the set of variables used in the OCL
+ * expression, ignoring the variables in the ignore set. Usefull for analyzing
+ * IteratorExp (ignore loop variables)
+ * CONTEXT
+ * QVT!OCLExpression The expression to analyze
+ * PARAMETERS
+ * ignore The set of variables to ignore in the analysis
+ */
+operation QVT!OCLExpression findReferencedVariables(ignore : Set) : Set {
+ var varRefs : Set();
+ if (self.isTypeOf(QVT!VariableExp)) {
+ varRefs.add(self.referredVariable);
+ } else if (self.isTypeOf(QVT!OperationCallExp)) {
+ varRefs.addAll(self.source.findReferencedVariables());
+ for (arg in self.argument) {
+ varRefs.addAll(arg.findReferencedVariables());
+ }
+ } else if (self.isTypeOf(QVT!PropertyCallExp)) {
+ varRefs.addAll(self.source.findReferencedVariables());
+ } else if (self.isTypeOf(QVT!IfExp)) {
+ varRefs.addAll(self.condition.findReferencedVariables());
+ varRefs.addAll(self.elseExpression.findReferencedVariables());
+ varRefs.addAll(self.thenExpression.findReferencedVariables());
+ } else if (self.isTypeOf(QVT!CollectionLiteralExp)) {
+ // TODO Check that it is a collection of variables.
+ // TODO what if it is a collection of collections or other OCL types?
+ for (p in self.part) {
+ if (p.isTypeOf(QVT!CollectionItem)) {
+ varRefs.addAll(p.item.findReferencedVariables());
+ } else if (p.isTypeOf(QVT!CollectionRange)) {
+ varRefs.addAll(p.first);
+ varRefs.addAll(p.last);
+ } else {
+ self.println();
+ throw "Error! Add findReferencedVariables() for " + p.type() + " in collections";
+ }
+ }
+ } else if (self.isKindOf(QVT!IteratorExp)) {
+ // Ignore iterator variables
+ varRefs.addAll(self.body.findReferencedVariables(self.iterator));
+ varRefs.addAll(self.source.findReferencedVariables());
+ } else if (self.isKindOf(QVT!LiteralExp) or self.isTypeOf(QVT!TypeExp)) {
+ // Noting to add
+ } else {
+ self.println();
+ throw "Error! Add findReferencedVariables() for " + self.type();
+ }
+ return varRefs.excludingAll(ignore);
+}
+
+ // Determine if the OCLExpression is of the form
+ // varA.attribute = varB
+ // TODO The OCLStdLib is tricky, the "=" operation should be checked better
+operation QVT!OCLExpression isSimpleAttributeNavigation() : Boolean {
+ // 1. The OCLExpression must be an operation call
+ if (self.isTypeOf(QVT!OperationCallExp)) {
+ // 2. The Operation must be a OclAny "=", operation
+ //if (self.referredOperation == self.referredOperation.owningType.getOperationByName("=")) {
+ if (self.referredOperation.name == "=") {
+ // The arguments must be 1: VariableExp
+ if ( (self.argument.size() == 1) and self.argument.first().isTypeOf(QVT!VariableExp)) {
+ // The source must be a PropertyCallExp
+ if (self.source.isTypeOf(QVT!PropertyCallExp)) {
+ // the source's source must be a VariableExp
+ if (self.source.source.isTypeOf(QVT!VariableExp)) {
+ return true;
+ }
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+// Only call if isSimpleAttributeNavigation returns true
+// We are only interested in domains
+operation QVT!OCLExpression isSingleDomained() : Boolean {
+ return self.argument.first().referredVariable.oppositePattern().area.isTypeOf(QVT!CoreDomain)
+ and self.argument.first().referredVariable.oppositePattern().area == self.source.source.referredVariable.oppositePattern().area;
+}
+
+// Only call if isSimpleAttributeNavigation returns true
+// We are only interested in domains
+operation QVT!PropertyAssignment isSingleDomained() : Boolean {
+ return self.slotExpression.referredVariable.oppositePattern().area == self.value.referredVariable.oppositePattern().area;
+}
+
+
+// Only call if isSimpleAttributeNavigation returns true
+// TODO If isSimpleAttributeNavigation is a requirement, the if statement should
+// not exist!
+operation QVT!OCLExpression getNavigatedProperty() : QVT!Property {
+ if (self.source.isTypeOf(QVT!PropertyCallExp)) {
+ return self.source.referredProperty;
+ }
+}
+
+//
+// Only call if isSimpleAttributeNavigation returns true
+operation QVT!OCLExpression isArgumentVariable(v : QVT!Variable) : Boolean {
+ if (self.argument.first().isTypeOf(QVT!VariableExp) and self.argument.first().referredVariable == v) {
+ return true;
+ }
+ return false;
+}
+
+operation QVT!OCLExpression isSourceVariable(v : QVT!Variable) : Boolean {
+ if (self.source.source.isTypeOf(QVT!VariableExp) and self.source.source.referredVariable == v) {
+ return true;
+ }
+ return false;
+}
+
+operation OCLExpression containmentPredicate() : Boolean {
+
+}
+
+// Only invoke if ocl expression is simple attribute navigation
+operation QVT!OCLExpression getReferredProperty() : Any {
+
+ return self.source.referredProperty;
+ } \ No newline at end of file
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/helpers/OclLibHelper.eol b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/helpers/OclLibHelper.eol
new file mode 100644
index 000000000..669df20a2
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/helpers/OclLibHelper.eol
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2013 The University of York and Willink Transformations.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Horacio Hoyos - initial implementation
+ ******************************************************************************/
+// ========= OCL Lib queries ================
+
+/**
+ * Returns the operation of the given name that belongs to the given type.
+ * <p>
+ * The operation is @chached to improve performance.
+ *
+ * @param name the name of the operation
+ * @param owningType the type to which the operation belongs
+ */
+operation oclStdLib!Class getOperationByName(name : String) : oclStdLib!Operation {
+ return self.ownedOperation.selectOne(o | o.name == name);
+}
+
+operation getPrimitiveTypeByName(name : String) : oclStdLib!PrimitiveType {
+ return oclStdLib!PrimitiveType.all.selectOne(t | t.name == name);
+}
+
+operation getClassByName(name : String) : oclStdLib!Class {
+ return oclStdLib!Class.all().selectOne(c | c.name == name);
+}
+
+// HACK There must be a "correct" way to acces the OCL Std Library!
+@cached
+operation getOclAnyEqualsOp() : Any {
+ return oclStdLib.getElementById("T.ocl.OclAny").ownedOperation.selectOne(op | op.name == "=");
+}
+
+// HACK There must be a "correct" way to acces the OCL Std Library!
+@cached
+operation getOclElementAllInstancesOp() : Any {
+ return oclStdLib.getElementById("T.ocl.OclElement").ownedOperation.selectOne(op | op.name == "allInstances");
+}
+
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/helpers/PromoteToQVTModel.eol b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/helpers/PromoteToQVTModel.eol
new file mode 100644
index 000000000..2c869d193
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/helpers/PromoteToQVTModel.eol
@@ -0,0 +1,109 @@
+/**
+ * Returns the tranformation of a mapping. Does a bottom up recursive search
+ */
+operation QVT!Mapping getTransforamtion() : QVT!Transformation {
+ if (self.transformation.isDefined()) {
+ return self.transformation;
+ } else if (self.context.isDefined()) {
+ return self.context.getTransforamtion();
+ } else {
+ self.err("Cotextless mapping ");
+ }
+}
+ /* this can be getAllPatterns, see how is is called for all atributes with super classes */
+@cached
+operation QVT!Area getContextMappingPatterns() : Sequence {
+
+ var mapping;
+ if (self.isTypeOf(QVT!CoreDomain)) {
+ mapping = self.rule;
+ } else if (self.isTypeOf(QVT!Mapping)) {
+ mapping = self;
+ }
+ var searchPatterns = new Sequence;
+ if (mapping.context.isDefined()) {
+ searchPatterns.addAll(mapping.context.domain.collect(d | d.guardPattern).flatten());
+ searchPatterns.addAll(mapping.context.domain.collect(d | d.bottomPattern).flatten());
+ searchPatterns.add(mapping.context.guardPattern);
+ searchPatterns.add(mapping.context.bottomPattern);
+ searchPatterns.addAll(mapping.context.getContextMappingPatterns());
+ }
+ return searchPatterns;
+
+}
+
+/****o* /org.eclipse.qvtd.build.etl/helpers/QVTHelpers/getInputVars
+ * NAME
+ * getInputVars - Returns the input variables of the Mapping, excluding DataType
+ * variables
+ *
+ * CONTEXT
+ * QVT!Rule The mapping
+ * ANNOTATIONS
+ * cached
+ * SEE ALSO
+ * /org.eclipse.qvtd.build.etl/helpers/QVTHelpers/getOutputVars
+ */
+@cached
+operation QVT!Rule getInputVars() : Sequence {
+
+ var vars: Sequence;
+ vars = self.guardPattern.variable
+ .includingAll(self.domain.collect(d | d.guardPattern).flatten().collect(gp | gp.variable).flatten()
+ .select(v | not v.type.isTypeOf(QVT!PrimitiveType))).asSequence();
+ //for (l in self.local) {
+ // vars = vars.includingAll(l.getInputVars());
+ //}
+ // QVTc, QVTu, QVTm: Do the same for all refined rules
+ //for (r in self.refinement) {
+ // vars = vars.includingAll(r.getInputVars());
+ //}
+ return vars;
+}
+
+@cached
+operation QVT!Rule getOutputVars() : Sequence {
+
+ var vars: Sequence;
+ vars = self.bottomPattern.realizedVariable
+ .includingAll(self.domain.collect(d | d.bottomPattern).flatten().collect(gp | gp.realizedVariable).flatten()
+ .select(v | not v.type.isTypeOf(QVT!PrimitiveType))).asSequence();
+ //for (l in self.local) {
+ // vars = vars.includingAll(l.getInputVars());
+ //}
+ // QVTc, QVTu, QVTm: Do the same for all refined rules
+ //for (r in self.refinement) {
+ // vars = vars.includingAll(r.getInputVars());
+ //}
+ return vars;
+}
+
+ /* Added the commented code to add it to QVTc model */
+@cached
+operation QVT!Mapping getAllAssignments() : Sequence {
+ var asgs : Sequence;
+ asgs.addAll(self.bottomPattern.assignment);
+ for (d in self.domain) {
+ asgs.addAll(d.bottomPattern.assignment);
+ }
+ //for (l in self.local) {
+ // asgs.addAll(l.getAllAssignments());
+ //}
+ return asgs;
+}
+
+/* Added the commented code to add it to QVTc model */
+@cached
+operation QVT!Mapping getAllPredicates() : Sequence {
+ var pdcts : Sequence;
+ pdcts.addAll(self.bottomPattern.predicate);
+ pdcts.addAll(self.guardPattern.predicate);
+ for (d in self.domain) {
+ pdcts.addAll(d.bottomPattern.predicate);
+ pdcts.addAll(d.guardPattern.predicate);
+ }
+ //for (l in self.local) {
+ // pdcts.addAll(l.getAllPredicates());
+ //}
+ return pdcts;
+}
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/helpers/QVTHelpers.eol b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/helpers/QVTHelpers.eol
new file mode 100644
index 000000000..63064f960
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/helpers/QVTHelpers.eol
@@ -0,0 +1,966 @@
+/*******************************************************************************
+ * Copyright (c) 2013 The University of York and Willink Transformations.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Horacio Hoyos - initial implementation
+ ******************************************************************************/
+import "OCLExpressionAnalysis.eol";
+
+/****l* /org.eclipse.qvtd.build.etl/helpers/QVTHelpers
+ * NAME
+ * QVTHelpers -- A set of operations to query, format, interpret, etc.,
+ * information from a QVT model.
+ * NOTES
+ * Some of this operations can/should be moved to the QVTcore model/code
+ */
+
+/****o* QVTHelpers/isInputDomain
+ * NAME
+ * isInputDomain - Returns true if the area is of type QVT!CoreDomain and it's
+ * TypedModel is the input domain.
+ *
+ * CONTEXT
+ * QVT!Area The are under test
+ * ANNOTATIONS
+ * cached
+ * SEE ALSO
+ * QVTHelpers/isMiddleDomain
+ * QVTHelpers/isOutputDomain
+ */
+@chached
+operation QVT!Area isInputDomain() : Boolean {
+ return self.isTypeOf(QVT!CoreDomain) and
+ config!Configuration.all.first().inputDirection.name == self.typedModel.name;
+}
+
+/****o* QVTHelpers/isMiddleDomain
+ * NAME
+ * isMiddleDomain - Returns true if the area belongs to the middle domain, i.e.
+ * it is a QVT!Mapping.
+ *
+ * CONTEXT
+ * QVT!Area The are under test
+ * ANNOTATIONS
+ * cached
+ * SEE ALSO
+ * QVTHelpers/isInputDomain
+ * QVTHelpers/isOutputDomain
+ */
+@chached
+operation QVT!Area isMiddleDomain() : Boolean {
+ return self.isTypeOf(QVT!Mapping);
+}
+
+/****o* QVTHelpers/isOutputDomain
+ * NAME
+ * isOutputDomain - Returns true if the area is of type QVT!CoreDomain and it's
+ * TypedModel is the output domain.
+ *
+ * CONTEXT
+ * QVT!Area The are under test
+ * ANNOTATIONS
+ * cached
+ * SEE ALSO
+ * QVTHelpers/isInputDomain
+ * QVTHelpers/isMiddleDomain
+ */
+@chached
+operation QVT!Area isOutputDomain() : Boolean {
+ return self.isTypeOf(QVT!CoreDomain) and
+ config!Configuration.all.first().outputDirection.collect(od | od.name).includes(self.typedModel.name);
+}
+
+
+/****o* QVTHelpers/isCheckMode
+ * NAME
+ * isCheckMode - Indicates if the transformation is invoked in check mode.
+ * ANNOTATIONS
+ * cached
+ * RESULT
+ * True if the condifuration mode is Mode#check
+ * SEE ALSO
+ * QVTHelpers/isEnforceMode
+ */
+@chached
+operation isCheckMode() : Boolean {
+ return config!Configuration.all.first().mode == config!Mode#check;
+}
+
+
+/****o* QVTHelpers/isEnforceMode
+ * NAME
+ * isEnforceMode - Indicates if the transformation is invoked in enforce mode.
+ * ANNOTATIONS
+ * cached
+ * RESULT
+ * True if the condifuration mode is Mode#enforcement
+ * SEE ALSO
+ * QVTHelpers/isCheckMode
+ */
+@chached
+operation isEnforceMode() : Boolean {
+ return config!Configuration.all.first().mode == config!Mode#enforce;
+}
+
+
+/****o* QVTHelpers/getMiddleTypedModel
+ * NAME
+ * getMiddleTypedModel - Returns the TypedModel reference for the middle domain
+ * ANNOTATIONS
+ * cached
+ * RESULT
+ * A reference to the TypeModel of the middle domain.
+ */
+@cached
+operation QVT!Transformation getMiddleTypedModel() : QVT!TypedModel {
+
+ if (self.modelParameter.one(tm | not tm.name.isDefined())) {
+ return self.modelParameter.selectOne(tm | not tm.name.isDefined());
+ } else {
+ return self.modelParameter.selectOne(tm | tm.name = config!Configuration.all.first().middle.name);
+ }
+
+}
+
+/****o* QVTHelpers/oppositePattern
+ * NAME
+ * oppositePattern - Returns the pattern to which a variable belongs
+ * ANNOTATIONS
+ * cached
+ * RESULT
+ * The core pattern in which the variable is instanciated/referenced
+ */
+@cached
+operation QVT!Variable oppositePattern() : QVT!CorePattern {
+
+ return self.owningModel().getAllOfKind("CorePattern").selectOne(p | p.variable.includes(self));
+}
+
+@cached
+operation QVT!RealizedVariable oppositePattern() : QVT!CorePattern {
+
+ return self.owningModel().getAllOfType("BottomPattern").selectOne(p | p.realizedVariable.includes(self));
+}
+
+
+/****o* QVTHelpers/getArea
+ * NAME
+ * getArea - Returns the area that defines the context of an OCL Expression.
+ * FUNCTION
+ * The area of an OCL Expression depends on the area of the variables used
+ * in the expression, and thus all the parts of the expression are inspected
+ * to find variable references and then their area
+ * ANNOTATIONS
+ * cached
+ * RESULT
+ * The core pattern in which the variable is instanciated/referenced
+ * TODO
+ * What if the OCL Ecpression contains references to multiple variables in
+ * multiple areas? return a collection and let the caller decide?
+ */
+@cached
+operation QVT!OCLExpression getArea() : QVT!Area {
+ if (self.isTypeOf(QVT!VariableExp)) {
+ if (self.referredVariable.type() == null) {
+ return null;
+ }
+ return self.referredVariable.oppositePattern().area;
+ } else if (self.isKindOf(QVT!CallExp)) {
+ return self.source.getArea();
+ } else if (self.isTypeOf(QVT!IfExp)) {
+ return self.condition.getArea();
+ } else if (self.isKindOf(QVT!LiteralExp)) {
+ return null;
+ } else {
+ self.println();
+ throw "Error! Add getArea for " + self.type();
+ }
+ return null;
+}
+
+/****o* QVTHelpers/findReferencedVariables
+ * NAME
+ * findReferencedVariables - Returns the collection of all varaibles referenced
+ * in the assignment.
+ * CONTEXT
+ * QVT!Assignment
+ * ANNOTATIONS
+ * cached
+ * RESULT
+ * A collection of all the varaibles found.
+ */
+@cached
+operation QVT!Assignment findReferencedVariables() : Collection {
+
+ var varRefs : Set();
+ varRefs = self.value.findReferencedVariables();
+ if (self.isTypeOf(QVT!PropertyAssignment)) {
+ varRefs.addAll(self.slotExpression.findReferencedVariables());
+ } else if (self.isTypeOf(QVT!VariableAssignment)) {
+ varRefs.add(self.targetVariable);
+ }
+ return varRefs;
+}
+
+/****o* QVTHelpers/findReferencedVariables
+ * NAME
+ * findReferencedVariables - Returns the collection of all varaibles referenced
+ * in the assignment.
+ * CONTEXT
+ * QVT!Predicate
+ * ANNOTATIONS
+ * cached
+ * RESULT
+ * A collection of all the varaibles found.
+ */
+@cached
+operation QVT!Predicate findReferencedVariables() : Collection {
+ return self.conditionExpression.findReferencedVariables();
+}
+
+/****o* QVTHelpers/retypeVar
+ * NAME
+ * retypeVar - Retypes a variable to the less abstract type of all variables, in
+ * the pattern, with the same name.
+ * CONTEXT
+ * QVT!Variable
+ * PARAMETERS
+ * pattern The pattern to search for variables with the same name
+ */
+operation QVT!Variable retypeVar(pattern : QVT!Pattern) {
+ var refinedVars = pattern.variable.select(
+ v | v.name == self.name
+ );
+ if (refinedVars.size() > 0) {
+ //var x = new Native("org.eclipse.qvtd.build.etl.PivotUtil");
+ //var lrv = x.getLowestRankVariable(refinedVars.including(self));
+ var lrv = getLowestRankVariable(refinedVars.including(self));
+ self.type = lrv.type;
+ }
+}
+
+/****o* QVTHelpers/retypeRealizedVar
+ * NAME
+ * retypeRealizedVar - Retypes a RealizedVariable to the less abstract type of
+ * all realized variables, in the pattern, with the same name.
+ * CONTEXT
+ * QVT!RealizedVariable
+ * PARAMETERS
+ * pattern The pattern to search for variables with the same name
+ */
+operation QVT!RealizedVariable retypeRealizedVar(pattern : QVT!Pattern) {
+ var refinedVars = pattern.realizedVariable.select(
+ v | v.name == self.name
+ );
+ if (refinedVars.size() > 0) {
+ //var x = new Native("org.eclipse.qvtd.build.etl.PivotUtil");
+ //var lrv = x.getLowestRankVariable(refinedVars.including(self));
+ var lrv = getLowestRankVariable(refinedVars.including(self));
+ self.type = lrv.type;
+ }
+}
+
+/****o* QVTHelpers/getLowestRankVariable
+ * NAME
+ * getLowestRankVariable - Finds the variable with the less abstract type from
+ * the collection of variables
+ * PARAMETERS
+ * vars The collection to perform the search
+ */
+operation getLowestRankVariable(vars : Collection) {
+
+ var min = vars.first();
+ for(v in vars.excluding(min)) {
+ //minType = (ClassImpl) min.eGet(typeFeat);
+ if (v.type.superClass.includes(min.type)) {
+ min = v;
+ }
+ }
+ // Verify that the min is actually the min, i.e. all the other variables are superiors
+ // in the hierarchy
+ /*for (TypedElement var : vars) {
+ if (!var.equals(min)) {
+ if (!((ClassImpl)min.eGet(typeFeat)).getSuperClass().contains(var.eGet(typeFeat))) {
+ System.out.println("min is not min");
+ return null;
+ }
+ }
+ }*/
+ return min;
+}
+
+/****o* QVTHelpers/fixPredicateVarReferences
+ * NAME
+ * fixPredicateVarReferences - Fixes predicate's varaible references that point
+ * to variables in some other model (same name, different model)
+ * FUNCTION
+ * Loops trough all the predicates and fixes references to the variables.
+ * CONTEXT
+ * QVT!GuardPattern
+ * TODO
+ * Only predicates with references to variables in other models should be checked,
+ * and then only references to varaibles in other models fixed. Add a select
+ * statement to filter these.
+ */
+operation QVT!GuardPattern fixPredicateVarReferences() {
+ for (predicate in self.predicate.select(p | p.findReferencedVariables().exists(v | v.owningModel() <> p.owningModel()))) {
+ //predicate.toString.println("Fixing Predicate ");
+ var refVars = predicate.findReferencedVariables().select(v | v.owningModel() <> predicate.owningModel());
+ //refVars.println("refVars ");
+ // Find variables and fix references
+ for (v in refVars) {
+ //v.println("Fixing ");
+ var targetVar = v.findReferencesInPatterns(self.asSequence());
+ if (targetVar == null) {
+ var searchPatterns;
+ if (self.area.isTypeOf(QVT!CoreDomain)) {
+ // Domain guard patterns depend on guard patterns of domains with depending typed models
+ searchPatterns = self.area.rule.domain.select(d | d.typedModel.dependsOn.includes(self.area.typedModel)).collect(d | d.guardPattern).flatten();
+ } else if (self.area.isTypeOf(QVT!Mapping)) {
+ // 1. Mapping's domain guard patterns
+ searchPatterns = self.area.domain.collect(d | d.guardPattern).flatten();
+ }
+ targetVar = v.findReferencesInPatterns(searchPatterns);
+ if (targetVar == null) {
+ // Search in the context
+ searchPatterns = self.area.getContextMappingPatterns();
+ targetVar = v.findReferencesInPatterns(searchPatterns);
+ }
+ }
+ if (targetVar == null) {
+ if (self.area.isTypeOf(QVT!Mapping)) {
+ throw "Error! not able to find a local reference for variable " + v + " in predicate " + predicate + " in GuardPattern of Mapping " + self.area;
+ } else if(self.area.isTypeOf(QVT!CoreDomain)) {
+ throw "Error! not able to find a local reference for variable " + v + " in predicate " + predicate + " in GuardPattern of Domain " + self.area;
+ }
+ }
+ //targetVar.println("local ");
+ predicate.conditionExpression.fixVarReferences(targetVar);
+ }
+ }
+}
+
+/****o* QVTHelpers/fixPredicateVarReferences
+ * NAME
+ * fixPredicateVarReferences - Fixes predicate's varaible references that point
+ * to variables in some other model (same name, different model)
+ * FUNCTION
+ * Loops trough all the predicates and fixes references to the variables.
+ * CONTEXT
+ * QVT!BottomPattern
+ * TODO
+ * Only predicates with references to variables in other models should be checked,
+ * and then only references to varaibles in other models fixed. Add a select
+ * statement to filter these.
+ */
+operation QVT!BottomPattern fixPredicateVarReferences() {
+
+ for (predicate in self.predicate.select(p | p.findReferencedVariables().exists(v | v.owningModel() <> p.owningModel()))) {
+ //predicate.println("Predicate ");
+ var refVars = predicate.findReferencedVariables().select(v | v.owningModel() <> predicate.owningModel());
+ //refVars.println("refVars ");
+ // Find variables and fix references
+ for (v in refVars) {
+ //v.println("Fixing ");
+ // MiddleGuard Pattern depends on domain guard patterns
+ var targetVar = v.findReferencesInPatterns(self.asSequence());
+ if (targetVar == null) {
+ var searchPatterns : Sequence;
+ if (self.area.isTypeOf(QVT!CoreDomain)) {
+ // 1. Guard Pattern of the Domain
+ searchPatterns = self.area.rule.domain.collect(d | d.guardPattern).flatten();
+ targetVar = v.findReferencesInPatterns(searchPatterns);
+ // 2. Bottom Pattern of domains with depending typed models
+ if (targetVar == null) {
+ searchPatterns = self.area.rule.domain.select(d | d.typedModel.dependsOn.includes(self.area.typedModel)).collect(d | d.bottomPattern).flatten();
+ targetVar = v.findReferencesInPatterns(searchPatterns);
+ }
+
+ } else if (self.area.isTypeOf(QVT!Mapping)) {
+ // 1. Guard Pattern of the Mapping
+ searchPatterns = self.area.guardPattern.asSequence();
+ targetVar = v.findReferencesInPatterns(searchPatterns);
+ // 2. Mapping's domain bottom pattern
+ if (targetVar == null) {
+ searchPatterns = self.area.domain.collect(d | d.bottomPattern).flatten();
+ targetVar = v.findReferencesInPatterns(searchPatterns);
+ if (targetVar == null) {
+ // 3. Mapping's domain guard patterns
+ searchPatterns = self.area.domain.collect(d | d.guardPattern).flatten();
+ targetVar = v.findReferencesInPatterns(searchPatterns);
+ }
+ }
+ }
+ if (targetVar == null) {
+ // Search in the context
+ searchPatterns = self.area.getContextMappingPatterns();
+ targetVar = v.findReferencesInPatterns(searchPatterns);
+ }
+ }
+ if (targetVar == null) {
+ if (self.area.isTypeOf(QVT!Mapping)) {
+ throw "Error! not able to find a local reference for variable " + v + " in predicate " + predicate + "in BottomPattern of Mapping " + self.area;
+ } else if(self.area.isTypeOf(QVT!CoreDomain)) {
+ throw "Error! not able to find a local reference for variable " + v + " in predicate " + predicate + "in BottomPattern of Domain " + self.area;
+ }
+ }
+ predicate.conditionExpression.fixVarReferences(targetVar);
+ }
+ }
+}
+
+
+/****o* QVTHelpers/fixAssignmentVarReferences
+ * NAME
+ * fixAssignmentVarReferences - Fixes assignment's varaible references that point
+ * to variables in some other model (same name, different model)
+ * FUNCTION
+ * Loops trough all the assignments and fixes references to the variables.
+ * CONTEXT
+ * QVT!BottomPattern
+ * TODO
+ * Only predicates with references to variables in other models should be checked,
+ * and then only references to varaibles in other models fixed. Add a select
+ * statement to filter these.
+ */
+operation QVT!BottomPattern fixAssignmentVarReferences() {
+ for (assignment in self.assignment.select(a | a.findReferencedVariables().exists(v | v.owningModel() <> a.owningModel()))) {
+ //assignment.toString().println("Fixing Assignment ");
+ var refVars = assignment.findReferencedVariables().select(v | v.owningModel() <> assignment.owningModel());
+ //refVars.println("refVars ");
+ // Find variables and fix references
+ for (v in refVars) {
+ //v.println("Fixing ");
+ // MiddleGuard Pattern depends on domain guard patterns
+ var targetVar = v.findReferencesInPatterns(self.asSequence());
+ //targetVar.println("targetVar ");
+ if (targetVar == null) {
+ var searchPatterns;
+ if (self.area.isTypeOf(QVT!CoreDomain)) {
+ // 1. Guard Pattern of the Domain
+ searchPatterns = self.area.rule.domain.collect(d | d.guardPattern).flatten();
+ targetVar = v.findReferencesInPatterns(searchPatterns);
+ // 2. Bottom Pattern of domains with depending typed models
+ if (targetVar == null) {
+ searchPatterns = self.area.rule.domain.select(d | d.typedModel.dependsOn.includes(self.area.typedModel)).collect(d | d.bottomPattern).flatten();
+ targetVar = v.findReferencesInPatterns(searchPatterns);
+ }
+ } else if (self.area.isTypeOf(QVT!Mapping)) {
+ // 1. Guard Pattern of the Mapping
+ searchPatterns = self.area.guardPattern.asSequence();
+ targetVar = v.findReferencesInPatterns(searchPatterns);
+ // 2. Mapping's domain bottom pattern
+ if (targetVar == null) {
+ searchPatterns = self.area.domain.collect(d | d.bottomPattern).flatten();
+ targetVar = v.findReferencesInPatterns(searchPatterns);
+ if (targetVar == null) {
+ // 3. Mapping's domain guard patterns
+ searchPatterns = self.area.domain.collect(d | d.guardPattern).flatten();
+ targetVar = v.findReferencesInPatterns(searchPatterns);
+ }
+ }
+ }
+ if (targetVar == null) {
+ // Search in the context
+ searchPatterns = self.area.getContextMappingPatterns();
+ targetVar = v.findReferencesInPatterns(searchPatterns);
+ }
+ }
+ if (targetVar == null) {
+ if (self.area.isTypeOf(QVT!Mapping)) {
+ throw "Error! not able to find a local reference for variable " + v + " in assignemnt " + assignment + "in BottomPattern of Mapping " + self.area;
+ } else if(self.area.isTypeOf(QVT!CoreDomain)) {
+ throw "Error! not able to find a local reference for variable " + v + " in assignment " + assignment + "in BottomPattern of Domain " + self.area;
+ }
+ }
+ assignment.value.fixVarReferences(targetVar);
+ if (assignment.isTypeOf(QVT!PropertyAssignment)) {
+ assignment.slotExpression.fixVarReferences(targetVar);
+ } else if (assignment.isTypeOf(QVT!VariableAssignment)) {
+ if (assignment.targetVariable.name = targetVar.name) {
+ assignment.targetVariable = targetVar;
+ }
+ }
+ }
+ }
+}
+
+/****o* QVTHelpers/fixOperationCallReferences
+ * NAME
+ * fixOperationCallReferences - Fixes OperationCall's varaible references that point
+ * to variables in some other model (same name, different model)
+ * FUNCTION
+ * Loops trough all the operation calls and fixes references to the variables.
+ * CONTEXT
+ * QVT!BottomPattern
+ * TODO
+ * Only predicates with references to variables in other models should be checked,
+ * and then only references to varaibles in other models fixed. Add a select
+ * statement to filter these.
+ */
+operation QVT!BottomPattern fixOperationCallReferences() {
+ for (o in self.enforcementOperation) {
+ //predicate.println("Predicate ");
+ var refVars = o.operationCallExp.findReferencedVariables();
+ //refVars.println("refVars ");
+ // Find variables and fix references
+ for (v in refVars) {
+ //v.println("Fixing ");
+ // MiddleGuard Pattern depends on domain guard patterns
+ var targetVar = v.findReferencesInPatterns(self.asSequence());
+ if (targetVar == null) {
+ var searchPatterns;
+ if (self.area.isTypeOf(QVT!CoreDomain)) {
+ // 1. Guard Pattern of the Domain
+ searchPatterns = self.area.rule.domain.collect(d | d.guardPattern).flatten();
+ targetVar = v.findReferencesInPatterns(searchPatterns);
+ // 2. Bottom Pattern of domains with depending typed models
+ if (targetVar == null) {
+ searchPatterns = self.area.rule.domain.select(d | d.typedModel.dependsOn.includes(self.area.typedModel)).collect(d | d.bottomPattern).flatten();
+ targetVar = v.findReferencesInPatterns(searchPatterns);
+ }
+ } else if (self.area.isTypeOf(QVT!Mapping)) {
+ // 1. Guard Pattern of the Mapping
+ searchPatterns = self.area.guardPattern.asSequence();
+ targetVar = v.findReferencesInPatterns(searchPatterns);
+ // 2. Mapping's domain bottom pattern
+ if (targetVar == null) {
+ searchPatterns = self.area.domain.collect(d | d.bottomPattern).flatten();
+ targetVar = v.findReferencesInPatterns(searchPatterns);
+ if (targetVar == null) {
+ // 3. Mapping's domain guard patterns
+ searchPatterns = self.area.domain.collect(d | d.guardPattern).flatten();
+ targetVar = v.findReferencesInPatterns(searchPatterns);
+ }
+ }
+ }
+ if (targetVar == null) {
+ // Search in the context
+ searchPatterns = self.area.getContextMappingPatterns();
+ targetVar = v.findReferencesInPatterns(searchPatterns);
+ }
+ }
+ if (targetVar == null) {
+ if (self.area.isTypeOf(QVT!Mapping)) {
+ throw "Error! not able to find a local reference for variable " + v + " in operation " + o + "in BottomPattern of Mapping " + self.area;
+ } else if(self.area.isTypeOf(QVT!CoreDomain)) {
+ throw "Error! not able to find a local reference for variable " + v + " in operation " + o + "in BottomPattern of Domain " + self.area;
+ }
+ }
+ o.operationCallExp.fixVarReferences(targetVar);
+ }
+ }
+}
+
+/****o* QVTHelpers/findReferencesInPatterns
+ * NAME
+ * findReferencesInPatterns - Searches in the patterns for a reference to a
+ * variable with the same name as this.
+ * CONTEXT
+ * QVT!Variable The variable to search
+ * PARAMETERS
+ * patterns The collection of patterns to seach in
+ * RESULT
+ * A reference to the varaible if found. null otherwise.
+ */
+operation QVT!Variable findReferencesInPatterns(patterns : Sequence) : QVT!Variable {
+
+ var targetVar = null;
+ for (p in patterns) {
+ targetVar = p.findVariableByName(self);
+ if (targetVar <> null) {
+ break;
+ }
+ }
+ return targetVar;
+}
+
+/****o* QVTHelpers/findVariableByName
+ * NAME
+ * findVariableByName - Find all variables in the pattern that match the input
+ * variable by name
+ * CONTEXT
+ * QVT!GuardPattern The pattern to search
+ * ANNOTATIONS
+ * cached
+ * TODO
+ * If the QVT model had a getAllVariables() method that returned variables and
+ * realized variables, these two methods could be combined.
+ */
+@cached
+operation QVT!GuardPattern findVariableByName(variable : QVT!TypedElement) {
+
+ return self.variable.selectOne(lv | lv.name == variable.name);
+}
+
+/****o* QVTHelpers/findVariableByName
+ * NAME
+ * findVariableByName - Find all variables in the pattern that match the input
+ * variable by name
+ * CONTEXT
+ * QVT!GuardPattern The pattern to search
+ * ANNOTATIONS
+ * cached
+ * TODO
+ * If the QVT model had a getAllVariables() method that returned variables and
+ * realized variables, these two methods could be combined.
+ */
+@cached
+operation QVT!BottomPattern findVariableByName(variable : QVT!TypedElement) {
+
+ return self.variable.includingAll(self.realizedVariable).selectOne(lv | lv.name == variable.name);
+}
+
+
+/****o* QVTHelpers/isContainer
+ * NAME
+ * isContainer - Indicates if the property is a containment relation
+ * by name
+ * CONTEXT
+ * QVT!Property The property
+ * ANNOTATIONS
+ * cached
+ */
+@cached
+operation QVT!Property isContainer() : Boolean {
+ if (self.getOpposite().isDefined()) {
+ return self.getOpposite().isComposite();
+ } else {
+ return false;
+ }
+}
+
+/****o* QVTHelpers/hasNavigableOpposite
+ * NAME
+ * hasNavigableOpposite - Indicates if the property has a navigable opposite
+ * FUNCTION
+ * The property has a navigable opposite if the opposite relation is defined
+ * and if that relation has a many multiplicity.
+ * CONTEXT
+ * QVT!Property The property
+ * ANNOTATIONS
+ * cached
+ */
+operation hasNavigableOpposite(prop) : Boolean {
+ return prop.opposite.isDefined() and not prop.opposite.isMany();
+}
+
+/****o* QVTHelpers/getDataTypeUses
+ * NAME
+ * getDataTypeUses - Returns a sequence of {Type, Attribtye} pairs whos
+ * value is assigned from a DataType.
+ * FUNCTION
+ * Identifies all the assignments in which the value part is a variable whos type
+ * is a DataType and for each, it creates a {Type, Attribtye} pair that saves the
+ * information about what attribute of what Type was being assigned.
+ * CONTEXT
+ * QVT!Mapping The mapping under test
+ * ANNOTATIONS
+ * cached
+ * SEE ALSO
+ *
+ */
+operation QVT!Mapping hasDataTypeUse(values : Sequence) : Boolean {
+ var pivotUtil = new Native("org.eclipse.qvtd.build.etl.PivotUtil");
+ //self.name.println();
+ // Get all the assignments that hava a value that is a PropertyCallExp in which
+ // the source is of the type and the referredProperty is the same
+ if (self.getAllAssignments().exists(a | a.value.isTypeOf(QVT!PropertyCallExp)
+ and a.value.source.isTypeOf(QVT!VariableExp) and pivotUtil.isKindOf(values.first(), a.value.source.type)
+ and a.value.referredProperty == values.last())) {
+ return true;
+ }
+ for (p in self.getAllPredicates()) {
+ // Any of the arguments can be the use
+ if (p.conditionExpression.isKindOf(QVT!OperationCallExp)) {
+ //p.conditionExpression.toString().println();
+ for (a in p.conditionExpression.argument.select(a | a.isTypeOf(QVT!PropertyCallExp))) {
+ if (a.source.type == values.first() and a.referredProperty == values.last()) {
+ return true;
+ }
+ }
+ if (pivotUtil.isKindOf(values.first(), p.conditionExpression.source.source.type ) and p.conditionExpression.source.referredProperty == values.last()) {
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
+/****o* QVTHelpers/hasRelation
+ * NAME
+ * hasRelation -- Identify relations between variables
+ * SYNOPSIS
+ * relations = var1.hasRelation(var2);
+ * FUNCTION
+ * Analysies the predicates and assignments of the mapping that contains the
+ * variables and looks for relations of the form: var1.att = var2. If found,
+ * the operation returns the attribute that relates the variables.
+ * CONTEXT
+ * QVT!Variable
+ * PARAMETERS
+ * variable - variable to analyze relations against: variable.att = self
+ * RESULT
+ * Any - The EReference that relates the variables, null if not existant
+ * TODO
+ * It may be usefull to divide this into hasPredicateRelation and hasAssignmentRelation
+ * so we have more controll over what relations we are looking for.
+ *
+ */
+operation QVT!Variable hasRelation(other : QVT!Variable) : Bag {
+
+ // Fin predicates and assignemnts that only refer the two variables and
+ // return the properties that relate them
+ return self.oppositePattern().area.rule.guardPattern.predicate
+ .select(p | p.conditionExpression.isSimpleAttributeNavigation()
+ and p.conditionExpression.isArgumentVariable(other)
+ and p.conditionExpression.isSourceVariable(self))
+ .collect(p | p.conditionExpression.getReferredProperty())
+ .includingAll(
+ self.oppositePattern().area.rule.bottomPattern.assignment
+ .select(a | a.isSimpleAttributeNavigation()
+ and a.slotExpression.referredVariable == self
+ and a.value.referredVariable == other)
+ .collect(a | a.targetProperty())
+ );
+}
+
+/****o* QVTHelpers/getUnidirComment
+ * NAME
+ * getUnidirComment - Returns a string that contains a comment to state the
+ * direction and mode in which the transformation was invoked
+ */
+operation getUnidirComment() : String {
+ var comment : String = "";
+ if (config!Configuration.all.first().mode == config!Mode#enforce) {
+ comment = comment + "Enforce ";
+ } else {
+ comment = comment + "Check ";
+ }
+ comment = comment + config!Configuration.all.first().inputDirection.name + " to ";
+ comment = comment + config!Configuration.all.first().outputDirection.collect(d | d.name).concat(",") + "";
+ return comment;
+}
+
+// ========================================================= move to qvtimperative model
+
+/**
+ * Returns the tranformation of a mapping. Does a bottom up recursive search
+ */
+operation QVT!Mapping getTransforamtion() : QVT!Transformation {
+ if (self.transformation.isDefined()) {
+ return self.transformation;
+ } else if (self.context.isDefined()) {
+ return self.context.getTransforamtion();
+ } else {
+ self.err("Cotextless mapping ");
+ }
+}
+ /* this can be getAllPatterns, see how is is called for all atributes with super classes */
+@cached
+operation QVT!Area getContextMappingPatterns() : Sequence {
+
+ var mapping;
+ if (self.isTypeOf(QVT!CoreDomain)) {
+ mapping = self.rule;
+ } else if (self.isTypeOf(QVT!Mapping)) {
+ mapping = self;
+ }
+ var searchPatterns = new Sequence;
+ if (mapping.context.isDefined()) {
+ searchPatterns.addAll(mapping.context.domain.collect(d | d.guardPattern).flatten());
+ searchPatterns.addAll(mapping.context.domain.collect(d | d.bottomPattern).flatten());
+ searchPatterns.add(mapping.context.guardPattern);
+ searchPatterns.add(mapping.context.bottomPattern);
+ searchPatterns.addAll(mapping.context.getContextMappingPatterns());
+ }
+ return searchPatterns;
+
+}
+
+/****o* QVTHelpers/getInputVariables
+ * NAME
+ * getInputVariables - Returns the input variables of the Mapping, excluding DataType
+ * variables
+ *
+ * CONTEXT
+ * QVT!Rule The mapping
+ * ANNOTATIONS
+ * cached
+ * SEE ALSO
+ * /org.eclipse.qvtd.build.etl/helpers/QVTHelpers/getOutputVariables
+ */
+@cached
+operation QVT!Rule getInputVariables() : Sequence {
+
+ var vars: Sequence;
+ vars = self.guardPattern.variable
+ .includingAll(self.domain.collect(d | d.guardPattern).flatten().collect(gp | gp.variable).flatten()
+ ).asSequence();
+ //for (l in self.local) {
+ // vars = vars.includingAll(l.getInputVars());
+ //}
+ // QVTc, QVTu, QVTm: Do the same for all refined rules
+ //for (r in self.refinement) {
+ // vars = vars.includingAll(r.getInputVars());
+ //}
+ return vars;
+}
+
+/****o* QVTHelpers/getOutputVariables
+ * NAME
+ * getOutputVariables - Returns the output variables of the Mapping, excluding
+ * DataType variables
+ * FUNCTION
+ * It only works for QVTm/QVTi as is does not check for nested mappings. Variables
+ * of PrimitiveTypes are ignored.
+ * CONTEXT
+ * QVT!Rule The mapping
+ * ANNOTATIONS
+ * cached
+ * SEE ALSO
+ * QVTHelpers/getInputVariables
+ */
+@cached
+operation QVT!Rule getOutputVariables() : Set {
+
+ var vars: Set;
+ vars = self.bottomPattern.realizedVariable
+ .includingAll(self.domain.collect(d | d.bottomPattern).flatten().collect(gp | gp.realizedVariable).flatten());
+ //for (l in self.local) {
+ // vars = vars.includingAll(l.getInputVars());
+ //}
+ // QVTc, QVTu, QVTm: Do the same for all refined rules
+ //for (r in self.refinement) {
+ // vars = vars.includingAll(r.getInputVars());
+ //}
+ return vars;
+}
+
+operation QVT!Rule getAllVariables() {
+ return self.getInputVariables().includingAll(self.getOutputVariables());
+}
+
+operation QVT!Transformation getAllVariables() {
+}
+
+
+/****o* QVTHelpers/getAllAssignments
+ * NAME
+ * getAllAssignments - Returns all the assignments of the mapping
+ *
+ * CONTEXT
+ * QVT!Mapping The mapping
+ * ANNOTATIONS
+ * cached
+ * SEE ALSO
+ * /org.eclipse.qvtd.build.etl/helpers/QVTHelpers/
+ */
+ /* TODO Added the commented code to add it to QVTc/u/m model */
+@cached
+operation QVT!Mapping getAllAssignments() : Sequence {
+ var asgs : Sequence;
+ asgs.addAll(self.bottomPattern.assignment);
+ for (d in self.domain) {
+ asgs.addAll(d.bottomPattern.assignment);
+ }
+ //for (l in self.local) {
+ // asgs.addAll(l.getAllAssignments());
+ //}
+ return asgs;
+}
+
+
+/****o* QVTHelpers/getAllPredicates
+ * NAME
+ * getAllPredicates - Returns all the predicates of the mapping
+ *
+ * CONTEXT
+ * QVT!Mapping The mapping
+ * ANNOTATIONS
+ * cached
+ * SEE ALSO
+ * /org.eclipse.qvtd.build.etl/helpers/QVTHelpers/
+ */
+/* TODO Added the commented code to add it to QVTc/u/m model */
+@cached
+operation QVT!Mapping getAllPredicates() : Sequence {
+ var pdcts : Sequence;
+ pdcts.addAll(self.bottomPattern.predicate);
+ pdcts.addAll(self.guardPattern.predicate);
+ for (d in self.domain) {
+ pdcts.addAll(d.bottomPattern.predicate);
+ pdcts.addAll(d.guardPattern.predicate);
+ }
+ //for (l in self.local) {
+ // pdcts.addAll(l.getAllPredicates());
+ //}
+ return pdcts;
+}
+
+/****o* QVTHelpers/getPrimitiveDataTypeAssignemnts
+ * NAME
+ * getPrimitiveDataTypeAssignemnts - Returns all the property assignments of
+ * the mapping were the value is a variable with a primitive data type, i.e.,
+ * varA.property = 'PrimitiveDataType'
+ *
+ * CONTEXT
+ * QVT!Mapping The mapping
+ * ANNOTATIONS
+ * cached
+ * SEE ALSO
+ * /org.eclipse.qvtd.build.etl/helpers/QVTHelpers/isPrimitivePropertyAssignemnt
+ */
+@cached
+operation QVT!Mapping getPrimitiveDataTypeAssignemnts() : Sequence {
+
+ return self.getAllAssignments()
+ .select(a | a.isPrimitivePropertyAssignemnt());
+}
+
+
+/****o* QVTHelpers/isSimpleAttributeNavigation
+ * NAME
+ * getAllPredicates - Determine if the Assignemnts is of the form
+ * varA.attribute := varB
+ * 1. The Assignment must be an Attribute assignment
+ * 2. The slot operation must be a VariableExp
+ * 3. The value must be VariableExp
+ *
+ * CONTEXT
+ * QVT!Assignment The assignement to test
+ * ANNOTATIONS
+ * cached
+ * SEE ALSO
+ * /org.eclipse.qvtd.build.etl/helpers/QVTHelpers/
+ */
+operation QVT!Assignment isSimpleAttributeNavigation() : Boolean {
+
+ return self.isTypeOf(QVT!PropertyAssignment)
+ and self.slotExpression.isTypeOf(QVT!VariableExp)
+ and self.value.isTypeOf(QVT!VariableExp);
+}
+
+/****o* /org.eclipse.qvtd.build.etl/helpers/QVTHelpers/isPrimitivePropertyAssignemnt
+ * NAME
+ * isPrimitivePropertyAssignemnt - Determine if the Assignemnts assigns a primitive
+ * data type
+ *
+ * CONTEXT
+ * QVT!Assignment The assignement to test
+ * ANNOTATIONS
+ * cached
+ * SEE ALSO
+ * QVTHelpers/isSimpleAttributeNavigation
+ */
+operation QVT!Assignment isPrimitivePropertyAssignemnt() : Boolean {
+
+ return self.isSimpleAttributeNavigation()
+ and self.value.type.isTypeOf(QVT!PrimitiveType);
+}
+
+
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/helpers/QVTsHelpers.eol b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/helpers/QVTsHelpers.eol
new file mode 100644
index 000000000..57860dc46
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/helpers/QVTsHelpers.eol
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2014 The University of York and Willink Transformations Ltd.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Adolfo Sanchez-Barbudo Herrera (University of York) - initial implementation
+ ******************************************************************************/
+
+--
+-- EOL Utils with helper functions for QVTs models
+-- Model Names/Aliases:
+-- QVTs : A QVTs model
+
+
+
+-- Helper function to obtaion the distinct data of a mapping
+-- with greater amount secondary argument
+operation QVTs!MappingAction getMainDistinctData() : QVTs!DistinctData {
+ return self.getDistinctDataOrderedBySecondaryArgs().last();
+}
+
+-- Helper function to obtaion the distinct data of mapping
+-- with greater amount secondary arguments
+operation QVTs!MappingAction getDistinctDataOrderedBySecondaryArgs() : Sequence(QVTs!DistinctData) {
+ return self.distinctArguments.sortBy(dd | dd.secondaryArguments.size());
+}
+
+operation QVTs!DistinctData getNextDistinctData() : QVTs!DistinctData {
+ var orderedArgs = self.target.getDistinctDataOrderedBySecondaryArgs();
+ var pos = orderedArgs.indexOf(self);
+ if (pos == 0) {
+ return null;
+ } else {
+ return orderedArgs.at(pos-1);
+ }
+}
+
+
+ \ No newline at end of file
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/Helpers.eol b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/Helpers.eol
deleted file mode 100644
index 56ad7597b..000000000
--- a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/Helpers.eol
+++ /dev/null
@@ -1,182 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2013 The University of York, Willink Transformations and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Horacio Hoyos - initial implementation
- ******************************************************************************/
-@chached
-operation isInputDomain(area : QVT!Area) : Boolean {
- return area.isTypeOf(QVT!CoreDomain) and
- config!Configuration.all.first().inputDirection.name == area.typedModel.name;
-}
-
-@chached
-operation isMiddleDomain(area : QVT!Area) : Boolean {
- return area.isTypeOf(QVT!Mapping) and area.name.size() > 0;
-}
-
-@chached
-operation isOutputDomain(area : QVT!Area) : Boolean {
- return area.isTypeOf(QVT!CoreDomain) and
- config!Configuration.all.first().outputDirection.collect(od | od.name).includes(area.typedModel.name);
-}
-
-operation isCheckMode() : Boolean {
- return config!Configuration.all.first().mode == config!Mode#checking;
-}
-
-operation isEnforceMode() : Boolean {
- return config!Configuration.all.first().mode == config!Mode#enforcement;
-}
-
-@cached
-operation QVT!RealizedVariable oppositeBottomPattern() : QVT!BottomPattern {
- return QVT!BottomPattern.all.selectOne(p |p.realizedVariable.includes(self)); }
-
-@cached
-operation QVT!Variable oppositePattern() : QVT!CorePattern {
-
- if(self.isTypeOf(QVT!Variable)) {
- return QVT!CorePattern.all.selectOne(p |p.variable.includes(self));
- }
- if (self.isTypeOf(QVT!RealizedVariable)) {
- return self.oppositeBottomPattern();
- }
-}
-
-// How to find the domain of an OCL expression? It depends on the expression.. but it can get nasty
-@cached
-operation QVT!OCLExpression getArea() : QVT!Area {
- //var area : QVT!Area;
- if (self.isTypeOf(QVT!VariableExp)) {
- // TODO Hack to deal with undefined variable types? Why is this happening
- if (self.referredVariable.type() == null) {
- return null;
- }
- return self.referredVariable.oppositePattern().area;
- } else if (self.isKindOf(QVT!CallExp)) {
- return self.source.getArea();
- } else if (self.isTypeOf(QVT!IfExp)) {
- return self.condition.getArea();
- } else if (self.isKindOf(QVT!LiteralExp)) {
- return null;
- } else {
- self.println();
- throw "Error! Add getArea for " + self.type();
- }
- return null;
-}
-
-operation QVT!OCLExpression findRreferencedVariables() : Set {
- var varRefs : Set();
- if (self.isTypeOf(QVT!VariableExp)) {
- varRefs.add(self.referredVariable);
- } else if (self.isTypeOf(QVT!OperationCallExp)) {
- varRefs.addAll(self.source.findRreferencedVariables());
- for (arg in self.argument) {
- varRefs.addAll(arg.findRreferencedVariables());
- }
- } else if (self.isTypeOf(QVT!PropertyCallExp)) {
- varRefs.addAll(self.source.findRreferencedVariables());
- } else if (self.isTypeOf(QVT!IfExp)) {
- varRefs.addAll(self.condition.findRreferencedVariables());
- varRefs.addAll(self.elseExpression.findRreferencedVariables());
- varRefs.addAll(self.thenExpression.findRreferencedVariables());
- } else if (self.isTypeOf(QVT!CollectionLiteralExp)){
- varRefs.addAll(self.part);
- } else if (self.isKindOf(QVT!LiteralExp)) {
- // Noting to add
- } else {
- self.println();
- throw "Error! Add findRreferencedVariables() for " + self.type();
- }
- return varRefs;
-}
-
-// TODO Ask what PropertyCallExp.qualifier is/works in QVT
-operation QVT!OCLExpression fixVarReferences(v : QVT!Variable) {
- if (self.isTypeOf(QVT!VariableExp)) {
- if (self.referredVariable.name = v.name) {
- //v.println("Fixed a reference to v ");
- self.referredVariable = v;
- }
- } else if (self.isTypeOf(QVT!OperationCallExp)) {
- self.source.fixVarReferences(v);
- for (arg in self.argument) {
- arg.fixVarReferences(v);
- }
- } else if (self.isTypeOf(QVT!PropertyCallExp)) {
- self.source.fixVarReferences(v);
- } else if (self.isTypeOf(QVT!IfExp)) {
- self.condition.fixVarReferences(v);
- self.elseExpression.fixVarReferences(v);
- self.thenExpression.fixVarReferences(v);
- } else if (self.isTypeOf(QVT!CollectionLiteralExp)) {
- if (self.part.exists(p | p.name == v.name)) {
- self.part.remove(self.part.select(p | p.name == v.name));
- self.part.add(v);
- }
- } else if (self.isKindOf(QVT!LiteralExp)) {
- // Noting to fix
- } else {
- self.println();
- throw "Error! Add fixVarReference() for " + self.type();
- }
- }
-
-/* Retype variables by searching variables with the same name in the
- * refined guard patterns.
- */
-operation QVT!Variable retypeVar(refinedGuardPatterns : Collection) {
- // Same names
- //self.println("Retype vars " + refinedGuardPatterns.type() );
- var refinedVars = refinedGuardPatterns.collect(
- p | p.variable
- ).flatten().select(
- v | v.name == self.name
- );
- if (refinedVars.size() > 0) {
- var x = new Native("org.eclipse.qvtd.build.etl.PivotUtil");
- var lrv = x.getLowestRankVariable(refinedVars.including(self));
- self.type = lrv.type;
- }
-}
-
-/* Retype variables by searching variables with the same name in the
- * refined guard patterns.
- */
-operation QVT!Variable retypeRealizedVar(refinedBottomPatterns : Collection) {
- // Same names
- //self.println("Retype vars " + refinedGuardPatterns.type() );
- var refinedVars = refinedBottomPatterns.collect(
- p | p.realizedVariable
- ).flatten().select(
- v | v.name == self.name
- );
- if (refinedVars.size() > 0) {
- var x = new Native("org.eclipse.qvtd.build.etl.PivotUtil");
- var lrv = x.getLowestRankVariable(refinedVars.including(self));
- self.type = lrv.type;
- }
-}
-
-
-operation getUnidirComment() : String {
- var comment : String;
- comment = "/* ";
- /* Enforce uml to rdbms */
- if (config!Configuration.all.first().mode == config!Mode#enforcement) {
- comment = comment + "Enforce ";
- } else {
- comment = comment + "Check ";
- }
- comment = comment + config!Configuration.all.first().inputDirection.name + " to ";
- comment = comment + config!Configuration.all.first().outputDirection.collect(d | d.name).concat(",") + " */";
- comment.println();
- return comment;
-}
-
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/OclLibHelper.eol b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/OclLibHelper.eol
deleted file mode 100644
index 747eb99db..000000000
--- a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/OclLibHelper.eol
+++ /dev/null
@@ -1,23 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2013 The University of York, Willink Transformations and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Horacio Hoyos - initial implementation
- ******************************************************************************/
-// ========= OCL Lib queries ================
-@cached
-operation getOperationByName(name : String) : oclStdLib!Operation {
-// Look for OclAny class first
-
- return oclStdLib!Operation.all.selectOne(o | o.name == name);
-}
-
-@cached
-operation getTypeByName(name : String) : oclStdLib!PrimitiveType {
- var t = oclStdLib!PrimitiveType.all.selectOne(t | t.name == name);
- return t;
-} \ No newline at end of file
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/QVTcToQVTu.mig b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/QVTcToQVTu.mig
index 625e09da5..89cb2f161 100644
--- a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/QVTcToQVTu.mig
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/QVTcToQVTu.mig
@@ -1,103 +1,288 @@
-/*******************************************************************************
- * Copyright (c) 2013 The University of York, Willink Transformations and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Horacio Hoyos - initial API and implementation
- ******************************************************************************/
-import "Helpers.eol";
-import "OclLibHelper.eol";
-
-// TODO Check that if the slot expression area is Null, the test is correct
-// Output domain to middle assignments are removed, iif the value expression
-// is not a variable
-@cascade
-delete PropertyAssignment
- when : isOutputDomain(original.value.getArea())
- and not original.value.isTypeOf(QVTc!VariableExp)
- and isMiddleDomain(original.slotExpression.getArea())
-
-// Middle domian to input assigments are removed
-@cascade
-delete PropertyAssignment
- when : isInputDomain(original.slotExpression.getArea())
- and isMiddleDomain(original.value.getArea())
-
-
-// Realized variables in the input domain are retyped into variables
-retype RealizedVariable to Variable
- when : isInputDomain(original.oppositeBottomPattern().area)
-
-// Property assignments in the input domain are retyped to predicates
-retype PropertyAssignment to Predicate
- when : isInputDomain(original.bottomPattern.area)
-
-migrate Transformation {
- var comment : QVTc!Comment = new QVTc!Comment;
- comment.body = getUnidirComment();
- migrated.ownedComment.add(comment);
-}
-
-// Input Domain
-migrate CoreDomain
- when : isInputDomain(original) {
-
- migrated.isCheckable = false;
- migrated.isEnforceable = false;
- }
-
-// Output Domain(s)
-// THIS SHOULD BE HANDELED BY THE ENGINE!!??
-migrate CoreDomain
- when : isOutputDomain(original) {
- if (isCheckMode()) {
- migrated.isEnforceable = false;
- }
- if (isEnforceMode()) {
- migrated.isCheckable = false;
- }
- }
-
-// Make sure variables and predicates are contained in the pattern
-migrate BottomPattern
- when : isInputDomain(original.area) {
-
- migrated.variable.addAll(original.realizedVariable.equivalent());
- for (a in original.assignment) {
- migrated.predicate.add(a.equivalent());
- }
-}
-
-migrate PropertyAssignment
- when : isInputDomain(original.bottomPattern.area) {
-
- var exp = new QVTc!OperationCallExp;
- // It's an '=' operation
- exp.referredOperation = getOperationByName("=");
- exp.name = "=";
- // The type is boolean
- exp.type = exp.referredOperation.type;
- // The source is a PropertyCallExp
- exp.source = new QVTc!PropertyCallExp;
- // The property is the targetProperty
- exp.source.referredProperty = original.targetProperty.equivalent();
- // The source of the PropertyCallExp is the slotExpression
- exp.source.source = original.slotExpression.equivalent();
- exp.source.type = original.targetProperty.equivalent().type;
- // The argument is the value
- var args : Set;
- args.add(original.value.equivalent());
- exp.argument = args;
- migrated.conditionExpression = exp;
- }
-
-migrate PropertyAssignment
- when : isOutputDomain(original.bottomPattern.area)
- and isCheckMode()
- and original.isDefault {
-
- migrated.isDefault = false;
-}
+/*******************************************************************************
+ * Copyright (c) 2013 The University of York and Willink Transformations.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Horacio Hoyos - initial API and implementation
+ ******************************************************************************/
+import "../helpers/QVTHelpers.eol";
+import "../helpers/OclLibHelper.eol";
+
+/****f* /org.eclipse.qvtd.build.etl/mtc/QVTcToQVTu
+ * NAME
+ * QVTcToQVTu -- Flock migration script from QVTc to QVTu
+ *
+ * SEE ALSO
+ * /org.eclipse.qvtd.build.etl/mtc/QVTuToQVTm
+ ******
+ */
+
+
+/****d* QVTcToQVTu/PropertyAssignment
+ * ORIGINAL
+ * PropertyAssignment
+ * FUNCTION
+ * * Output domain to middle assignments are removed, iif
+ * the value expression is not a variable
+ * * Middle domain to input domain assignments are removed
+ * TODO
+ * Check that if the slot expression area is Null, the test is correct
+ * Do we also have to migrate VariableAssignments?!?!?!
+ *
+ ******
+ */
+@cascade
+delete PropertyAssignment
+ when : (original.value.getArea() <> null)
+
+ and ( (original.value.getArea().isOutputDomain()
+ and not original.value.isTypeOf(QVTc!VariableExp)
+ and original.slotExpression.getArea().isMiddleDomain())
+ or
+ (original.value.getArea().isMiddleDomain()
+ and original.slotExpression.getArea().isInputDomain())
+ )
+
+
+/****d* QVTcToQVTu/Predicate
+ * ORIGINAL
+ * Predicate
+ * FUNCTION
+ * Delete output domain predicates of realized variables
+ * SEE ALSO
+ *
+ ******
+ */
+@cascade
+delete Predicate
+ when : original.pattern.isTypeOf(QVTc!BottomPattern)
+ and original.conditionExpression.findReferencedVariables().forAll(v | v.oppositePattern().area.isOutputDomain())
+
+
+/****r* QVTcToQVTu/PropertyAssignment
+ * ORIGINAL
+ * PropertyAssignment
+ * EVOLVED
+ * Predicate
+ * FUNCTION
+ * Property assignments from middle to middle are retyped to predicates
+ *
+ ******
+ */
+retype PropertyAssignment to Predicate
+ when {
+ if (original.bottomPattern.area.isInputDomain()) {
+ return true;
+ } else {
+ if (original.bottomPattern.area.isMiddleDomain()) {
+ return original.bottomPattern.area.domain.size() > 0 and
+ original.bottomPattern.area.domain.forAll(d | d.isOutputDomain()) and
+ original.findReferencedVariables().forAll(v | v.oppositePattern().area.isMiddleDomain());
+ } else {
+ return false;
+ }
+ }
+ }
+
+
+/****r* QVTcToQVTu/RealizedVariable
+ * ORIGINAL
+ * RealizedVariable
+ * EVOLVED
+ * Variable
+ * FUNCTION
+ * Realized variables in the input domain are retyped to variables
+ *
+ ******
+ */
+retype RealizedVariable to Variable
+ when {
+ if (original.oppositePattern().area.isInputDomain()) {
+ return true;
+ } else {
+ if (original.oppositePattern().area.isMiddleDomain()) {
+ return original.oppositePattern().area.domain.size() > 0 and
+ original.oppositePattern().area.domain.forAll(d | d.isOutputDomain());
+ } else {
+ return false;
+ }
+ }
+ }
+
+
+/****m* QVTcToQVTu/CoreModel
+ * ORIGINAL
+ * CoreModel
+ * FUNCTION
+ * Fix the name and the external URI of the migrated model
+ *
+ ******
+ */
+migrate CoreModel
+ {
+ migrated.externalURI = original.externalURI.replace(".qvtc", ".qvtu.qvtc");
+ }
+
+/****m* QVTcToQVTu/PropertyAssignment
+ * ORIGINAL
+ * PropertyAssignment
+ * FUNCTION
+ * For PropertyAssignment that have been retyped to Predicates, we need to
+ * define the OCL Expression that replaces the assignment. CST wise, this is
+ * changing a ":=" for a "=", but AST wise it is more complex.
+ *
+ ******
+ */
+migrate PropertyAssignment
+ when {
+ if (original.bottomPattern.area.isInputDomain()) {
+ return true;
+ } else {
+ if (original.bottomPattern.area.isMiddleDomain()) {
+ return original.bottomPattern.area.domain.size() > 0 and
+ original.bottomPattern.area.domain.forAll(d | d.isOutputDomain()) and
+ original.findReferencedVariables().forAll(v | v.oppositePattern().area.isMiddleDomain());
+ } else {
+ return false;
+ }
+ } }{
+
+ var exp = new QVTc!OperationCallExp;
+ // It's an '=' operation. TODO, how to get the correct type?
+ //exp.referredOperation = getOperationByName("=", oclStdLib!PrimitiveType.all().selectOne(t | t.name == "Boolean"));
+ // TODO hack till we figure out the correct way to use the OCLStdLib
+ exp.referredOperation = getEqualsOperation();
+ exp.name = exp.referredOperation.name;
+ // The type is boolean
+ exp.type = exp.referredOperation.type;
+ // The source is a PropertyCallExp
+ exp.source = new QVTc!PropertyCallExp;
+ // The property is the targetProperty
+ exp.source.referredProperty = original.targetProperty.equivalent();
+ // The source of the PropertyCallExp is the slotExpression
+ exp.source.source = original.slotExpression.equivalent();
+ exp.source.type = original.targetProperty.equivalent().type;
+ // The argument is the value
+ var args : Set;
+ args.add(original.value.equivalent());
+ exp.argument = args;
+ migrated.conditionExpression = exp;
+ }
+
+
+/****m* QVTcToQVTu/PropertyAssignment
+ * ORIGINAL
+ * PropertyAssignment
+ * FUNCTION
+ * Output domain PropertyAssignments should not be default if the operation
+ * mode is Check.
+ *
+ ******
+ */
+migrate PropertyAssignment
+ when : original.bottomPattern.area.isOutputDomain()
+ and isCheckMode()
+ and original.isDefault {
+
+ migrated.isDefault = false;
+}
+
+/****m* QVTcToQVTu/Transformation
+ * ORIGINAL
+ * Transformation
+ * FUNCTION
+ * Add additional information to the comments to indicate that the QVTu AST is
+ * generated based on an especific configuration.
+ *
+ ******
+ */
+migrate Transformation {
+ var comment : QVTc!Comment = new QVTc!Comment;
+ comment.body = getUnidirComment();
+ migrated.ownedComment.add(comment);
+}
+
+/****m* QVTcToQVTu/CoreDomain
+ * ORIGINAL
+ * CoreDomain
+ * WHEN
+ * The domain's typeModel is the input domain.
+ * FUNCTION
+ * Since QVTu is uni-directional, make sure that all input domains' check and
+ * enforce flags are false.
+ *
+ ******
+ */
+migrate CoreDomain
+ when : original.isInputDomain() {
+
+ migrated.isEnforceable = false;
+ migrated.isCheckable = true;
+ }
+
+/****m* QVTcToQVTu/CoreDomain
+ * ORIGINAL
+ * CoreDomain
+ * WHEN
+ * The domain's typeModel is the output domain.
+ * FUNCTION
+ * Since QVTu is uni-directional, output domaisn can either be check or enforce
+ *
+ ******
+ */
+migrate CoreDomain
+ when : original.isOutputDomain() {
+ if (isCheckMode()) {
+ migrated.isEnforceable = false;
+ }
+ if (isEnforceMode()) {
+ migrated.isCheckable = false;
+ }
+ }
+
+/****m* QVTcToQVTu/BottomPattern
+ * ORIGINAL
+ * BottomPattern
+ * WHEN
+ * The pattern is in the input domain, or the pattern is in the middle domain
+ * (i.e. a mapping) and the mapping only has output domains.
+ * FUNCTION
+ * Add the migrated realized varaibles and assignments to the pattern.
+ * TODO
+ * THIS SHOULD BE HANDELED BY THE ENGINE!!??
+ *
+ ******
+ */
+migrate BottomPattern
+ when {
+ if (original.area.isInputDomain()) {
+ return true;
+ } else {
+ if (original.area.isMiddleDomain()) {
+ return not original.area.domain.isEmpty() and
+ original.area.domain.forAll(d | d.isOutputDomain());
+ } else {
+ return false;
+ }
+ }
+ } {
+ migrated.variable.addAll(original.realizedVariable.equivalent());
+ for (a in original.assignment) {
+ if (original.area.isInputDomain() or
+ a.findReferencedVariables().forAll(v | v.oppositePattern().area.isMiddleDomain())) {
+ migrated.predicate.add(a.equivalent());
+ }
+ }
+}
+
+@cached
+operation getEqualsOperation() : Any {
+ return getOclAnyEqualsOp();
+}
+
+post {
+ "QVTcToQVTu Done!".println();
+}
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/QVTmToQVTiPartition.etl b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/QVTmToQVTiPartition.etl
new file mode 100644
index 000000000..2673ef3e3
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/QVTmToQVTiPartition.etl
@@ -0,0 +1,493 @@
+import "../helpers/QVTHelpers.eol";
+import "../helpers/OclLibHelper.eol";
+
+pre {
+ var emfTool = new Native("org.eclipse.epsilon.emc.emf.tools.EmfTool");
+}
+
+/****t* /org.eclipse.qvtd.build.etl/mtc/QVTmToQVTiPartition
+ * NAME
+ * QVTmToQVTiPartition -- Transform a QVTm transformation into its
+ * partioned equivalent.
+ * FUNCTION
+ * Each transformation rule is broken into n rules, depending on the number
+ * of input domains.
+ *
+ */
+
+/****u* /org.eclipse.qvtd.build.etl/mtc/QVTmToQVTiPartition/CoreModel
+ * NAME
+ * CoreModel - Transform the model
+ * FUNCTION
+ * Copy the model name and nested packages
+ * FROM
+ * QVTm!CoreModel
+ * TO
+ * QVTp!ImperativeModel
+ */
+rule CoreModel
+ transform mIn:QVTm!CoreModel
+ to mOut:QVTp!ImperativeModel {
+ mOut.name = mIn.name;
+ mOut.nestedPackage ::= mIn.nestedPackage;
+ mOut.externalURI = mIn.externalURI.replace(".qvtm.qvtc", ".qvtp.qvti");
+ }
+
+/****u* /org.eclipse.qvtd.build.etl/mtc/QVTmToQVTiPartition/Transformation
+ * NAME
+ * Transformation - Transform the transformation
+ * FUNCTION
+ * Copy the transformation name and model parameters. Invoke the transformation
+ * of the transformation's rules. Fix all the references to variables because
+ * all the OCL expressions are copied with emf and thus point to the input
+ * model.
+ * FROM
+ * QVTm!Transformation
+ * TO
+ * QVTp!Transformation
+ */
+rule Transformation
+ transform tIn:QVTm!Transformation
+ to tOut:QVTp!Transformation {
+
+ tOut.name = tIn.name;
+ tOut.modelParameter ::= tIn.modelParameter;
+ tOut.`rule`.addAll(tIn.`rule`.equivalents().flatten());
+ // Fix references
+ // TODO emfTool.getEcoreUtil();
+ for(r in tOut.`rule`) {
+ r.guardPattern.fixPredicateVarReferences();
+ r.bottomPattern.fixPredicateVarReferences();
+ r.bottomPattern.fixOperationCallReferences();
+ r.bottomPattern.fixAssignmentVarReferences();
+ for (d in r.domain) {
+ d.guardPattern.fixPredicateVarReferences();
+ d.bottomPattern.fixPredicateVarReferences();
+ d.bottomPattern.fixOperationCallReferences();
+ d.bottomPattern.fixAssignmentVarReferences();
+ }
+ }
+ }
+
+/****u* /org.eclipse.qvtd.build.etl/mtc/QVTmToQVTiPartition/TypedModels
+ * NAME
+ * TypedModels - Transform the TypedModels
+ * FUNCTION
+ * Copy the information about the typed models and make the "middle" model
+ * explicit.
+ * FROM
+ * QVTm!TypedModel
+ * TO
+ * QVTp!TypedModel
+ */
+rule TypedModel
+ transform itm:QVTm!TypedModel
+ to otm:QVTp!TypedModel {
+
+ if (itm.name.isDefined()) {
+ otm.name = itm.name;
+ } else {
+ otm.name = "middle";
+ }
+ otm.usedPackage = itm.usedPackage.clone();
+ otm.dependsOn ::= itm.dependsOn;
+ }
+
+/****u* /org.eclipse.qvtd.build.etl/mtc/QVTmToQVTiPartition/Mapping
+ * NAME
+ * Mapping - Transform the Mappings
+ * FUNCTION
+ * Split each mapping into n mappings.
+ * FROM
+ * QVTm!Mapping
+ * TO
+ * Set{ } - A set containing 1 to n mappings (n depends on the number of doamins)
+ * GUARD
+ * Only mappings with guarded patterns, and if all the output variables' types
+ * are not abstract and its not refined by other mappings
+ * TODO
+ * * The rule could be made more general to create the number of mappings bases
+ * on the number of domains.
+ * * If it is refined, and it has input variables of abstract type, and for some
+ * of the abstract type's subtypes there is not a mapping with an input
+ * variable of these subtypes the rule needs to be transformed (in this case
+ * an additional predicate should be added to limit the scope to the
+ * unhandeled subtypes)
+ */
+rule Mapping
+ transform m:QVTm!Mapping
+ to mappings : Set {
+ guard {
+ //m.println();
+ //m.getOutputVariables().collect(v | v.type.isTypeOf().println();
+
+ //return (not m.context.isDefined() or (m.context.isDefined() and (not m.guardPattern.variable.isEmpty()
+ // or
+ // not m.domain.collect(d | d.guardPattern.variable).flatten().isEmpty()
+ // ))) and m.getOutputVariables().forAll(v | not v.type.`abstract`) and m.specification.isEmpty();
+ return (not m.context.isDefined()) and m.getOutputVariables().forAll(v | not v.type.`abstract`) and m.specification.isEmpty();
+ }
+
+ // Promote unguarded nested mappings
+ //m.println();
+ for (local in m.local) {
+ local.promoteMappings();
+ }
+
+ if (m.domain.one(d | d.isInputDomain())) {
+ // Create LM mapping
+ var lmM = new QVTp!Mapping;
+ mappings.add(lmM);
+ //m.println("LMMaping: ");
+ lmM.~side = "l";
+ if (not m.context.isDefined()) {
+ lmM.name = m.name + "_LM";
+ }
+ // We need the patterns to have a place to move variables and predicates from domains
+ lmM.guardPattern = new QVTp!GuardPattern;
+ lmM.guardPattern.predicate.addAll(emfTool.getECoreUtil().copyAll(m.guardPattern.predicate.select(
+ p | not p.conditionExpression.findReferencedVariables().exists(v | v.oppositePattern().area.isOutputDomain())
+ )));
+ lmM.bottomPattern = new QVTp!BottomPattern;
+ lmM.bottomPattern.assignment.addAll(m.bottomPattern.assignment.select(
+ a | not a.findReferencedVariables().exists(v | v.oppositePattern().area.isOutputDomain())
+ ).equivalent().select(a | a.isKindOf(QVTp!Assignment)));
+ // Move predicates to guard pattern
+ lmM.guardPattern.predicate.addAll(emfTool.getECoreUtil().copyAll(m.bottomPattern.predicate.select(
+ p | not p.conditionExpression.findReferencedVariables().exists(v | v.oppositePattern().area.isOutputDomain())
+ )));
+
+ // Add input domain
+ lmM.domain.add(m.domain.selectOne(d | d.isInputDomain()).equivalent());
+
+ // Create Middle domain
+ var mM : QVTp!CoreDomain = new QVTp!CoreDomain;
+ var tm = m.getTransforamtion().getMiddleTypedModel().equivalent();
+ mM.isEnforceable = true;
+ mM.isCheckable = false;
+ mM.typedModel = tm;
+ mM.name = tm.name;
+ mM.guardPattern = new QVTp!GuardPattern;
+ mM.guardPattern.variable.addAll(emfTool.getECoreUtil().copyAll(m.guardPattern.variable));
+ mM.guardPattern.variable.addAll(emfTool.getECoreUtil().copyAll(m.bottomPattern.variable));
+ mM.bottomPattern = new QVTp!BottomPattern;
+ mM.bottomPattern.realizedVariable.addAll(emfTool.getECoreUtil().copyAll(m.bottomPattern.realizedVariable));
+
+ lmM.domain.add(mM);
+ //lmM.local.addAll(m.local.equivalent().select(m | m.~side = "l"));
+ }
+ if (m.domain.exists(d | d.isOutputDomain())) {
+ // Create MR mapping
+ var mrM = new QVTp!Mapping;
+ mappings.add(mrM);
+ mrM.~side = "r";
+ if (not m.context.isDefined()) {
+ mrM.name = m.name + "_MR";
+ }
+ // We need guard patterns first to have a place to move variables and predicates from domains
+ mrM.guardPattern = new QVTp!GuardPattern;
+ mrM.guardPattern.predicate.addAll(emfTool.getECoreUtil().copyAll(m.guardPattern.predicate.select(
+ p | not p.conditionExpression.findReferencedVariables().exists(v | v.oppositePattern().area.isInputDomain())
+ )));
+ mrM.bottomPattern = new QVTp!BottomPattern;
+ // Move assignments to bottom pattern
+ mrM.bottomPattern.assignment.addAll(m.bottomPattern.assignment.select(
+ a | not a.findReferencedVariables().exists(v | v.oppositePattern().area.isInputDomain())
+ and not a.findReferencedVariables().forAll(v | v.oppositePattern().area.isMiddleDomain())
+ ).equivalent()
+ );
+
+ // Move predicates to guard pattern
+ mrM.guardPattern.predicate.addAll(emfTool.getECoreUtil().copyAll(m.bottomPattern.predicate.select(
+ p | not p.conditionExpression.findReferencedVariables().exists(v | v.oppositePattern().area.isInputDomain())
+ )));
+
+ // MM assignements are transformed to predicates in the guard pattern
+ mrM.guardPattern.predicate.addAll(m.bottomPattern.assignment.select(
+ a | a.findReferencedVariables().forAll(v | v.oppositePattern().area.isMiddleDomain())
+ ).equivalent().select(a | a.isKindOf(QVTp!Predicate)));
+ // Add output domains
+ mrM.domain.addAll(m.domain.select(d | d.isOutputDomain()).equivalent());
+
+ // Create Middle domain
+ var mM : QVTp!CoreDomain = new QVTp!CoreDomain;
+ var tm = m.getTransforamtion().getMiddleTypedModel().equivalent();
+ mM.isCheckable = true;
+ mM.isEnforceable = false;
+ mM.typedModel = tm;
+ mM.name = tm.name;
+ mM.guardPattern = new QVTp!GuardPattern;
+ mM.guardPattern.variable.addAll(emfTool.getECoreUtil().copyAll(m.guardPattern.variable));
+ mM.guardPattern.variable.addAll(emfTool.getECoreUtil().copyAll(m.bottomPattern.variable));
+ // RealizedVariables to Variables
+ mM.guardPattern.variable.addAll(m.bottomPattern.realizedVariable.collect(rv | rv.copyToVariable()));
+ mM.bottomPattern = new QVTp!BottomPattern;
+ mrM.domain.add(mM);
+ //mrM.local.addAll(m.local.equivalent().select(m | m.~side = "r"));
+ }
+ }
+
+@abstract
+rule Assignment
+ transform ia : QVTm!Assignment
+ to oa : QVTp!Assignment {
+
+ oa.isDefault = ia.isDefault;
+ oa.value = emfTool.getECoreUtil().copy(ia.value);
+ }
+
+@lazy
+rule PropertyAssignment
+ transform ia : QVTm!PropertyAssignment
+ to oa : QVTp!PropertyAssignment
+ extends Assignment {
+
+ guard : not ia.findReferencedVariables().forAll(v |v.oppositePattern().area.isMiddleDomain())
+
+ oa.slotExpression = emfTool.getECoreUtil().copy(ia.slotExpression);
+ oa.targetProperty = ia.targetProperty;
+ }
+
+@lazy
+rule VariableAssignment
+ transform ia : QVTm!VariableAssignment
+ to oa : QVTp!VariableAssignment
+ extends Assignment {
+
+ guard : not ia.findReferencedVariables().forAll(v | v.oppositePattern().area.isMiddleDomain())
+
+ oa.targetVariable = ia.targetVariable;
+ }
+
+/**
+ * Middle model assignments are transformed into an assignment in LM and into
+ * a predicate in MR. Predicates are only created for mappings with output domains.
+ */
+@lazy
+rule MMPropertyAssignment
+ transform ia : QVTm!PropertyAssignment
+ to Assigdicate : Set {
+
+ guard : ia.findReferencedVariables().forAll(v | v.oppositePattern().area.isMiddleDomain())
+
+ var oa = new QVTp!PropertyAssignment;
+ Assigdicate.add(oa);
+ oa.isDefault = ia.isDefault;
+ oa.value = emfTool.getECoreUtil().copy(ia.value);
+ oa.slotExpression = emfTool.getECoreUtil().copy(ia.slotExpression);
+ oa.targetProperty = ia.targetProperty;
+ if (ia.bottomPattern.area.domain.exists(d | d.isOutputDomain())) {
+ var op = new QVTp!Predicate;
+ op.conditionExpression = ia.toOCLExpression();
+ Assigdicate.add(op);
+ }
+
+ }
+
+@lazy
+rule MMVariableAssignment
+ transform ia : QVTm!VariableAssignment
+ to Assigdicate : Set {
+
+ guard : ia.findReferencedVariables().forAll(v | v.oppositePattern().area.isMiddleDomain())
+
+ var oa = new QVTp!VariableAssignment;
+ Assigdicate.add(oa);
+ oa.isDefault = ia.isDefault;
+ oa.value = emfTool.getECoreUtil().copy(ia.value);
+ oa.targetVariable = ia.bottomPattern.equivalent().variable.select(v | v.name = ia.targetVariable.name);
+ if (ia.bottomPattern.area.domain.exists(d | d.isOutputDomain())) {
+ var op = new QVTp!Predicate;
+ op.conditionExpression = ia.toOCLExpression();
+ Assigdicate.add(op);
+ }
+ }
+
+@lazy
+rule LMDomain
+ transform id : QVTm!CoreDomain
+ to od : QVTp!CoreDomain {
+
+ // Guarded input domains
+ guard : id.isInputDomain()
+ and (not id.`rule`.context.isDefined()
+ or (id.`rule`.context.isDefined()
+ and (not id.`rule`.guardPattern.variable.isEmpty()
+ or not id.`rule`.domain.collect(d | d.guardPattern.variable).flatten().isEmpty()
+ )
+ )
+ )
+
+ od.name = id.name;
+ od.isCheckable = id.isCheckable;
+ od.isEnforceable = id.isEnforceable;
+ od.typedModel ::= id.typedModel;
+ od.guardPattern = new QVTp!GuardPattern;
+ od.guardPattern.variable.addAll(emfTool.getECoreUtil().copyAll(id.guardPattern.variable));
+ od.guardPattern.variable.addAll(emfTool.getECoreUtil().copyAll(id.bottomPattern.variable));
+ if(id.`rule`.equivalents().isDefined()) {
+ id.`rule`.equivalents().flatten().selectOne(m | m.~side = "l").guardPattern.predicate.
+ addAll(emfTool.getECoreUtil().copyAll(id.guardPattern.predicate.includingAll(id.bottomPattern.predicate)));
+ }
+ od.bottomPattern = new QVTp!BottomPattern;
+ }
+
+@lazy
+rule MRDomain
+ transform id : QVTm!CoreDomain
+ to od : QVTp!CoreDomain {
+
+ // Guarded input domains
+ guard : id.isOutputDomain()
+ and (not id.`rule`.context.isDefined()
+ or (id.`rule`.context.isDefined()
+ and (not id.`rule`.guardPattern.variable.isEmpty()
+ or not id.`rule`.domain.collect(d | d.guardPattern.variable).flatten().isEmpty()
+ )
+ )
+ )
+
+ od.name = id.name;
+ od.isCheckable = id.isCheckable;
+ od.isEnforceable = id.isEnforceable;
+ od.typedModel ::= id.typedModel;
+ od.guardPattern = new QVTp!GuardPattern;
+ od.guardPattern.variable.addAll(emfTool.getECoreUtil().copyAll(id.guardPattern.variable));
+
+ od.bottomPattern = new QVTp!BottomPattern;
+ od.bottomPattern.variable.addAll(emfTool.getECoreUtil().copyAll(id.bottomPattern.variable));
+ od.bottomPattern.realizedVariable.addAll(emfTool.getECoreUtil().copyAll(id.bottomPattern.realizedVariable));
+ // Predicates and assignments are moved to the mapping patterns
+ if(id.`rule`.equivalents().isDefined()) {
+ id.`rule`.equivalents().flatten().selectOne(m | m.~side = "r").guardPattern.predicate.
+ addAll(emfTool.getECoreUtil().copyAll(id.guardPattern.predicate.includingAll(id.bottomPattern.predicate)));
+
+ }
+ id.`rule`.equivalent().selectOne(m | m.~side = "r").bottomPattern.assignment.
+ addAll(id.bottomPattern.assignment.equivalent());
+ //od.bottomPattern.assignment.addAll();
+ }
+
+operation QVTp!RealizedVariable copyToVariable() : QVTp!Variable {
+ var v = new QVTp!Variable;
+ // Var
+ v.implicit = self.implicit;
+ v.initExpression = emfTool.getECoreUtil().copy(self.initExpression);
+ v.representedParameter = self.representedParameter;
+ // Typed Element
+ v.isRequired = self.isRequired;
+ v.Type = self.Type;
+ // Named Element
+ v.isStatic = self.isStatic;
+ v.name = self.name;
+ v.ownedAnnotation = emfTool.getECoreUtil().copyAll(self.ownedAnnotation);
+ // Element
+ v.extension = emfTool.getECoreUtil().copyAll(self.extension);
+ v.ownedComment = emfTool.getECoreUtil().copyAll(self.ownedComment);
+ return v;
+}
+
+// TODO OCL constriant: Guardless mappings can not have nested mapppings with
+// guard variables? Only Promote mappings with no cars at all
+operation QVT!Mapping promoteMappings() {
+
+ //self.println("promoteMappings ");
+ //if (self.guardPattern.variable.isEmpty() and self.domain.collect(d | d.guardPattern.variable).flatten().isEmpty()) {
+ for (local in self.local) {
+ local.promoteMappings();
+ }
+ self.context.guardPattern.variable.addAll(self.guardPattern.variable);
+ self.context.guardPattern.predicate.addAll(self.guardPattern.predicate);
+ self.context.bottomPattern.variable.addAll(self.bottomPattern.variable);
+ self.context.bottomPattern.realizedVariable.addAll(self.bottomPattern.realizedVariable);
+ self.context.bottomPattern.predicate.addAll(self.bottomPattern.predicate);
+ self.context.bottomPattern.assignment.addAll(self.bottomPattern.assignment);
+ self.context.bottomPattern.enforcementOperation.addAll(self.bottomPattern.enforcementOperation);
+
+ // promote domains
+ for (d in self.domain) {
+ var td = self.context.domain.selectOne(od | od.typedModel == d.typedModel);
+ td.guardPattern.variable.addAll(d.guardPattern.variable);
+ td.guardPattern.predicate.addAll(d.guardPattern.predicate);
+ td.bottomPattern.variable.addAll(d.bottomPattern.variable);
+ td.bottomPattern.realizedVariable.addAll(d.bottomPattern.realizedVariable);
+ td.bottomPattern.predicate.addAll(d.bottomPattern.predicate);
+ td.bottomPattern.assignment.addAll(d.bottomPattern.assignment);
+ td.bottomPattern.enforcementOperation.addAll(d.bottomPattern.enforcementOperation);
+ }
+ //}
+}
+
+
+/****o* /org.eclipse.qvtd.build.etl/helpers/QVTHelpers/toOCLExpression
+ * NAME
+ * toOCLExpression - Transforms a property assignment to an OCL Expression
+ *
+ * CONTEXT
+ * QVT!PropertyAssignment The assignment to transform
+ * SEE ALSO
+*/
+operation QVT!PropertyAssignment toOCLExpression() : QVT!OperationCallExp {
+ var exp = new QVTp!OperationCallExp;
+ // It's an '=' operation. TODO, how to get the correct type?
+ // KLUDGE hhr 20140801 Getting '=' operation from predicate
+ // The correct way would be to query the OCLStdLibrary
+ exp.referredOperation = getEqualsOperation();
+ exp.name = exp.referredOperation.name;
+ // The type is boolean
+ exp.type = exp.referredOperation.type;
+ // The source is a PropertyCallExp
+ exp.source = new QVTp!PropertyCallExp;
+ // The property is the targetProperty
+ exp.source.referredProperty = self.targetProperty;
+ // The source of the PropertyCallExp is the slotExpression
+ exp.source.source = emfTool.getECoreUtil().copy(self.slotExpression);
+ exp.source.type = self.targetProperty.type;
+ // The argument is the value
+ var args : Set;
+ args.add(emfTool.getECoreUtil().copy(self.value));
+ exp.argument = args;
+ return exp;
+}
+
+/****o* /org.eclipse.qvtd.build.etl/helpers/QVTHelpers/toOCLExpression
+ * NAME
+ * toOCLExpression - Transforms a variable assignment to an OCL Expression
+ *
+ * CONTEXT
+ * QVT!PropertyAssignment The assignment to transform
+ * SEE ALSO
+*/
+operation QVT!VariableAssignment toOCLExpression() : QVT!OperationCallExp {
+ var exp = new QVT!OperationCallExp;
+ // It's an '=' operation. TODO, how to get the correct type?
+ // KLUDGE hhr 20140801 Getting '=' operation from predicate
+ // The correct way would be to query the OCLStdLibrary
+ exp.referredOperation = getEqualsOperation();
+ exp.name = exp.referredOperation.name;
+ // The type is boolean
+ exp.type = exp.referredOperation.type;
+ // The source is a PropertyCallExp
+ exp.source = new QVTc!PropertyCallExp;
+ // The property is the targetProperty
+ exp.source.referredProperty = self.targetProperty;
+ // The source of the PropertyCallExp is the slotExpression
+ exp.source.source = emfTool.getECoreUtil().copy(self.slotExpression);
+ exp.source.type = self.targetProperty.type;
+ // The argument is the value
+ var args : Set;
+ var varExp = new QVT!VariableExpression;
+ varExp.implict = false;
+ varExp.referredVariable = self.bottomPattern.equivalent().variable.select(v | v.name = ia.targetVariable.name);
+ args.add(emfTool.getECoreUtil().copy(self.value));
+ exp.argument = args;
+ return exp;
+}
+
+@cahced
+operation getEqualsOperation() : Any {
+ return QVTm!Predicate.all().first().conditionExpression.referredOperation;
+}
+post {
+ "Partition Done".println();
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/QVTuToQVTm.mig b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/QVTuToQVTm.mig
index fc8311ea5..16f596954 100644
--- a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/QVTuToQVTm.mig
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/QVTuToQVTm.mig
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2013 The University of York, Willink Transformations and others.
+ * Copyright (c) 2013 The University of York and Willink Transformations.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -8,93 +8,339 @@
* Contributors:
* Horacio Hoyos - initial implementation
******************************************************************************/
-import "Helpers.eol";
-import "OclLibHelper.eol";
+import "../helpers/QVTHelpers.eol";
+import "../helpers/OclLibHelper.eol";
pre {
var emfTool = new Native("org.eclipse.epsilon.emc.emf.tools.EmfTool");
}
-// Refinned mappings
+/****f* /org.eclipse.qvtd.build.etl/mtc/QVTuToQVTm
+ * NAME
+ * QVTuToQVTm -- Flock migration script from QVTu to QVTm
+ *
+ * SEE ALSO
+ * /org.eclipse.qvtd.build.etl/mtc/QVTcToQVTu
+ ******
+ */
+
+/****d* QVTuToQVTm/Mapping
+ * CONTEXT
+ * Mapping
+ * WHEN
+ * The mapping is nested
+ * FUNCTION
+ * Delete all nested mappings, i.e., flatten the mappings
+ * TODO
+ * Revise this if flock os fixed and correctly cascade deletes the mapping
+ ******
+ */
+@cascade
+delete Mapping
+ when : original.context.isDefined()
+
+/****d* QVTuToQVTm/CorePattern
+ * CONTEXT
+ * CorePattern
+ * WHEN
+ * The Pattern is in a nested mapping
+ * FUNCTION
+ * Delete patterns in nested mappings
+ ******
+ */
+@cascade
+delete CorePattern
+ when : original.area.isTypeOf(QVT!Mapping) and original.area.context.isDefined()
+
+/****d* QVTuToQVTm/Assignment
+ * CONTEXT
+ * Assignment
+ * WHEN
+ * The assignemnt's bottom pattern is in a nested mapping
+ * FUNCTION
+ * Delete assignments in nested mappings' patterns
+ ******
+ */
+@cascade
+delete Assignment
+ when : original.bottomPattern.area.isTypeOf(QVT!Mapping) and original.bottomPattern.area.context.isDefined()
+
+/****d* QVTuToQVTm/Predicate
+ * CONTEXT
+ * Predicate
+ * WHEN
+ * The assignemnt's pattern is in a nested mapping
+ * FUNCTION
+ * Delete assignments in nested mappings' doamins' patterns
+ ******
+ */
+@cascade
+delete Predicate
+ when : original.pattern.area.isTypeOf(QVT!Mapping) and original.pattern.area.context.isDefined()
+
+/****d* QVTuToQVTm/CoreDomain
+ * CONTEXT
+ * CoreDomain
+ * WHEN
+ * The CoreDomain is in a nested mapping
+ * FUNCTION
+ * Delete domains in nested mappings
+ ******
+ */
+@cascade
+delete CoreDomain
+ when : original.rule.context.isDefined()
+
+/****d* QVTuToQVTm/Mapping
+ * CONTEXT
+ * Mapping
+ * WHEN
+ * The mapping is nested
+ * FUNCTION
+ * Delete all nested mappings, i.e., flatten the mappings
+ ******
+ */
+@cascade
+delete CorePattern
+ when : original.area.isTypeOf(QVT!CoreDomain) and original.area.rule.context.isDefined()
+
+/****d* QVTuToQVTm/Assignment
+ * CONTEXT
+ * Assignment
+ * WHEN
+ * The assignemnt's bottom pattern is in domain that is in a nested mapping
+ * FUNCTION
+ * Delete assignments in nested mappings' doamins' patterns
+ ******
+ */
+@cascade
+delete Assignment
+ when : original.bottomPattern.area.isTypeOf(QVT!CoreDomain) and original.bottomPattern.area.rule.context.isDefined()
+
+/****d* QVTuToQVTm/Predicate
+ * CONTEXT
+ * Predicate
+ * WHEN
+ * The predicate's pattern is in a domain that is in a nested mapping
+ * FUNCTION
+ * Delete assignments in nested mappings' doamins' patterns
+ ******
+ */
+@cascade
+delete Predicate
+ when : original.pattern.area.isTypeOf(QVT!CoreDomain) and original.pattern.area.rule.context.isDefined()
+
+/****d* QVTuToQVTm/Variable
+ * CONTEXT
+ * Predicate
+ * WHEN
+ * The predicate's pattern is in a domain that is in a nested mapping
+ * FUNCTION
+ * Delete assignments in nested mappings' doamins' patterns
+ ******
+ */
+delete Variable
+ when {
+ if (original.oppositePattern().isDefined()) {
+ return (original.oppositePattern().area.isTypeOf(QVT!CoreDomain) and original.oppositePattern().area.rule.context.isDefined())
+ or (original.oppositePattern().area.isTypeOf(QVT!Mapping) and original.oppositePattern().area.context.isDefined());
+ } else {
+ // Is it a var in an operation/query?
+ return false;
+ }
+ }
+
+/****m* QVTuToQVTm/CoreModel
+ * ORIGINAL
+ * CoreModel
+ * FUNCTION
+ * Fix the name and the external URI of the migrated model
+ *
+ ******
+ */
+migrate CoreModel
+ {
+ migrated.externalURI = original.externalURI.replace(".qvtu.qvtc", ".qvtm.qvtc");
+ }
+
+/****m* QVTuToQVTm/Mapping
+ * ORIGINAL
+ * Mapping
+ * IGNORING
+ * nested (local) mappings as we are flattening
+ * WHEN
+ * The mapping is not nested and doesn't refine other mappings
+ * FUNCTION
+ * Migrate all content from the original mapping's nested mappings to the
+ * migrated one.
+ *
+ ******
+ */
migrate Mapping
- when : original.refinement.size() > 0 {
-
+ ignoring local
+ when : not original.context.isDefined()
+ and original.refinement.isEmpty()
+ {
+ //original.name.println("ContextMapping ");
+ original.flattenNestedMappings(migrated);
+ migrated.fixReferences();
+ }
+
+/****m* QVTuToQVTm/Mapping
+ * ORIGINAL
+ * Mapping
+ * IGNORING
+ * nested (local) mappings as we are flattening
+ * WHEN
+ * The mapping is not nested and refines other mappings
+ * FUNCTION
+ * Migrate all content from the original mapping's nested mappings to the
+ * migrated one. Copy all domains and patterns from the refined mapping(s)
+ * and then merge all the resulting domains.
+ *
+ ******
+ */
+migrate Mapping
+ ignoring local
+ when : not original.context.isDefined() and not original.refinement.isEmpty()
+ {
+ //original.println("RefinnedMapping ");
+ original.flattenNestedMappings(migrated);
for (refined in original.refinement) {
- // Nested mappings with no domains. Since many mappings can refine the same mapping
- // get the equivalent and copy (create) them
- migrated.local.addAll(emfTool.getECoreUtil().copyAll(refined.collect(r | r.local.select(nm | nm.domain.size() == 0)).flatten().equivalent()));
- // Add a copy (create) domains that don't need to be merged (i.e. with different typeModels than the refining mapping)
- migrated.domain.addAll(emfTool.getECoreUtil().copyAll(refined.collect(r | r.domain).flatten().select(d | original.domain.collect(d2 | d2.name).flatten().excludes(d.name)).equivalent()));
+ //refined.println("refined ");
+ // Copy the contents of the local mappings of the refined mapping
+ for (m in refined.collect(r | r.local).flatten()) {
+ m.flattenNestedMappings(migrated);
+ }
+
+ // For each domain in the refined mapping, if it doesn't exist, copy it. If it does exist, merge it.
+ // Domains added first so nested mappings can find them
+ for (d in refined.collect(r | r.domain).flatten()) {
+ if (not migrated.domain.exists(ed | ed.name == d.name)) {
+ //d.println("Copy ");
+ migrated.domain.add(emfTool.getECoreUtil().copy(d.equivalent()));
+
+ } else {
+ //d.println("Merge ");
+ var local = migrated.domain.selectOne(ed | ed.name == d.name);
+ local.guardPattern.mergeGuardPatterns(d.equivalent().guardPattern);
+ local.bottomPattern.mergeBottomPatterns(d.equivalent().bottomPattern);
+ }
+ }
+ // Merge middle patterns
+ migrated.guardPattern.mergeGuardPatterns(refined.equivalent().guardPattern);
+ migrated.bottomPattern.mergeBottomPatterns(refined.equivalent().bottomPattern);
}
- // Remove the refinements
- migrated.refinement = Set{};
+ migrated.fixReferences();
}
-migrate GuardPattern
- when {
- if (original.area.isTypeOf(QVTu!CoreDomain)) {
- return original.area.rule.refinement.size() > 0;
- } else if (original.area.isTypeOf(QVTu!Mapping)) {
- return original.area.refinement.size() > 0;
- }
- } {
- // Variables. Search for variables in the refined mapping. Copy all variables that have
- // different names as the local variables. If there is any with the same name, re-type it
- var localVarNames = migrated.variable.collect(v | v.name);
- var refinedPatterns = migrated.getRefinedPatterns(original, "guard");
- for (localVar in migrated.variable) {
- localVar.retypeVar(refinedPatterns);
- }
- // Straight copy non-refined variables
- migrated.variable.addAll(emfTool.getECoreUtil().copyAll(refinedPatterns.collect(p | p.variable).flatten().select(v | not localVarNames.includes(v.name)).equivalent()));
- // Copy predicates
- migrated.predicate.addAll(emfTool.getECoreUtil().copyAll(refinedPatterns.collect(p | p.predicate).flatten().equivalent()));
- // Find all variable references.
- migrated.fixPredicateVarReferences();
- }
+/****o* QVTuToQVTm/fixReferences
+ * NAME
+ * fixReferences -- Fix trailing references in the output model to variables in
+ * the input model that result from using emf copy utilities.
+ * CONTEXT
+ * QVT!Mapping
+ */
+operation QVT!Mapping fixReferences() {
+ self.guardPattern.fixPredicateVarReferences();
+ self.bottomPattern.fixPredicateVarReferences();
+ self.bottomPattern.fixOperationCallReferences();
+ self.bottomPattern.fixAssignmentVarReferences();
+ for (d in self.domain) {
+ d.guardPattern.fixPredicateVarReferences();
+ d.bottomPattern.fixPredicateVarReferences();
+ d.bottomPattern.fixOperationCallReferences();
+ d.bottomPattern.fixAssignmentVarReferences();
+ }
+}
+
+
+/****o* QVTuToQVTm/mergeGuardPatterns
+ * NAME
+ * mergeGuardPatterns -- Merge this patterns with the other one. This operation
+ * is to be used when flattening a mapping to compose domains and nested mappings.
+ * CONTEXT
+ * QVT!Mapping
+ * PARAMETERS
+ * other the other pattern
+ */
+operation QVT!GuardPattern mergeGuardPatterns(other : QVT!GuardPattern) {
+
+ // Variables. Search for variables in the refined mapping. Copy all variables that have
+ // different names as the local variables. If there is any with the same name, re-type it
+ var localVarNames = self.variable.collect(v | v.name);
+ // TODO this should be an OCL constraint: if mapping refines, and there is
+ // a variable with the same name, then its type should be the same or extend
+ // it
+ //var refinedPatterns = self.getRefinedPatterns(other, "guard");
+ //refinedPatterns.println("refined patterns ");
+ for (localVar in self.variable) {
+ localVar.retypeVar(other);
+ }
+
+ // Straight copy non-refined variables
+ self.variable.addAll(emfTool.getECoreUtil().copyAll(other.variable.select(v | not localVarNames.includes(v.name))));
+ // Copy predicates
+ self.predicate.addAll(emfTool.getECoreUtil().copyAll(other.predicate));
+}
-migrate BottomPattern
- when {
- if (original.area.isTypeOf(QVTu!CoreDomain)) {
- return original.area.rule.refinement.size() > 0;
- } else if (original.area.isTypeOf(QVTu!Mapping)) {
- return original.area.refinement.size() > 0;
- }
- } {
+/****o* QVTuToQVTm/mergeBottomPatterns
+ * NAME
+ * mergeBottomPatterns -- Merge this patterns with the other one. This operation
+ * is to be used when flattening a mapping to compose domains and nested mappings.
+ * CONTEXT
+ * QVT!Mapping
+ * PARAMETERS
+ * other the other pattern
+ */
+operation QVT!BottomPattern mergeBottomPatterns(other : QVT!BottomPattern) {
- // Variables. Search for variables in the refined mapping. Copy all variables that have
- // different names as the local variables. If there is any with the same name, re-type it
- var localVarNames = migrated.variable.collect(v | v.name);
- var refinedPatterns = migrated.getRefinedPatterns(original, "bottom");
- for (localVar in migrated.variable) {
- localVar.retypeVar(refinedPatterns);
- }
- // Straight copy non-refined variables
- migrated.variable.addAll(emfTool.getECoreUtil().copyAll(refinedPatterns.collect(p | p.variable).flatten().select(v | not localVarNames.includes(v.name)).equivalent()));
- // The same for realized variables
- var localRealizedVarNames = migrated.realizedVariable.collect(v | v.name);
- for (localVar in migrated.realizedVariable) {
- localVar.retypeRealizedVar(refinedPatterns);
- }
- // Straight copy non-refined realized variables
- migrated.realizedVariable.addAll(emfTool.getECoreUtil().copyAll(refinedPatterns.collect(p | p.realizedVariable).flatten().select(v | not localRealizedVarNames.includes(v.name)).equivalent()));
-
- // Copy predicates
- migrated.predicate.addAll(emfTool.getECoreUtil().copyAll(refinedPatterns.collect(p | p.predicate).flatten().equivalent()));
- // Copy assignments
- migrated.assignment.addAll(emfTool.getECoreUtil().copyAll(refinedPatterns.collect(p | p.assignment).flatten().equivalent()));
- // Copy operations
- migrated.enforcementOperation.addAll(emfTool.getECoreUtil().copyAll(refinedPatterns.collect(p | p.enforcementOperation).flatten().equivalent()));
- // Find all variable references.
- migrated.fixPredicateVarReferences();
- // Fix references in operations
- migrated.fixOperationCallReferences();
+ // Variables. Search for variables in the refined mapping. Copy all variables that have
+ // different names as the local variables. If there is any with the same name, re-type it
+ var localVarNames = self.variable.collect(v | v.name);
+ // Perhaps this shuold be done after all the refinements have been done
+ //var refinedPatterns = self.getRefinedPatterns(other, "bottom");
+ for (localVar in self.variable) {
+ localVar.retypeVar(other);
+ }
+
+ // Straight copy non-refined variables
+ self.variable.addAll(emfTool.getECoreUtil().copyAll(other.variable.select(v | not localVarNames.includes(v.name))));
+
+ // The same for realized variables
+ var localRealizedVarNames = self.realizedVariable.collect(v | v.name);
+ for (localVar in self.realizedVariable) {
+ localVar.retypeRealizedVar(other);
+ }
+
+ // Straight copy non-refined realized variables
+ self.realizedVariable.addAll(emfTool.getECoreUtil().copyAll(other.realizedVariable.select(v | not localRealizedVarNames.includes(v.name))));
+ // Copy predicates
+ self.predicate.addAll(emfTool.getECoreUtil().copyAll(other.predicate));
+ // Copy assignments
+ self.assignment.addAll(emfTool.getECoreUtil().copyAll(other.assignment));
+ // Copy operations
+ self.enforcementOperation.addAll(emfTool.getECoreUtil().copyAll(other.enforcementOperation));
}
+/****o* QVTuToQVTm/getRefinedPatterns
+ * NAME
+ * getRefinedPatterns -- Retruns a Collection of patterns related this pattern
+ * FUNCTION
+ * The related patterns are searched in the orginial pattern and its refinement's areas.
+ * CONTEXT
+ * QVT!CorePattern
+ * PARAMETERS
+ * orig the original pattern in which the search is done
+ * pattern A string that indicates what pattern are we looking for:
+ * * "guard" = GuardPatterns
+ * * "bottom" = BottomPattern
+ */
@cached
operation QVT!CorePattern getRefinedPatterns(orig : QVT!CorePattern, pattern : String) : Collection {
+
var refinedAreas;
if (orig.area.isTypeOf(QVT!Mapping)) {
refinedAreas = orig.area.refinement;
@@ -108,233 +354,87 @@ operation QVT!CorePattern getRefinedPatterns(orig : QVT!CorePattern, pattern : S
}
}
-@cached
-operation QVT!Predicate findRreferencedVariables() : Collection {
- return self.conditionExpression.findRreferencedVariables();
-}
-
-@cached
-operation QVT!Variable findReferencesInPattern(pattern : QVT!CorePattern) {
- if (pattern.isTypeOf(QVT!GuardPattern)) {
- return pattern.variable.selectOne(lv | lv.name == self.name);
- } else if (pattern.isTypeOf(QVT!BottomPattern)) {
- return pattern.variable.includingAll(pattern.realizedVariable).selectOne(lv | lv.name == self.name);
- }
-}
-
-operation QVT!Variable findReferencesInPatterns(patterns : Sequence) {
+/****o* QVTuToQVTm/flattenNestedMappings
+ * NAME
+ * flattenNestedMappings -- Copy all attributes and references from a this
+ * mapping to the target mapping.
+ * FUNCTION
+ * First, all nested mappings are promoted to this mapping, and then the copy
+ * is done. The difference with moveMappingContents, is that flattenNestedMappings
+ * copies, while moveMappingContents moves.
+ * CONTEXT
+ * QVT!Mapping
+ * PARAMETERS
+ * target The maping to copy the nested mappings to
+ */
+operation QVT!Mapping flattenNestedMappings(target : QVT!Mapping) {
- var targetVar = null;
- for (p in patterns) {
- targetVar = self.findReferencesInPattern(p);
- if (targetVar <> null) {
- return targetVar;
+ //self.name.println("flattenNestedMappings ");
+ for (l in self.local) {
+ for (ll in l.local) {
+ ll.moveMappingContents(l);
}
+ target.guardPattern.variable.addAll(emfTool.getECoreUtil().copyAll(l.guardPattern.variable));
+ target.guardPattern.predicate.addAll(emfTool.getECoreUtil().copyAll(l.guardPattern.predicate));
+ target.bottomPattern.variable.addAll(emfTool.getECoreUtil().copyAll(l.bottomPattern.variable));
+ target.bottomPattern.realizedVariable.addAll(emfTool.getECoreUtil().copyAll(l.bottomPattern.realizedVariable));
+ target.bottomPattern.predicate.addAll(emfTool.getECoreUtil().copyAll(l.bottomPattern.predicate));
+ target.bottomPattern.assignment.addAll(emfTool.getECoreUtil().copyAll(l.bottomPattern.assignment));
+ target.bottomPattern.enforcementOperation.addAll(emfTool.getECoreUtil().copyAll(l.bottomPattern.enforcementOperation));
+ for (d in l.domain) {
+ var td = target.domain.selectOne(od | od.name == d.name);
+ td.guardPattern.variable.addAll(emfTool.getECoreUtil().copyAll(d.guardPattern.variable));
+ td.guardPattern.predicate.addAll(emfTool.getECoreUtil().copyAll(d.guardPattern.predicate));
+ td.bottomPattern.variable.addAll(emfTool.getECoreUtil().copyAll(d.bottomPattern.variable));
+ td.bottomPattern.realizedVariable.addAll(emfTool.getECoreUtil().copyAll(d.bottomPattern.realizedVariable));
+ td.bottomPattern.predicate.addAll(emfTool.getECoreUtil().copyAll(d.bottomPattern.predicate));
+ td.bottomPattern.assignment.addAll(emfTool.getECoreUtil().copyAll(d.bottomPattern.assignment));
+ td.bottomPattern.enforcementOperation.addAll(emfTool.getECoreUtil().copyAll(d.bottomPattern.enforcementOperation));
+ }
}
}
-operation QVT!GuardPattern fixPredicateVarReferences() {
- for (predicate in self.predicate) {
- //predicate.println("Predicate ");
- var refVars = predicate.findRreferencedVariables();
- //refVars.println("refVars ");
- // Find variables and fix references
- for (v in refVars) {
- //v.println("Fixing ");
- var targetVar = v.findReferencesInPatterns(self.asSequence());
- if (targetVar == null) {
- var searchPatterns;
- if (self.area.isTypeOf(QVTu!CoreDomain)) {
- // Domain guard patterns depend on guard patterns of domains with depending typed models
- searchPatterns = self.area.rule.domain.select(d | d.typedModel.dependsOn.includes(self.area.typedModel)).collect(d | d.guardPattern).flatten();
- targetVar = v.findReferencesInPatterns(searchPatterns);
- } else if (self.area.isTypeOf(QVTu!Mapping)) {
- // 1. Mapping's domain guard patterns
- searchPatterns = self.area.domain.collect(d | d.guardPattern).flatten();
- targetVar = v.findReferencesInPatterns(searchPatterns);
- }
- }
- if (targetVar == null) {
- if (self.area.isTypeOf(QVTu!Mapping)) {
- throw "Error! not able to find a local reference for variable " + v + " in predicate " + predicate + "in GuardPattern of Mapping " + self.area;
- } else if(self.area.isTypeOf(QVTu!CoreDomain)) {
- throw "Error! not able to find a local reference for variable " + v + " in predicate " + predicate + "in GuardPattern of Domain " + self.area;
- }
- }
- //targetVar.println("local ");
- predicate.conditionExpression.fixVarReferences(targetVar);
- }
+/****o* QVTuToQVTm/moveMappingContents
+ * NAME
+ * moveMappingContents -- Move all attributes and references from a this
+ * mapping to the target mapping.
+ * FUNCTION
+ * Movement is done recursively for nested mappings in this one. The difference
+ * with flattenNestedMappings, is that flattenNestedMappings
+ * copies, while moveMappingContents moves.
+ * CONTEXT
+ * QVT!Mapping
+ * PARAMETERS
+ * target The maping to copy the nested mappings to
+ */
+operation QVT!Mapping moveMappingContents(target : QVT!Mapping) {
+
+ //self.name.println("moveMappingContents ");
+ for (local in self.local) {
+ local.moveMappingContents(self);
}
-}
-
-
-operation QVT!BottomPattern fixPredicateVarReferences() {
- for (predicate in self.predicate) {
- //predicate.println("Predicate ");
- var refVars = predicate.findRreferencedVariables();
- //refVars.println("refVars ");
- // Find variables and fix references
- for (v in refVars) {
- //v.println("Fixing ");
- // MiddleGuard Pattern depends on domain guard patterns
- var targetVar = v.findReferencesInPatterns(self.asSequence());
- if (targetVar == null) {
- var searchPatterns;
- if (self.area.isTypeOf(QVTu!CoreDomain)) {
- // 1. Guard Pattern of the Domain
- searchPatterns = self.area.rule.domain.collect(d | d.guardPattern).flatten();
- targetVar = v.findReferencesInPatterns(searchPatterns);
- // 2. Bottom Pattern of domains with depending typed models
- if (targetVar == null) {
- searchPatterns = self.area.rule.domain.select(d | d.typedModel.dependsOn.includes(self.area.typedModel)).collect(d | d.bottomPattern).flatten();
- targetVar = v.findReferencesInPatterns(searchPatterns);
- }
- } else if (self.area.isTypeOf(QVTu!Mapping)) {
- // 1. Guard Pattern of the Mapping
- searchPatterns = self.area.guardPattern.asSet();
- targetVar = v.findReferencesInPatterns(searchPatterns);
- // 2. Mapping's domain bottom pattern
- if (targetVar == null) {
- searchPatterns = self.area.domain.collect(d | d.bottomPattern).flatten();
- targetVar = v.findReferencesInPatterns(searchPatterns);
- if (targetVar == null) {
- // 3. Mapping's domain guard patterns
- searchPatterns = self.area.domain.collect(d | d.guardPattern).flatten();
- targetVar = v.findReferencesInPatterns(searchPatterns);
- }
- }
- }
- }
- if (targetVar == null) {
- if (self.area.isTypeOf(QVTu!Mapping)) {
- throw "Error! not able to find a local reference for variable " + v + " in predicate " + predicate + "in BottomPattern of Mapping " + self.area;
- } else if(self.area.isTypeOf(QVTu!CoreDomain)) {
- throw "Error! not able to find a local reference for variable " + v + " in predicate " + predicate + "in BottomPattern of Domain " + self.area;
- }
- }
- //targetVar.println("local ");
- predicate.conditionExpression.fixVarReferences(targetVar);
- }
+ target.guardPattern.variable.addAll(self.guardPattern.variable);
+ target.guardPattern.predicate.addAll(self.guardPattern.predicate);
+ target.bottomPattern.variable.addAll(self.bottomPattern.variable);
+ target.bottomPattern.realizedVariable.addAll(self.bottomPattern.realizedVariable);
+ target.bottomPattern.predicate.addAll(self.bottomPattern.predicate);
+ target.bottomPattern.assignment.addAll(self.bottomPattern.assignment);
+ target.bottomPattern.enforcementOperation.addAll(self.bottomPattern.enforcementOperation);
+ for (d in self.domain) {
+ var td = target.domain.selectOne(od | od.typedModel == d.typedModel);
+ td.guardPattern.variable.addAll(d.guardPattern.variable);
+ td.guardPattern.predicate.addAll(d.guardPattern.predicate);
+ td.bottomPattern.variable.addAll(d.bottomPattern.variable);
+ td.bottomPattern.realizedVariable.addAll(d.bottomPattern.realizedVariable);
+ td.bottomPattern.predicate.addAll(d.bottomPattern.predicate);
+ td.bottomPattern.assignment.addAll(d.bottomPattern.assignment);
+ td.bottomPattern.enforcementOperation.addAll(d.bottomPattern.enforcementOperation);
}
}
-@cached
-operation QVT!Assignment findRreferencedVariables() : Set {
-
- var varRefs : Set();
- varRefs = self.value.findRreferencedVariables();
- if (self.isTypeOf(QVTu!PropertyAssignment)) {
- varRefs.addAll(self.slotExpression.findRreferencedVariables());
- } else if (self.isTypeOf(QVTu!VariableAssignment)) {
- varRefs.add(self.targetVariable);
- }
- return varRefs;
+post {
+ "QVTuToQVTm Done!".println();
}
-operation QVT!BottomPattern fixAssignmentVarReferences() {
- for (assignment in self.assignment) {
- //predicate.println("Predicate ");
- var refVars = assignment.findRreferencedVariables();
- //refVars.println("refVars ");
- // Find variables and fix references
- for (v in refVars) {
- //v.println("Fixing ");
- // MiddleGuard Pattern depends on domain guard patterns
- var targetVar = v.findReferencesInPatterns(self.asSequence());
- if (targetVar == null) {
- var searchPatterns;
- if (self.area.isTypeOf(QVTu!CoreDomain)) {
- // 1. Guard Pattern of the Domain
- searchPatterns = self.area.rule.domain.collect(d | d.guardPattern).flatten();
- searchPatterns.println();
- targetVar = v.findReferencesInPatterns(searchPatterns);
- // 2. Bottom Pattern of domains with depending typed models
- if (targetVar == null) {
- searchPatterns = self.area.rule.domain.select(d | d.typedModel.dependsOn.includes(self.area.typedModel)).collect(d | d.bottomPattern).flatten();
- targetVar = v.findReferencesInPatterns(searchPatterns);
- }
- } else if (self.area.isTypeOf(QVTu!Mapping)) {
- // 1. Guard Pattern of the Mapping
- searchPatterns = self.area.guardPattern.asSet();
- targetVar = v.findReferencesInPatterns(searchPatterns);
- // 2. Mapping's domain bottom pattern
- if (targetVar == null) {
- searchPatterns = self.area.domain.collect(d | d.bottomPattern).flatten();
- targetVar = v.findReferencesInPatterns(searchPatterns);
- if (targetVar == null) {
- // 3. Mapping's domain guard patterns
- searchPatterns = self.area.domain.collect(d | d.guardPattern).flatten();
- targetVar = v.findReferencesInPatterns(searchPatterns);
- }
- }
- }
- }
- if (targetVar == null) {
- if (self.area.isTypeOf(QVTu!Mapping)) {
- throw "Error! not able to find a local reference for variable " + v + " in assignemnt " + assignment + "in BottomPattern of Mapping " + self.area;
- } else if(self.area.isTypeOf(QVTu!CoreDomain)) {
- throw "Error! not able to find a local reference for variable " + v + " in assignment " + assignment + "in BottomPattern of Domain " + self.area;
- }
- }
- assignment.value.fixVarReferences(targetVar);
- if (assignment.isTypeOf(QVTu!PropertyAssignment)) {
- assignment.slotExpression.fixVarReferences(targetVar);
- } else if (assignment.isTypeOf(QVTu!VariableAssignment)) {
- if (self.targetVariable.name = targetVar.name) {
- self.targetVariable = targetVar;
- }
- }
- }
- }
-}
-operation QVT!BottomPattern fixOperationCallReferences() {
- for (o in self.enforcementOperation) {
- //predicate.println("Predicate ");
- var refVars = o.operationCallExp.findRreferencedVariables();
- //refVars.println("refVars ");
- // Find variables and fix references
- for (v in refVars) {
- //v.println("Fixing ");
- // MiddleGuard Pattern depends on domain guard patterns
- var targetVar = v.findReferencesInPatterns(self.asSequence());
- if (targetVar == null) {
- var searchPatterns;
- if (self.area.isTypeOf(QVTu!CoreDomain)) {
- // 1. Guard Pattern of the Domain
- searchPatterns = self.area.rule.domain.collect(d | d.guardPattern).flatten();
- searchPatterns.println();
- targetVar = v.findReferencesInPatterns(searchPatterns);
- // 2. Bottom Pattern of domains with depending typed models
- if (targetVar == null) {
- searchPatterns = self.area.rule.domain.select(d | d.typedModel.dependsOn.includes(self.area.typedModel)).collect(d | d.bottomPattern).flatten();
- targetVar = v.findReferencesInPatterns(searchPatterns);
- }
- } else if (self.area.isTypeOf(QVTu!Mapping)) {
- // 1. Guard Pattern of the Mapping
- searchPatterns = self.area.guardPattern.asSet();
- targetVar = v.findReferencesInPatterns(searchPatterns);
- // 2. Mapping's domain bottom pattern
- if (targetVar == null) {
- searchPatterns = self.area.domain.collect(d | d.bottomPattern).flatten();
- targetVar = v.findReferencesInPatterns(searchPatterns);
- if (targetVar == null) {
- // 3. Mapping's domain guard patterns
- searchPatterns = self.area.domain.collect(d | d.guardPattern).flatten();
- targetVar = v.findReferencesInPatterns(searchPatterns);
- }
- }
- }
- }
- if (targetVar == null) {
- if (self.area.isTypeOf(QVTu!Mapping)) {
- throw "Error! not able to find a local reference for variable " + v + " in operation " + o + "in BottomPattern of Mapping " + self.area;
- } else if(self.area.isTypeOf(QVTu!CoreDomain)) {
- throw "Error! not able to find a local reference for variable " + v + " in operation " + o + "in BottomPattern of Domain " + self.area;
- }
- }
- o.operationCallExp.fixVarReferences(targetVar);
- }
- }
-}
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/QVTuToQVTmPartition.etl b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/QVTuToQVTmPartition.etl
deleted file mode 100644
index b78f21edd..000000000
--- a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/QVTuToQVTmPartition.etl
+++ /dev/null
@@ -1,394 +0,0 @@
-import "Helpers.eol";
-import "OclLibHelper.eol";
-
-pre {
- var EmfTool = new Native("org.eclipse.epsilon.emc.emf.tools.EmfTool");
-}
-
-rule CoreModel
- transform mIn:QVTmF!CoreModel
- to mOut:QVTmP!CoreModel {
- mOut.name = mIn.name;
- mOut.nestedPackage ::= mIn.nestedPackage;
- }
-
-rule Transformation
- transform tIn:QVTmF!Transformation
- to tOut:QVTmP!Transformation {
-
- tOut.name = tIn.name;
- tOut.`rule` ::= tIn.`rule`;
- tOut.modelParameter ::= tIn.modelParameter;
- }
-
-rule TypedModels
- transform itm:QVTmF!TypedModel
- to otm:QVTmF!TypedModel {
-
- otm.name = itm.name;
- otm.usedPackage = itm.usedPackage.clone();
- otm.dependsOn ::= itm.dependsOn;
- }
-
-
-rule PartitionLM
- transform mapping:QVTmF!Mapping
- to mappingLM:QVTmP!Mapping, mappingMR:QVTmP!Mapping {
-
- // Only top mappings (named)
- guard : mapping.name <> null
-
- mapping.println();
-
- /* Create LM mapping */
- mappingLM.name = mapping.name + "_LM";
-
- // Copy Input Domains
- for (d:QVT!Area in mapping.domain) {
- if (isInputDomain(d)) {
- mappingLM.domain.add(d.equivalent());
- }
- }
- // MappingPatterns
- mappingLM.guardPattern = mapping.guardPattern.equivalents().first();
- mappingLM.bottomPattern = mapping.bottomPattern.equivalents().first();
-
- // Assignemnt variable resolution
- for (a in mappingLM.bottomPattern.assignment) {
- a.resolveVariables();
- }
-
- // No nested mappings are copied, only the nested mapping's bottom pattern predicates
- // that refer to input domain variables (moved to the bottom pattern)
- for (nm in mapping.local) {
- for (bp in nm.bottomPattern) {
- if (bp.assignment.size() > 0) {
- for (a in bp.offendingAssignments(false)) {
- var ac = EmfTool.getECoreUtil().copy(a);
- mappingLM.bottomPattern.assignment.add(ac);
- }
- }
- }
- }
-
-
- /* Create MR mapping */
- mappingMR.name = mapping.name + "_MR";
- // DomainPatterns
- mappingMR.guardPattern = mapping.guardPattern.equivalents().last();
- mappingMR.bottomPattern = mapping.bottomPattern.equivalents().last();
-
- // Copy Output Domains
- for (d:QVT!Area in mapping.domain) {
- if (isOutputDomain(d)) {
- mappingMR.domain.add(d.equivalent());
- }
- }
- // Mested mappings are copied eliminating the nested mapping's bottom pattern predicates
- // that refer to input domain variables
- for (nm in mapping.local) {
- var nmc = EmfTool.getECoreUtil().copy(nm);
- mappingMR.local.add(nmc);
- }
- for (nm in mappingMR.local) {
- for (bp in nm.bottomPattern) {
- if (bp.assignment.size() > 0) {
- bp.assignment.removeAll(bp.offendingAssignments(false));
- }
- }
- }
- }
-
-rule Domains
- transform id : QVTmF!CoreDomain
- to od : QVTmP!CoreDomain {
-
- od.name = id.name;
- od.isCheckable = id.isCheckable;
- od.isEnforceable = od.isEnforceable;
- od.typedModel ::= id.typedModel;
- od.guardPattern ::= id.guardPattern;
- od.bottomPattern ::= id.bottomPattern;
- }
-
-@lazy
-rule GuardPatterns
- transform gp : QVTmF!GuardPattern
- to lmgp : QVTmP!GuardPattern, mrgp : QVTmP!GuardPattern {
-
- // .predicate *
- if (gp.predicate.size() > 0) {
- // LM: Remove predicates and assignments that reference variables in the output domain
- for (p in gp.predicate.excludingAll(gp.offendingPredicates(true))) {
- lmgp.predicate.add(p.equivalent());
- }
- // MR: Remove predicates and assignments that reference variables in the input domain
- for (p in gp.predicate.excludingAll(gp.offendingPredicates(false))) {
- mrgp.predicate.add(p.equivalent());
- }
- }
-
- // .variable *
- lmgp.variable = gp.variable.clone();
- mrgp.variable = gp.variable.clone();
-
- //.bindsTo *
- lmgp.bindsTo = gp.bindsTo.clone();
- mrgp.bindsTo = gp.bindsTo.clone();
-
- //.ownedComment *
- lmgp.ownedComment = gp.ownedComment.clone();
- mrgp.ownedComment = gp.ownedComment.clone();
-
- }
-
-@lazy
-rule BottomPatterns
- transform bp : QVTmF!BottomPattern
- to lmbp : QVTmP!BottomPattern, mrbp : QVTmP!BottomPattern {
-
- //.bindsTo *
- lmbp.bindsTo = bp.bindsTo.clone();
- mrbp.bindsTo = bp.bindsTo.clone();
-
- //.ownedComment *
- lmbp.ownedComment = bp.ownedComment.clone();
- mrbp.ownedComment = bp.ownedComment.clone();
-
- // .variable * might have to 'transform' them so the OCL expressions are correctly updated....
- // or find a way to replace all the OCL references...
- lmbp.variable = bp.variable.clone();
- mrbp.variable = bp.variable.clone();
-
- //.realizedVariable
- lmbp.realizedVariable = bp.realizedVariable.clone();
- mrbp.variable.addAll(bp.realizedVariable.equivalent());
-
- // Remove predicates and assignments that reference variables in the other domain
- // .predicate *
- if (bp.predicate.size() > 0) {
- // LM: Remove predicates and assignments that reference variables in the output domain
- for (p in bp.predicate.excludingAll(bp.offendingPredicates(true))) {
- lmbp.predicate.add(p.equivalent());
- }
- // MR: Remove predicates and assignments that reference variables in the input domain
- for (p in bp.predicate.excludingAll(bp.offendingPredicates(false))) {
- mrbp.predicate.add(p.equivalent());
- }
- }
-
- // .assignemnt
- if (bp.assignment.size() > 0) {
- // LM: Remove assignments and assignments that reference variables in the output domain
- for (a in bp.assignment.excludingAll(bp.offendingAssignments(true))) {
- lmbp.assignment.add(a.equivalent());
- }
- // MR: Remove assignments and assignments that reference variables in the input domain
- for (a in bp.assignment.excludingAll(bp.offendingAssignments(false))) {
- mrbp.assignment.add(a.equivalent());
- }
-
- }
-
-}
-
-
-@lazy
-rule Predicates
- transform fp : QVTmF!Predicate
- to pp : QVTmP!Predicate {
-
- pp.conditionExpression = EmfTool.getECoreUtil().copy(fp.conditionExpression);
- }
-
-@lazy
-rule VariableAssignments
- transform fa : QVTmF!VariableAssignment
- to pa : QVTmP!VariableAssignment {
-
- pa.isDefault = fa.isDefault;
- pa.value = EmfTool.getECoreUtil().copy(fa.value);
- pa.targetVariable = EmfTool.getECoreUtil().copy(fa.targetVariable);
- }
-
-@lazy
-rule PropertyAssignments
- transform fa : QVTmF!PropertyAssignment
- to pa : QVTmP!PropertyAssignment {
-
- pa.isDefault = fa.isDefault;
- pa.targetProperty = EmfTool.getECoreUtil().copy(fa.targetProperty);
- pa.slotExpression = EmfTool.getECoreUtil().copy(fa.slotExpression);
- pa.value = EmfTool.getECoreUtil().copy(fa.value);
- }
-
-/* Fix variable references in property assignments */
-operation QVTmP!PropertyAssignment resolveVariables() {
-
-
- // Refered Variables in the slot expression and value most be resolved so they are
- // correctly resolved. We can limit lookup to the expression's context
- // Domain bottom patterns context includes guard pattern
- // Middle bottom patterns context includes domain bottom and guard pattern.
- // In the reduced context a name search is suficient (does the EMF copy leave a trace?)
- /*
- if (self.slotExpression.isTypeOf(QVT!VariableExp)) {
- var rv = self.slotExpression.referredVariable;
- self.slotExpression.println("Slot expression ")
- rv.println();
- self.bottomPattern.variable.includingAll(self.bottomPattern.realizedVariable).println();
- var newVar = self.bottomPattern.variable.includingAll(self.bottomPattern.realizedVariable).select(v | v.name = rv.name).first();
- if (newVar == null) {
- rv.errln("No new variable found for: ");
- } else {
- self.slotExpression.referredVariable = newVar;
- }
-
- } else {
- self.slotExpression.type().errln("No implementation for finding target vars for this type: ");
- }
- */
- self.value.println("Value ");
- if (self.value.isTypeOf(QVT!VariableExp)) {
- var rv = self.value.referredVariable;
- var newVar = self.bottomPattern.variable.selectOne(v | v.name = rv.name);
- newVar.println("newVar ");
- if (newVar == null) {
- newVar = self.bottomPattern.realizedVariable.selectOne(v | v.name = rv.name);
- newVar.println("newVar ");
- if (newVar == null) {
- newVar = self.bottomPattern.area.guardPattern.variable.selectOne(v | v.name = rv.name);
- newVar.println("newVar ");
- // Search in the domains
- self.bottomPattern.area.isTypeOf(QVT!Mapping).println();
- self.bottomPattern.area.println();
- if (newVar == null and self.bottomPattern.area.isTypeOf(QVT!Mapping)) {
- self.bottomPattern.area.domain.println();
- for (d in self.bottomPattern.area.domain) {
- newVar = d.bottomPattern.variable.selectOne(v | v.name = rv.name);
- newVar.println("newVar ");
- if (newVar == null) {
- newVar = self.bottomPattern.realizedVariable.selectOne(v | v.name = rv.name);
- newVar.println("newVar ");
- if (newVar == null) {
- d.guardPattern.variable.println("Domain guard pat vars ");
- newVar = d.guardPattern.variable.selectOne(v | v.name = rv.name);
- newVar.println("newVar ");
- if (newVar <> null) {
- break;
- }
- }
- } else {
- break;
- }
- }
- }
- }
- }
- newVar.println();
- if (newVar == null) {
- rv.errln("No new variable found for: ");
- } else {
- self.value.referredVariable = newVar;
- }
-
- } else {
- self.value.type().errln("No implementation for finding target vars for this type: ");
- }
-
-
-}
-
-
-// In the MR transform realize variables to variables in the Middle Patterns
-@lazy
-rule MiddleRealizedvariables
- transform rv : QVTmF!RealizedVariable
- to v : QVTmP!Variable {
-
- v.implicit = rv.implicit;
- v.initExpression = rv.initExpression;
- v.isRequired = rv.isRequired;
- v.name = name;
- v.type = rv.type;
- }
-
-/* Returns a set of predicates that don't match the specified (output) domain.
- params:
- output : Boolean Indicates whether the output (true) or input (false)
- domain is matched.
-*/
-operation QVT!CorePattern offendingPredicates(output : Boolean) : Set {
-
- var offending : Set;
- for(p in self.predicate) {
- // The output domain vars may be either in the argument or in the source
- if (p.conditionExpression.source.isDefined()) {
- if (output) {
- if (isOutputDomain(p.conditionExpression.source.getArea())) {
- offending.add(p);
- break;
- }
- } else {
- if (isInputDomain(p.conditionExpression.source.getArea())) {
- offending.add(p);
- break;
- }
- }
- }
- if (p.conditionExpression.argument.isDefined()) {
- for (a in p.conditionExpression.argument) {
- if (output) {
- if (isOutputDomain(a.getArea())) {
- offending.add(p);
- break;
- }
- } else {
- if (isInputDomain(a.getArea())) {
- offending.add(p);
- break;
- }
- }
- }
- }
- }
- return offending;
-}
-
-/* Returns a set of assignments that don't match the specified domain.
- params:
- output : Boolean Indicates whether the output (true) or input (false)
- domain is matched.
-*/
-operation QVT!BottomPattern offendingAssignments(output : Boolean) : Set {
- var offending : Set;
- for (a in self.assignment) {
- if (a.isTypeOf(QVT!PropertyAssignment)) {
- if (output) {
- if (isOutputDomain(a.value.getArea()) or isOutputDomain(a.slotExpression.getArea())) {
- offending.add(a);
- break;
- }
- } else {
- if (isInputDomain(a.value.getArea()) or isInputDomain(a.slotExpression.getArea())) {
- offending.add(a);
- break;
- }
- }
- } else if (a.isTypeOf(QVT!VariableAssignment)) {
- if (output) {
- if (isOutputDomain(a.targetVariable.oppositePattern().area) or isOutputDomain(a.value.getArea())) {
- offending.add(a);
- break;
- }
- } else {
- if (isInputDomain(a.targetVariable.oppositePattern().area) or isInputDomain(a.value.getArea())) {
- offending.add(a);
- break;
- }
- }
- }
- }
- return offending;
-}
- \ No newline at end of file
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/QvtuToQvtiMtc.xml b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/QvtuToQvtiMtc.xml
index 9a35d84cf..9c2e4ede8 100644
--- a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/QvtuToQvtiMtc.xml
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/QvtuToQvtiMtc.xml
@@ -1,30 +1,28 @@
<?xml version="1.0"?>
<!--
/*******************************************************************************
- * Copyright (c) 2013 The University of York, Willink Transformations and others.
+ * Copyright (c) 2013 The University of York and Willink Transformations.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
- *
+ *
* Contributors:
* Horacio Hoyos - initial script
******************************************************************************/
-->
-<project default="QvtuToQvtm">
+<project default="QvtmToQvtiPartition">
<!-- Default Properties -->
<property name="OclLibURI" value="http://www.eclipse.org/ocl/2015/Library.oclas"/>
<property name="QVTcToQVTu" value="platform:/resource/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/QVTcToQVTu.mig"/>
<property name="QVTuToQVTm" value="platform:/resource/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/QVTuToQVTm.mig"/>
-
- <!-- Create for each example/test -->
- <property file="build.properties"/>
-
+ <property name="QVTmToQVTiPartition" value="platform:/resource/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/QVTmToQVTiPartition.etl"/>
+
<target name="PivotSetup">
<PivotSetup/>
</target>
-
- <target name="loadModels" depends="PivotSetup">
+
+ <target name="loadModels" > <!-- depends="PivotSetup"> -->
<!-- OCL Library -->
<epsilon.emf.loadModel
name = "oclStdLib"
@@ -35,25 +33,35 @@
<!-- Configuration -->
<epsilon.emf.loadModel
name = "config"
- modelFile = "${configuration}"
+ modelFile = "${name}Config.xmi"
metamodelUri = "http://www.eclipse.org/qvt/examples/0.1/QVTcConfig"
read="true" store="false"/>
</target>
-
+
<target name="QvtcToQvtu" depends="loadModels">
<!-- QVTc -->
<epsilon.emf.loadModel
name = "QVTc"
aliases ="QVT"
+<<<<<<< HEAD
modelFile = "${qvtcas}"
metamodelUri = "http://www.eclipse.org/qvt/2015/QVTcore"
+=======
+ modelFile = "${name}.qvtcas"
+ metamodelUri = "http://www.eclipse.org/qvt/0.9/QVTcore"
+>>>>>>> refs/remotes/origin/hhoyos/qvtr
read="true" store="false"/>
<!-- QVTu -->
<epsilon.emf.loadModel
name = "QVTu"
aliases ="QVT"
+<<<<<<< HEAD
modelFile = "${qvtuas}"
metamodelUri = "http://www.eclipse.org/qvt/2015/QVTcore"
+=======
+ modelFile = "${name}.qvtu.qvtcas"
+ metamodelUri = "http://www.eclipse.org/qvt/0.9/QVTcore"
+>>>>>>> refs/remotes/origin/hhoyos/qvtr
read="false" store="true"/>
<epsilon.flock originalmodel="QVTc" migratedmodel="QVTu" uri="${QVTcToQVTu}">
<model ref="QVTc"/>
@@ -64,54 +72,74 @@
<epsilon.disposeModel model="QVTc"/>
<epsilon.disposeModel model="QVTu"/>
</target>
-
+
<target name="QvtuToQvtm" depends="QvtcToQvtu">
<!-- QVTu -->
<epsilon.emf.loadModel
name = "QVTu"
aliases ="QVT"
+<<<<<<< HEAD
modelFile = "${qvtuas}"
metamodelUri = "http://www.eclipse.org/qvt/2015/QVTcore"
+=======
+ modelFile = "${name}.qvtu.qvtcas"
+ metamodelUri = "http://www.eclipse.org/qvt/0.9/QVTcore"
+>>>>>>> refs/remotes/origin/hhoyos/qvtr
read="true" store="false"/>
<!-- QVTm Flatten -->
<epsilon.emf.loadModel
- name = "QVTmF"
+ name = "QVTm"
aliases ="QVT"
+<<<<<<< HEAD
modelFile = "${qvtmas}"
metamodelUri = "http://www.eclipse.org/qvt/2015/QVTcore"
+=======
+ modelFile = "${name}.qvtm.qvtcas"
+ metamodelUri = "http://www.eclipse.org/qvt/0.9/QVTcore"
+>>>>>>> refs/remotes/origin/hhoyos/qvtr
read="false" store="true"/>
- <epsilon.flock originalmodel="QVTu" migratedmodel="QVTmF" uri="${QVTuToQVTm}">
+ <epsilon.flock originalmodel="QVTu" migratedmodel="QVTm" uri="${QVTuToQVTm}">
<model ref="QVTu"/>
- <model ref="QVTmF"/>
+ <model ref="QVTm"/>
<model ref="config"/>
<model ref="oclStdLib"/>
</epsilon.flock>
<epsilon.disposeModel model="QVTu"/>
- <epsilon.disposeModel model="QVTmF"/>
+ <epsilon.disposeModel model="QVTm"/>
</target>
-
- <target name="QvtuToQvtmPartition" depends="QvtuToQvtm">
+
+ <target name="QvtmToQvtiPartition" depends="loadModels">
<!-- QVTm Flatten -->
<epsilon.emf.loadModel
- name = "QVTmF"
+ name = "QVTm"
aliases ="QVT"
+<<<<<<< HEAD
modelFile = "${qvtmas}"
metamodelUri = "http://www.eclipse.org/qvt/2015/QVTcore"
+=======
+ modelFile = "${name}.qvtm.qvtcas"
+ metamodelUri = "http://www.eclipse.org/qvt/0.9/QVTcore"
+>>>>>>> refs/remotes/origin/hhoyos/qvtr
read="true" store="false"/>
<!-- QVTm Partition -->
<epsilon.emf.loadModel
- name = "QVTmP"
+ name = "QVTi"
aliases ="QVT"
+<<<<<<< HEAD
modelFile = "${qvtmpartitionas}"
metamodelUri = "http://www.eclipse.org/qvt/2015/QVTcore"
+=======
+ modelFile = "${name}.qvtias"
+ metamodelUri = "http://www.eclipse.org/qvt/0.9/QVTimperative"
+>>>>>>> refs/remotes/origin/hhoyos/qvtr
read="false" store="true"/>
- <epsilon.etl uri="${QVTuToQVTmPartitionLM}">
- <model ref="QVTmF"/>
- <model ref="QVTmP"/>
+ <epsilon.etl uri="${QVTmToQVTiPartition}">
+ <model ref="QVTm"/>
+ <model ref="QVTi"/>
<model ref="config"/>
<model ref="oclStdLib"/>
</epsilon.etl>
- <epsilon.disposeModel model="QVTmF"/>
- <epsilon.disposeModel model="QVTmP"/>
- </target>
-</project> \ No newline at end of file
+ <epsilon.disposeModel model="QVTm"/>
+ <epsilon.disposeModel model="QVTi"/>
+ </target>
+</project>
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/qvtr/MiddleModelSytnthesis.etl b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/qvtr/MiddleModelSytnthesis.etl
new file mode 100644
index 000000000..778556d6f
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/qvtr/MiddleModelSytnthesis.etl
@@ -0,0 +1,21 @@
+
+rule RelationToEClass
+ transform r : QVTr!Relation
+ to ec : Ecore!EClass {
+ ec.name = "T" + r.name;
+ // One association per domain root varibale.
+ var exps = r.domain.collect(d | d.pattern.templateExpression);
+ ec.eRefernces.addAll(te.equiavlent());
+ // Can the recursion be done with a closure?
+ ec.eRefernces.addAll(exps.closure(te | te.part.collect(pt | c.value)).equivalent());
+ }
+
+rule DomainToRefernce
+ transform ote : QVTr!ObjectTemplateExp
+ to er : ECore!EReference {
+
+ er.containment = false;
+ er.name = ote.bindsTo.name;
+ eReferenceType = ote.bindsTo.type;
+
+ } \ No newline at end of file
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/scheduling/MapOrdering.eol b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/scheduling/MapOrdering.eol
new file mode 100644
index 000000000..6cf2250c1
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/scheduling/MapOrdering.eol
@@ -0,0 +1,164 @@
+/*******************************************************************************
+ * Copyright (c) 2013 The University of York and Willink Transformations.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Horacio Hoyos - initial implementation
+ ******************************************************************************/
+import "../helpers/OCLExpressionAnalysis.eol";
+
+/****l* /org.eclipse.qvtd.build.etl.scheduling/MapOrdering
+ * NAME
+ * MapOrdering -- A set of EOL operations to perform scheduling analysys from
+ * data dependencies
+ *
+ * MODELS
+ * Required models to run the script:
+ * - NAME ALIASES METAMODEL ROL SOD
+ * - qvti QVT QVTCore X The QVTi (partitioned) AST
+ * - rTree tree ECoreContainmentTree X The right metamodel containment tree
+ * - qvts QVTSchedule X The QVT schedule model
+ * SEE ALSO
+ *
+ ******
+ */
+
+
+/****o* MapOrdering/findMapOrdering
+ * NAME
+ * findMapOrdering - Assings an index to all MappingActions to reflect the
+ * ordering of the mappings based on the R type containment tree and the
+ * type dependencies.
+ *
+ * CONTEXT
+ * QVTs!Schedule The schedule to be indexed
+ * ANNOTATIONS
+ * cached
+ * SEE ALSO
+ */
+operation QVTs!Schedule findMapOrdering() {
+ // Do a Depth first search of the containment tree of the output model
+ var queue = new Sequence();
+ // Marked visited mappings to avoid loops
+ var visitedAct = new Sequence();
+ var visitedNodes = new Sequence();
+ queue.addAll(rTree!Node.all().select(n | n.parent.isEmpty()));
+ while (not queue.isEmpty()) {
+ var n = queue.first();
+ queue.remove(n);
+ visitedNodes.add(n);
+ // Do stuff with n
+ //n.println("n ");
+ // Find all the mappings that have an output node if this type
+ // TODO The ECoreContainment tree should save the actual type so we dont compare names!
+ for (ma in self.actions.select(aa | aa.results.exists(e | e.type.name = n.EClassName))) { // FIXME what about mappings which create any subtype?
+ // Find the predecesors and linearize
+ if (visitedAct.excludes(ma))
+ ma.getOrdering(visitedAct);
+ }
+ queue.addAll(n.children.excludingAll(visitedNodes));
+ }
+}
+
+/****o* MapOrdering/getOrdering
+ * NAME
+ * getOrdering - Assing an index to a mapping action based on its predecesors.
+ * SYNOPSIS
+ * ma.getOrdering();
+ * FUNCTION
+ * Assings an index to all the predecessors of the mapping action and then
+ * assings an index to itself. This is a recursive function.
+ * CONTEXT
+ * QVTs!MappingAction The MappingAction
+ * RETURNS
+ * QVTs!AbstractDatum The ClassDatum for the variable's type
+ * SEE ALSO
+ */
+operation QVTs!MappingAction getOrdering(visited) {
+
+ //self.mapping.name.println("getOrdering ");
+ visited.add(self);
+ for (ma in self.getPredecessors()) {
+ if (visited.excludes(ma))
+ ma.getOrdering(visited);
+ }
+ self.order = self.schedule.getMaxIndex() + 1;
+}
+
+/****o* MapOrdering/getPredecessors
+ * NAME
+ * getPredecessors - Get the predecessors of a mapping action
+ * FUNCTION
+ * The predecessors of a mapping action are calculating by following the
+ * mapping arguments' sources. This method could be invoked recursively
+ * to do a graph search iif a mechanism is added to prevent loops.
+ * CONTEXT
+ * QVTs!MappingAction The MappingAction
+ * RETURNS
+ * Sequence The sequence of mapping predecesors.
+ * SEE ALSO
+ */
+@cached
+operation QVTs!MappingAction getPredecessors() : Set {
+
+ //self.mapping.name.println("getPredecessors ");
+ var args = self.getArguments();
+ var concreteSources = args.collect(a | a.sources).flatten().asSet();
+ var abstractSources = self.schedule.datums.select(cd |
+ args.select(ad | ad.type.isAbstract).exists(ad | cd.super.includes(ad)))
+ -- FIXME why does it need to be abstract? and why not super.super ?
+ .collect(a | a.sources).flatten().asSet();
+ return concreteSources.includingAll(abstractSources);
+}
+
+/****o* MapOrdering/getArguments
+ * NAME
+ * getArguments - Get the arguments of a mapping action
+ * SYNOPSIS
+ * ma.getArguments();
+ * FUNCTION
+ * Get the arguments of an mapping action.
+ * TODO
+ * This should be implemented as the derivied property of the mapping.
+ * CONTEXT
+ * QVTs!MappingAction The MappingAction
+ * ANNOTATIONS
+ * cached
+ * RETURNS
+ * QVTs!AbstractDatum The ClassDatum for the variable's type
+ * SEE ALSO
+ */
+@cahced
+operation QVTs!MappingAction getArguments() : Sequence {
+
+ return self.distinctArguments.primaryArguments
+ .includingAll(self.distinctArguments.secondaryArguments).flatten()
+ .collect(da | da.datum);
+}
+
+/****o* MapOrdering/getMaxIndex
+ * NAME
+ * getMaxIndex - Get the arguments of a mapping action
+ * SYNOPSIS
+ * s.getMaxIndex();
+ * FUNCTION
+ * Get the arguments of an mapping action.
+ * TODO
+ * This should be implemented as the derivied property of the mapping.
+ * CONTEXT
+ * QVTs!Schedule The Schedule
+ * ANNOTATIONS
+ * cached
+ * RETURNS
+ * QVTs!AbstractDatum The ClassDatum for the variable's type
+ * SEE ALSO
+ */
+operation QVTs!Schedule getMaxIndex() : Integer {
+ return self.actions.sortBy(a | a.order).order.last();
+}
+
+/* =========================================== */
+
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/scheduling/QVTpToSchedule.etl b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/scheduling/QVTpToSchedule.etl
new file mode 100644
index 000000000..a59de2676
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/scheduling/QVTpToSchedule.etl
@@ -0,0 +1,118 @@
+/*******************************************************************************
+ * Copyright (c) 2014 The University of York and Willink Transformations.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Horacio Hoyos - initial implementation
+ ******************************************************************************/
+import "../helpers/QVTHelpers.eol";
+//import "Scheduler.eol";
+
+/****t* /org.eclipse.qvtd.build.etl/scheduling/QVTpToSchedule
+ * NAME
+ * QVTpToSchedule -- Craetes the base schedule from a partitioned (QVTp)
+ * transformation
+ * FUNCTION
+ * Extract the basic Schedule information from the QVTp trnasformation. The QVTp
+ * trasnformation must conform to QVTi. The basic schedule craetes the Class and
+ * Parameter information but does not reduce the DistinctData information (i.e.
+ * does not perform derivation analysis.
+ * SEE ALSO
+ * /org.eclipse.qvtd.build.etl/scheduling/DerivationAnalysis
+ *
+ */
+
+/****u* QVTpToSchedule/TransformationToSchedule
+ * NAME
+ * TransformationToSchedule - Transform the trnsformation
+ * FUNCTION
+ * Just creates the place holder for datums and actions
+ * FROM
+ * QVTp!Transformation
+ * TO
+ * QVTs!Schedule
+ */
+rule TransformationToSchedule
+ transform t : QVTp!Transformation
+ to s : QVTs!Schedule {
+
+ }
+
+/****u* QVTpToSchedule/MappingToMappingAction
+ * NAME
+ * MappingToMappingAction - A mapping genereates a mapping action and its datums
+ * FUNCTION
+ * Visit the mapping input/ouput variables to create the appropriate results and
+ * arguments.
+ * FROM
+ * QVTp!Mapping
+ * TO
+ * QVTs!MappingAction
+ */
+rule MappingToMappingAction
+ transform m : QVTp!Mapping
+ to ma : QVTs!MappingAction {
+
+ //m.name.println();
+ ma.schedule ::= m.transformation;
+ ma.mapping = m;
+ ma.results.addAll(m.getOutputVariables().collect(v | v.type).equivalent());
+ ma.distinctArguments.addAll(m.getInputVariables().equivalents().collect(e | e.first()));
+ }
+
+/****u* QVTpToSchedule/VariableToDataParameter
+ * NAME
+ * VariableToDataParameter - Variables and RealizedVariables are transformed
+ * into a DistinctData and a DataParameter.
+ * FUNCTION
+ * All Variables are treated as initialy treated as primary arguments. Analysis
+ * of derivation is done in a later stage.
+ * FROM
+ * QVTp!Variable
+ * TO
+ * QVTs!DistinctData, QVTs!DataParameter
+ * ANNOTATIONS
+ * lazy Lazy variables from iterators and not automatically transformed
+ * greedy Greedy so we also transform RealizedVariables
+ */
+@lazy
+@greedy
+rule VariableToDataParameter
+ transform v : QVTp!Variable
+ to dd : QVTs!DistinctData, dp : QVTs!DataParameter {
+
+ //v.name.println("v ");
+ dp.variable = v;
+ dp.datum ::= v.type;
+ dd.primaryArguments.add(dp);
+ }
+
+// Only types in the TypedModel pacakges and that are used by a variable
+@lazy
+@greedy
+rule TypeToDatum
+ transform t : QVTp!Type
+ to d : QVTs!ClassDatum {
+
+ guard : QVTp!Variable.all().exists(v | v.type == t)
+
+ var domain = t.getVariableForType().oppositePattern().area;
+ //t.name.println("TypeToDatum ");
+ d.type = t;
+ d.super.addAll(t.superClass.equivalent());
+ d.domain = domain;
+ d.schedule ::= domain.`rule`.transformation;
+ }
+
+@cached
+operation QVTp!Type getVariableForType() : QVTp!Variable {
+
+ return QVTp!Variable.all().selectOne(v | v.type == self or v.type.superClass.includes(self));
+}
+
+post{
+ "QVTpToSchedule Done".println();
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/scheduling/QVTs-pToQVTi.etl b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/scheduling/QVTs-pToQVTi.etl
new file mode 100644
index 000000000..020a5a478
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/scheduling/QVTs-pToQVTi.etl
@@ -0,0 +1,409 @@
+/*******************************************************************************
+ * Copyright (c) 2014 The University of York and Willink Transformations.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Horacio Hoyos - initial implementation
+ ******************************************************************************/
+import "../helpers/QVTHelpers.eol";
+import "../helpers/QVTsHelpers.eol";
+
+pre {
+ var emfTool = new Native("org.eclipse.epsilon.emc.emf.tools.EmfTool");
+}
+
+//=============== QVTp to QVTi (just copy) ===============
+
+rule ImperativeModel
+ transform mIn : QVTp!ImperativeModel
+ to mOut : QVTi!ImperativeModel
+ {
+
+ mOut.externalURI = mIn.externalURI.replace(".qvtp.qvti", ".qvti");
+ mOut.nestedPackage.addAll(mIn.nestedPackage.equivalent());
+ // Copy the OCL types package
+ //mOut.nestedPackage.add(emfTool.getEcoreUtil().copy(mIn.nestedPackage.selectOne(p | p.isTypeOf(QVTp!Package))));
+ }
+
+@abstract
+rule NamedElements
+ transform eIn : QVTp!NamedElement
+ to eOut : QVTi!NamedElement
+ {
+ eOut.name = eIn.name;
+ }
+
+rule TypedModels
+ transform tmIn : QVTp!TypedModel
+ to tmOut : QVTi!TypedModel
+ extends NamedElements
+ {
+ tmOut.usedPackage = tmIn.usedPackage;
+ tmOut.dependsOn.addAll(tmIn.dependsOn.equivalent());
+ }
+
+rule Transformations
+ transform tIn : QVTp!Transformation
+ to tOut : QVTi!Transformation
+ extends NamedElements
+ {
+ tOut.ownedTag = emfTool.getEcoreUtil().copyAll(tIn.ownedTag);
+ tOut.modelParameter.addAll(tIn.modelParameter.equivalent());
+ tOut.`rule`.addAll(tIn.`rule`.equivalent());
+ tOut.`extends` ::= tIn.`extends`;
+ }
+
+@abstract
+rule Rules
+ transform rIn : QVTp!Rule
+ to rOut : QVTi!Rule
+ extends NamedElements
+ {
+ rOut.domain.addAll(rIn.domain.equivalent());
+ rOut.overrides ::= rIn.overrides;
+ rOut.overridden.addAll(rIn.overridden.equivalent());
+ }
+
+@abstract
+rule Areas
+ transform aIn : QVTp!Area
+ to aOut : QVTi!Area
+ {
+ aOut.guardPattern ::= aIn.guardPattern;
+ aOut.bottomPattern ::= aIn.bottomPattern;
+ }
+
+rule Mappings
+ transform mIn : QVTp!Mapping
+ to mOut : QVTi!Mapping
+ extends Rules, Areas
+ {
+
+ var ma = QVTs!MappingAction.all().selectOne(ma | ma.mapping.name == mIn.name);
+ if (not ma.children.isEmpty()) {
+ mOut.mappingStatement = new QVTi!MappingSequence;
+ // Add loops of mapping calls accordingly... hard!
+ if (ma.hasLoopVariable()) {
+ // Add only the loops of the PrimaryArguments with the most secondary arguments
+ // The other DistinctData loops will be nested inside these
+ mOut.mappingStatement.mappingStatements.addAll(ma.children
+ .collect(ma | ma.getMainDistinctData())
+ .flatten().equivalent());
+ } else {
+ mOut.mappingStatement.mappingStatements.addAll(ma.children.equivalent());
+ }
+ }
+ }
+
+@abstract
+rule Domains
+ transform dIn : QVTp!Domain
+ to dOut : QVTi!Domain
+ extends NamedElements
+ {
+ dOut.isCheckable = dIn.isCheckable;
+ dOut.isEnforceable = dIn.isEnforceable;
+ dOut.typedModel ::= dIn.typedModel;
+ }
+
+rule CoreDomains
+ transform cdIn : QVTp!CoreDomain
+ to cdOut : QVTp!CoreDomain
+ extends Domains, Areas
+ {
+ }
+
+@abstract
+rule Patterns
+ transform pIn : QVTp!Pattern
+ to pOut : QVTi!Pattern
+ {
+ pOut.predicate.addAll(pIn.predicate.equivalent());
+ pOut.bindsTo.addAll(pIn.bindsTo.equivalent());
+ }
+
+@abstract
+rule CorePatterns
+ transform cpIn : QVTp!CorePattern
+ to cpOut : QVTi!CorePattern
+ extends Patterns
+ {
+
+ cpOut.variable.addAll(cpIn.variable.equivalent());
+ }
+
+rule BottomPatterns
+ transform bpIn : QVTp!BottomPattern
+ to bpOut : QVTi!BottomPattern
+ extends CorePatterns
+ {
+ bpOut.assignment.addAll(bpIn.assignment.equivalent());
+ bpOut.enforcementOperation.addAll(bpIn.enforcementOperation.equivalent());
+ bpOut.variable.addAll(bpIn.variable.equivalent());
+ bpOut.realizedVariable.addAll(bpIn.realizedVariable.equivalent());
+ }
+
+ rule GuardPatterns
+ transform gpIn : QVTp!GuardPattern
+ to gpOut : QVTi!GuardPattern
+ extends CorePatterns
+ {
+
+ }
+
+@abstract
+rule Assignments
+ transform aIn : QVTp!Assignment
+ to aOut : QVTi!Assignemnt
+ {
+ aOut.isDefault = aIn.isDefault;
+ aOut.value = emfTool.getEcoreUtil().copy(aIn.value);
+ var vars;
+ if (aIn.bottomPattern.area.isTypeOf(QVTi!CoreDomain)) {
+ vars = aIn.bottomPattern.area.`rule`.getAllVariables().equivalent();
+ } else {
+ vars = aIn.bottomPattern.area.getAllVariables().equivalent();
+ }
+ for (vFix in vars) {
+ aOut.value.fixVarReferences(vFix);
+ }
+ }
+
+rule PropertyAssignments
+ transform paIn : QVTp!PropertyAssignment
+ to paOut : QVTi!PropertyAssignment
+ extends Assignments
+ {
+ paOut.slotExpression = emfTool.getEcoreUtil().copy(paIn.slotExpression);
+ paOut.targetProperty = paIn.targetProperty;
+ var vars;
+ if (paIn.bottomPattern.area.isTypeOf(QVTi!CoreDomain)) {
+ vars = paIn.bottomPattern.area.`rule`.getAllVariables().equivalent();
+ } else {
+ vars = paIn.bottomPattern.area.getAllVariables().equivalent();
+ }
+ for (vFix in vars) {
+ paOut.slotExpression.fixVarReferences(vFix);
+ }
+ }
+
+rule MiddlePropertyAssignments
+ transform mpaIn : QVTp!MiddlePropertyAssignment
+ to mpaOut : QVTi!MiddlePropertyAssignment
+ extends PropertyAssignments
+ {
+
+ }
+
+rule VariableAssignments
+ transform vaIn : QVTp!VariableAssignment
+ to vaOut : QVTi!VariableAssignment
+ extends Assignments
+ {
+ vaOut.targetVariable ::= vaIn.targetVariable;
+ }
+
+rule Predicates
+ transform pIn : QVTp!Predicate
+ to pOut : QVTi!Predicate
+ {
+ pOut.conditionExpression = emfTool.getEcoreUtil().copy(pIn.conditionExpression);
+ var vars;
+ if (pIn.pattern.area.isTypeOf(QVTi!CoreDomain)) {
+ vars = pIn.pattern.area.`rule`.getAllVariables().equivalent();
+ } else {
+ vars = pIn.pattern.area.getAllVariables().equivalent();
+ }
+ for (vFix in vars) {
+ pOut.conditionExpression.fixVarReferences(vFix);
+ }
+
+ }
+
+rule Variables
+ transform vIn : QVTp!Variable
+ to vOut : QVTi!Variable
+ extends NamedElements
+ {
+ -- We want to prevent re-creation of variables which are cloned
+ -- from OCL expressions (via EcoreUtil). Let's excludes all those
+ -- directly contained in an OCLExpression (IteratorExp, LetExp, etc.)
+ -- ExpressionInOCL containers are also removed, in case the QVTp transformation
+ -- redfers to other OCL resources
+ guard { var varContainer = vIn.eContainer();
+ return (not varContainer.isKindOf(QVTp!OCLExpression)) and
+ (not varContainer.isKindOf(QVTp!ExpressionInOCL));
+ }
+
+ vOut.implicit = vIn.implicit;
+ vOut.type = vIn.type;
+ }
+
+rule RealizedVariables
+ transform vIn : QVTp!RealizedVariable
+ to vOut : QVTi!RealizedVariable
+ extends NamedElements
+ {
+
+ vOut.implicit = vIn.implicit;
+ vOut.type = vIn.type;
+ }
+
+//=============== QVTs to QVTi (add mapping calls) ===============
+
+rule MappingActions
+ transform ma : QVTs!MappingAction
+ to mc : QVTi!MappingCall
+ {
+ guard : ma.parent.isDefined()
+
+ mc.referredMapping ::= QVTp!Mapping.all().selectOne(m | ma.mapping.name == m.name);
+ mc.binding.addAll(ma.distinctArguments.collect(da | da.primaryArguments.includingAll(da.secondaryArguments)).equivalent().select(e | e.isTypeOf(QVTi!MappingCallBinding)));
+ }
+
+
+rule DistinctData
+ transform dd : QVTs!DistinctData
+ to loop : QVTi!MappingLoop
+ {
+
+ var it = new QVTi!Variable;
+ it.name = dd.primaryArguments.first().variable.name;
+ it.type = dd.primaryArguments.first().variable.type;
+ loop.iterator.add(it);
+ var exp = new QVTi!OperationCallExp;
+ exp.referredOperation = getOclElementAllInstancesOp();
+ exp.source = new QVTi!TypeExp;
+ exp.source.referredType = dd.primaryArguments.first().variable.type;
+ exp.source.type = dd.primaryArguments.first().variable.type;
+ exp.type = exp.referredOperation.type;
+ loop.source = exp;
+ // TODO what happens with multiple Distinct Datas?
+ loop.body = new QVTi!MappingSequence;
+ loop.body.mappingStatements.add(dd.target.equivalent());
+ // To make loops nest, only one loop can be added. Which? The next one with the most secondary arguments
+ var nextDD = dd.getNextDistinctData();
+ if (nextDD <> null) {
+ loop.body.mappingStatements.add(nextDD.equivalent());
+ }
+ }
+
+
+rule PrimaryDataParameter
+ transform dp : QVTs!DataParameter
+ to cb : QVTi!MappingCallBinding
+ {
+ guard : dp.primaryDistinctData.isDefined()
+
+ //dp.primaryDistinctData.target.mapping.name.println("PrimaryDataParameter ");
+ var it = dp.primaryDistinctData.equivalent().iterator.first();
+ //it.name.println("primaryVar ");
+ cb.boundVariable ::= dp.variable.getSameVariable();
+ cb.value = new QVTi!VariableExp;
+ cb.value.referredVariable = it;
+ cb.value.type = it.type;
+ cb.mappingCall ::= dp.primaryDistinctData.target;
+ }
+
+
+rule SecondaryDataParameter
+ transform dp : QVTs!DataParameter
+ to cb : QVTi!MappingCallBinding
+ {
+ guard {
+ if (not dp.secondaryDistinctData.isDefined()) {
+ return false;
+ }
+ var paramVar = dp.variable.getSameVariable();
+ var primaryVar = dp.secondaryDistinctData.primaryArguments.first().variable.getSameVariable();
+ return not primaryVar.hasRelation(paramVar).isEmpty();
+ }
+ //dp.secondaryDistinctData.target.mapping.name.println("SecondaryDataParameter ");
+ var paramVar = dp.variable.getSameVariable();
+ var primaryVar = dp.secondaryDistinctData.primaryArguments.first().variable.getSameVariable();
+ var prop = primaryVar.hasRelation(paramVar).first();
+ var refVar = primaryVar.equivalent();
+ //primaryVar.name.println("primaryVar ");
+ //paramVar.name.println("paramVar ");
+ //prop.name.println("prop ");
+ //refVar.name.println("refVar ");
+ cb.boundVariable ::= paramVar;
+ cb.value = new QVTi!PropertyCallExp;
+ cb.value.referredProperty = prop;
+ cb.value.type = prop.type;
+ cb.value.source = new QVTi!VariableExp;
+ cb.value.source.referredVariable = refVar;
+ cb.value.source.type = refVar.type;
+ cb.mappingCall ::= dp.secondaryDistinctData.target;
+ }
+
+// Derived from a derived
+rule SecondarySecondaryDataParameter
+ transform dp : QVTs!DataParameter
+ to cb : QVTi!MappingCallBinding
+ {
+ guard {
+ if (not dp.secondaryDistinctData.isDefined()) {
+ return false;
+ }
+ var paramVar = dp.variable.getSameVariable();
+ var primaryVar = dp.secondaryDistinctData.primaryArguments.first().variable.getSameVariable();
+ return primaryVar.hasRelation(paramVar).isEmpty();
+ }
+
+ //dp.secondaryDistinctData.target.mapping.name.println("SecondaryDataParameter Derived ");
+ var paramVar = dp.variable.getSameVariable();
+ cb.boundVariable ::= paramVar;
+ //paramVar.name.println("paramVar ");
+ cb.value = new QVTi!PropertyCallExp;
+ for (sa in dp.secondaryDistinctData.secondaryArguments.excluding(dp)) {
+ var secondaryVar = sa.variable.getSameVariable();
+ //secondaryVar.name.println("secondaryVar ");
+ if (not secondaryVar.hasRelation(paramVar).isEmpty()) {
+ //"Direct".println();
+ var prop = secondaryVar.hasRelation(paramVar).first();
+ //prop.name.println("prop ");
+ cb.value.referredProperty = prop;
+ cb.value.type = prop.type;
+ cb.value.source = emfTool.getEcoreUtil().copy(sa.equivalent().value);
+ break;
+ }
+ }
+ // If we didn't find a direct, try an opposite
+ if (not cb.value.referredProperty.isDefined()) {
+ for (sa in dp.secondaryDistinctData.secondaryArguments.excluding(dp)) {
+ var secondaryVar = sa.variable.getSameVariable();
+ //secondaryVar.name.println("secondaryVar ");
+ if (not paramVar.hasRelation(secondaryVar).isEmpty() and hasNavigableOpposite( paramVar.hasRelation(secondaryVar).first())) { // Can it be an opposite relation?
+ //"Opposite".println();
+ var prop = paramVar.hasRelation(secondaryVar).first().opposite;
+ //prop.name.println("prop ");
+ cb.value.referredProperty = prop;
+ cb.value.type = prop.type;
+ cb.value.source = emfTool.getEcoreUtil().copy(sa.equivalent().value);
+ break;
+ }
+ }
+ }
+ cb.mappingCall ::= dp.secondaryDistinctData.target;
+ }
+
+@cached
+operation QVTs!Variable getSameVariable() : QVTp!Variable {
+ return QVTp!Variable.all.selectOne(v | QVTp.getElementId(v) == QVTs.getElementId(self));
+}
+
+
+operation QVTs!MappingAction hasLoopVariable() : Boolean {
+
+ // This is the actual operation that finds the nesting
+ return true;
+}
+
+
+post {
+ "QVTp+s to QVTi Done".println();
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/scheduling/Scheduler.eol b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/scheduling/Scheduler.eol
new file mode 100644
index 000000000..9e5aceef8
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/scheduling/Scheduler.eol
@@ -0,0 +1,597 @@
+/*******************************************************************************
+ * Copyright (c) 2013 The University of York and Willink Transformations.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Horacio Hoyos - initial implementation
+ ******************************************************************************/
+
+ /****l* /org.eclipse.qvtd.build.etl.scheduling/Scheduler
+ * NAME
+ * Scheduler -- Invoke the data dependency analysis and map ordering functions
+ * and add the mapping calls to the QVTi AST model.
+ *
+ * MODELS
+ * Required models to run the script:
+ * - NAME ALIASES METAMODEL ROL SOD
+ * - qvti QVT QVTCore X - The QVTi (partitioned) AST
+ * - rTree tree ECoreContainmentTree X - The right metamodel containment tree
+ * - qvts QVTScheduling - X The scheduling model
+ * SEE ALSO
+ *
+ ******
+ */
+import "../helpers/QVTHelpers.eol";
+import "MapOrdering.eol";
+
+
+// Secondary Argument Derivations
+QVTs!Schedule.all.first().defineArgumentDerivation();
+QVTs!Schedule.all.first().removeEmptyDistinctData();
+
+// Ordering
+QVTs!Schedule.all.first().findMapOrdering();
+
+// Create root mapping
+QVTp!Transformation.all.first().createBaseMapping();
+
+// Define nestings
+QVTs!Schedule.all.first().flatNesting(QVTp!Transformation.all.first());
+
+// Different Scheduleing Policies
+//QVT!Transformation.all.first().simpleSchedule(s);
+//QVT!Transformation.all.first().simpleNestedSchedule(s);
+"Scheduling Done".println();
+
+operation QVTs!Schedule flatNesting(t : QVTp!Transformation) {
+
+ var bm = t.rule.selectOne(r | r.name == "__root__");
+ var ma = new QVTs!MappingAction;
+ ma.order = 0;
+ ma.mapping = bm;
+ for (na in self.actions.sortBy(a | a.order)) {
+ na.parent = ma; // All mappings invoked from the root.
+ }
+ ma.schedule = self;
+}
+
+operation QVTp!Transformation createBaseMapping() {
+
+ if (QVTp!Mapping.all.exists(m | m.name == "__root__")) {
+ self.errln("__root__ mapping name duplicate. ");
+ } else {
+ var baseMapping = new QVTp!Mapping;
+ baseMapping.name = "__root__";
+ baseMapping.transformation = self;
+ baseMapping.guardPattern = new QVTp!GuardPattern;
+ baseMapping.bottomPattern = new QVTp!BottomPattern;
+ self.rule.add(baseMapping);
+ }
+}
+
+/****o* Scheduler/removeEmptyDistinctData
+ * NAME
+ * removeEmptyDistinctData - Remove DistinctData elements that don't have a
+ * primary argument.
+ * CONTEXT
+ * QVTs!Schedule The Schdule
+ * ANNOTATIONS
+ */
+operation QVTs!Schedule removeEmptyDistinctData() {
+
+ for (da in self.actions.collect(a | a.distinctArguments).flatten().select(dd | dd.primaryArguments.isEmpty())) {
+ delete da;
+ }
+}
+
+// ** =================================================== **
+
+
+
+/****o* Scheduler/simpleSchedule
+ * NAME
+ * simpleSchedule - Creates a simple (naive) schedule, solely based on the map
+ * ordering.
+ * FUNCTION
+ * Defines a simple schedule based on the mapping ordering by calling all the
+ * mappings sequentially.
+ *
+ * CONTEXT
+ * QVTs!Schedule The Schdule
+ * ANNOTATIONS
+ * cached
+ * PARAMETERS
+ * rules The transformation for which the schedule is being craeted (QVT!Rule)
+ * SEE ALSO
+ */
+operation QVT!Transformation simpleSchedule(schedule : QVTs!Schedule) {
+
+ //var baseMapping = self.createBaseMapping();
+ schedule.linearBindings();
+ /*
+ for (ma in schedule.actions.sortBy(a | a.count)) {
+ var mc = new QVT!MappingCall;
+ mc.referredMapping = ma.mapping;
+ mc.context = baseMapping;
+ //mc.createBindings(ma);
+ }
+*/
+}
+
+operation QVT!MappingCall createBindings(ma : QVTs!MappingAction) {
+
+ // Get the MA for the MC
+ for (mb in ma.bindings) {
+ for (v in self.referredMapping.getInputVariables()) {
+ var mcb = new QVT!MappingCallBinding;
+ mcb.mappingCall = self;
+ mcb.boundVariable = v;
+ mcb.isLoop = true;
+ var value = new QVT!OperationCallExp;
+ value.referredOperation = getOclElementAllInstancesOp();
+ value.source = new QVT!TypeExp;
+ value.source.referredType = v.type;
+ mcb.value = value;
+ }
+ }
+}
+
+
+
+/****o* Scheduler/simpleNestedSchedule
+ * NAME
+ * simpleNestedSchedule - Creates a simple (naive) schedule, solely based on the
+ * map ordering and simple nesting based on Type availability
+ * FUNCTION
+ * Defines a nested simple schedule based on the mapping ordering and by nesting
+ * mappings under mappings that provide the most variable/types in order to
+ * reduce the global searches. Placement should be as low down as possible, i.e.
+ * prefer the more inmediate predecesor, but above any unused iteration
+ * variables.
+ *
+ * Mappings with multiple input variables of the same type
+ *
+ * CONTEXT
+ * QVTs!Schedule The Schdule
+ * ANNOTATIONS
+ * cached
+ * PARAMETERS
+ * rules The transformation for which the schedule is being craeted (QVT!Rule)
+ * SEE ALSO
+ */
+operation QVT!Transformation simpleNestedSchedule(schedule : QVTs!Schedule) {
+
+ schedule.simpleNest();
+ var baseMapping = self.createBaseMapping();
+ for (ma in schedule.actions.sortBy(aa | aa.count)) {
+ var mc = new QVT!MappingCall;
+ mc.referredMapping = ma.mapping;
+ if (ma.parent.isDefined()) {
+ mc.context = ma.parent.mapping;
+ } else {
+ mc.context = baseMapping;
+ }
+ }
+ // Make sure order dependencies are preserved
+ QVTi.setCachingEnabled(false);
+ self.forceOrder();
+ QVTi.setCachingEnabled(true);
+}
+
+
+/****o* Scheduler/simpleNest
+ * NAME
+ * simpleNest - Define the mapping action nesting.
+ * FUNCTION
+ * Places a mapping action by searching up the the mapping dependencies to
+ * locate the mapping for which the context variables result in the maximum
+ * reuse of work already done. This is, the context that offers the biggest
+ * number of already assigned variables.
+ * CONTEXT
+ * QVTs!Schedule The schedule
+ */
+operation QVTs!Schedule simpleNest() {
+ for (ma in self.actions.sortBy(a | a.count)) {
+ //ma.mapping.name.println("ma ");
+ var qin = ma.mapping.getInputVariables();
+ // If the mapping has two variables of the same type, try to nest, else put in the root
+ if (ma.mapping.getInputVariables().collect(v | v.type).size() == ma.mapping.getInputVariables().collect(v | v.type).asSet().size()) {
+ // Visit the predecesor mappings in "clossest" order, i.e. higher to lower index
+ for (pma in ma.getPredecessors().sortBy(aa | aa.count).invert()) {
+ //pma.mapping.println(" pma: ");
+ var nav = pma.getAvailableVariables();
+ if (nav.collect(v | v.type).includesAll(qin.collect(v | v.type))) {
+ ma.parent = pma;
+ break; // As low as possible
+ } else {
+ var matched = qin.select(v | nav.collect(v | v.type).includes(v.type));
+ var missing = qin.select(v | not nav.collect(v | v.type).includes(v.type));
+ // We are missing some types, can we derive them?
+ derivedMissing(matched, missing);
+ if (missing.isEmpty()) {
+ ma.parent = pma;
+ break; // As low as possible
+ } else {
+ // One of the still missing variables can be used as a loop variable
+ var loopV = null;
+ for (m in missing) {
+ for (mv in matched) {
+ var relations = m.hasRelation(mv);
+ if (not relations.isEmpty()
+ and relations.first().opposite.isDefined()
+ and relations.first().opposite.isComposite) {
+ loopV = m;
+ break;
+ }
+ }
+ if (loopV <> null) {
+ break;
+ }
+ }
+ if (loopV <> null) {
+ missing.remove(loopV);
+ matched.add(loopV);
+ // Try to derive more variables from the loop
+ // We are missing some types, can we derive them?
+ derivedMissing(matched, missing);
+
+ // Once we have a loop varaible, we dont need a perfect
+ // match, the mising varaibles would just have to be
+ // global searched. Another option is to look
+ // for another nesting position. However, since
+ // we are matching against the whole predecesor
+ // available variables, there is no way we can
+ // find better matches higher in the tree.
+ ma.parent = pma;
+ break; // As low as possible
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+// Try to minimize the global searches by deriving variables from others
+operation QVTs!Schedule linearBindings() {
+ for (ma in self.actions.sortBy(a | a.count)) {
+ ma.mapping.name.println("ma ");
+
+ var qin = ma.mapping.getInputVariables();
+ var matched : Sequence;
+ // Use the primaryArguments to derive as much variables as possible
+ // Order by the number of secondary arguments = we want to derive as most as possible
+
+ // In LM mappings, global searches should be from the input doamin
+ // In MR mappings, global searches should be from the middle doamin
+ for (da in ma.distinctArguments.select(da | da.primaryArguments.isTypeOf(QVTs!ClassDatum)).sortBy(da | da.getArgumentOrdering()).invert()) {
+ var parg = da.primaryArguments;
+ parg.type.name.println(" parg.type ");
+ //var pv = qin.selectOne(v | v.type == parg.type);
+ for (pv in qin.select(v | v.type == parg.type)) {
+ //if (matched.excludes(pv)) {
+ pv.name.println(" pv ");
+ var pmb = ma.createMappingBinding(parg, pv);
+ for (sarg in da.secondaryArguments) {
+ sarg.type.name.println(" sarg.type ");
+ for (sv in qin.select(v | sarg.type == v.type)) {
+ sv.name.println(" sv ");
+ var smb = ma.createMappingBinding(sarg, sv);
+ var relations = pv.hasRelation(sv);
+ relations.name.println(" relations ");
+ if (matched.excludes(sv)) {
+ // sv must be derived from pv
+ if(not relations.isEmpty()) {
+ smb.contextBinding = pmb;
+ smb.isGlobal = false;
+ smb.contextBindingAttribute = relations.first();
+ matched.add(sv);
+ pv.name.println(" " + sv.name + " derived from ");
+ }
+ } else if (pmb.isGlobal and not relations.isEmpty()) {
+ // pv can be derived from sv? Only iif pv is global (i.e. reduce global searches)
+ relations.exists(r | r.opposite.isDefined()).println("opp exists ");
+ if (relations.exists(r | r.opposite.isDefined())) {
+ pmb.isLoop = true;
+ pmb.isGlobal = false;
+ pmb.contextBinding = smb;
+ pmb.contextBindingAttribute = relations.selectOne(r | r.opposite.isDefined()).opposite;
+ pmb.isLoop = pmb.contextBindingAttribute.isComposite;
+ matched.add(sv);
+ sv.name.println(" " + pv.name + " derived from (" + pmb.isLoop + ") ");
+ }
+ } else {
+ // If the relations is empty, sv can be derived from another secondary argument
+ // think the defined loops will find the match eventually, and since the variables
+ // with direct relations have been matched, then this variable will eventually
+ // be derived
+ sv.name.println(" All ready matched ");
+ }
+ }
+ }
+ matched.add(pv);
+ //}
+ }
+ }
+ qin.excludingAll(matched).println("missing these: ");
+ }
+}
+
+
+operation QVTs!MappingAction createMappingBinding(cd : QVTs!ClassDatum, v : QVT!Variable) : QVTs!MappingBinding {
+
+ //self.distinctArguments.select(da | da.primaryArguments.type == v.type).collect(da | da.primaryArguments).println("pa for v ");
+ var mb;
+ if (self.bindings.select(b | b.datum == cd).size() <>
+ self.distinctArguments.select(da | da.primaryArguments.type == v.type).collect(da | da.primaryArguments).size()) {
+ var mb = new QVTs!MappingBinding;
+ mb.datum = cd;
+ mb.isGlobal = true;
+ mb.mappingAction = self;
+ } else {
+ mb = self.bindings.selectOne(b | b.datum == cd);
+ }
+ return mb;
+}
+
+// Concatenate a letter to indicate the domain of the primaryArgument and the
+// size of the secondaryArguments. The String comparition will sort them
+// correctly. We use inverse letter ordering since Epsilon will order small -> big
+// so we have to invert in the callee to get the correct order
+// TODO Fix when the configuration is fixed!!
+operation QVTs!DistinctData getArgumentOrdering() : String {
+ var s : String;
+ if (self.primaryArguments.domain.typedModel.usedPackage.collect(up | up.name)
+ .includes(config!Configuration.all().first().inputDirection.imports.package)) {
+ s = "c";
+ } else if (self.primaryArguments.domain.typedModel.usedPackage.collect(up | up.name)
+ .includes(config!Configuration.all().first().middle.imports.package)) {
+ s="b";
+ } else {
+ s="a";
+ }
+ return s + self.secondaryArguments.size();
+}
+
+/****o* Scheduler/derivedMissing
+ * NAME
+ * derivedMissing - Test if any missing variables can be derived from the matched
+ * and if so, remove them from missing and add them to matched.
+ * FUNCTION
+ *
+ * CONTEXT
+ * QVTs!MappingAction The MappingAction
+ */
+operation derivedMissing(matched : Sequence, missing : Sequence) {
+ // missing.collect(v | v.name).println(" missing ");
+ for (m in missing.clone()) {
+ if (m.canBeDerived(matched)) {
+ //m.name.println(" derived ");
+ missing.remove(m);
+ matched.add(m);
+ }
+ }
+}
+
+/****o* Scheduler/canBeDerived
+ * NAME
+ * canBeDerived - Test if the variable can be derived from one in the sequence
+ * FUNCTION
+ * Returns true if there is a relation of the form m.att = variable, where m
+ * is a member of the input sequence, or if the relation is of the form
+ * variable.att = m, and the att has an opposite and the opposite is not a
+ * composition relations (composition relations are used for loop variables)
+ * CONTEXT
+ * QVTs!Variable The variable
+ * PARAMETERS
+ * matched A sequence of variables to test derivation
+ * RETURNS
+ * true If the variable can be derived.
+ */
+operation QVT!Variable canBeDerived(matched : Sequence) : Boolean {
+ for (mv in matched) {
+ if (not mv.hasRelation(self).isEmpty()) {
+ // Relations of the form matched.att = self
+ return true;
+ } else {
+ // Relations of the form self.att = matched can be used for derivation
+ // iif the relation has an opposite, and the opposite not composite
+ var relations = self.hasRelation(mv);
+ if (not relations.isEmpty()
+ and relations.first().opposite.isDefined()
+ and not relations.first().opposite.isComposite) {
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
+/****o* Scheduler/forceOrder
+ * NAME
+ * forceOrder - Reorder the mapping calls so dependencies are met.
+ * FUNCTION
+ * Uses a sort algorithm to determine the correct order of mapping calls
+ * based on data dependencies.
+ * CONTEXT
+ * QVTs!Transformation The transformation
+ */
+operation QVTs!Transformation forceOrder() {
+
+ for (m in self.rule) {
+ //m.name.println("m ");
+ var sorted = sortByDependency(m.mappingCall.asSequence());
+ m.mappingCall.clear();
+ m.mappingCall.addAll(sorted);
+ }
+}
+
+/****o* Scheduler/sortByDependency
+ * NAME
+ * sortByDependency - Sort a collection of mapping calls based on data
+ * dependencies.
+ * FUNCTION
+ * Sorting is done using a quick sort algorithm.
+ * PARAMETERS
+ * calls The collection of mapping Calls to be sorted
+ */
+operation sortByDependency(calls : Collection) : Sequence {
+ //calls.collect(mc | mc.referredMapping.name).println("calls ");
+ var size = calls.size();
+ var sorted : Sequence;
+ if(size > 1) {
+ var ind : Integer = size/2;
+ var L : Sequence;
+ var R : Sequence;
+ var pivot = calls.at(ind);
+ //pivot.referredMapping.name.println("Pivot ");
+ for (i in Sequence{0..size-1}) {
+ if (i <> ind) {
+ //pivot.referredMapping.name.println(" " + calls.at(i).referredMapping.name + " hasLowerOrder? ");
+ if (calls.at(i).hasLowerOrder(pivot)) {
+ L.add(calls.at(i));
+ } else {
+ R.add(calls.at(i));
+ }
+ }
+ }
+ //L.collect(mc | mc.referredMapping.name).println("L ");
+ var sortedL = sortByDependency(L.clone());
+ //R.collect(mc | mc.referredMapping.name).println("R ");
+ var sortedR = sortByDependency(R.clone());
+ sorted.addAll(sortedL.including(pivot).includingAll(sortedR));
+ //sorted.collect(mc | mc.referredMapping.name).println("sorted ");
+ return sorted;
+ } else {
+ return calls;
+ }
+}
+
+/****o* Scheduler/hasLowerOrder
+ * NAME
+ * hasLowerOrder - Indicates whether this MappingCall has a lower order than
+ * some other MappingCall.
+ * FUNCTION
+ * This MappingCall has a lower order if:
+ * * This MappingCall's referredMapping is a direct predecesor of the other referredMapping
+ * * This MappingCall's referredMapping is a direct predecesor of any of the other referredMapping's nested calls
+ * PARAMETERS
+ * mc The reference mappingCall with which to compare.
+ * RETURNS
+ * true If this MappingCall has a lower order, i.e. must be called first.
+ */
+operation QVT!MappingCall hasLowerOrder(other : QVT!MappingCall) : Boolean {
+
+ var selfMa = QVTs!MappingAction.all().selectOne(ma | ma.mapping == self.referredMapping);
+ var otherMa = QVTs!MappingAction.all().selectOne(ma | ma.mapping == other.referredMapping);
+ if (otherMa.getPredecessors().includes(selfMa)) {
+ return true;
+ } else {
+ var selfNestedLower : Boolean = false; // This mapping action has a nested mapping that should be invoked before
+ var otherNestedLower : Boolean = false; // The other mapping action has a nested mapping that should be invoked before
+ if (not self.referredMapping.mappingCall.isEmpty()) {
+ selfNestedLower = self.referredMapping.mappingCall.exists(nmc | nmc.hasLowerOrder(other));
+ }
+ if (not other.referredMapping.mappingCall.isEmpty()) {
+ otherNestedLower = other.referredMapping.mappingCall.exists(nmc | self.hasLowerOrder(nmc));
+ }
+ return selfNestedLower or otherNestedLower;
+ }
+ return false;
+}
+
+
+
+
+/****o* Scheduler/getAvailableVariables
+ * NAME
+ * getAvailableVariables - Navigates through the MappingAction hierarchy
+ * to get the available variables to it.
+ * FUNCTION
+ * The context of a MppingAction is the context of its caller. Thus, this
+ * operation recursively navigates through the calling contexts (i.e. parents)
+ * and returns the union of available variables in all the calling contexts.
+ * The available variables of a mapping are its input and output variables
+ * with the variables available from its context.
+ * Don't cache the results as parents change dynamically.
+ * CONTEXT
+ * QVTs!MappingAction The MappingAction
+ */
+operation QVTs!MappingAction getAvailableVariables() : Sequence {
+
+ var result = self.mapping.getInputVariables().includingAll(self.mapping.getOutputVariables());
+ if (self.parent.isDefined()) {
+ result.addAll(self.parent.getAvailableVariables());
+ }
+ return result;
+}
+
+/****o* Scheduler/defineArgumentDerivation
+ * NAME
+ * defineArgumentDerivation - Identifies what parameters can be derived from
+ * others
+ * FUNCTION
+ *
+ *
+ * CONTEXT
+ * QVTs!Schedule The Schdule
+ * SEE ALSO
+ */
+operation QVTs!Schedule defineArgumentDerivation() {
+ for (ma in self.actions) {
+ //ma.mapping.name.println("m ");
+ // Find the best derivation alternatives
+ var inputVars = ma.distinctArguments.collect(da | da.primaryArguments.first().variable);
+ var derivees = ma.distinctArguments.collect(da | da.primaryArguments.first())
+ .aggregate(pa | pa, pa.variable.derivedVariables(inputVars));
+ for (da in ma.distinctArguments.sortBy(da | derivees.get(da.primaryArguments.first()).size()).invert()) {
+ for (dv in derivees.get(da.primaryArguments.first())) {
+ if (ma.distinctArguments.exists(da | da.primaryArguments.exists(pa | pa.variable == dv))) {
+ da.secondaryArguments.add(ma.distinctArguments.selectOne(da | da.primaryArguments.exists(pa | pa.variable == dv)).primaryArguments.first());
+ }
+ }
+ }
+ }
+}
+
+/****o* Scheduler/derivedVariables
+ * NAME
+ * derivedVariables - Analysis of variable relations to find derivable ones
+ * FUNCTION
+ * Returns a list of variables that can be derived from the context variable.
+ * The function performs a full depth search looking for variables that can be
+ * derived from the derived ones too.
+ *
+ * CONTEXT
+ * QVT!Variable The variable being analyzed
+ * PARAMETERS
+ * vars The variables to look for relations
+ * RESULT
+ * A
+ * SEE ALSO
+ *
+ */
+operation QVT!Variable derivedVariables(vars : Sequence) : Set {
+
+ var derived : Set;
+ for (vB in vars.excluding(self)) {
+ for (rel in self.hasRelation(vB)) { //self.hasRelation(vB).sortBy(r | r.getCost()) // In the future cost can be used to select the less expensive navigation
+ //vB.name.println(self.name + " has relation to ");
+ derived.add(vB);
+ derived.addAll(vB.derivedVariables(vars.excluding(self)));
+ break;
+ }
+ // Can the opposite relation be used?
+ for (rel in vB.hasRelation(self)) { //self.hasRelation(vB).sortBy(r | r.getCost()) // In the future cost can be used to select the less expensive navigation
+ //vB.name.println(self.name + " has relation to ");
+ if (hasNavigableOpposite(rel)) {
+ derived.add(vB);
+ derived.addAll(vB.derivedVariables(vars.excluding(self)));
+ }
+ }
+ }
+ return derived;
+}
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/scheduling/qvtiScheduling.xml b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/scheduling/qvtiScheduling.xml
new file mode 100644
index 000000000..41b5e308f
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/scheduling/qvtiScheduling.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0"?>
+<!--
+/*******************************************************************************
+ * Copyright (c) 2013 The University of York and Willink Transformations.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Horacio Hoyos - initial script
+ ******************************************************************************/
+-->
+<project default="ContainmentGraphs">
+
+ <target name="ContainmentGraphs">
+ <!-- Left -->
+ <epsilon.emf.loadModel
+ name = "lmm"
+ aliases ="mm"
+ modelFile = "SimpleUML.ecore"
+ metamodelUri = "http://www.eclipse.org/emf/2002/Ecore"
+ read="true" store="false"/>
+ <epsilon.emf.loadModel
+ name = "lcg"
+ aliases ="cg"
+ modelFile = "SimpleUmlContainment.xmi"
+ metamodelUri = "http://www.eclipse.org/qvt/examples/0.2/QVTcDataDependencyGraph"
+ read="false" store="true"/>
+ <epsilon.emf.loadModel
+ name = "mmm"
+ aliases ="mm"
+ modelFile = "UMLtoRDBMS.ecore"
+ metamodelUri = "http://www.eclipse.org/emf/2002/Ecore"
+ read="true" store="false"/>
+ <epsilon.emf.loadModel
+ name = "mcg"
+ aliases ="cg"
+ modelFile = "UmlToRdbmsContainment.xmi"
+ metamodelUri = "http://www.eclipse.org/qvt/examples/0.2/QVTcDataDependencyGraph"
+ read="false" store="true"/>
+ <epsilon.emf.loadModel
+ name = "rmm"
+ aliases ="mm"
+ modelFile = "SimpleRDBMS.ecore"
+ metamodelUri = "http://www.eclipse.org/emf/2002/Ecore"
+ read="true" store="false"/>
+ <epsilon.emf.loadModel
+ name = "rcg"
+ aliases ="cg"
+ modelFile = "SimpleRdbmsContainment.xmi"
+ metamodelUri = "http://www.eclipse.org/qvt/examples/0.2/QVTcDataDependencyGraph"
+ read="false" store="true"/>
+
+ <epsilon.eol uri="platform:/resource//org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/scheduling/EcoreToContainmentGraph.eol">
+ <parameter name="modelId" value="l"/>
+ <model ref="lmm"/>
+ <model ref="lcg"/>
+ </epsilon.eol>
+ <epsilon.eol uri="platform:/resource//org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/scheduling/EcoreToContainmentGraph.eol">
+ <parameter name="modelId" value="l"/>
+ <model ref="mmm"/>
+ <model ref="mcg"/>
+ </epsilon.eol>
+ <epsilon.eol uri="platform:/resource//org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/scheduling/EcoreToContainmentGraph.eol">
+ <parameter name="modelId" value="l"/>
+ <model ref="rmm"/>
+ <model ref="rcg"/>
+ </epsilon.eol>
+ </target>
+</project> \ No newline at end of file
diff --git a/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/utils/EcoreToContainmentTree.eol b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/utils/EcoreToContainmentTree.eol
new file mode 100644
index 000000000..b797c8e8d
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/utils/EcoreToContainmentTree.eol
@@ -0,0 +1,117 @@
+/*******************************************************************************
+ * Copyright (c) 2013 The University of York, Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Horacio Hoyos - initial implementation
+ ******************************************************************************/
+
+/**
+ * We are only interested in containemnet relations, so we only need to search
+ * EPackages and EClasses, all other nodes in the root can be safely ignored.
+ * Note: Ed Merks suggests there should only be one EPackage per metamodel, but
+ * since this is not a requirement, we need to be safe
+ */
+
+var visited : Map;
+
+for (p in mm!EPackage.all().first()) {
+ p.iterativeDFS();
+}
+"Ecore to ContainmentTree Done".println();
+
+/* ===========================================================================*/
+
+// Iterative Depth First Search of containment relations
+// Serch till no more elements are visited during three increments
+operation mm!EPackage iterativeDFS() {
+
+ var iterate = true;
+ var change = false;
+ var maxDepth : Integer;
+ var noChangeCount : Integer = 0;
+
+ var parentNode = new tree!Node;
+
+ parentNode.EClassName = self.name;
+ maxDepth = 1;
+
+ while (iterate) {
+ //maxDepth.println("IterativeDFS ");
+ change = false;
+ for (c in self.eClassifiers.select(c | c.isKindOf(mm!EClass)
+ and not c.abstract
+ and not c.getEAllStructuralFeatures().exists(r : mm!EReference | r.container))) {
+ //c.println();
+ change = c.dfs(1, maxDepth, parentNode) or change;
+ }
+ if (not change) {
+ noChangeCount = noChangeCount + 1;
+ if (noChangeCount > 3) {
+ iterate = false;
+ }
+ }
+ maxDepth = maxDepth + 1;
+ if(maxDepth > 10) {
+ //"Safe ending".errln();
+ iterate = false; // Safe ending
+ }
+
+ }
+}
+
+// Returns true if added
+operation mm!EClass dfs(depth, maxDepth, parentNode) : Boolean {
+
+ var change = false;
+ //"Max depth reached, do nothing".println(tabs);
+ if (depth <= maxDepth) {
+ // If self is abstract, consider all subclasses at same depth (flattening)
+ if (self.abstract) {
+ //"Abstract, do inheritance".println(tabs);
+ for (sc in mm!EClass.all().select(c | c.eSuperTypes.includes(self))) {
+ if (sc.name <> parentNode.type) {
+ sc.dfs(depth, maxDepth, parentNode);
+ }
+ }
+ } else {
+ // Add Node or get node
+ var n;
+ if (visited.containsKey(self)) {
+ n = visited.get(self);
+ } else {
+ n = new tree!Node;
+ //n.data.println();
+ n.EClassName = self.name;
+ n.superTypes = self.eSuperTypes.select(st | st.abstract).collect(st | st.name).flatten();
+ visited.put(self, n);
+ }
+ if (depth == maxDepth) {
+ n.parent.add(parentNode);
+ change = true;
+ }
+ // Navigate Containment, mine and inherited
+ //self.eStructuralFeatures.select(sf : mm!EReference | sf.containment)
+ // .includingAll(self.getAllSuperTypes().collect(st | st.eStructuralFeatures.select(sf : mm!EReference | sf.containment)).flatten()).println();
+ for (sf in self.eStructuralFeatures.select(sf : mm!EReference | sf.containment)
+ .includingAll(self.getAllSuperTypes().collect(st | st.eStructuralFeatures.select(sf : mm!EReference | sf.containment))).flatten()) {
+ change = sf.eReferenceType.dfs(depth+1, maxDepth, n) or change;
+ }
+ }
+ }
+ return change;
+}
+
+@cached
+operation mm!EClass getAllSuperTypes() : Set {
+
+ var retVal : Set;
+ retVal.addAll(self.eSuperTypes);
+ for (st in self.eSuperTypes) {
+ retVal.addAll(st.getAllSuperTypes());
+ }
+ return retVal;
+}
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/.classpath b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/.classpath
new file mode 100644
index 000000000..ad32c83a7
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/.gitignore b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/.gitignore
new file mode 100644
index 000000000..ae3c17260
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/.project b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/.project
new file mode 100644
index 000000000..f0112f70b
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.qvtd.build.qvtrtoqvtc</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/.settings/org.eclipse.core.resources.prefs b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 000000000..99f26c020
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/.settings/org.eclipse.core.runtime.prefs b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 000000000..5a0ad22d2
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..3e14099fa
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,95 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=enabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=enabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=error
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/META-INF/MANIFEST.MF b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..f381b05e6
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/META-INF/MANIFEST.MF
@@ -0,0 +1,24 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.qvtd.build.qvtrtoqvtc;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-Activator: org.eclipse.qvtd.build.qvtrtoqvtc.Activator
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.qvtd.pivot.qvtrelation;bundle-version="0.12.0",
+ org.eclipse.qvtd.pivot.qvttemplate,
+ org.eclipse.qvtd.pivot.qvtcore,
+ org.eclipse.emf.ecore,
+ org.eclipse.ocl.examples.pivot,
+ org.eclipse.qvtd.pivot.qvtbase,
+ org.eclipse.emf.common,
+ org.eclipse.qvtd.build.qvtrtoqvtc
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.eclipse.qvtd.build.qvtrtoqvtc,
+ org.eclipse.qvtd.build.qvtrtoqvtc.impl,
+ org.eclipse.qvtd.build.qvtrtoqvtc.utilities
+Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/build.properties b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/build.properties
new file mode 100644
index 000000000..3c9d47b21
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/build.properties
@@ -0,0 +1,9 @@
+#
+
+bin.includes = .,\
+ META-INF/,\
+ plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin/
+additional.bundles = org.eclipse.ocl.jdt.annotation7 \ No newline at end of file
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/plugin.properties b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/plugin.properties
new file mode 100644
index 000000000..d536b238f
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = QVTrToQVTc Model
+providerName = www.example.org
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/Activator.java b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/Activator.java
new file mode 100644
index 000000000..3fe1edaef
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/Activator.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2014 The University of York and Willink Transformations.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Horacio Hoyos - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.qvtd.build.qvtrtoqvtc;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.qvtd.build.qvtrtoqvtc"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/KeyBindings.java b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/KeyBindings.java
new file mode 100644
index 000000000..2c46d7dee
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/KeyBindings.java
@@ -0,0 +1,94 @@
+package org.eclipse.qvtd.build.qvtrtoqvtc;
+
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.qvtd.build.qvtrtoqvtc.impl.AbstractBindings;
+
+public class KeyBindings extends AbstractBindings {
+
+
+ public static class KeyKey<T> extends AbstractBindings.Key<T>
+ {
+ private KeyKey(@NonNull String key) {
+ super(key);
+ }
+ }
+
+ public static class KeySet extends AbstractBindings.KeySet
+ {
+
+ public @NonNull <T> KeyKey<T> create(@Nullable T keyClass, @NonNull String key) {
+ KeyKey<T> theKey = new KeyKey<T>(key);
+ keys.add(theKey);
+ return theKey;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (o == this)
+ return true;
+ if (!(o instanceof KeySet))
+ return false;
+ KeySet oks = (KeySet) o;
+ return this.keys.equals(oks.keys);
+ }
+
+ @Override
+ public int hashCode() {
+ return keys.hashCode();
+ }
+
+ }
+
+ protected @NonNull final RelationKey relationKey;
+
+ public KeyBindings(@NonNull RelationKey relationKey) {
+ this.relationKey = relationKey;
+ }
+
+ @SuppressWarnings("unchecked")
+ public <T> T get(@NonNull KeyKey<T> key) {
+ return (T) delegate.get(key);
+ }
+
+ @SuppressWarnings("unchecked")
+ public <T> T put(@NonNull KeyKey<T> key, T value) {
+ return (T) delegate.put(key, value);
+ }
+
+ @SuppressWarnings("unchecked")
+ public <T> T remove(@NonNull KeyKey<T> key) {
+ return (T) delegate.remove(key);
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (o == this)
+ return true;
+ if (!(o instanceof KeyBindings))
+ return false;
+ KeyBindings rb = (KeyBindings) o;
+ //if (rule.getClass() != rb.getRule().getClass())
+ // return false;
+ for (Key<?> key : relationKey.getKeyBindings().getKeys()) {
+ assert key != null;
+ Object thisValue = get((KeyKey<?>) key);
+ Object thatValue = rb.get((KeyKey<?>) key);
+ if (!thisValue.equals(thatValue))
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int code = 0;
+ code += this.getClass().hashCode();
+ for (Key<?> key : relationKey.getKeyBindings().getKeys()) {
+ assert key != null;
+ code += get((KeyKey<?>) key).hashCode();
+ }
+ return code;
+ }
+
+}
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/PivotPropertyKey.java b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/PivotPropertyKey.java
new file mode 100644
index 000000000..3cf8777e1
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/PivotPropertyKey.java
@@ -0,0 +1,40 @@
+package org.eclipse.qvtd.build.qvtrtoqvtc;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.ocl.examples.pivot.Property;
+import org.eclipse.ocl.examples.pivot.Type;
+import org.eclipse.qvtd.build.qvtrtoqvtc.impl.AbstractBindings.KeySet;
+
+public class PivotPropertyKey implements RelationKey {
+
+ private static final @NonNull KeyBindings.KeySet RELATION_KEY_BINDINGS = new KeyBindings.KeySet();
+ public static final @NonNull KeyBindings.KeyKey<String> NAME = RELATION_KEY_BINDINGS.create((String)null, "name");
+ public static final @NonNull KeyBindings.KeyKey<Type> OWNING_TYPE = RELATION_KEY_BINDINGS.create((Type)null, "owningType");
+
+ private Map<KeyBindings, Property> properties = new HashMap<KeyBindings, Property>();
+
+ public void add(Property property) {
+ KeyBindings relationKeyBindings = new KeyBindings(this);
+ relationKeyBindings.put(NAME, property.getName());
+ relationKeyBindings.put(OWNING_TYPE, property.getOwningType());
+ properties.put(relationKeyBindings, property);
+ }
+
+ public Property get(String name, Type owningType) {
+ KeyBindings relationKeyBindings = new KeyBindings(this);
+ relationKeyBindings.put(NAME, name);
+ relationKeyBindings.put(OWNING_TYPE, owningType);
+ return properties.get(relationKeyBindings);
+ }
+
+ @Override
+ @NonNull
+ public KeySet getKeyBindings() {
+ // TODO Auto-generated method stub
+ return RELATION_KEY_BINDINGS;
+ }
+
+}
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/QVTr2QVTcRelations.java b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/QVTr2QVTcRelations.java
new file mode 100644
index 000000000..0e816dc0e
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/QVTr2QVTcRelations.java
@@ -0,0 +1,1219 @@
+/*******************************************************************************
+ * Copyright (c) 2014 The University of York and Willink Transformations.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Horacio Hoyos - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.qvtd.build.qvtrtoqvtc;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.ocl.examples.domain.elements.DomainProperty;
+import org.eclipse.ocl.examples.pivot.EnumLiteralExp;
+import org.eclipse.ocl.examples.pivot.OCLExpression;
+import org.eclipse.ocl.examples.pivot.Operation;
+import org.eclipse.ocl.examples.pivot.OperationCallExp;
+import org.eclipse.ocl.examples.pivot.Package;
+import org.eclipse.ocl.examples.pivot.Property;
+import org.eclipse.ocl.examples.pivot.PropertyCallExp;
+import org.eclipse.ocl.examples.pivot.Type;
+import org.eclipse.ocl.examples.pivot.Variable;
+import org.eclipse.ocl.examples.pivot.VariableExp;
+import org.eclipse.qvtd.build.qvtrtoqvtc.impl.OCLExpCopy;
+import org.eclipse.qvtd.build.qvtrtoqvtc.impl.RelationToTraceClass;
+import org.eclipse.qvtd.build.qvtrtoqvtc.impl.RelationalTransformationToMappingTransformation;
+import org.eclipse.qvtd.build.qvtrtoqvtc.impl.RuleBindings;
+import org.eclipse.qvtd.pivot.qvtbase.Domain;
+import org.eclipse.qvtd.pivot.qvtbase.Pattern;
+import org.eclipse.qvtd.pivot.qvtbase.Predicate;
+import org.eclipse.qvtd.pivot.qvtbase.Rule;
+import org.eclipse.qvtd.pivot.qvtbase.Transformation;
+import org.eclipse.qvtd.pivot.qvtbase.TypedModel;
+import org.eclipse.qvtd.pivot.qvtcore.Mapping;
+import org.eclipse.qvtd.pivot.qvtcorebase.Area;
+import org.eclipse.qvtd.pivot.qvtcorebase.BottomPattern;
+import org.eclipse.qvtd.pivot.qvtcorebase.CoreDomain;
+import org.eclipse.qvtd.pivot.qvtcorebase.CorePattern;
+import org.eclipse.qvtd.pivot.qvtcorebase.GuardPattern;
+import org.eclipse.qvtd.pivot.qvtcorebase.PropertyAssignment;
+import org.eclipse.qvtd.pivot.qvtcorebase.RealizedVariable;
+import org.eclipse.qvtd.pivot.qvtrelation.DomainPattern;
+import org.eclipse.qvtd.pivot.qvtrelation.Key;
+import org.eclipse.qvtd.pivot.qvtrelation.Relation;
+import org.eclipse.qvtd.pivot.qvtrelation.RelationCallExp;
+import org.eclipse.qvtd.pivot.qvtrelation.RelationDomain;
+import org.eclipse.qvtd.pivot.qvtrelation.RelationalTransformation;
+import org.eclipse.qvtd.pivot.qvttemplate.CollectionTemplateExp;
+import org.eclipse.qvtd.pivot.qvttemplate.ObjectTemplateExp;
+import org.eclipse.qvtd.pivot.qvttemplate.PropertyTemplateItem;
+import org.eclipse.qvtd.pivot.qvttemplate.TemplateExp;
+
+public class QVTr2QVTcRelations {
+
+ private @NonNull final QvtrToQvtcTransformation transformation;
+
+
+ public QVTr2QVTcRelations(@NonNull QvtrToQvtcTransformation transformation) {
+ this.transformation = transformation;
+ }
+
+ /* ============= Queries ============= */
+ // TODO bug 453863
+ public Set<Variable> getSharedDomainVars(Relation r) {
+
+ Set<Variable> vars = new HashSet<Variable>();
+ for (Domain d : r.getDomain()) {
+ if (((RelationDomain) d).getPattern() != null) {
+ if (vars.isEmpty()) {
+ vars.addAll(((RelationDomain) d).getPattern().getBindsTo());
+ } else {
+ List<Variable> bt = ((RelationDomain) d).getPattern().getBindsTo();
+ vars.retainAll(bt);
+ }
+ }
+ }
+ return vars;
+ }
+
+ /*
+ * Get variables occurring in an OCL expression
+ */
+ // FIXME this function is not complete! It needs to be completed for other
+ // type of expressions
+ public Set<Variable> getVarsOfExp(OCLExpression e) {
+
+ Set<Variable> vs = new HashSet<Variable>();
+ if (e instanceof VariableExp) {
+ vs.add((Variable) ((VariableExp) e).getReferredVariable());
+ } else if (e instanceof OperationCallExp) {
+ OperationCallExp oc = (OperationCallExp) e;
+ vs.addAll(getVarsOfExp(oc.getSource()));
+ for (OCLExpression a : oc.getArgument()) {
+ vs.addAll(getVarsOfExp(a));
+ }
+ } else if (e instanceof PropertyCallExp) {
+ vs.addAll(getVarsOfExp( ((PropertyCallExp) e).getSource()));
+ } else if (e instanceof RelationCallExp) {
+ RelationCallExp rc = (RelationCallExp) e;
+ for (OCLExpression a : rc.getArgument()) {
+ vs.addAll(getVarsOfExp(a));
+ }
+ } else if (e instanceof EnumLiteralExp) {
+
+ }
+ else if (e instanceof ObjectTemplateExp) {
+ ObjectTemplateExp te = (ObjectTemplateExp) e;
+ vs.add(te.getBindsTo());
+ for (PropertyTemplateItem p : te.getPart()) {
+ vs.addAll(getVarsOfExp(p.getValue()));
+ }
+ } else if (e instanceof CollectionTemplateExp) {
+ CollectionTemplateExp cte = (CollectionTemplateExp) e;
+ if (cte.getRest() != null)
+ vs.add(cte.getRest());
+ for (OCLExpression m : cte.getMember())
+ vs.addAll(getVarsOfExp(m));
+ }
+ else {
+ assert false : "getVarsOfExp() missing case for " + e.eClass().getName();
+ }
+ return vs;
+ }
+
+ public @NonNull Set<Predicate> filterOutPredicatesThatReferToVars(@NonNull Set<Predicate> rpSet,
+ @NonNull Set<Variable> ownrdVars) {
+
+ Set<Predicate> fpSet = new HashSet<Predicate>();
+ for (Predicate p : rpSet) {
+ Set<Variable> vs = getVarsOfExp(p.getConditionExpression());
+ vs.retainAll(ownrdVars);
+ if (vs.isEmpty()) {
+ fpSet.add(p);
+ }
+ }
+ return fpSet;
+ }
+
+ private boolean isVarBoundToSomeOtherTemplate(ObjectTemplateExp rootTe,
+ ObjectTemplateExp skipTe, Variable v) {
+
+ if (rootTe == skipTe) {
+ return false;
+ }
+ if (rootTe.getBindsTo().equals(v)) {
+ return true;
+ } else {
+ boolean exists = false;
+ for (PropertyTemplateItem p : rootTe.getPart()) {
+ if (p.getValue() instanceof ObjectTemplateExp) {
+ exists |= isVarBoundToSomeOtherTemplate((ObjectTemplateExp) p.getValue(), skipTe, v);
+ }
+ }
+ return exists;
+ }
+
+ }
+
+ /* ============= T3 ============= */
+
+ // 17
+ public void doRDomainToMDBottomForEnforcement(@NonNull Relation r,
+ @NonNull RelationDomain rd, @NonNull ObjectTemplateExp te,
+ @NonNull Set<Predicate> predicatesWithoutVarBindings,
+ @NonNull Set<Variable> unboundDomainVars, @NonNull BottomPattern db)
+ {
+ // check
+ Variable v = te.getBindsTo();
+ Set<Variable> remainingUnBoundDomainVars = new HashSet<Variable>(unboundDomainVars);
+ remainingUnBoundDomainVars.remove(v);
+ Set<Predicate> predicatesWithVarBindings = filterOutPredicatesThatReferToVars(predicatesWithoutVarBindings, remainingUnBoundDomainVars);
+ Set<Predicate> remainingPredicatesWithoutVarBindings = new HashSet<Predicate>(predicatesWithoutVarBindings);
+ remainingPredicatesWithoutVarBindings.removeAll(predicatesWithVarBindings);
+ Area area = db.getArea();
+ assert area instanceof CoreDomain : "Missing CoreDomain for RDomainToMDBottomForEnforcement";
+ CoreDomain cd = (CoreDomain) area;
+ Rule rule = cd.getRule();
+ assert rule instanceof Mapping : "Missing Mapping for RDomainToMDBottomForEnforcement";
+ Mapping m = (Mapping) rule;
+ // init
+ BottomPattern mb = m.getBottomPattern();
+ assert mb != null;
+ // where
+ doRDomainToMDBottomForEnforcementOfIdentityProp(r, te, db);
+ doRDomainToMDBottomForEnforcementOfNonIdentityPropPrimitive(r, te, rd, m);
+
+ // This call is wrong as the trace variable is realized, it can't be guarded.
+ // This should only be done in a nested mapping or later mapping
+ //doRDomainToMBottomPredicateForEnforcement(r, rd, te, predicatesWithoutVarBindings, unboundDomainVars, mb);
+ doRDomainVarToMDBottomAssignmnetForEnforcement(r, rd, te, predicatesWithoutVarBindings, unboundDomainVars, mb);
+ }
+
+ // 31
+ public void doRRelImplToMBottomEnforcementOperation(Relation r,
+ RelationDomain rd, BottomPattern mb) {
+
+ // TODO Only code this if we have rules with operational implementations.
+ // Which RelToCore does not have
+
+ }
+
+
+ // 38
+ public void doRWhenPatternToMGuardPattern(@NonNull Relation r, @NonNull GuardPattern mg) {
+
+ // check
+ Pattern whenp = r.getWhen();
+ if (whenp != null) {
+ Set<Variable> whenVars = new HashSet<Variable>(whenp.getBindsTo());
+ // where
+ Set<Variable> allDomainVars = getAllDomainVars(r);
+ Set<Variable> unsharedWhenVars = new HashSet<Variable>(whenVars);
+ unsharedWhenVars.removeAll(allDomainVars);
+ doRWhenRelCallToMGuard(whenp, mg);
+ doRSimplePatternToMPattern(whenp, mg);
+ //doUnsharedWhenVarsToMgVars(unsharedWhenVars, mg);
+ doRVarSetToDGVarSet(new ArrayList<Variable>(unsharedWhenVars), mg);
+ }
+ }
+
+ /* ============= T4 ============= */
+
+ // 2
+ /*public void doDomainVarsSharedWithWhenToDgVars(@NonNull Set<Variable> domainVarsSharedWithWhen, @NonNull GuardPattern dg) {
+
+ List<Variable> dbVars = doRVarSetToMVarSet(new ArrayList<Variable>(domainVarsSharedWithWhen));
+ dg.getBindsTo().addAll(dbVars);
+ }*/
+
+ // 10
+ private void doRDomainPatternToMDBottomPattern(@NonNull Relation r,
+ @NonNull ObjectTemplateExp te, @NonNull BottomPattern db) {
+
+ CoreDomain cd = (CoreDomain) db.getArea();
+ assert cd != null;
+ Mapping m = (Mapping) cd.getRule();
+ assert m != null;
+ BottomPattern mb = m.getBottomPattern();
+ assert mb != null;
+ doRDomainPatternToMDBottomPatternComposite(r, te, db);
+ doRDomainPatternToMDBottomPatternSimpleNonVarExpr(te, db);
+ doRDomainPatternToMDBottomPatternSimpleUnSharedVarExpr(r, te, db);
+ doRDomainPatternToMDBottomPatternSimpleSharedVarExpr(r, te, mb);
+
+ }
+
+ // 15
+ /*
+ * Creates a Predicate, who's ConditionExpression is an
+ * OperationCallExp:
+ * trace.<v.name> = v;
+ * TODO Suggest better name: RDomainPatternVariableToTracePredicate?
+ */
+ public void doRDomainToMBottomPredicateForEnforcement(@NonNull Relation r,
+ @NonNull RelationDomain rd, @NonNull ObjectTemplateExp te,
+ @NonNull Set<Predicate> predicatesWithoutVarBindings,
+ @NonNull Set<Variable> unboundDomainVars,
+ @NonNull BottomPattern mb)
+ {
+ // check
+ Variable v = te.getBindsTo();
+ assert v != null;
+ // init
+ Predicate pd = transformation.createPredicate();
+ OperationCallExp ee = transformation.createOperationCallExp();
+ PropertyCallExp pe = transformation.createPropertyCallExp();
+ VariableExp pve = transformation.createVariableExp();
+ VariableExp ave = transformation.createVariableExp();
+ // where
+ RealizedVariable tcv = doRelationDomainToTraceClassVar(r, rd, mb);
+ Variable mv = doRVarToMVar(v);
+ Set<Variable> remainingUnBoundDomainVars = new HashSet<Variable>(unboundDomainVars);
+ remainingUnBoundDomainVars.remove(v);
+ Set<Predicate> predicatesWithVarBindings =
+ filterOutPredicatesThatReferToVars(predicatesWithoutVarBindings, remainingUnBoundDomainVars);
+ doRPredicateSetToMBPredicateSet(new ArrayList<Predicate>(predicatesWithVarBindings), mb);
+ // assign
+ pve.setReferredVariable(tcv);
+ pve.setType(tcv.getType());
+ pe.setSource(pve);
+ Property pep = getProperty(v.getName(), tcv.getType());
+ assert pep != null;
+ pe.setReferredProperty(pep);
+ pe.setType(pep.getType());
+ ee.setSource(pe);
+ ee.setReferredOperation(getEqualsOPeration());
+ ee.setType(transformation.getMetaModelManager().getBooleanType());
+ ave.setReferredVariable(mv);
+ ave.setType(mv.getType());
+ ee.getArgument().add(ave);
+ pd.setConditionExpression(ee);
+ mb.getPredicate().add(pd);
+ }
+
+ // 18
+ /*
+ * Creates Assignments for each part of the ObjectTemplateExp
+ */
+ public void doRDomainToMDBottomForEnforcementOfIdentityProp(@NonNull Relation r, @NonNull ObjectTemplateExp te, @NonNull BottomPattern db)
+ {
+ // check
+ Variable v = te.getBindsTo();
+ assert v != null;
+ Type c = v.getType();
+ assert c != null;
+ Area area = db.getArea();
+ assert area instanceof CoreDomain : "Missing CoreDomain for RDomainToMDBottomForEnforcement";
+ CoreDomain cd = (CoreDomain) area;
+ Rule rule = cd.getRule();
+ assert rule instanceof Mapping : "Missing Mapping for RDomainToMDBottomForEnforcement";
+ Mapping m = (Mapping) rule;
+ BottomPattern mb = m.getBottomPattern();
+ assert mb != null;
+ for (PropertyTemplateItem pt : te.getPart()) {
+ final Property pp = pt.getReferredProperty();
+ // check relations
+ Key key = transformation.getKeyforType(c);
+ assert key != null;
+ if (key.getPart().contains(pp)) {
+ final OCLExpression e = pt.getValue();
+ assert (pp != null) && (e != null);
+ doRDomainPatternExprToMappingDomainAssignment(v, pp, e, db);
+ doRDomainPatternExprToMappingDomainVarAssignment(r, v, pp, e, db);
+ doRDomainPatternExprToMappingDomainTemplateVarAssignment(r, v, pp, e, db);
+ doRDomainPatternExprToMappingBottomVarAssignment(r, v, pp, e, mb);
+ }
+ }
+ }
+
+ // 20
+ public void doRDomainToMDBottomForEnforcementOfNonIdentityPropObject(@NonNull Relation r, @NonNull RelationDomain rd, @NonNull ObjectTemplateExp te,
+ @NonNull Set<Predicate> predicatesWithoutVarBindings, @NonNull Set<Variable> unboundDomainVars, @NonNull Mapping m)
+ {
+ // check
+ // FIXME not c.key.part->includes(pp)
+ // when
+ RelationalTransformation rt = (RelationalTransformation) r.getTransformation();
+ assert rt != null;
+ RelationalTransformationToMappingTransformation whenRule = new RelationalTransformationToMappingTransformation(transformation, rt);
+ RuleBindings whenBindings = whenRule.getRuleBindings();
+ whenRule = (RelationalTransformationToMappingTransformation) transformation.getRecord(whenBindings);
+ Transformation mt = null;
+ if (whenRule != null && whenRule.hasExecuted()) {
+ mt = whenRule.getCore();
+ }
+ assert mt != null;
+ // TODO Finish when clear about if the call should be uncommented
+ // ...
+ }
+
+ // 32
+ private void doRSimplePatternToMPattern(Pattern rp, Pattern mp) {
+ for (Predicate pd : rp.getPredicate()) {
+ // check
+ OCLExpression ce = pd.getConditionExpression();
+ assert ce != null;
+ if (!(ce instanceof RelationCallExp)) {
+ Predicate mpd = transformation.createPredicate();
+ OCLExpression me = doRExpToMExp(ce);
+ assert me != null;
+ mpd.setConditionExpression(me);
+ }
+ }
+ }
+
+ // 34
+ public void doRVarSetToMBVarSet(@NonNull ArrayList<Variable> rvSeq,
+ @NonNull BottomPattern mb) {
+
+ if (!rvSeq.isEmpty()) {
+ // check
+ Variable rv = rvSeq.remove(0);
+ assert rv != null;
+ // when
+ Variable mv = doRVarToMVar(rv, mb);
+ assert mv != null;
+ doRVarSetToMBVarSet(rvSeq, mb);
+ }
+ }
+
+ // 40
+ public void doRWhenRelCallToMGuard(@NonNull Pattern rp, @NonNull GuardPattern mp) {
+
+ for (Predicate p : rp.getPredicate()) {
+ // check
+ if (p.getConditionExpression() instanceof RelationCallExp) {
+ RelationCallExp e = (RelationCallExp) p.getConditionExpression();
+ Relation r = e.getReferredRelation();
+ List<Domain> dseq = new ArrayList<Domain>(r.getDomain());
+ // where
+ for (OCLExpression arg : e.getArgument()) {
+ VariableExp a = (VariableExp) arg;
+ RelationDomain rd = (RelationDomain) dseq.get(e.getArgument().indexOf(a));
+ assert (a != null) && (rd != null);
+ doRWhenRelCallArgToMGuardPredicate(r, a, rd, mp);
+ }
+ }
+ }
+ }
+
+ // 47
+ public void doTROppositeDomainsToMappingForEnforcement(@NonNull Relation r,
+ @NonNull RelationDomain rd, @NonNull Mapping m) {
+
+ Set<RelationDomain> rds = new HashSet<RelationDomain>();
+ for (Domain d : r.getDomain()) {
+ rds.add((RelationDomain) d);
+ }
+ rds.remove(rd); // guard
+ for (RelationDomain ord : rds) {
+ // check
+ DomainPattern dp = ord.getPattern();
+ if (dp.getTemplateExpression() instanceof ObjectTemplateExp) {
+ String dn = ord.getName();
+ assert dn != null;
+ TypedModel dir = ord.getTypedModel();
+ String tmn = dir.getName();
+ assert tmn != null;
+ RelationalTransformation rt = (RelationalTransformation) dir.getTransformation();
+ assert rt != null;
+ List<Package> up = dir.getUsedPackage();
+ boolean c = ord.isIsCheckable();
+ List<Variable> domainVars = dp.getBindsTo();
+ ObjectTemplateExp te = (ObjectTemplateExp) dp.getTemplateExpression();
+ assert te != null;
+ // init
+ CoreDomain cd = transformation.findCoreDomain(dn, m);
+ GuardPattern dg = transformation.findGuardPattern(cd);
+ BottomPattern db = transformation.findBottomPattern(cd);
+ BottomPattern mb = transformation.findBottomPattern(m);
+ // where
+ Set<Variable> whenVars = new HashSet<Variable>();
+ if (r.getWhen() != null)
+ whenVars.addAll(r.getWhen().getBindsTo());
+ Set<Variable> domainTopVars = new HashSet<Variable>(domainVars);
+ domainTopVars.retainAll(whenVars);
+ Set<Variable> sharedDomainVars = getSharedDomainVars(r);
+ Set<Variable> domainBottomUnSharedVars = new HashSet<Variable>(domainVars);
+ domainBottomUnSharedVars.removeAll(whenVars);
+ domainBottomUnSharedVars.removeAll(sharedDomainVars);
+ Set<Variable> domainBottomSharedVars = new HashSet<Variable>(domainVars);
+ domainBottomSharedVars.removeAll(whenVars);
+ domainBottomSharedVars.retainAll(sharedDomainVars);
+ RelationalTransformationToMappingTransformation whenRule =
+ new RelationalTransformationToMappingTransformation(transformation, rt);
+ RuleBindings whenBindings = whenRule.getRuleBindings();
+ RelationalTransformationToMappingTransformation whenRuleRecord = (RelationalTransformationToMappingTransformation) transformation.getRecord(whenBindings);
+ Transformation mt = null;
+ if (whenRuleRecord != null && whenRuleRecord.hasExecuted()) {
+ mt = (Transformation) whenRuleRecord.getCore();
+ }
+ assert mt != null;
+ /*List<Variable> dgVars =*/ doRVarSetToDGVarSet(new ArrayList<Variable>(domainTopVars), dg);
+ /*List<Variable> dbVars =*/ doRVarSetToMBVarSet(new ArrayList<Variable>(domainBottomUnSharedVars), db);
+ doRVarSetToMBVarSet(new ArrayList<Variable>(domainBottomSharedVars), mb);
+ doRDomainPatternToMDBottomPattern(r, te, db);
+ // assign
+ TypedModel mdir = null;
+ for (TypedModel tm : mt.getModelParameter()) {
+ if (tm.getName().equals(tmn)) {
+ if (tm.getUsedPackage().equals(up)) {
+ mdir = tm;
+ break;
+ }
+ }
+ }
+ cd.setTypedModel(mdir);
+ cd.setIsCheckable(c);
+ cd.setIsEnforceable(false);
+ cd.setGuardPattern(dg);
+ m.setBottomPattern(mb);
+ }
+ }
+ }
+
+ // 50
+ /*
+ private void doUnsharedWhenVarsToMgVars(@NonNull Set<Variable> unsharedWhenVars,
+ @NonNull GuardPattern mg) {
+
+ List<Variable> mgVars = doRVarSetToMVarSet(new ArrayList<Variable>(unsharedWhenVars));
+ mg.getBindsTo().addAll(mgVars);
+ }
+ */
+
+
+ /* ============= T5 ============= */
+
+ // 6
+ private void doRDomainPatternExprToMappingBottomVarAssignment(@NonNull Relation r,
+ @NonNull Variable v, @NonNull Property pp,
+ @NonNull OCLExpression e, @NonNull BottomPattern mb) {
+
+ // when
+ Set<Variable> sharedDomainVars = getSharedDomainVars(r);
+ // check
+ if ((e instanceof VariableExp) && sharedDomainVars.contains(((VariableExp)e).getReferredVariable()) ) {
+ String pn = pp.getName();
+ Variable rev = (Variable) ((VariableExp)e).getReferredVariable();
+ assert rev != null;
+ // init
+ PropertyAssignment a = transformation.createPropertyAssignment();
+ VariableExp ve = transformation.createVariableExp();
+ VariableExp me = transformation.createVariableExp();
+ // where
+ RealizedVariable mv = doRVarToMRealizedVar(v);
+ Variable mev = doRVarToMVar(rev);
+ // assign
+ ve.setReferredVariable(mv);
+ ve.setType(mv.getType());
+ a.setSlotExpression(ve);
+ Property tp = getProperty(pn, mv.getType());
+ assert tp != null;
+ a.setTargetProperty(tp);
+ me.setReferredVariable(mev);
+ me.setType(mev.getType());
+ a.setValue(me);
+ mb.getAssignment().add(a);
+ }
+ }
+
+
+ // 7
+ private void doRDomainPatternExprToMappingDomainAssignment(@NonNull Variable v,
+ @NonNull Property pp, @NonNull OCLExpression e,
+ @NonNull BottomPattern db) {
+
+ // check
+ if (!(e instanceof VariableExp) && !(e instanceof ObjectTemplateExp)) {
+ String pn = pp.getName();
+ // init
+ PropertyAssignment a = transformation.createPropertyAssignment();
+ VariableExp ve = transformation.createVariableExp();
+ // where
+ Variable mv = doRVarToMVar(v);
+ assert mv != null;
+ OCLExpression me = doRExpToMExp(e);
+ assert me != null;
+ // assign
+ a.setSlotExpression(ve);
+ ve.setReferredVariable(mv);
+ ve.setType(mv.getType());
+ Property tp = getProperty(pn, mv.getType());
+ a.setTargetProperty(tp);
+ a.setValue(me);
+ db.getAssignment().add(a);
+ }
+
+ }
+
+ // 8
+ private void doRDomainPatternExprToMappingDomainTemplateVarAssignment(
+ @NonNull Relation r, @NonNull Variable v,
+ @NonNull Property pp, @NonNull OCLExpression e,
+ @NonNull BottomPattern db) {
+
+ // when
+ Set<Variable> sharedDomainVars = getSharedDomainVars(r);
+ // check
+ if (e instanceof ObjectTemplateExp) {
+ final Variable rev = ((ObjectTemplateExp)e).getBindsTo();
+ assert rev != null;
+ if (!sharedDomainVars.contains(rev)) {
+ String pn = pp.getName();
+ // init
+ PropertyAssignment a = transformation.createPropertyAssignment();
+ VariableExp ve = transformation.createVariableExp();
+ VariableExp me = transformation.createVariableExp();
+ RealizedVariable mv = doRVarToMRealizedVar(v);
+ Variable mev = doRVarToMVar(rev);
+ // assign
+ ve.setReferredVariable(mv);
+ ve.setType(mv.getType());
+ a.setSlotExpression(ve);
+ Property tp = getProperty(pn, mv.getType());
+ assert tp != null;
+ a.setTargetProperty(tp);
+ me.setReferredVariable(mev);
+ me.setType(mev.getType());
+ a.setValue(me);
+ db.getAssignment().add(a);
+ }
+ }
+ }
+
+ // 9
+ private void doRDomainPatternExprToMappingDomainVarAssignment(@NonNull Relation r,
+ @NonNull Variable v, @NonNull Property pp,
+ @NonNull OCLExpression e, @NonNull BottomPattern db) {
+
+ // when
+ Set<Variable> sharedDomainVars = getSharedDomainVars(r);
+ // check
+ if ((e instanceof VariableExp) && !sharedDomainVars.contains(((VariableExp)e).getReferredVariable()) ) {
+ String pn = pp.getName();
+ Variable rev = (Variable) ((VariableExp) e).getReferredVariable();
+ assert rev != null;
+ // init
+ PropertyAssignment a = transformation.createPropertyAssignment();
+ VariableExp ve = transformation.createVariableExp();
+ VariableExp me = transformation.createVariableExp();
+ // where
+ RealizedVariable mv = doRVarToMRealizedVar(v);
+ Variable mev = doRVarToMVar(rev);
+ // assign
+ ve.setReferredVariable(mv);
+ ve.setType(mv.getType());
+ a.setSlotExpression(ve);
+ Property tp = getProperty(pn, mv.getType());
+ a.setTargetProperty(tp);
+ me.setReferredVariable(mev);
+ me.setType(mev.getType());
+ a.setValue(me);
+
+ db.getRealizedVariable().add(mv);
+ db.getAssignment().add(a);
+ }
+ }
+
+ // 11
+ /*
+ * Recursively create an assignment for each ObjectTemplateExp
+ */
+ private void doRDomainPatternToMDBottomPatternComposite(@NonNull Relation r,
+ @NonNull ObjectTemplateExp te, @NonNull BottomPattern db) {
+
+ // check
+ for (PropertyTemplateItem pt : te.getPart()) {
+ if (pt.getValue() instanceof ObjectTemplateExp) {
+ Variable vte = te.getBindsTo();
+ assert vte != null;
+ Property pp = pt.getReferredProperty();
+ assert pp != null;
+ String pn = pp.getName();
+ ObjectTemplateExp pte = (ObjectTemplateExp) pt.getValue();
+ Variable vpte = pte.getBindsTo();
+ assert vpte != null;
+ // init
+ PropertyAssignment a = transformation.createPropertyAssignment();
+ VariableExp ve1 = transformation.createVariableExp();
+ VariableExp ve2 = transformation.createVariableExp();
+ // where
+ Variable mvte = doRVarToMVar(vte);
+ Variable mvpte = doRVarToMVar(vpte);
+ doRDomainPatternToMDBottomPattern(r, pte, db);
+ // assign
+ Property tp = getProperty(pn, mvte.getType());
+ assert tp != null;
+ ve1.setReferredVariable(mvte);
+ ve1.setType(mvte.getType());
+ a.setSlotExpression(ve1);
+ a.setTargetProperty(tp);
+ ve2.setReferredVariable(mvpte);
+ ve2.setType(mvpte.getType());
+ a.setValue(ve2);
+ db.getAssignment().add(a);
+ }
+ }
+ }
+
+ // 12
+ private void doRDomainPatternToMDBottomPatternSimpleNonVarExpr(@NonNull ObjectTemplateExp te,
+ @NonNull BottomPattern db) {
+
+
+ // check
+ Variable vte = te.getBindsTo();
+ assert vte != null;
+ for (PropertyTemplateItem pt : te.getPart()) {
+ OCLExpression e = pt.getValue();
+ assert e != null;
+ // guard
+ if (!(e instanceof TemplateExp) && !(e instanceof VariableExp)) {
+ Property pp = pt.getReferredProperty();
+ assert pp != null;
+ String pn = pp.getName();
+ // init
+ PropertyAssignment a = transformation.createPropertyAssignment();
+ VariableExp ve = transformation.createVariableExp();
+ // where
+ Variable mvte = doRVarToMVar(vte);
+ assert mvte != null;
+ OCLExpression me = doRExpToMExp(e);
+ assert me != null;
+ // assign
+ ve.setReferredVariable(mvte);
+ ve.setType(mvte.getType());
+ Property tp = getProperty(pn, mvte.getType());
+ assert tp != null;
+ a.setTargetProperty(tp);
+ a.setSlotExpression(ve);
+ a.setValue(me);
+ db.getAssignment().add(a);
+ }
+ }
+ }
+
+
+ // 13
+ /*
+ * Create a PropertyAssignment for each property assignment of the te
+ * that does not reference a shared domain var
+ */
+ private void doRDomainPatternToMDBottomPatternSimpleSharedVarExpr(
+ @NonNull Relation r, @NonNull ObjectTemplateExp te,
+ @NonNull BottomPattern mb) {
+
+ // when
+ Set<Variable> sharedDomainVars = getSharedDomainVars(r);
+ // check
+ Variable vte = te.getBindsTo();
+ assert vte != null;
+ for (PropertyTemplateItem pt : te.getPart()) {
+ if (pt.getValue() instanceof VariableExp) {
+ VariableExp e = (VariableExp) pt.getValue();
+ Variable vpte = (Variable) e.getReferredVariable();
+ assert vpte != null;
+ // guard
+ if (sharedDomainVars.contains(vpte)) {
+ String pn = pt.getReferredProperty().getName();
+ // init
+ PropertyAssignment a = transformation.createPropertyAssignment();
+ VariableExp ve1 = transformation.createVariableExp();
+ VariableExp ve2 = transformation.createVariableExp();
+ // where
+ Variable mvte = doRVarToMVar(vte);
+ Variable mvpte = doRVarToMVar(vpte);
+ // assign
+ ve1.setReferredVariable(mvte);
+ ve2.setReferredVariable(mvpte);
+ Property tp = getProperty(pn, mvte.getType());
+ assert tp != null;
+ a.setSlotExpression(ve1);
+ a.setTargetProperty(tp);
+ a.setValue(ve2);
+ mb.getAssignment().add(a);
+ }
+ }
+ }
+ }
+
+ // 14 Opposite guard as 13
+ /*
+ * Create a PropertyAssignment for each property assignment of the te
+ * that does reference a shared domain var
+ */
+
+ private void doRDomainPatternToMDBottomPatternSimpleUnSharedVarExpr(
+ @NonNull Relation r, @NonNull ObjectTemplateExp te,
+ @NonNull BottomPattern db) {
+ // when
+ Set<Variable> sharedDomainVars = getSharedDomainVars(r);
+ // check
+ Variable vte = te.getBindsTo();
+ assert vte != null;
+ for (PropertyTemplateItem pt : te.getPart()) {
+ if (pt.getValue() instanceof VariableExp) {
+ VariableExp e = (VariableExp) pt.getValue();
+ Variable vpte = (Variable) e.getReferredVariable();
+ assert vpte != null;
+ // guard
+ if (!sharedDomainVars.contains(vpte)) {
+ String pn = pt.getReferredProperty().getName();
+ // init
+ PropertyAssignment a = transformation.createPropertyAssignment();
+ VariableExp ve1 = transformation.createVariableExp();
+ VariableExp ve2 = transformation.createVariableExp();
+ // where
+ Variable mvte = doRVarToMVar(vte);
+ Variable mvpte = doRVarToMVar(vpte);
+ // assign
+ ve1.setReferredVariable(mvte);
+ ve2.setReferredVariable(mvpte);
+ Property tp = getProperty(pn, mvte.getType());
+ assert tp != null;
+ a.setSlotExpression(ve1);
+ a.setTargetProperty(tp);
+ a.setValue(ve2);
+ db.getAssignment().add(a);
+ }
+ }
+ }
+
+ }
+
+ // 16
+ private void doRDomainToMComposedMappingGuard(@NonNull Relation r,
+ @NonNull ObjectTemplateExp te, @NonNull RelationDomain rd,
+ @NonNull OCLExpression e, @NonNull Mapping cm) {
+
+ // when
+ RelationalTransformation rt = (RelationalTransformation) r.getTransformation();
+ assert rt != null;
+ Transformation mt = null;
+ RelationalTransformationToMappingTransformation whenRule = new RelationalTransformationToMappingTransformation(transformation, rt);
+ RuleBindings whenBindings = whenRule.getRuleBindings();
+ RelationalTransformationToMappingTransformation whenRuleRecord = (RelationalTransformationToMappingTransformation) transformation.getRecord(whenBindings);
+ if (whenRuleRecord != null && whenRuleRecord.hasExecuted()) {
+ mt = (Transformation) whenRuleRecord.getCore();
+
+ }
+ assert mt != null;
+ // guard
+ DomainPattern rdp = rd.getPattern();
+ TemplateExp rdt = rdp.getTemplateExpression();
+ if ((e instanceof VariableExp) && (rdt instanceof ObjectTemplateExp)) {
+ // check
+ Variable v = (Variable) ((VariableExp) e).getReferredVariable();
+ assert v != null;
+ if (isVarBoundToSomeOtherTemplate((ObjectTemplateExp) rdt, te, v)) {
+ String dn, tmn;
+ dn = rd.getName();
+ assert dn != null;
+ TypedModel dir = rd.getTypedModel();
+ tmn = dir.getName();
+ assert tmn != null;
+ List<Package> up = dir.getUsedPackage();
+ if (rt != dir.getTransformation())
+ return;
+ // init
+ GuardPattern mg = transformation.findGuardPattern(cm);
+ Predicate pd = transformation.createPredicate();
+ OperationCallExp ee = transformation.createOperationCallExp();
+ PropertyCallExp pe = transformation.createPropertyCallExp();
+ VariableExp ve1 = transformation.createVariableExp();
+ VariableExp ve2 = transformation.createVariableExp();
+ CoreDomain cd = transformation.findCoreDomain(dn, cm);
+ GuardPattern cmdg = transformation.findGuardPattern(cd);
+ // where
+ BottomPattern mb = cm.getBottomPattern();
+ assert mb != null;
+ RealizedVariable tcv = doRelationDomainToTraceClassVar(r, rd, mb);
+ assert tcv != null;
+ Variable mv = doRVarToMVar(v);
+ assert mv != null;
+ // assign
+ ve1.setReferredVariable(tcv);
+ ve1.setType(tcv.getType());
+ Property tp = getProperty(mv.getName(), mv.getType());
+ pe.setSource(ve1);
+ pe.setReferredProperty(tp);
+ pe.setType(tp.getType());
+ ee.setSource(pe);
+ ee.setReferredOperation(getEqualsOPeration());
+ ee.setType(transformation.getMetaModelManager().getBooleanType());
+ ve2.setReferredVariable(mv);
+ ve2.setType(mv.getType());
+ ee.getArgument().add(ve2);
+ pd.setConditionExpression(ee);
+ mg.getPredicate().add(pd);
+ TypedModel mdir = null;
+ for (TypedModel tm : mt.getModelParameter()) {
+ if (tm.getName().equals(tmn)) {
+ if (tm.getUsedPackage().equals(up)) {
+ mdir = tm;
+ break;
+ }
+ }
+ }
+ cd.setTypedModel(mdir);
+ cmdg.getBindsTo().add(mv);
+ cd.setGuardPattern(cmdg);
+ }
+ }
+ }
+
+ // 21
+ public void doRDomainToMDBottomForEnforcementOfNonIdentityPropPrimitive(@NonNull Relation r,
+ @NonNull ObjectTemplateExp te, @NonNull RelationDomain rd,
+ @NonNull Mapping m)
+ {
+ // when
+ RelationalTransformation rt = (RelationalTransformation) r.getTransformation();
+ assert rt != null;
+ RelationalTransformationToMappingTransformation whenRule = new RelationalTransformationToMappingTransformation(transformation, rt);
+ RuleBindings whenBindings = whenRule.getRuleBindings();
+ whenRule = (RelationalTransformationToMappingTransformation) transformation.getRecord(whenBindings);
+ Transformation mt = null;
+ if (whenRule != null && whenRule.hasExecuted()) {
+ mt = whenRule.getCore();
+ }
+ assert mt != null;
+ // check
+ for (PropertyTemplateItem pt : te.getPart()) {
+ final OCLExpression e = pt.getValue();
+ Property pp = pt.getReferredProperty();
+ assert e != null;
+ Variable v = te.getBindsTo();
+ assert v != null;
+ Type c = v.getType();
+ assert c != null;
+ Key key = transformation.getKeyforType(c);
+ assert key != null;
+ if (!(key.getPart().contains(pp)) && !(e instanceof TemplateExp)) {
+ String pn = pp.getName();
+ // init
+ Mapping cm = transformation.findMapping(m.getName()+"_forNonIdentityProp", mt);
+ BottomPattern bp = transformation.findBottomPattern(cm);
+ transformation.findGuardPattern(cm);
+ PropertyAssignment a = transformation.createPropertyAssignment();
+ VariableExp ve = transformation.createVariableExp();
+ // where
+ Variable mv = doRVarToMVar(v);
+ OCLExpression me = doRExpToMExp(e);
+ assert me != null;
+ // where
+ doRDomainToMComposedMappingGuard(r, te, rd, e, cm);
+ // assign
+ ve.setReferredVariable(mv);
+ ve.setType(mv.getType());
+ a.setSlotExpression(ve);
+ Property tp = getProperty(pn, mv.getType());
+ assert tp != null;
+ a.setTargetProperty(tp);
+ a.setValue(me);
+ bp.getAssignment().add(a);
+ m.getLocal().add(cm);
+ }
+ }
+ }
+
+ // 23
+ /*
+ * Creates the assignment of the middle model to the L/R models
+ */
+ public void doRDomainVarToMDBottomAssignmnetForEnforcement(@NonNull Relation r, @NonNull RelationDomain rd,
+ @NonNull ObjectTemplateExp te,
+ @NonNull Set<Predicate> predicatesWithoutVarBindings,
+ @NonNull Set<Variable> unboundDomainVars, @NonNull BottomPattern mb)
+ {
+ // check
+ Variable v = te.getBindsTo();
+ assert v != null;
+ // init
+ PropertyAssignment a = transformation.createPropertyAssignment();
+ VariableExp ve1 = transformation.createVariableExp();
+ VariableExp ve2 = transformation.createVariableExp();
+ // where
+ RealizedVariable tcv = doRelationDomainToTraceClassVar(r, rd, mb);
+ Variable mv = doRVarToMVar(v);
+ // assign
+ ve1.setReferredVariable(tcv);
+ ve1.setType(tcv.getType());
+ a.setSlotExpression(ve1);
+ Property tp = getProperty(v.getName(), tcv.getType());
+ assert tp != null;
+ a.setTargetProperty(tp);
+ ve2.setReferredVariable(mv);
+ ve2.setType(mv.getType());
+ a.setValue(ve2);
+
+ mb.getAssignment().add(a);
+ }
+
+ // 28
+ public void doROppositeDomainVarsToTraceClassProps(@NonNull Relation r,
+ @NonNull RelationDomain rd, @NonNull ObjectTemplateExp te,
+ @NonNull Set<Variable> domainVars,
+ @NonNull BottomPattern mb) {
+
+ // check
+ for(Variable dv : domainVars) {
+ if (transformation.getTemplateExpression(dv) != null) {
+ // init
+ PropertyAssignment a = transformation.createPropertyAssignment();
+ VariableExp ve1 = transformation.createVariableExp();
+ VariableExp ve2 = transformation.createVariableExp();
+ // where
+ RealizedVariable tcv = doRelationDomainToTraceClassVar(r, rd, mb);
+ assert dv != null;
+ Variable mdv = doRVarToMVar(dv);
+ // assign
+ ve1.setReferredVariable(tcv);
+ ve1.setType(tcv.getType());
+ a.setSlotExpression(ve1);
+ Property tp = getProperty(dv.getName(), tcv.getType());
+ assert tp != null;
+ a.setTargetProperty(tp);
+ ve2.setReferredVariable(mdv);
+ ve2.setType(mdv.getType());
+ a.setValue(ve2);
+ mb.getAssignment().add(a);
+ }
+ }
+
+ }
+
+ // 29
+ public void doRPredicateSetToMBPredicateSet(@NonNull ArrayList<Predicate> predSeq, @NonNull BottomPattern mb) {
+
+ // check
+ if(predSeq.isEmpty()) {
+ return;
+ }
+ Predicate rp = predSeq.remove(0);
+ OCLExpression re = rp.getConditionExpression();
+ assert re != null;
+ // init
+ Predicate mp = transformation.createPredicate();
+ // when
+ OCLExpression me = doRExpToMExp(re);
+ assert me != null;
+ doRPredicateSetToMBPredicateSet(predSeq, mb);
+ // assign
+ mp.setConditionExpression(me);
+ mb.getPredicate().add(mp);
+ }
+
+ // 33
+ public void doRVarSetToDGVarSet(@NonNull ArrayList<Variable> rvSeq,
+ @NonNull GuardPattern dg) {
+
+ if (!rvSeq.isEmpty()) {
+ // check
+ Variable rv = rvSeq.remove(0);
+ assert rv != null;
+ // when
+ Variable mv = doRVarToMVar(rv, dg);
+ assert mv != null;
+ doRVarSetToDGVarSet(rvSeq, dg);
+ }
+
+ }
+
+ // 35
+ /*public @NonNull List<Variable> doRVarSetToMVarSet(@NonNull ArrayList<Variable> rvSeq) {
+
+ List<Variable> mvSet = new ArrayList<Variable>();
+ if (!rvSeq.isEmpty()) {
+ final Variable rv = rvSeq.remove(0);
+ assert rv != null;
+ Variable mv = doRVarToMVar(rv);
+ mvSet.add(mv);
+ mvSet.addAll(doRVarSetToMVarSet(rvSeq));
+ }
+ return mvSet;
+ }*/
+
+ // 39
+ private void doRWhenRelCallArgToMGuardPredicate(@NonNull Relation r, @NonNull VariableExp ve,
+ @NonNull RelationDomain d, @NonNull GuardPattern mg) {
+ // When
+ RelationToTraceClass whenRule = new RelationToTraceClass(transformation, r);
+ RuleBindings whenBindings = whenRule.getRuleBindings();
+ whenRule = (RelationToTraceClass) transformation.getRecord(whenBindings);
+ Type tc = null;
+ if (whenRule != null && whenRule.hasExecuted()) {
+ tc = (Type) whenRule.getCore();
+ }
+ assert tc != null;
+ // check
+ String dvn = d.getRootVariable().getName();
+ Variable v = (Variable) ve.getReferredVariable();
+ // init
+ Variable vd = transformation.findVariable(tc.getName()+"_v", tc, mg);
+ Predicate mgp = transformation.createPredicate();
+ OperationCallExp ee = transformation.createOperationCallExp();
+ PropertyCallExp pe = transformation.createPropertyCallExp();
+ VariableExp pve = transformation.createVariableExp();
+ VariableExp ave = transformation.createVariableExp();
+ // where
+ assert v != null;
+ Variable mv = doRVarToMVar(v);
+ // assign
+ mgp.setConditionExpression(ee);
+ ee.setSource(pe);
+ pe.setSource(pve);
+ pve.setReferredVariable(vd);
+ pve.setType(vd.getType());
+ Property pep = getProperty(dvn, vd.getType());
+ assert pep != null;
+ pe.setReferredProperty(pep);
+ pe.setType(pep.getType());
+ ee.setReferredOperation(getEqualsOPeration());
+ ee.setType(transformation.getMetaModelManager().getBooleanType());
+ ave.setReferredVariable(mv);
+ ave.setType(mv.getType());
+ ee.getArgument().add(ave);
+
+ mg.getPredicate().add(mgp);
+
+ }
+
+
+ /* ============= T6 ============= */
+
+ /*
+ * The issue with this method is that all variables should have been
+ * transformed so all variable references can be correctly pointed.
+ * However, if we call it after all variable modifying relations it
+ * should work.
+ */
+ // 25
+ public @Nullable OCLExpression doRExpToMExp(@NonNull OCLExpression re) {
+ OCLExpCopy oCLExpCopy = new OCLExpCopy(transformation);
+
+ return (OCLExpression) oCLExpCopy.doSwitch(re);
+ }
+
+ // 36
+ public @NonNull RealizedVariable doRVarToMRealizedVar(@NonNull Variable rv,
+ @NonNull CorePattern pattern) {
+
+ String n = rv.getName();
+ Type t = rv.getType();
+ assert (n != null) && (t != null);
+ RealizedVariable mv = transformation.findRealizedVariable(n, t, pattern);
+ assert mv != null;
+ transformation.putVariableTrace(rv, mv);
+ return mv;
+ }
+
+ public @NonNull RealizedVariable doRVarToMRealizedVar(@NonNull Variable rv) {
+
+ RealizedVariable mv = (RealizedVariable) transformation.getVariableTrace(rv);
+ assert mv != null;
+ return mv;
+ }
+
+ // 37
+ public @NonNull Variable doRVarToMVar(@NonNull Variable rv,
+ @NonNull CorePattern pattern) {
+
+ String n = rv.getName();
+ Type t = rv.getType();
+ assert (n != null) && (t != null);
+ Variable mv = transformation.findVariable(n, t, pattern);
+ assert mv != null;
+ transformation.putVariableTrace(rv, mv);
+ return mv;
+ }
+
+ public @NonNull Variable doRVarToMVar(@NonNull Variable rv) {
+
+ Variable mv = transformation.getVariableTrace(rv);
+ assert mv != null;
+ return mv;
+ }
+
+ // 42
+ public @NonNull RealizedVariable doRelationDomainToTraceClassVar(@NonNull Relation r,
+ @NonNull RelationDomain d, @NonNull CorePattern p) {
+
+ // check
+ String rn = r.getName();
+ assert rn != null;
+ String dn = d.getName();
+ assert dn != null;
+ // when
+ RelationToTraceClass whenRule = new RelationToTraceClass(transformation, r);
+ RuleBindings whenBindings = whenRule.getRuleBindings();
+ whenRule = (RelationToTraceClass) transformation.getRecord(whenBindings);
+ Type tc = null;
+ if (whenRule != null && whenRule.hasExecuted()) {
+ tc = (Type) whenRule.getCore();
+ }
+ assert tc != null;
+ RealizedVariable mv = transformation.findRealizedVariable(rn+"_"+dn+"_v", tc, p);
+ return mv;
+ }
+
+
+
+ /* ============= Helpers ============= */
+
+ public Set<Predicate> rejectRelationCallPredicates(
+ @NonNull List<Predicate> predicates) {
+
+ Set<Predicate> rpSet = new HashSet<Predicate>(predicates);
+ Iterator<Predicate> it = rpSet.iterator();
+ while (it.hasNext()) {
+ Predicate p = it.next();
+ if (p.getConditionExpression() instanceof RelationCallExp) {
+ it.remove();
+ }
+ }
+ return rpSet;
+ }
+
+ public Set<Variable> getAllDomainVars(@NonNull Relation r) {
+ Set<Variable> allDomainVars = new HashSet<Variable>();
+ for (Domain d : r.getDomain()) {
+ if (((RelationDomain) d).getPattern() != null)
+ allDomainVars.addAll(((RelationDomain) d).getPattern().getBindsTo());
+ }
+ return allDomainVars;
+ }
+
+ private Operation getEqualsOPeration() {
+ Operation referredOperation = null;
+ for (Operation o : transformation.getMetaModelManager().getOclAnyType().getOwnedOperation()) {
+ if (o.getName().equals("=")) {
+ referredOperation = o;
+ break;
+ }
+ }
+ return referredOperation;
+ }
+
+ private Property getProperty(String name, Type owningType) {
+
+ for (Property p : owningType.getOwnedAttribute()) {
+ if (p.getName().equals(name))
+ return p;
+ }
+ return null;
+ }
+
+
+
+}
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/QvtrToQvtcTransformation.java b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/QvtrToQvtcTransformation.java
new file mode 100644
index 000000000..0cc1b8ad0
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/QvtrToQvtcTransformation.java
@@ -0,0 +1,507 @@
+/*******************************************************************************
+ * Copyright (c) 2014 The University of York and Willink Transformations.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Horacio Hoyos - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.qvtd.build.qvtrtoqvtc;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.ocl.examples.pivot.OCLExpression;
+import org.eclipse.ocl.examples.pivot.OperationCallExp;
+import org.eclipse.ocl.examples.pivot.PivotFactory;
+import org.eclipse.ocl.examples.pivot.Property;
+import org.eclipse.ocl.examples.pivot.PropertyCallExp;
+import org.eclipse.ocl.examples.pivot.Root;
+import org.eclipse.ocl.examples.pivot.Type;
+import org.eclipse.ocl.examples.pivot.Variable;
+import org.eclipse.ocl.examples.pivot.VariableDeclaration;
+import org.eclipse.ocl.examples.pivot.VariableExp;
+import org.eclipse.ocl.examples.pivot.manager.MetaModelManager;
+import org.eclipse.qvtd.build.qvtrtoqvtc.impl.QVTcoreBaseBottomPatternKey;
+import org.eclipse.qvtd.build.qvtrtoqvtc.impl.QVTcoreBaseCoreDomainKey;
+import org.eclipse.qvtd.build.qvtrtoqvtc.impl.QVTcoreBaseGuardPatternKey;
+import org.eclipse.qvtd.build.qvtrtoqvtc.impl.QVTcoreMappingKey;
+import org.eclipse.qvtd.build.qvtrtoqvtc.impl.QVTcoreVariableKey;
+import org.eclipse.qvtd.build.qvtrtoqvtc.impl.RelationalTransformationToMappingTransformation;
+import org.eclipse.qvtd.build.qvtrtoqvtc.impl.RelationalTransformationToTracePackage;
+import org.eclipse.qvtd.build.qvtrtoqvtc.impl.RuleBindings;
+import org.eclipse.qvtd.build.qvtrtoqvtc.impl.TopLevelRelationToMappingForEnforcement;
+import org.eclipse.qvtd.build.qvtrtoqvtc.utilities.TransformationTraceData;
+import org.eclipse.qvtd.build.qvtrtoqvtc.utilities.TransformationTraceDataImpl;
+import org.eclipse.qvtd.pivot.qvtbase.Pattern;
+import org.eclipse.qvtd.pivot.qvtbase.Predicate;
+import org.eclipse.qvtd.pivot.qvtbase.QVTbaseFactory;
+import org.eclipse.qvtd.pivot.qvtbase.Transformation;
+import org.eclipse.qvtd.pivot.qvtcore.CoreModel;
+import org.eclipse.qvtd.pivot.qvtcore.Mapping;
+import org.eclipse.qvtd.pivot.qvtcore.QVTcoreFactory;
+import org.eclipse.qvtd.pivot.qvtcorebase.Area;
+import org.eclipse.qvtd.pivot.qvtcorebase.BottomPattern;
+import org.eclipse.qvtd.pivot.qvtcorebase.CoreDomain;
+import org.eclipse.qvtd.pivot.qvtcorebase.CorePattern;
+import org.eclipse.qvtd.pivot.qvtcorebase.GuardPattern;
+import org.eclipse.qvtd.pivot.qvtcorebase.PropertyAssignment;
+import org.eclipse.qvtd.pivot.qvtcorebase.QVTcoreBaseFactory;
+import org.eclipse.qvtd.pivot.qvtcorebase.RealizedVariable;
+import org.eclipse.qvtd.pivot.qvtrelation.DomainPattern;
+import org.eclipse.qvtd.pivot.qvtrelation.Key;
+import org.eclipse.qvtd.pivot.qvttemplate.ObjectTemplateExp;
+import org.eclipse.qvtd.pivot.qvttemplate.PropertyTemplateItem;
+import org.eclipse.qvtd.pivot.qvttemplate.TemplateExp;
+
+public class QvtrToQvtcTransformation
+{
+ private final @NonNull TransformationTraceData traceData;
+ private final @NonNull Resource qvtrModel;
+ private final @NonNull Resource qvtcModel;
+
+ @SuppressWarnings("unused")
+ private final @Nullable Resource qvtcTraceModel;
+// private Rule.Factory[] ruleFactories;
+
+ private final @NonNull List<EObject> potentialOrphans = new ArrayList<EObject>();
+ private final @NonNull List<EObject> traceRoots = new ArrayList<EObject>();
+ private final @NonNull List<EObject> coreRoots = new ArrayList<EObject>();
+ private final @NonNull Map<Variable, Variable> variableTrace = new HashMap<Variable, Variable>();
+
+ private Map<Type, Key> keysforTypes = new HashMap<Type, Key>();
+ private Map <Variable, TemplateExp> templateExpforVaraibless = new HashMap<Variable, TemplateExp>();
+ private boolean doGlobalSearch = true;
+ private final @NonNull MetaModelManager metaModelManager;
+
+ private QVTcoreMappingKey mappings = new QVTcoreMappingKey();
+
+ private QVTcoreBaseGuardPatternKey guardPatterns = new QVTcoreBaseGuardPatternKey();
+
+ private QVTcoreBaseBottomPatternKey botttomPatterns = new QVTcoreBaseBottomPatternKey();
+
+ private QVTcoreBaseCoreDomainKey coreDomains = new QVTcoreBaseCoreDomainKey();
+
+ private PivotPropertyKey properties = new PivotPropertyKey();
+
+ private QVTcoreVariableKey variables = new QVTcoreVariableKey();
+
+ private QVTcoreVariableKey realizedVariables = new QVTcoreVariableKey();
+
+ public QvtrToQvtcTransformation(@NonNull MetaModelManager metaModelManager, @NonNull Resource qvtrModel, @NonNull Resource qvtcModel, @Nullable Resource qvtcTraceModel) {
+
+ this.metaModelManager = metaModelManager;
+ this.qvtrModel = qvtrModel;
+ this.qvtcModel = qvtcModel;
+ this.qvtcTraceModel = qvtcTraceModel;
+ traceData = new TransformationTraceDataImpl();
+ // Create a cache of opposite relations
+ TreeIterator<EObject> it = qvtrModel.getAllContents();
+ while(it.hasNext()) {
+ EObject eo = it.next();
+ if (eo instanceof Key) {
+ keysforTypes.put(((Key)eo).getIdentifies(), (Key) eo);
+ }
+ // Populate bindsTo of DomainPattern
+ if (eo instanceof Pattern) {
+ Pattern p = (Pattern) eo;
+ for (Predicate pred : p.getPredicate()) {
+ p.getBindsTo().addAll(getVarsOfExp(pred.getConditionExpression()));
+ }
+ if (eo instanceof DomainPattern) {
+ DomainPattern dp = (DomainPattern) eo;
+ TemplateExp te = dp.getTemplateExpression();
+ dp.getBindsTo().add(te.getBindsTo());
+ if (te instanceof ObjectTemplateExp) {
+ dp.getBindsTo().addAll(getNestedBindToVariable((ObjectTemplateExp) te));
+ }
+ }
+ }
+ if (eo instanceof TemplateExp) {
+ TemplateExp te = (TemplateExp) eo;
+ templateExpforVaraibless.put(te.getBindsTo(), te);
+ }
+ }
+ }
+
+
+ public void addOrphan(@NonNull EObject eObject) {
+ potentialOrphans.add(eObject);
+ }
+
+
+ public @NonNull OperationCallExp createOperationCallExp() {
+ OperationCallExp oce = PivotFactory.eINSTANCE.createOperationCallExp();
+ assert oce != null;
+ addOrphan(oce);
+ return oce;
+ }
+
+
+ public @NonNull Predicate createPredicate() {
+ Predicate pd = QVTbaseFactory.eINSTANCE.createPredicate();
+ assert pd != null;
+ addOrphan(pd);
+ return pd;
+ }
+
+ public @NonNull PropertyAssignment createPropertyAssignment() {
+ PropertyAssignment a = QVTcoreBaseFactory.eINSTANCE.createPropertyAssignment();
+ assert a != null;
+ addOrphan(a);
+ return a;
+ }
+
+
+ public @NonNull PropertyCallExp createPropertyCallExp() {
+ PropertyCallExp pce = PivotFactory.eINSTANCE.createPropertyCallExp();
+ assert pce != null;
+ addOrphan(pce);
+ return pce;
+ }
+
+
+ public @NonNull VariableExp createVariableExp() {
+ VariableExp ve = PivotFactory.eINSTANCE.createVariableExp();
+ assert ve != null;
+ addOrphan(ve);
+ return ve;
+ }
+
+ // Save the qvtc resource
+ public void dispose() {
+ // What about the trace model? we need to separate them
+ //qvtcSource.getContents().addAll(traceData.getRootOutputELements());
+ }
+
+ public void execute() {
+ executeFactory(RelationalTransformationToTracePackage.FACTORY);
+ for (EObject eObject : potentialOrphans) {
+ if (eObject.eContainer() == null) {
+ traceRoots.add(eObject);
+ }
+ }
+ potentialOrphans.clear();
+ executeFactory(RelationalTransformationToMappingTransformation.FACTORY);
+ executeFactory(TopLevelRelationToMappingForEnforcement.FACTORY);
+ for (EObject eObject : potentialOrphans) {
+ if (eObject.eContainer() == null) {
+ coreRoots.add(eObject);
+ }
+ }
+ }
+
+ public void executeFactory(@NonNull Rule.Factory factory) {
+ for (Rule rule : factory.getRules(this, qvtrModel)) {
+ if (rule != null) {
+ executeTopLevelRule(rule);
+ if (rule.hasExecuted()) {
+ traceData.addRecord(rule);
+ }
+ }
+ }
+ }
+
+ public void executeNestedRule(@NonNull Rule rule) {
+ if (!rule.hasExecuted()) {
+ rule.check();
+ if (rule.when()) {
+ rule.instantiateOutput();
+ rule.setExecuted(true);
+ rule.where();
+ rule.setAttributes();
+ }
+ }
+ if (rule.hasExecuted()) {
+ traceData.addRecord(rule);
+ }
+ }
+
+ public void executeTopLevelRule(@NonNull Rule rule) {
+ if (!rule.hasExecuted()) {
+ rule.check();
+ if (rule.when()) {
+ rule.instantiateOutput();
+ // After output instantiation the record can be said to be executed
+ // so recursive/nested mappings can be invoked
+ rule.setExecuted(true);
+ rule.where();
+ rule.setAttributes();
+
+ }
+ }
+ }
+
+ public @NonNull BottomPattern findBottomPattern(@NonNull Area area) {
+
+ BottomPattern mb = null;
+ if (doGlobalSearch) {
+ mb = botttomPatterns.get(area);
+ }
+ if (mb == null) {
+ mb = QVTcoreBaseFactory.eINSTANCE.createBottomPattern();
+ assert mb!= null;
+ mb.setArea(area);
+ mb.getBindsTo();
+ botttomPatterns.add(mb);
+ //addOrphan(mb);
+ }
+ return mb;
+ }
+
+ public @NonNull CoreDomain findCoreDomain(@NonNull String name,
+ @NonNull org.eclipse.qvtd.pivot.qvtbase.Rule rule) {
+
+ CoreDomain md = null;
+ if (doGlobalSearch) {
+ md = coreDomains.get(name, rule);
+ }
+ if (md == null) {
+ md = QVTcoreBaseFactory.eINSTANCE.createCoreDomain();
+ assert md!= null;
+ md.setName(name);
+ md.setRule(rule);
+ coreDomains.add(md);
+ //addOrphan(md);
+ }
+ return md;
+ }
+
+ public @NonNull GuardPattern findGuardPattern(@NonNull Area area) {
+
+ GuardPattern mg = null;
+ if (doGlobalSearch) {
+ mg = guardPatterns.get(area);
+ }
+ if (mg == null) {
+ mg = QVTcoreBaseFactory.eINSTANCE.createGuardPattern();
+ assert mg!= null;
+ mg.setArea(area);
+ guardPatterns.add(mg);
+ //addOrphan(mg);
+ }
+
+ return mg;
+ }
+
+ public @NonNull Mapping findMapping(@NonNull String mn, @NonNull Transformation mt) {
+
+ Mapping m = null;
+ if (doGlobalSearch) {
+ m = mappings.get(mn, mt);
+ }
+ if (m == null) {
+ m = QVTcoreFactory.eINSTANCE.createMapping();
+ assert m!= null;
+ m.setName(mn);
+ m.setTransformation(mt);
+ mappings.add(m);
+ }
+ return m;
+ }
+
+ public Property findProperty(@NonNull String name, @NonNull Type owningType) {
+
+ Property p = null;
+ if (doGlobalSearch) {
+ p = properties.get(name, owningType);
+ }
+ if (p == null) {
+ p = PivotFactory.eINSTANCE.createProperty();
+ assert p!= null;
+ p.setName(name);
+ p.setOwningType(owningType);
+ properties.add(p);
+ }
+ return p;
+ }
+
+ public @NonNull RealizedVariable findRealizedVariable(@NonNull String name,
+ @NonNull Type type, @NonNull CorePattern pattern) {
+
+ RealizedVariable rv = null;
+ if (doGlobalSearch) {
+ rv = (RealizedVariable) realizedVariables.get(name, type, pattern);
+ }
+ if (rv == null) {
+ rv = QVTcoreBaseFactory.eINSTANCE.createRealizedVariable();
+ assert rv!= null;
+ rv.setName(name);
+ rv.setType(type);
+ realizedVariables.add(rv, pattern);
+ pattern.getVariable().add(rv);
+ }
+ return rv;
+ }
+
+
+ public @NonNull Variable findVariable(@NonNull String name,
+ @NonNull Type type, @NonNull CorePattern pattern) {
+
+ Variable v = null;
+ if (doGlobalSearch) {
+ v = (Variable) variables.get(name, type, pattern);
+ // A variable search can also be for a realized variable
+ if (v == null) {
+ v = (RealizedVariable) realizedVariables.get(name, type, pattern);
+ }
+ }
+ if (v == null) {
+ v = PivotFactory.eINSTANCE.createVariable();
+ assert v!= null;
+ v.setName(name);
+ v.setType(type);
+ variables.add(v, pattern);
+ pattern.getVariable().add(v);
+ }
+ return v;
+ }
+
+
+ public @NonNull Collection<? extends EObject> getCoreRoots() {
+ return coreRoots;
+ }
+
+ public @Nullable Key getKeyforType(@NonNull Type type) {
+ return keysforTypes.get(type);
+ }
+
+ /**
+ * @return the metaModelManager
+ */
+ public MetaModelManager getMetaModelManager() {
+ return metaModelManager;
+ }
+
+ private Set<Variable> getNestedBindToVariable(ObjectTemplateExp ote) {
+ Set<Variable> vars = new HashSet<Variable>();
+ for (PropertyTemplateItem p : ote.getPart()) {
+ OCLExpression e = p.getValue();
+ if (e instanceof ObjectTemplateExp) {
+ vars.add(((ObjectTemplateExp)e).getBindsTo());
+ vars.addAll(getNestedBindToVariable((ObjectTemplateExp) e));
+ } else {
+ vars.addAll(getVarsOfExp(e));
+ }
+ }
+ return vars;
+ }
+
+ /**
+ * @return the qvtcSource
+ */
+ public Resource getQvtcSource() {
+ return qvtcModel;
+ }
+
+ public @Nullable Rule getRecord(@NonNull RuleBindings relationsBindings) {
+ return traceData.getRecord(relationsBindings);
+ }
+
+ public @NonNull Collection<? extends EObject> getTraceRoots() {
+ return traceRoots;
+ }
+
+ public @Nullable Variable getVariableTrace(@NonNull Variable referredVariable) {
+
+ return variableTrace.get(referredVariable);
+ }
+
+ private Set<Variable> getVarsOfExp(OCLExpression e) {
+ QVTr2QVTcRelations rels = new QVTr2QVTcRelations(this);
+ return rels.getVarsOfExp(e);
+ }
+
+
+ /**
+ * @return the doGlobalSearch
+ */
+ public boolean isDoGlobalSearch() {
+ return doGlobalSearch;
+ }
+
+
+ // Create the top rules, and search the input model for the appropriate types, when possible?
+ public void prepare() {
+ try {
+ qvtrModel.load(null);
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ // EXIT!
+ } finally {
+// if (qvtrModel.isLoaded()) {
+ //RuleFactory factory = new RuleFactory();
+ //rules = factory.createTopRules(this);
+// ruleFactories = new Rule.Factory[] {
+// RelationalTransformationToMappingTransformation.FACTORY,
+// RelationToTraceClass.FACTORY
+// };
+// }
+ }
+ }
+
+
+ public void putVariableTrace(@NonNull Variable rv, @NonNull Variable mv) {
+
+ variableTrace.put(rv, mv);
+ }
+
+
+ public void saveTrace(@NonNull Resource asResource, @NonNull Collection<? extends EObject> eObjects, @NonNull Map<Object, Object> options) throws IOException {
+ Root root = PivotFactory.eINSTANCE.createRoot();
+ root.setExternalURI(asResource.getURI().toString());
+ asResource.getContents().add(root);
+ for (EObject eObject : eObjects) {
+ if (eObject instanceof org.eclipse.ocl.examples.pivot.Package) {
+ root.getNestedPackage().add((org.eclipse.ocl.examples.pivot.Package)eObject);
+ }
+ else {
+ asResource.getContents().add(eObject);
+ }
+ }
+ asResource.save(options);
+ }
+
+ public void saveCore(@NonNull Resource asResource, @NonNull Collection<? extends EObject> eObjects, @NonNull Map<Object, Object> options) throws IOException {
+ CoreModel root = QVTcoreFactory.eINSTANCE.createCoreModel();
+ root.setExternalURI(asResource.getURI().toString());
+ asResource.getContents().add(root);
+ for (EObject eObject : eObjects) {
+ if (eObject instanceof org.eclipse.ocl.examples.pivot.Package) {
+ root.getNestedPackage().add((org.eclipse.ocl.examples.pivot.Package)eObject);
+ }
+ else {
+ asResource.getContents().add(eObject);
+ }
+ }
+ asResource.save(options);
+ }
+
+ /**
+ * @param doGlobalSearch TRUE to enable global search, FALSE to disable it
+ */
+ public void setDoGlobalSearch(boolean doGlobalSearch) {
+ this.doGlobalSearch = doGlobalSearch;
+ }
+
+
+ public TemplateExp getTemplateExpression(Variable dv) {
+
+ return templateExpforVaraibless.get(dv);
+ }
+
+}
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/RelToCoreRevised.qvtr b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/RelToCoreRevised.qvtr
new file mode 100644
index 000000000..67011035d
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/RelToCoreRevised.qvtr
@@ -0,0 +1,2071 @@
+--------------------------------------------------------------------------------
+-- Copyright (c) 2008 Tata Consultancy Services and others.
+-- All rights reserved. This program and the accompanying materials
+-- are made available under the terms of the Eclipse Public License v1.0
+-- which accompanies this distribution, and is available at
+-- http://www.eclipse.org/legal/epl-v10.html
+--
+-- Contributors:
+-- S.Reddy - Section 10.3 of the OMG MOF-QVT 1.0 specification
+-- E.D.Willink - contributions to drafts of the above
+-- E.D.Willink - adaptation to comply with QVT specification
+-- H. Hoyos - adaptation to comply with QVT 1.2 and bug fixes
+--------------------------------------------------------------------------------
+import pivotocl : 'platform:/resource/org.eclipse.ocl.examples.pivot/model/Pivot.ecore'::pivot;
+import qvtbase : 'platform:/resource/org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore'::qvtbase;
+import qvttemplate : 'platform:/resource/org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore'::qvttemplate;
+import qvtrelation : 'platform:/resource/org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore'::qvtrelation;
+import qvtcorebase : 'platform:/resource/org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore'::qvtcorebase;
+import qvtcore : 'platform:/resource/org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore'::qvtcore;
+
+
+transformation relToCore(relations:{qvtrelation,qvttemplate,qvtbase,pivotocl}, core:{qvtcore,qvtcorebase,qvtbase,pivotocl})
+{
+
+key pivotocl::Type{name};
+key pivotocl::Class{name};
+key pivotocl::Property{name, class};
+key pivotocl::Package{name};
+key pivotocl::Operation{name};
+key pivotocl::Variable{name, type};
+key qvtbase::TypedModel{name, usedPackage, transformation};
+key qvtbase::Transformation{name};
+key qvtbase::Predicate{pattern, conditionExpression};
+key qvtcorebase::GuardPattern{area};
+key qvtcorebase::BottomPattern{area};
+key qvtcorebase::CoreDomain{name, rule};
+key qvtcore::Mapping{name, transformation};
+
+query getSharedDomainVars(r:qvtrelation::Relation):Set(pivotocl::Variable)
+{
+ r.domain->iterate(d; vars: Set(pivotocl::Variable) = Set{} |
+ if (vars->isEmpty())
+ then
+ vars->union(d.oclAsType(qvtrelation::RelationDomain).pattern.bindsTo)
+ else
+ vars->intersection(d.oclAsType(qvtrelation::RelationDomain).pattern.bindsTo)
+ endif
+ )
+}
+
+query getWhenVars(r:qvtrelation::Relation):Set(pivotocl::Variable)
+{
+ let
+ vs:Set(pivotocl::Variable) = Set{}
+ in
+ r.domain->iterate(d; vars: Set(pivotocl::Variable) = Set{} |
+ if (vars->isEmpty())
+ then
+ vars->union(d.oclAsType(qvtrelation::RelationDomain).pattern.bindsTo)
+ else
+ vars->intersection(d.oclAsType(qvtrelation::RelationDomain).pattern.bindsTo)
+ endif
+ )
+}
+
+-- Get variables occuring in an ocl expression
+-- Note: this function is not complete! It needs to be completed for other expressions
+query getVarsOfExp(e:pivotocl::OCLExpression):Set(pivotocl::Variable)
+{
+ -- Walk the expr tree of the pivotocl::OCLExpression and
+ -- collect the variables used in those expressions
+ let
+ vs:Set(pivotocl::Variable) = Set{}
+ in
+ if (e.oclIsTypeOf(pivotocl::VariableExp))
+ then
+ vs->including(e.oclAsType(pivotocl::VariableExp).referredVariable.oclAsType(pivotocl::Variable))
+ else
+ if (e.oclIsTypeOf(pivotocl::OperationCallExp))
+ then
+ let
+ oc:pivotocl::OperationCallExp = e.oclAsType(pivotocl::OperationCallExp)
+ in
+ vs->union(getVarsOfExp(oc.source))->union(
+ oc.argument->iterate(a; avs:Set(pivotocl::Variable)=Set{} | avs->union(getVarsOfExp(a)))
+ )
+ else
+ if (e.oclIsTypeOf(pivotocl::PropertyCallExp))
+ then
+ vs->union(getVarsOfExp(e.oclAsType(pivotocl::PropertyCallExp).source))
+ else
+ if (e.oclIsTypeOf(qvtrelation::RelationCallExp))
+ then
+ let
+ rc:qvtrelation::RelationCallExp = e.oclAsType(qvtrelation::RelationCallExp)
+ in
+ vs->union(rc.argument->iterate(a; avs:Set(pivotocl::Variable)=Set{} |
+ avs->union(getVarsOfExp(a)))
+ )
+ else
+ vs
+ endif
+ endif
+ endif
+ endif
+}
+
+query filterOutPredicatesThatReferToVars(rpSet:Set(qvtbase::Predicate),
+ ownrdVars:Set(pivotocl::Variable)) :Set(qvtbase::Predicate)
+{
+ rpSet->iterate(p:qvtbase::Predicate; fpSet:Set(qvtbase::Predicate) = Set{}|
+ if (getVarsOfExp(p.conditionExpression)->intersection(ownrdVars)->isEmpty())
+ then
+ fpSet->including(p)
+ else
+ fpSet
+ endif
+ )
+}
+
+--Check if the given variable is bound to any template other than the one to be skipped
+query isVarBoundToSomeOtherTemplate(rootTe:qvttemplate::ObjectTemplateExp,
+ skipTe:qvttemplate::ObjectTemplateExp, v:pivotocl::Variable):Boolean
+{
+ if (rootTe = skipTe)
+ then
+ false
+ else
+ if (rootTe.bindsTo = v)
+ then
+ true
+ else
+ rootTe.part.value->select(pe | pe.oclIsKindOf(qvttemplate::ObjectTemplateExp))->exists(pet |
+ isVarBoundToSomeOtherTemplate(pet.oclAsType(qvttemplate::ObjectTemplateExp), skipTe, v))
+ endif
+
+ endif
+}
+
+top relation RelationalTransformationToMappingTransformation
+{
+ rtn, tmn:String;
+
+ domain relations rt:RelationalTransformation {
+ name = rtn,
+ modelParameter = rtm:TypedModel {
+ name = tmn,
+ usedPackage = up:pivotocl::Package{}
+ }
+ };
+
+ enforce domain core mt:Transformation {
+ name = rtn,
+ modelParameter = mtm:TypedModel {
+ name = tmn,
+ usedPackage = up
+ }
+ };
+}
+
+top relation RelationalTransformationToPackage
+{
+ rtn, rn :String;
+
+ domain relations rt:RelationalTransformation {
+ name = rtn,
+ rule = r:Relation {}
+ };
+
+ enforce domain core p:pivotocl::Package {
+ name = rtn,
+ ownedType = rc:Class {}
+ };
+ where {
+ RelationToTraceClass(r, rc);
+ }
+}
+
+-- Rule 1: Corresponding to each relation there exists a trace class in core.
+-- The trace class contains a property corresponding to each object node in the
+-- pattern of each domain of the relation.
+--
+relation RelationToTraceClass
+{
+ rt: qvtrelation::RelationalTransformation;
+ p: pivotocl::Package;
+ rn, vn:String;
+
+ domain relations r:Relation {
+ name = rn,
+ transformation = rt,
+ domain = rd:RelationDomain {
+ pattern = rdp:DomainPattern {
+ templateExpression = t:ObjectTemplateExp {
+ bindsTo = tv:pivotocl::Variable {
+ name = vn,
+ type = c:Class {}
+ }
+ }
+ }
+ }
+ };
+ enforce domain core rc:Class {
+ name = 'T'+rn,
+ package = p,
+ ownedAttribute = a:pivotocl::Property {
+ name = vn,
+ type = c
+ }
+ };
+ when {
+ RelationalTransformationToPackage(rt, p);
+ }
+ where {
+ SubTemplateToTraceClassProps(t, rc);
+ }
+}
+
+relation SubTemplateToTraceClassProps
+{
+ vn: String;
+
+ domain relations t:ObjectTemplateExp {
+ part = pt:PropertyTemplateItem {
+ value = tp:ObjectTemplateExp {
+ bindsTo = tv:pivotocl::Variable {
+ name = vn,
+ type = c:Class {}
+ }
+ }
+ }
+ };
+ enforce domain core rc:Class {
+ ownedAttribute = a:pivotocl::Property {
+ name=vn,
+ type=c
+ }
+ };
+ where {
+ SubTemplateToTraceClassProps(tp, rc);
+ }
+}
+
+-- For mapping to core we distinguish between two kinds of relations of a transformation:
+-- - top-level relations and invoked relations.
+-- Top-level relations are not invoked by any other relation in the transformation.
+-- There exists a single mapping (with perhaps contained mappings) for a top-level relation,
+-- whereas for an invoked relation there exists a separate mapping for each invoker-invoked
+-- combination.
+
+-- For mapping to core we also distinguish between check-only relations and enforceable
+-- relations. A check-only relation maps to a single core mapping, whereas an enforceable
+-- relation typically maps to a composite hierarchy of mappings in core.
+--
+
+-- Rule 2:
+-- The following are the common translation rules between
+-- a relation and a core mapping.
+-- 2.1: Variables of a RelationDomain that occur in the when clause become
+-- PatternVarables of the core domain guard.
+-- 2.2: All other Variables of a relationDomain become PatternVars
+-- of the core domain bottom pattern.
+-- 2.3: An instance variable corresponding to the trace class of the relation becomes part of
+-- the core mapping bottom pattern with its properties set(assigned or equated) to the
+-- corresponding core domain pattern variables.
+-- 2.4: A property template item in the relation domain pattern becomes an
+-- assignment (or equation in the case of check-only domains) in the core domain bottom pattern.
+-- 2.5: Predicates of the when clause become predicates of the core mapping guard.
+-- 2.6: Non relation invocation predicates of the where clause become predicates of the core
+-- mapping bottom.
+-- 2.6.1: relation invocation predicates of the where clause are ignored in this mapping, but
+-- are reflected in the mapping corresponding to the invoked relation.
+--
+
+-- All Object template expressions (at the top level of the DomainPattern)
+-- become assignments in the core domain bottom. Nested
+-- ObjectTemplateExpressions become assignments in composed mappings.
+--
+
+-- Rule 3 (extends Rule 2):
+-- 3.1: A relation is 'check-only' if it does not have any enforceable domains.
+-- 3.2: Only the trace class variable in the mapping bottom is 'realized'; there are no
+-- other 'realized' variables in any of the mapping areas.
+-- 3.3: A property template item in a relation domain becomes an equation in the core domain
+-- bottom.
+-- 3.4: A property template item in a relation domain that refers to a shared variable
+-- becomes an equation in the mapping bottom.
+-- 3.5: Shared variables referenced in property template items of relation domains become
+-- variables of the mapping bottom.
+--
+top relation TopLevelRelationToMappingForChecking
+{
+ allDomainVars: Set(pivotocl::Variable);
+ sharedDomainVars: Set(pivotocl::Variable);
+ unsharedWhereVars: Set(pivotocl::Variable);
+ whenVars: Set(pivotocl::Variable);
+ whereVars: Set(pivotocl::Variable);
+ rn: String;
+ rt: qvtrelation::RelationalTransformation;
+ mt: qvtbase::Transformation;
+
+ domain relations r:Relation {
+ transformation = rt,
+ isTopLevel = true,
+ name = rn
+ } {
+ not r.domain->exists(d| d.isEnforceable = true)
+ };
+ enforce domain core m:Mapping {
+ transformation = mt,
+ name = rn,
+ guardPattern = mg:GuardPattern {
+ area = m
+ },
+ bottomPattern = mb:BottomPattern {
+ variable = mbVars:Set(pivotocl::Variable){},
+ realizedVariable = tcv:RealizedVariable{}
+ }
+ };
+ when {
+ RelationalTransformationToMappingTransformation(rt, mt);
+ }
+ where {
+ allDomainVars = r.domain->iterate(md; acc:Set(qvtrelation::RelationDomain)=Set{} |
+ acc->including(md.oclAsType(qvtrelation::RelationDomain))).pattern.bindsTo->asSet();
+ whenVars = r.when.bindsTo;
+ whereVars = r.where.bindsTo;
+
+ sharedDomainVars = getSharedDomainVars(r);
+ unsharedWhereVars =
+ (whereVars - whenVars - allDomainVars)->union(sharedDomainVars);
+
+ RelationToTraceClassVar(r, tcv);
+ RWhenPatternToMGuardPattern(r, mg);
+ if (unsharedWhereVars->isEmpty())
+ then
+ mbVars = Set{}
+ else
+ RVarSetToMVarSet(unsharedWhereVars->asSequence(), mbVars)
+ endif;
+ -- Only non relation invocation predicates are copied from where clause to mapping
+ -- bottom.
+ RWherePatternToMPattern(r, mb);
+ RDomainToMDomainForChecking(r, m);
+ }
+}
+
+relation RWherePatternToMPattern
+{
+ domain relations r:Relation{
+ where = wherep:Pattern { }
+ };
+ enforce domain core mp:Pattern {};
+ where {
+ RSimplePatternToMPattern(wherep, mp);
+ }
+}
+
+relation UnsharedWhenVarsToMgVars
+{
+ domain relations unsharedWhenVars:Set(pivotocl::Variable) {_++_};
+ enforce domain core mg:GuardPattern {
+ variable = mgVars:Set(pivotocl::Variable) {}
+ };
+ where {
+ RVarSetToMVarSet(unsharedWhenVars->asSequence(), mgVars);
+ }
+}
+
+relation DomainVarsSharedWithWhenToDgVars
+{
+ domain relations domainVarsSharedWithWhen:Set(pivotocl::Variable) {_++_};
+ enforce domain core dg:GuardPattern {
+ variable = dgVars:Set(pivotocl::Variable) {}
+ };
+ where {
+ RVarSetToMVarSet(domainVarsSharedWithWhen->asSequence(), dgVars);
+ }
+}
+
+relation DomainBottomUnSharedVarsToDbVars
+{
+ domain relations domainBottomUnSharedVars:Set(pivotocl::Variable) {_++_};
+ enforce domain core db:BottomPattern {
+ variable = dbVars:Set(pivotocl::Variable) {}
+ };
+ where {
+ RVarSetToMVarSet(domainBottomUnSharedVars->asSequence(), dbVars);
+ }
+}
+
+-- Rule 4 (extends Rule 2):
+-- 4.1: A separate mapping is generated for each enforced domain of the relation.
+-- 4.2: In this mapping only the enforced domain in question is marked as enforced in core;
+-- all its opposite domains are marked in core as checked at most (i.e. either left as
+-- they are or downgraded to checked if marked as enforced).
+-- 4.3: The enforced domain's pattern gets decomposed into nested mappings as follows:
+-- - root pattern object variable becomes a realized variable in the domain bottom
+-- pattern of the current mapping.
+-- - all identifying property template items become assignments in the domain bottom
+-- pattern of the current mapping.
+-- - all non identifying property template items of primitive type become assignments
+-- in the bottom pattern of a nested mapping.
+-- - each non identifying property template item of object type results in a nested
+-- mapping which will have:
+-- - a realized variable in the domain bottom, corresponding to the variable of the
+-- property value object.
+-- - a property assignment from parent object variable to this variable in the
+-- domain bottom.
+-- - and its own nested mappings as above recursively.
+-- 4.4: Predicates of the where clause that refer to variables of the enforced domain get
+-- distributed down to the nested mappings as variable bindings accumulate in the nested
+-- mappings.
+-- 4.5: all other opposite domains are mapped to their respective core domain parts as
+-- described in Rule 3, i.e. their patterns are not decomposed down into nested mappings.
+-- 4.6: A black-box operational implementation, if any, that the relation has for the
+-- enforced domain becomes a pair of enforcement operations (one for creation and one for
+-- deletion) in the domain-bottom pattern, both pointing to the same operation call
+-- expression that takes its arguments from the variables corresponding to the root objects
+-- of the domains of the relation.
+--
+top relation TopLevelRelationToMappingForEnforcement
+{
+ allDomainVars: Set(pivotocl::Variable);
+ oppositeDomainVars: Set(pivotocl::Variable);
+ sharedDomainVars: Set(pivotocl::Variable);
+ predicatesWithVarBindings: Set(qvtbase::Predicate);
+ predicatesWithoutVarBindings: Set(qvtbase::Predicate);
+ unsharedWhenVars: Set(pivotocl::Variable);
+ unsharedWhereVars: Set(pivotocl::Variable);
+ domainVarsSharedWithWhen: Set(pivotocl::Variable);
+ domainBottomUnSharedVars: Set(pivotocl::Variable);
+ rdSeq, rdtSeq, relImplSeq: Sequence(pivotocl::Element);
+ rdSet: Set(pivotocl::Element);
+ rdVarsSeq: Sequence(Set(pivotocl::Element));
+ rdtSet: Set(pivotocl::Element);
+ rdtVarsSeq: Sequence(Set(pivotocl::Element));
+ rn, dn, tmn: String;
+ rOppositeDomains:Set(qvtrelation::RelationDomain);
+ oppDomainSeq:Sequence(pivotocl::Element);
+ whenVars: Set(pivotocl::Variable);
+ whereVars: Set(pivotocl::Variable);
+ rpSet: Set(qvtbase::Predicate);
+ rt: qvtrelation::RelationalTransformation;
+ mt: qvtbase::Transformation;
+
+ domain relations r:Relation {
+ transformation = rt,
+ isTopLevel = true,
+ name = rn,
+ domain = rds:Set(RelationDomain) {
+ rd:RelationDomain {
+ isEnforceable = true,
+ name = dn,
+ typedModel = dir:TypedModel {
+ name = tmn,
+ usedPackage = up:pivotocl::Package{},
+ transformation = rt
+ },
+ pattern = dp:DomainPattern {
+ bindsTo = domainVars:Set(pivotocl::Variable) {},
+ templateExpression = te:ObjectTemplateExp {
+ bindsTo = tev:pivotocl::Variable {}
+ }
+ }
+ } ++ rOppositeDomains
+ }
+ };
+ enforce domain core m:Mapping {
+ transformation = mt,
+ name = rn+'_'+dn,
+ guardPattern = mg:GuardPattern {
+ area = m
+ },
+ bottomPattern = mb:BottomPattern {
+ area = m,
+ variable = mbVars:Set(pivotocl::Variable){},
+ realizedVariable = tcv:RealizedVariable {}
+ },
+ domain = md:CoreDomain {
+ name = dn,
+ isEnforceable = true,
+ typedModel = mdir:TypedModel {
+ name = tmn,
+ usedPackage = up,
+ transformation = mt
+ },
+ guardPattern = dg:GuardPattern {
+ area = md
+ },
+ bottomPattern = db:BottomPattern {
+ area = md,
+ realizedVariable = mtev:pivotocl::Variable {}
+ }
+ } --TODO: add var only if tev not in whenVars
+ };
+ when {
+ RelationalTransformationToMappingTransformation(rt, mt);
+ }
+ where {
+ allDomainVars = r.domain->iterate(md; acc:Set(qvtrelation::RelationDomain)=Set{} |
+ acc->including(md.oclAsType(qvtrelation::RelationDomain))).pattern.bindsTo->asSet();
+ whenVars = r.when.bindsTo;
+ whereVars = r.where.bindsTo;
+
+ -- Exclude where clause relation calls.
+ -- The predicate corresponding to a where clause relation call is included not in this
+ -- mapping but in the one corresponding to the invoked relation (refer to rule 2.6.1)
+ rpSet = r.where.predicate->reject(p |
+ p.conditionExpression.oclIsTypeOf(qvtrelation::RelationCallExp));
+
+ oppositeDomainVars = rOppositeDomains->iterate(d; vars: Set(pivotocl::Variable) = Set{} |
+ vars->union(d.oclAsType(qvtrelation::RelationDomain).pattern.bindsTo));
+ sharedDomainVars = getSharedDomainVars(r);
+ domainBottomUnSharedVars = domainVars - whenVars - sharedDomainVars;
+
+ unsharedWhereVars =
+ (whereVars - whenVars - allDomainVars)->union(sharedDomainVars);
+
+ predicatesWithVarBindings =
+ filterOutPredicatesThatReferToVars(rpSet, domainBottomUnSharedVars);
+ predicatesWithoutVarBindings = rpSet - predicatesWithVarBindings;
+ unsharedWhenVars = whenVars - allDomainVars;
+ domainVarsSharedWithWhen = domainVars->intersection(whenVars);
+ rdSeq = Sequence{r, rd};
+ rdSet = Set{r, rd};
+ rdVarsSeq = Sequence{rdSet, oppositeDomainVars};
+ rdtSet = Set{r, rd, te};
+ rdtVarsSeq = Sequence{rdtSet, predicatesWithoutVarBindings, domainBottomUnSharedVars};
+ oppDomainSeq = Sequence{r, rd};
+ relImplSeq = Sequence{r, rd};
+
+ RelationDomainToTraceClassVar(rdSeq, tcv);
+ RWhenPatternToMGuardPattern(r, mg);
+ RVarSetToDGVarSet(domainVarsSharedWithWhen, dg);
+ RVarToMRealizedVar(tev, mtev);
+ if (unsharedWhereVars->isEmpty())
+ then
+ mbVars = Set{}
+ else
+ RVarSetToMBVarSet(unsharedWhereVars->asSequence(), mb)
+ endif;
+ RPredicateSetToMBPredicateSet(predicatesWithVarBindings->asSequence(), mb);
+ RDomainToMDBottomForEnforcement(rdtVarsSeq, db);
+ ROppositeDomainVarsToTraceClassProps(rdVarsSeq, mb);
+ TROppositeDomainsToMappingForEnforcement(oppDomainSeq, m);
+ RRelImplToMBottomEnforcementOperation(relImplSeq, mb);
+ }
+}
+
+-- Rule 5 (extends Rule 3):
+-- 5.1: an invoked relation maps to as many core mappings as the relations that invoke it.
+-- i.e. there exists a separate core mapping for each invoker-invoked pair.
+-- 5.2: The guard pattern of the mapping will have a variable corresponding to the trace
+-- class of the invoker relation, with root object variables of all the patterns of all the
+-- domains of the invoked relation being equated with corresponding properties of this
+-- trace class .
+-- 5.3: The root object variable of a relation domain's pattern becomes a pattern variable
+-- in the core domain guard (this is in addition to the variables that occur in the when clause
+-- as per rule 2.1).
+--
+top relation InvokedRelationToMappingForChecking
+{
+ allDomainVars: Set(pivotocl::Variable);
+ sharedDomainVars: Set(pivotocl::Variable);
+ unsharedWhereVars: Set(pivotocl::Variable);
+ seqForInvoker: Sequence(pivotocl::Element);
+ rn, irn: String;
+ rt: qvtrelation::RelationalTransformation;
+ mt: qvtbase::Transformation;
+ whenVars: Set(pivotocl::Variable);
+ whereVars: Set(pivotocl::Variable);
+
+ domain relations r:Relation {
+ transformation = rt,
+ isTopLevel = false,
+ name = rn,
+ relationCallExp = ri:RelationCallExp {
+ predicate = p:Predicate {
+ pattern = pt:Pattern {
+ whereOwner = ir:Relation {name = irn}
+ }
+ }
+ }
+ } {
+ not r.domain->exists(d| d.isEnforceable = true)
+ };
+ enforce domain core m:Mapping {
+ transformation = mt,
+ name = rn+'_'+irn,
+ guardPattern = mg:GuardPattern {
+ area = m
+ },
+ bottomPattern = mb:BottomPattern {
+ variable = mbVars:Set(pivotocl::Variable){},
+ realizedVariable = tcv:RealizedVariable {}
+ }
+ };
+ when {
+ RelationalTransformationToMappingTransformation(rt, mt);
+ }
+ where {
+ allDomainVars = r.domain->iterate(md; acc:Set(qvtrelation::RelationDomain)=Set{} |
+ acc->including(md.oclAsType(qvtrelation::RelationDomain))).pattern.bindsTo->asSet();
+ whenVars = r.when.bindsTo;
+ whereVars = r.where.bindsTo;
+ sharedDomainVars = getSharedDomainVars(r);
+ unsharedWhereVars =
+ (whereVars - whenVars - allDomainVars)->union(sharedDomainVars);
+ seqForInvoker = Sequence{ ir, ri, r};
+
+ RelationToTraceClassVar(r, tcv);
+ RWhenPatternToMGuardPattern(r, mg);
+ RInvokerToMGuard(seqForInvoker, mg);
+ if (unsharedWhereVars->isEmpty())
+ then
+ mbVars = Set{}
+ else
+ RVarSetToMVarSet(unsharedWhereVars->asSequence(), mbVars)
+ endif;
+ RWherePatternToMPattern(r, mb);
+ RDomainToMDomainForChecking(r, m);
+ }
+}
+
+-- Rule 6 (extends Rule 4):
+-- 6.1: an invoked relation maps to as many core mappings as the relations that invoke it.
+-- i.e. there exists a separate core mapping for each invoker-invoked pair.
+-- 6.2: The guard pattern of the mapping will have a variable corresponding to the trace
+-- class of the invoker relation, with root object variables of all the patterns of all the
+-- domains of the invoked relation being equated with corresponding properties of this
+-- trace class .
+-- 6.3: The root object variable of a relation domain's pattern becomes a pattern variable
+-- in the core domain guard (this is in addition to the variables that occur in the when clause
+-- as per rule 2.1).
+--
+top relation InvokedRelationToMappingForEnforcement
+{
+ allDomainVars: Set(pivotocl::Variable);
+ oppositeDomainVars: Set(pivotocl::Variable);
+ sharedDomainVars: Set(pivotocl::Variable);
+ predicatesWithVarBindings: Set(qvtbase::Predicate);
+ predicatesWithoutVarBindings: Set(qvtbase::Predicate);
+ unsharedWhenVars: Set(pivotocl::Variable);
+ unsharedWhereVars: Set(pivotocl::Variable);
+ domainTopVars: Set(pivotocl::Variable);
+ domainBottomUnSharedVars: Set(pivotocl::Variable);
+ rdSeq, relImplSeq: Sequence(pivotocl::Element);
+ rdSet: Set(pivotocl::Element);
+ rdVarsSeq: Sequence(Set(pivotocl::Element));
+ rdtSet: Set(pivotocl::Element);
+ rdtVarsSeq: Sequence(Set(pivotocl::Element));
+ seqForInvoker: Sequence(pivotocl::Element);
+ rn, irn, dn, tmn: String;
+ rOppositeDomains:Set(qvtrelation::RelationDomain);
+ oppDomainSeq:Sequence(pivotocl::Element);
+ whenVars: Set(pivotocl::Variable);
+ whereVars: Set(pivotocl::Variable);
+ rpSet: Set(qvtbase::Predicate);
+ rt: qvtrelation::RelationalTransformation;
+ mt: qvtbase::Transformation;
+
+ domain relations r:Relation {
+ transformation = rt,
+ isTopLevel = false,
+ name = rn,
+ relationCallExp = ri:RelationCallExp {
+ predicate = p:Predicate {
+ pattern = pt:Pattern {
+ whereOwner = ir:Relation {name = irn}
+ }
+ }
+ },
+ domain = rds:Set(RelationDomain) {
+ rd:RelationDomain {
+ isEnforceable = true,
+ name = dn,
+ typedModel = dir:TypedModel {
+ name = tmn,
+ usedPackage = up:pivotocl::Package{},
+ transformation = rt
+ },
+ pattern = dp:DomainPattern {
+ bindsTo = domainVars:Set(pivotocl::Variable) {},
+ templateExpression = te:ObjectTemplateExp {
+ bindsTo = tev:pivotocl::Variable {}
+ }
+ }
+ } ++ rOppositeDomains
+ }
+ };
+ enforce domain core m:Mapping {
+ transformation = mt,
+ name = rn+'_'+irn+'_'+dn,
+ guardPattern = mg:GuardPattern {
+ area = m
+ },
+ bottomPattern = mb:BottomPattern {
+ area = m,
+ variable = mbVars:Set(pivotocl::Variable){},
+ realizedVariable = tcv:RealizedVariable {}
+ },
+ domain = md:CoreDomain {
+ name = dn,
+ isEnforceable = true,
+ typedModel = mdir:TypedModel {
+ name = tmn,
+ usedPackage = up,
+ transformation = mt
+ },
+ guardPattern = dg:GuardPattern {
+ variable = dgVars:Set(pivotocl::Variable) {}
+ },
+ bottomPattern = db:BottomPattern {
+ area = md
+ }
+ }
+ };
+ when {
+ RelationalTransformationToMappingTransformation(rt, mt);
+ }
+ where {
+ allDomainVars = r.domain->iterate(md; acc:Set(qvtrelation::RelationDomain)=Set{} |
+ acc->including(md.oclAsType(qvtrelation::RelationDomain))).pattern.bindsTo->asSet();
+ whenVars = r.when.bindsTo;
+ whereVars = r.where.bindsTo;
+
+ -- Exclude where clause relation calls.
+ -- The predicate corresponding to a where clause relation call is included not in this
+ -- mapping but in the one corresponding to the invoked relation (refer to rule 2.6.1)
+ rpSet = r.where.predicate->reject(p |
+ p.conditionExpression.oclIsTypeOf(qvtrelation::RelationCallExp));
+
+ oppositeDomainVars = rOppositeDomains->iterate(d; vars: Set(pivotocl::Variable) = Set{} |
+ vars->union(d.pattern.bindsTo));
+ sharedDomainVars = getSharedDomainVars(r);
+ domainBottomUnSharedVars =
+ (domainVars - whenVars - sharedDomainVars)->excluding(tev);
+ unsharedWhereVars =
+ (whereVars - whenVars - allDomainVars)->union(sharedDomainVars);
+ predicatesWithVarBindings =
+ filterOutPredicatesThatReferToVars(rpSet, domainBottomUnSharedVars);
+ predicatesWithoutVarBindings = rpSet - predicatesWithVarBindings;
+ unsharedWhenVars = whenVars - allDomainVars;
+ domainTopVars = domainVars->intersection(whenVars)->including(tev);
+ rdSeq = Sequence{r, rd};
+ rdSet = Set{r, rd};
+ rdVarsSeq = Sequence{rdSet, oppositeDomainVars};
+ rdtSet = Set{r, rd, te};
+ rdtVarsSeq = Sequence{rdtSet, predicatesWithoutVarBindings, domainBottomUnSharedVars};
+ oppDomainSeq = Sequence{r, ir, rd};
+ seqForInvoker = Sequence{ir, ri, r};
+ relImplSeq = Sequence{r, rd};
+
+ RelationDomainToTraceClassVar(rdSeq, tcv);
+ if (unsharedWhereVars->isEmpty())
+ then
+ mbVars = Set{}
+ else
+ RVarSetToMVarSet(unsharedWhereVars->asSequence(), mbVars)
+ endif;
+ RPredicateSetToMBPredicateSet(predicatesWithVarBindings->asSequence(), mb);
+ RWhenPatternToMGuardPattern(r, mg);
+ RInvokerToMGuard(seqForInvoker, mg);
+ RVarSetToMVarSet(domainTopVars->asSequence(), dgVars);
+ RDomainToMDBottomForEnforcement(rdtVarsSeq, db);
+ ROppositeDomainVarsToTraceClassProps(rdVarsSeq, mb);
+ IROppositeDomainsToMappingForEnforcement(oppDomainSeq, m);
+ RRelImplToMBottomEnforcementOperation(relImplSeq, mb);
+ }
+}
+
+relation RDomainToMDomainForChecking
+{
+ sharedDomainVars: Set(pivotocl::Variable);
+ domainVarsSharedWithWhen: Set(pivotocl::Variable);
+ domainBottomUnSharedVars: Set(pivotocl::Variable);
+ seqForDomainPtrn: Sequence(pivotocl::Element);
+ whenVars: Set(pivotocl::Variable);
+ dn, tmn: String;
+ rt: qvtrelation::RelationalTransformation;
+ mt: qvtbase::Transformation;
+
+ domain relations r:Relation {
+ domain = rd:RelationDomain {
+ name = dn,
+ isCheckable = true,
+ typedModel = dir:TypedModel {
+ name = tmn,
+ usedPackage = up:pivotocl::Package{},
+ transformation = rt
+ },
+ pattern = dp:DomainPattern {
+ bindsTo = domainVars:Set(pivotocl::Variable){},
+ templateExpression = te:ObjectTemplateExp {}
+ }
+ }
+ };
+ enforce domain core m:Mapping {
+ bottomPattern = mb:BottomPattern {
+ area = m
+ },
+ domain = md:CoreDomain {
+ name = dn,
+ isCheckable = true,
+ typedModel = mdir:TypedModel {
+ name = tmn,
+ usedPackage = up,
+ transformation = mt
+ },
+ guardPattern = dg:GuardPattern {
+ area = md
+ },
+ bottomPattern = db:BottomPattern {
+ area = md
+ }
+ }
+ };
+ when {
+ RelationalTransformationToMappingTransformation(rt, mt);
+ }
+ where {
+ whenVars = r.when.bindsTo;
+ sharedDomainVars = getSharedDomainVars(r);
+ domainVarsSharedWithWhen = domainVars->intersection(whenVars);
+ domainBottomUnSharedVars = domainVars - whenVars - sharedDomainVars;
+ seqForDomainPtrn = Sequence{r, te};
+
+ DomainVarsSharedWithWhenToDgVars(domainVarsSharedWithWhen, dg);
+ DomainBottomUnSharedVarsToDbVars(domainBottomUnSharedVars, db);
+ RDomainPatternToMDBottomPattern(seqForDomainPtrn, db);
+ RDomainVarsToTraceClassProps(rd, mb);
+ }
+}
+
+-- opposite domains of a top-level relation's enforced domain are mapped as per rules
+-- 4.2 and 4.5
+-- In addition, as per rule 6.3 the root object variable of a relation domain's pattern
+-- becomes a pattern variable in the core domain guard (this is in addition to the variables
+-- that occur in the when clause as per rule 2.1).
+--
+relation IROppositeDomainsToMappingForEnforcement
+{
+ sharedDomainVars:Set(pivotocl::Variable);
+ domainTopVars: Set(pivotocl::Variable);
+ domainBottomUnSharedVars: Set(pivotocl::Variable);
+ domainBottomSharedVars: Set(pivotocl::Variable);
+ seqForDomainPtrn: Sequence(pivotocl::Element);
+ dn, tmn: String;
+ c: Boolean;
+ mbVars:Set(pivotocl::Variable);
+ whenVars:Set(pivotocl::Variable);
+ rt: qvtrelation::RelationalTransformation;
+ mt: qvtbase::Transformation;
+ up: pivotocl::Package;
+
+ domain relations oppDomainSeq:Sequence(pivotocl::Element) {
+ r:Relation {
+ domain = rds:Set(RelationDomain) {
+ ord:RelationDomain { -- opposite domain
+ name = dn,
+ typedModel = dir:TypedModel {
+ name = tmn,
+ usedPackage = up,
+ transformation = rt
+ },
+ isCheckable = c,
+ pattern = dp:DomainPattern {
+ bindsTo = domainVars:Set(pivotocl::Variable) {},
+ templateExpression = te:ObjectTemplateExp {
+ bindsTo = tev:pivotocl::Variable {}
+ }
+ }
+ } ++ _
+ }
+ },
+ ir:Relation{},
+ rd:RelationDomain{}
+ ++ _
+ } {
+ ord <> rd
+ };
+ enforce domain core m:Mapping {
+ domain = cd:CoreDomain {
+ name = dn,
+ typedModel = mdir:TypedModel {
+ name = tmn,
+ usedPackage = up,
+ transformation = mt
+ },
+ isCheckable = c,
+ isEnforceable = false,
+ guardPattern = dg:GuardPattern {
+ variable = dgVars:Set(pivotocl::Variable) {}
+ },
+ bottomPattern = db:BottomPattern {
+ variable = dbVars:Set(pivotocl::Variable) {}
+ }
+ },
+ bottomPattern = mb:BottomPattern {
+ area = m
+ }
+ };
+ when {
+ RelationalTransformationToMappingTransformation(rt, mt);
+ }
+ where {
+ whenVars = r.when.bindsTo;
+ domainTopVars = domainVars->intersection(whenVars)->including(tev);
+ sharedDomainVars = getSharedDomainVars(r);
+ domainBottomUnSharedVars = (domainVars - whenVars - sharedDomainVars)->excluding(tev);
+ domainBottomSharedVars =
+ (domainVars - whenVars)->intersection(sharedDomainVars)->excluding(tev);
+ seqForDomainPtrn = Sequence{r, te};
+
+ RVarSetToMVarSet(domainTopVars->asSequence(), dgVars);
+ RVarSetToMVarSet(domainBottomUnSharedVars->asSequence(), dbVars);
+ RVarSetToMBVarSet(domainBottomSharedVars->asSequence(), mb);
+ RDomainPatternToMDBottomPattern(seqForDomainPtrn, db);
+ }
+}
+
+-- opposite domains of an invoked relation's enforced domain are mapped as per rules
+-- 4.2 and 4.5
+--
+relation TROppositeDomainsToMappingForEnforcement
+{
+ sharedDomainVars:Set(pivotocl::Variable);
+ domainTopVars: Set(pivotocl::Variable);
+ domainBottomUnSharedVars: Set(pivotocl::Variable);
+ domainBottomSharedVars: Set(pivotocl::Variable);
+ seqForDomainPtrn: Sequence(pivotocl::Element);
+ dn, tmn: String;
+ c: Boolean;
+ mbVars:Set(pivotocl::Variable);
+ whenVars:Set(pivotocl::Variable);
+ rt: qvtrelation::RelationalTransformation;
+ mt: qvtbase::Transformation;
+ up: pivotocl::Package;
+
+ domain relations oppDomainSeq:Sequence(pivotocl::Element) {
+ r:Relation {
+ domain = rds:Set(RelationDomain) {
+ ord:RelationDomain {
+ name = dn,
+ typedModel = dir:TypedModel {
+ name = tmn,
+ usedPackage = up,
+ transformation = rt
+ },
+ isCheckable = c,
+ pattern = dp:DomainPattern {
+ bindsTo = domainVars:Set(pivotocl::Variable) {},
+ templateExpression = te:ObjectTemplateExp {}
+ }
+ } ++ _
+ }
+ },
+ rd:RelationDomain{}
+ ++ _
+ } {
+ ord <> rd
+ };
+ enforce domain core m:Mapping {
+ domain = cd:CoreDomain {
+ name = dn,
+ typedModel = mdir:TypedModel {
+ name = tmn,
+ usedPackage = up,
+ transformation = mt
+ },
+ isCheckable = c,
+ isEnforceable = false,
+ guardPattern = dg:GuardPattern {
+ variable = dgVars:Set(pivotocl::Variable) {},
+ area = cd
+ },
+ bottomPattern = db:BottomPattern {
+ variable = dbVars:Set(pivotocl::Variable) {}
+ }
+ },
+ bottomPattern = mb:BottomPattern {
+ area = m
+ }
+ };
+ where {
+ whenVars = r.when.bindsTo;
+ domainTopVars = domainVars->intersection(whenVars);
+ sharedDomainVars = getSharedDomainVars(r);
+ domainBottomUnSharedVars = domainVars - whenVars - sharedDomainVars;
+ domainBottomSharedVars =
+ (domainVars - whenVars)->intersection(sharedDomainVars);
+ seqForDomainPtrn = Sequence{r, te};
+
+ RelationalTransformationToMappingTransformation(rt, mt);
+ RVarSetToDGVarSet(domainTopVars->asSequence(), dg);
+ RVarSetToMBVarSet(domainBottomUnSharedVars->asSequence(), db);
+ RVarSetToMBVarSet(domainBottomSharedVars->asSequence(), mb);
+ RDomainPatternToMDBottomPattern(seqForDomainPtrn, db);
+ }
+}
+
+relation RWhenPatternToMGuardPattern
+{
+ allDomainVars: Set(pivotocl::Variable);
+ unsharedWhenVars: Set(pivotocl::Variable);
+
+ domain relations r:Relation{
+ when = whenp:Pattern {
+ bindsTo = whenVars:Set(pivotocl::Variable) {}
+ }
+ };
+ enforce domain core mg:GuardPattern {};
+ where {
+ allDomainVars = r.domain->iterate(md; acc:Set(qvtrelation::RelationDomain)=Set{} |
+ acc->including(md.oclAsType(qvtrelation::RelationDomain))).pattern.bindsTo->asSet();
+ unsharedWhenVars = whenVars - allDomainVars;
+
+ RWhenRelCallToMGuard(whenp, mg);
+ RSimplePatternToMPattern(whenp, mg);
+ UnsharedWhenVarsToMgVars(unsharedWhenVars, mg);
+ }
+}
+
+relation RVarSetToMVarSet
+{
+ rvRest: Sequence(pivotocl::Variable);
+ mvRest: Set(pivotocl::Variable);
+
+ domain relations rvSeq:Sequence(pivotocl::Variable) {rv:pivotocl::Variable {}++rvRest};
+ enforce domain core mvSet:Set(pivotocl::Variable) {mv:pivotocl::Variable {}++mvRest};
+ where {
+ RVarToMVar(rv, mv);
+ if (rvRest->isEmpty())
+ then
+ mvRest = Set{}
+ else
+ RVarSetToMVarSet(rvRest, mvRest)
+ endif;
+ }
+}
+
+relation RVarSetToMBVarSet
+{
+ rvRest: Sequence(pivotocl::Variable);
+ mvRest: Set(pivotocl::Variable);
+
+ domain relations rvSeq:Sequence(pivotocl::Variable) {rv:pivotocl::Variable {}++rvRest};
+ enforce domain core mb:BottomPattern {
+ variable = mv:pivotocl::Variable {}
+ };
+ where {
+ RVarToMVar(rv, mv);
+ RVarSetToMBVarSet(rvRest, mb);
+ }
+}
+
+relation RVarSetToDGVarSet
+{
+ rvRest: Sequence(pivotocl::Variable);
+ mvRest: Set(pivotocl::Variable);
+
+ domain relations rvSeq:Sequence(pivotocl::Variable) {rv:pivotocl::Variable {}++rvRest};
+ enforce domain core dg:GuardPattern {
+ variable = mv:pivotocl::Variable {}
+ };
+ where {
+ RVarToMVar(rv, mv);
+ RVarSetToDGVarSet(rvRest, dg);
+ }
+}
+
+relation RVarToMVar
+{
+ n: String;
+
+ domain relations rv:pivotocl::Variable {name=n, type=t:Type {}};
+ enforce domain core mv:pivotocl::Variable {name=n, type=t};
+}
+
+relation RVarToMRealizedVar
+{
+ n: String;
+
+ domain relations rv:pivotocl::Variable {name=n, type=t:Type {}};
+ enforce domain core mv:RealizedVariable {name=n, type=t};
+}
+
+relation RSimplePatternToMPattern
+{
+ domain relations rp:Pattern {
+ predicate = pd:Predicate {
+ conditionExpression = re:pivotocl::OCLExpression {}
+ }
+ }
+ {
+ not re.oclIsTypeOf(RelationCallExp)
+ };
+ enforce domain core mp:Pattern {
+ predicate = mpd:Predicate{
+ conditionExpression = me:pivotocl::OCLExpression {}
+ }
+ };
+ where {
+ RExpToMExp(re, me);
+ }
+}
+
+-- Relation invocation in when clause maps to a trace class pattern in mapping guard.
+-- Relation call argument position corresponds to the domain position in the invoked relation.
+-- Domain's root pattern object var gives us the corresponding trace class prop.
+--
+relation RWhenRelCallToMGuard
+{
+ domain relations rp:Pattern {
+ predicate = pd:Predicate {
+ conditionExpression = e:RelationCallExp {
+ referredRelation = r:Relation {
+ domain = dseq:Sequence(RelationDomain) {}
+ },
+ argument = aseq:Sequence(pivotocl::VariableExp) {}
+ }
+ }
+ };
+ enforce domain core mp:GuardPattern {};
+
+ where {
+ aseq->forAll( a | RWhenRelCallArgToMGuardPredicate( Sequence{ r, a, dseq->at(aseq->indexOf(a)) }, mp) );
+ }
+}
+
+relation RWhenRelCallArgToMGuardPredicate
+{
+ tc: pivotocl::Class;
+ dvn: String;
+ mv:pivotocl::Variable;
+
+ domain relations daSeq:Sequence(pivotocl::Element) {
+ r:Relation{},
+ ve:pivotocl::VariableExp {
+ referredVariable = v:pivotocl::Variable {}
+ },
+ d:RelationDomain {
+ rootVariable = dv:pivotocl::Variable {name = dvn}
+ }
+ ++ _
+ };
+ enforce domain core mg:GuardPattern {
+ variable = vd:pivotocl::Variable {
+ name = tc.name+'_v',
+ type = tc
+ },
+ predicate = mgp:Predicate {
+ conditionExpression = ee:pivotocl::OperationCallExp { -- vd.dvn = mv
+ source = pe:pivotocl::PropertyCallExp {
+ source = pve:pivotocl::VariableExp{referredVariable = vd},
+ referredProperty = pep:pivotocl::Property{name = dvn, class = vd.type.oclAsType(pivotocl::Class)}
+ },
+ referredOperation = eo:pivotocl::Operation{name = '='},
+ argument = ave:pivotocl::VariableExp{referredVariable = mv}
+ }
+ }
+ };
+ when {
+ RelationToTraceClass(r, tc);
+ }
+ where {
+ RVarToMVar(v, mv);
+ }
+}
+
+-- invocation argument position corresponds to the domain position in invoked relation.
+-- Invocation argument variable name gives the invoker trace class prop name;
+-- Domain's root pattern object var gives us core domain guard var
+--
+relation RInvokerToMGuard
+{
+ domain relations seqForInvoker:Sequence(pivotocl::Element) {
+ ir:Relation {}, -- invoking relation
+ ri:RelationCallExp {
+ argument = aseq:Sequence(pivotocl::VariableExp) {}
+ },
+ r:Relation { -- invoked relation
+ domain = dseq:Sequence(RelationDomain) {}
+ }
+ ++ _
+ };
+ enforce domain core mg:GuardPattern {};
+ where {
+ aseq->forAll( a | RInvokerToMGuardPredicate( Sequence{ ir, a, dseq->at(aseq->indexOf(a)) }, mg) );
+ }
+}
+
+relation RInvokerToMGuardPredicate
+{
+ vn: String;
+ tc: pivotocl::Class;
+ mdv: pivotocl::Variable;
+
+ domain relations seqForInvoker:Sequence(pivotocl::Element) {
+ ir:Relation {}, -- invoking relation
+ ve:pivotocl::VariableExp {referredVariable = v:pivotocl::Variable {name=vn}},
+ d:RelationDomain { rootVariable = dv:pivotocl::Variable {} }
+ ++ _
+ };
+ enforce domain core mg:GuardPattern {
+ variable = vd:pivotocl::Variable {
+ name = tc.name+'_v',
+ type = tc
+ },
+ predicate = pd:Predicate {
+ conditionExpression = ee:pivotocl::OperationCallExp { -- vd.vn = mdv
+ source = pe:pivotocl::PropertyCallExp {
+ source = mve:pivotocl::VariableExp{referredVariable = vd},
+ referredProperty = pep:pivotocl::Property{name = vn, class = vd.type.oclAsType(pivotocl::Class)}
+ },
+ referredOperation = eo:pivotocl::Operation{name = '='},
+ argument = ave:pivotocl::VariableExp{referredVariable = mdv}
+ }
+ }
+ };
+ when {
+ RelationToTraceClass(ir, tc);
+ }
+ where {
+ RVarToMVar(dv, mdv);
+ }
+}
+
+relation RDomainPatternToMDBottomPattern
+{
+ domain relations seqForDomainPtrn:Sequence(pivotocl::Element) {};
+ enforce domain core db:BottomPattern {
+ area = cd:CoreDomain{
+ rule = m:Mapping {
+ bottomPattern = mb:BottomPattern{area = m}
+ }
+ }
+ }; -- domain bottom
+ where {
+ RDomainPatternToMDBottomPatternComposite(seqForDomainPtrn, db);
+ RDomainPatternToMDBottomPatternSimpleNonVarExpr(seqForDomainPtrn, db);
+ RDomainPatternToMDBottomPatternSimpleUnSharedVarExpr(seqForDomainPtrn, db);
+ RDomainPatternToMDBottomPatternSimpleSharedVarExpr(seqForDomainPtrn, mb);
+ }
+}
+
+relation RDomainToMDBottomForEnforcement
+{
+ remainingUnBoundDomainVars: Set(pivotocl::Variable);
+ predicatesWithVarBindings:Set(qvtbase::Predicate);
+ remainingPredicatesWithoutVarBindings:Set(qvtbase::Predicate);
+ rdSeq, rtSeq, rtdSeq: Sequence(pivotocl::Element);
+ rdtVarsSeqRest: Sequence(Set(pivotocl::Element));
+ predicatesWithoutVarBindings:Set(qvtbase::Predicate);
+ unboundDomainVars:Set(pivotocl::Variable);
+ tcv, mv: pivotocl::Variable;
+
+ domain relations rdtVarsSeq:Sequence(Set(pivotocl::Element)) {
+ rdtSet:Set(pivotocl::Element) {
+ r:Relation{},
+ rd:RelationDomain{},
+ te:ObjectTemplateExp {bindsTo = v:pivotocl::Variable {}}
+ ++ _
+ }
+ ++ _
+ };
+ enforce domain core db:BottomPattern { -- domain bottom
+ area = cd:CoreDomain {
+ rule = m:Mapping {
+ bottomPattern = mb:BottomPattern {
+ area = m
+ }
+ }
+ }
+ };
+ where {
+ rdtVarsSeq->at(2) = predicatesWithoutVarBindings;
+ rdtVarsSeq->at(3) = unboundDomainVars;
+
+ remainingUnBoundDomainVars = unboundDomainVars - Set{v};
+ predicatesWithVarBindings = filterOutPredicatesThatReferToVars(
+ predicatesWithoutVarBindings, remainingUnBoundDomainVars);
+
+ remainingPredicatesWithoutVarBindings =
+ predicatesWithoutVarBindings - predicatesWithVarBindings;
+ rtSeq = Sequence{r, te};
+ rtdSeq = Sequence{r, te, rd};
+ rdtVarsSeqRest = Sequence{rdtSet, remainingPredicatesWithoutVarBindings, remainingUnBoundDomainVars};
+
+ RDomainToMDBottomForEnforcementOfIdentityProp(rtSeq, db);
+ RDomainVarToMDBottomAssignmnetForEnforcement(rdtVarsSeq, mb);
+ --RDomainToMDBottomForEnforcementOfIdentityPropObject(rdtSeq, mb);
+ RDomainToMDBottomForEnforcementOfNonIdentityPropPrimitive(rtdSeq, m);
+ RDomainToMDBottomForEnforcementOfNonIdentityPropObject(rdtVarsSeqRest, m);
+ RDomainToMBottomPredicateForEnforcement(rdtVarsSeq, mb);
+ }
+}
+
+relation RDomainVarToMDBottomAssignmnetForEnforcement
+{
+ rdSeq : Sequence(pivotocl::Element);
+ mv: pivotocl::Variable;
+
+ domain relations rdtVarsSeq:Sequence(Set(pivotocl::Element)) {
+ rdtSet:Set(pivotocl::Element) {
+ r:Relation{},
+ rd:RelationDomain{},
+ te:ObjectTemplateExp {bindsTo = v:pivotocl::Variable {}}
+ ++ _
+ }
+ ++ _
+ };
+ enforce domain core mb:BottomPattern { -- mapping bottom
+ realizedVariable = tcv:RealizedVariable {}, -- added this to correctly add the trace variable
+ assignment = a:PropertyAssignment {
+ slotExpression = ve1:pivotocl::VariableExp{referredVariable = tcv},
+ targetProperty = tp:pivotocl::Property{name = v.name, class = tcv.type.oclAsType(pivotocl::Class)},
+ value = ve2:pivotocl::VariableExp{referredVariable = mv}
+ }
+ };
+ where {
+ rdSeq = Sequence{r, rd};
+ RelationDomainToTraceClassVar(rdSeq, tcv);
+ RVarToMVar(v, mv);
+ }
+}
+
+relation RDomainToMBottomPredicateForEnforcement
+{
+ remainingUnBoundDomainVars: Set(pivotocl::Variable);
+ predicatesWithVarBindings:Set(qvtbase::Predicate);
+ rdSeq: Sequence(pivotocl::Element);
+ predicatesWithoutVarBindings:Set(qvtbase::Predicate);
+ unboundDomainVars:Set(pivotocl::Variable);
+ tcv, mv: pivotocl::Variable;
+
+ domain relations rdtVarsSeq:Sequence(Set(pivotocl::Element)) {
+ rdtSet:Set(pivotocl::Element) {
+ r:Relation{},
+ rd:RelationDomain{},
+ te:ObjectTemplateExp {bindsTo = v:pivotocl::Variable {}}
+ ++ _
+ }
+ ++ _
+ };
+ enforce domain core mb:BottomPattern {
+ predicate = pd:Predicate {
+ conditionExpression = ee:pivotocl::OperationCallExp { -- tcv.(v.name) = mv
+ source = pe:pivotocl::PropertyCallExp {
+ --source = tcv,
+ source = pve:pivotocl::VariableExp{referredVariable = tcv},
+ referredProperty = pep:pivotocl::Property{
+ name = v.name,
+ class = tcv.type.oclAsType(pivotocl::Class)
+ }
+ },
+ referredOperation = eo:pivotocl::Operation{name = '='},
+ argument = ave:pivotocl::VariableExp{referredVariable = mv}
+ }
+ }
+ };
+ where {
+ rdSeq = let s : Sequence(pivotocl::Element) = Sequence{} in s->append(r)->append(rd);
+ RelationDomainToTraceClassVar(rdSeq, tcv);
+ RVarToMVar(v, mv);
+
+ rdtVarsSeq->at(2) = predicatesWithoutVarBindings;
+ rdtVarsSeq->at(3) = unboundDomainVars;
+
+ remainingUnBoundDomainVars = unboundDomainVars - Set{v};
+ predicatesWithVarBindings = filterOutPredicatesThatReferToVars(
+ predicatesWithoutVarBindings, remainingUnBoundDomainVars);
+
+ RPredicateSetToMBPredicateSet(predicatesWithVarBindings->asSequence(), mb);
+ }
+}
+
+relation RPredicateSetToMBPredicateSet
+{
+ rpRest: Sequence(qvtbase::Predicate);
+
+ domain relations predSeq:Sequence(Predicate) {
+ rp:Predicate {
+ conditionExpression = re:pivotocl::OCLExpression {}
+ }
+ ++ rpRest
+ };
+ enforce domain core mb:BottomPattern {
+ predicate = mp:Predicate {
+ conditionExpression = me:pivotocl::OCLExpression {}
+ }
+ };
+ where {
+ RExpToMExp(re, me);
+ RPredicateSetToMBPredicateSet(rpRest, mb);
+ }
+}
+
+relation RDomainToMDBottomForEnforcementOfIdentityProp
+{
+ seqForAssignment: Sequence(pivotocl::Element);
+
+ domain relations rtSeq:Sequence(pivotocl::Element) {
+ r:Relation{},
+ te:ObjectTemplateExp {
+ bindsTo = v:pivotocl::Variable {type=c:Class {}},
+ part = pt:PropertyTemplateItem {
+ referredProperty = pp:pivotocl::Property {},
+ value = e:pivotocl::OCLExpression {}
+ }
+ } {
+ c.key.part->includes(pp)
+ }
+ ++ _
+ };
+ enforce domain core db:BottomPattern {
+ area = cd:CoreDomain {
+ rule = m:Mapping {
+ bottomPattern = mb:BottomPattern{
+ area = m
+ }
+ }
+ }
+ }; -- domain bottom
+ where {
+ seqForAssignment = Sequence{r, v, pp, e};
+ RDomainPatternExprToMappingDomainAssignment(seqForAssignment, db);
+ RDomainPatternExprToMappingDomainVarAssignment(seqForAssignment, db);
+ RDomainPatternExprToMappingDomainTemplateVarAssignment(seqForAssignment, db);
+ RDomainPatternExprToMappingBottomVarAssignment(seqForAssignment, mb);
+ }
+}
+
+relation RDomainToMDBottomForEnforcementOfIdentityPropObject
+{
+ seqForAssignment: Sequence(pivotocl::Element);
+ mtv, tcv : pivotocl::Variable;
+ rdSeq : Sequence(pivotocl::Element);
+
+ domain relations rtSeq:Sequence(pivotocl::Element) {
+ r:Relation{},
+ rd:RelationDomain{},
+ te:ObjectTemplateExp {
+ bindsTo = v:pivotocl::Variable {type=c:Class {}},
+ part = pt:PropertyTemplateItem {
+ referredProperty = pp:pivotocl::Property {},
+ value = e:ObjectTemplateExp {bindsTo = tv:pivotocl::Variable{}}
+ }
+ } {
+ c.key.part->includes(pp)
+ }
+ ++ _
+ };
+ enforce domain core mb:BottomPattern {
+ assignment = a:PropertyAssignment {
+ slotExpression = ve1:pivotocl::VariableExp{referredVariable = tcv},
+ targetProperty = tp:pivotocl::Property{name = tv.name, class = tcv.type.oclAsType(pivotocl::Class)},
+ value = ve2:pivotocl::VariableExp{referredVariable = mtv}
+ }
+ }; -- domain bottom
+ where {
+ rdSeq = Sequence{r, rd};
+ RelationDomainToTraceClassVar(rdSeq, tcv);
+ RVarToMVar(tv, mtv);
+ }
+}
+
+relation RDomainPatternExprToMappingDomainAssignment
+{
+ pn: String;
+ mv: pivotocl::Variable;
+
+ domain relations seqForAssignment: Sequence(pivotocl::Element) {
+ _,
+ v:pivotocl::Variable {},
+ pp:pivotocl::Property {name = pn},
+ e:pivotocl::OCLExpression {} {
+ not e.oclIsTypeOf(pivotocl::VariableExp) and not e.oclIsTypeOf(ObjectTemplateExp)
+ } ++ _
+ };
+ enforce domain core db:BottomPattern {
+ assignment = a:PropertyAssignment {
+ slotExpression = ve:pivotocl::VariableExp{referredVariable = mv},
+ targetProperty = tp:pivotocl::Property{name = pn, class = mv.type.oclAsType(pivotocl::Class)},
+ value = me:pivotocl::OCLExpression{}
+ }
+ };
+ where {
+ RVarToMVar(v, mv);
+ RExpToMExp(e, me);
+ }
+}
+
+relation RDomainPatternExprToMappingDomainVarAssignment
+{
+ sharedDomainVars: Set(pivotocl::Variable);
+ rev, mev : pivotocl::Variable;
+ pn: String;
+
+ domain relations seqForAssignment: Sequence(pivotocl::Element) {
+ r:Relation {},
+ v:pivotocl::Variable {},
+ pp:pivotocl::Property {name = pn},
+ e:pivotocl::VariableExp {referredVariable = rev}
+ ++ _
+ } {
+ not sharedDomainVars->includes(e.referredVariable)
+ };
+ enforce domain core db:BottomPattern {
+ realizedVariable = mv:RealizedVariable {},
+ assignment = a:PropertyAssignment {
+ slotExpression = ve:pivotocl::VariableExp{referredVariable = mv},
+ targetProperty = tp:pivotocl::Property{name = pn, class = mv.type.oclAsType(pivotocl::Class)},
+ value = me:pivotocl::VariableExp{referredVariable = mev}
+ }
+ };
+ when {
+ sharedDomainVars = getSharedDomainVars(r);
+ }
+ where {
+ RVarToMRealizedVar(v, mv);
+ RVarToMVar(rev, mev);
+ }
+}
+
+relation RDomainPatternExprToMappingDomainTemplateVarAssignment
+{
+ sharedDomainVars: Set(pivotocl::Variable);
+ rev, mev: pivotocl::Variable;
+ pn: String;
+
+ domain relations seqForAssignment: Sequence(pivotocl::Element) {
+ r:Relation {},
+ v:pivotocl::Variable {},
+ pp:pivotocl::Property {name = pn},
+ e:ObjectTemplateExp {bindsTo = rev}
+ ++ _
+ } {
+ not sharedDomainVars->includes(rev)
+ };
+ enforce domain core db:BottomPattern {
+ realizedVariable = mv:RealizedVariable {},
+ assignment = a:PropertyAssignment {
+ slotExpression = ve:pivotocl::VariableExp{referredVariable = mv},
+ targetProperty = tp:pivotocl::Property{name = pn, class = mv.type.oclAsType(pivotocl::Class)},
+ value = me:pivotocl::VariableExp{referredVariable = mev}
+ }
+ };
+ when {
+ sharedDomainVars = getSharedDomainVars(r);
+ }
+ where {
+ RVarToMRealizedVar(v, mv);
+ RVarToMVar(rev, mev);
+ }
+}
+
+relation RDomainPatternExprToMappingBottomVarAssignment
+{
+ sharedDomainVars: Set(pivotocl::Variable);
+ rev, mev, mv : pivotocl::Variable;
+ pn: String;
+
+ domain relations seqForAssignment: Sequence(pivotocl::Element) {
+ r:Relation {},
+ v:pivotocl::Variable {},
+ pp:pivotocl::Property {name = pn},
+ e:pivotocl::VariableExp {referredVariable = rev}
+ ++ _
+ } {
+ sharedDomainVars->includes(e.referredVariable)
+ };
+ enforce domain core mb:BottomPattern { -- mapping bottom
+ -- realizedVariable = mv:RealizedVariable {}, -- the RV belongs to the domain bottom!
+ assignment = a:PropertyAssignment {
+ slotExpression = ve:pivotocl::VariableExp{referredVariable = mv},
+ targetProperty = tp:pivotocl::Property{name = pn, class = mv.type.oclAsType(pivotocl::Class)},
+ value = me:pivotocl::VariableExp{referredVariable = mev}
+ }
+ };
+ when {
+ sharedDomainVars = getSharedDomainVars(r);
+ }
+ where {
+ RVarToMRealizedVar(v, mv);
+ RVarToMVar(rev, mev);
+ }
+}
+
+relation RDomainToMDBottomForEnforcementOfNonIdentityPropPrimitive
+{
+ pn: String;
+ mv: pivotocl::Variable;
+ rtdeSeq: Sequence(pivotocl::Element);
+
+ domain relations rtdSeq:Sequence(pivotocl::Element) {
+ r:Relation{
+ transformation = rt:RelationalTransformation{}
+ },
+ te:ObjectTemplateExp {
+ bindsTo = v:pivotocl::Variable {type = c:Class {}},
+ part = pt:PropertyTemplateItem {
+ referredProperty = pp:pivotocl::Property {name = pn},
+ value = e:pivotocl::OCLExpression {}
+ }
+ } {
+ (not c.key.part->includes(pp)) and (not e.oclIsKindOf(TemplateExp))
+ },
+ rd:RelationDomain {
+ pattern = rdp:DomainPattern {
+ templateExpression = rdt:ObjectTemplateExp {}
+ }
+ }
+ ++ _
+ };
+ enforce domain core m:Mapping {
+ local = cm:Mapping {
+ name = m.name+'_forNonIdentityProp',
+ transformation = mt:Transformation{},
+ guardPattern = gp:GuardPattern {
+ area = cm
+ },
+ bottomPattern = bp:BottomPattern {
+ area = cm,
+ assignment = a:PropertyAssignment {
+ slotExpression = ve:pivotocl::VariableExp{referredVariable = mv},
+ targetProperty = tp:pivotocl::Property{name = pn, class = mv.type.oclAsType(pivotocl::Class)},
+ value = me:pivotocl::OCLExpression{}
+ }
+ }
+ }
+ };
+ when {
+ RelationalTransformationToMappingTransformation(rt, mt);
+ }
+ where {
+ RVarToMVar(v, mv);
+ RExpToMExp(e, me);
+
+ rtdeSeq = Sequence{r, te, rd, e};
+ -- if this rule fails, the local mapping ends with no guard pattern, so
+ -- I added the gp to cm patterns..
+ RDomainToMComposedMappingGuard(rtdeSeq, cm);
+ }
+}
+
+relation RDomainToMComposedMappingGuard
+{
+ dn, tmn: String;
+ tcv, mv: pivotocl::Variable;
+ rdSeq: Sequence(pivotocl::Element);
+ mt: qvtbase::Transformation;
+
+ domain relations rtdSeq:Sequence(pivotocl::Element) {
+ r:Relation{
+ transformation = rt:RelationalTransformation{}
+ },
+ te:ObjectTemplateExp {},
+ rd:RelationDomain {
+ name = dn,
+ typedModel = dir:TypedModel {
+ name = tmn,
+ usedPackage = up:pivotocl::Package{},
+ transformation = rt
+ },
+ pattern = rdp:DomainPattern {
+ templateExpression = rdt:ObjectTemplateExp {}
+ }
+ },
+ ve:pivotocl::VariableExp {referredVariable = v:pivotocl::Variable {}}
+ ++ _
+ } {
+ isVarBoundToSomeOtherTemplate(rdt, te, v)
+ };
+ enforce domain core cm:Mapping {
+ guardPattern = mg:GuardPattern {
+ predicate = pd:Predicate {
+ conditionExpression = ee:pivotocl::OperationCallExp { -- vd.vn = mdv
+ source = pe:pivotocl::PropertyCallExp {
+ source = ve1:pivotocl::VariableExp{referredVariable = tcv},
+ referredProperty = tp:pivotocl::Property {
+ name = mv.name,
+ class = mv.type.oclAsType(pivotocl::Class)
+ }
+ },
+ referredOperation = eo:pivotocl::Operation{name = '='},
+ argument = ve2:pivotocl::VariableExp{referredVariable = mv}
+ }
+ }
+ },
+ domain = cd:CoreDomain {
+ name = dn,
+ typedModel = mdir:TypedModel {
+ name = tmn,
+ usedPackage = up,
+ transformation = mt
+ },
+ guardPattern = cmdg:GuardPattern {
+ variable = mv
+ }
+ }
+ };
+ when {
+ RelationalTransformationToMappingTransformation(rt, mt);
+ }
+ where {
+ rdSeq = Sequence{r, rd};
+ RelationDomainToTraceClassVar(rdSeq, tcv);
+ RVarToMVar(v, mv);
+ }
+}
+
+relation RDomainToMDBottomForEnforcementOfNonIdentityPropObject
+{
+ rdtSetNext: Set(pivotocl::Element);
+ rdtVarsSeqRest: Sequence(Set(pivotocl::Element));
+ predicatesWithoutVarBindings:Set(qvtbase::Predicate);
+ unboundDomainVars:Set(pivotocl::Variable);
+ dn, pn, tmn: String;
+ mv: pivotocl::Variable;
+
+ domain relations rdtVarsSeq:Sequence(Set(pivotocl::Element)) {
+ rdtSet:Set(pivotocl::Element) {
+ r:Relation{
+ transformation = rt:RelationalTransformation{}
+ },
+ rd:RelationDomain {
+ name = dn,
+ typedModel = dir:TypedModel {
+ name = tmn,
+ usedPackage = up:pivotocl::Package{},
+ transformation = rt
+ }
+ },
+ te:ObjectTemplateExp {
+ bindsTo = v:pivotocl::Variable {type = c:Class {}},
+ part = pt:PropertyTemplateItem {
+ referredProperty = pp:pivotocl::Property {name = pn},
+ value = pte:ObjectTemplateExp {bindsTo = pv:pivotocl::Variable {}}
+ }
+ } {
+ not c.key.part->includes(pp)
+ }
+ ++ _
+ }
+ ++ _
+ };
+ enforce domain core m:Mapping {
+ local = cm:Mapping {
+ name = m.name+'_for_'+pv.name,
+ transformation = mt:Transformation{},
+ domain = cd:CoreDomain {
+ name = dn,
+ isEnforceable = true,
+ typedModel = mdir:TypedModel {
+ name = tmn,
+ usedPackage = up,
+ transformation = mt
+ },
+ bottomPattern = cmdb:BottomPattern {
+ realizedVariable = mpv:RealizedVariable {},
+ assignment = a:PropertyAssignment {
+ slotExpression = ve1:pivotocl::VariableExp{referredVariable = mv},
+ targetProperty = tp:pivotocl::Property{name = pn, class = mv.type.oclAsType(pivotocl::Class)},
+ value = ve2:pivotocl::VariableExp{referredVariable = mpv}
+ }
+ }
+ },
+ bottomPattern = mb:BottomPattern {
+ area = cm
+ }
+ }
+ };
+ when {
+ RelationalTransformationToMappingTransformation(rt, mt);
+ }
+ where {
+ RVarToMVar(v, mv);
+ RVarToMRealizedVar(pv, mpv);
+
+ rdtVarsSeq->at(2) = predicatesWithoutVarBindings;
+ rdtVarsSeq->at(3) = unboundDomainVars;
+
+ rdtSetNext = Set{r, rd, pte};
+ rdtVarsSeqRest = Sequence{rdtSetNext, predicatesWithoutVarBindings, unboundDomainVars};
+ RDomainToMDBottomForEnforcement(rdtVarsSeqRest, cmdb);
+ }
+}
+
+relation RDomainPatternToMDBottomPatternComposite
+{
+ nextSeqForDomainPtrn: Sequence(pivotocl::Element);
+ sharedDomainVars:Set(pivotocl::Variable);
+ pn: String;
+ mvte, mvpte: pivotocl::Variable;
+
+ domain relations seqForDomainPtrn:Sequence(pivotocl::Element) {
+ r:Relation{},
+ te:ObjectTemplateExp {
+ bindsTo = vte:pivotocl::Variable {},
+ part = pt:PropertyTemplateItem {
+ referredProperty = pp:pivotocl::Property {name = pn},
+ value = pte:ObjectTemplateExp {bindsTo = vpte:pivotocl::Variable {}}
+ }
+ }
+ ++ _
+ };
+ enforce domain core db:BottomPattern {
+ assignment = a:PropertyAssignment {
+ slotExpression = ve1:pivotocl::VariableExp{referredVariable = mvte},
+ targetProperty = tp:pivotocl::Property{name = pn, class = mvte.type.oclAsType(pivotocl::Class)},
+ value = ve2:pivotocl::VariableExp{referredVariable = mvpte}
+ }
+ };
+ where {
+ RVarToMVar(vte, mvte);
+ RVarToMVar(vpte, mvpte);
+ nextSeqForDomainPtrn = Sequence{r, pte};
+ RDomainPatternToMDBottomPattern(nextSeqForDomainPtrn, db);
+ }
+}
+
+relation RDomainPatternToMDBottomPatternSimpleUnSharedVarExpr
+{
+ sharedDomainVars: Set(pivotocl::Variable);
+ pn: String;
+ mvte, mvpte: pivotocl::Variable;
+
+ domain relations seqForDomainPtrn:Sequence(pivotocl::Element) {
+ r:Relation{},
+ te:ObjectTemplateExp {
+ bindsTo = vte:pivotocl::Variable {},
+ part = pt:PropertyTemplateItem {
+ referredProperty = pp:pivotocl::Property {name = pn},
+ value = e:pivotocl::VariableExp {referredVariable = vpte:pivotocl::Variable {}}
+ }
+ }
+ ++ _
+ } {
+ not sharedDomainVars->includes(vpte)
+ };
+ enforce domain core db:BottomPattern {
+ assignment = a:PropertyAssignment {
+ slotExpression = ve1:pivotocl::VariableExp{referredVariable = mvte},
+ targetProperty = tp:pivotocl::Property{name = pn, class = mvte.type.oclAsType(pivotocl::Class)},
+ value = ve2:pivotocl::VariableExp{referredVariable = mvpte}
+ }
+ };
+ when {
+ sharedDomainVars = getSharedDomainVars(r);
+ }
+ where {
+ RVarToMVar(vte, mvte);
+ RVarToMVar(vpte, mvpte);
+ }
+}
+
+relation RDomainPatternToMDBottomPatternSimpleSharedVarExpr
+{
+ sharedDomainVars: Set(pivotocl::Variable);
+ pn: String;
+ mvte, mvpte: pivotocl::Variable;
+
+ domain relations seqForDomainPtrn:Sequence(pivotocl::Element) {
+ r:Relation{},
+ te:ObjectTemplateExp {
+ bindsTo = vte:pivotocl::Variable {},
+ part = pt:PropertyTemplateItem {
+ referredProperty = pp:pivotocl::Property {name = pn},
+ value = e:pivotocl::VariableExp {referredVariable=vpte:pivotocl::Variable {}}
+ }
+ }
+ ++ _
+ } {
+ sharedDomainVars->includes(vpte)
+ };
+ enforce domain core mb:BottomPattern {
+ assignment = a:PropertyAssignment {
+ slotExpression = ve1:pivotocl::VariableExp{referredVariable = mvte},
+ targetProperty = tp:pivotocl::Property{name = pn, class = mvte.type.oclAsType(pivotocl::Class)},
+ value = ve2:pivotocl::VariableExp{referredVariable = mvpte}
+ }
+ };
+ when {
+ sharedDomainVars = getSharedDomainVars(r);
+ }
+ where {
+ RVarToMVar(vte, mvte);
+ RVarToMVar(vpte, mvpte);
+ }
+}
+
+relation RDomainPatternToMDBottomPatternSimpleNonVarExpr
+{
+ pn: String;
+ mvte: pivotocl::Variable;
+
+ domain relations seqForDomainPtrn:Sequence(pivotocl::Element) {
+ _,
+ te:ObjectTemplateExp {
+ bindsTo = vte:pivotocl::Variable {},
+ part = pt:PropertyTemplateItem {
+ referredProperty = pp:pivotocl::Property {name = pn},
+ value = e:pivotocl::OCLExpression {}
+ }
+ } ++ _
+ } {
+ not e.oclIsKindOf(TemplateExp) and not e.oclIsTypeOf(pivotocl::VariableExp)
+ };
+ enforce domain core db:BottomPattern {
+ assignment = a:PropertyAssignment {
+ slotExpression = ve:pivotocl::VariableExp{referredVariable = mvte},
+ targetProperty = tp:pivotocl::Property{name = pn, class = mvte.type.oclAsType(pivotocl::Class)},
+ value = me:pivotocl::OCLExpression{}
+ }
+ };
+ where {
+ RVarToMVar(vte, mvte);
+ RExpToMExp(e, me);
+ }
+}
+
+relation RDomainVarsToTraceClassProps
+{
+ tcv, mdv: pivotocl::Variable;
+
+ domain relations rd:RelationDomain {
+ rule = r:Relation{},
+ pattern = dp:DomainPattern {
+ bindsTo = domainVars:Set(pivotocl::Variable) {dv:pivotocl::Variable {templateExp = te: TemplateExp{}}++_}
+ }
+ };
+ enforce domain core mb:BottomPattern {
+ assignment = a:PropertyAssignment {
+ slotExpression = ve1:pivotocl::VariableExp{referredVariable = tcv},
+ targetProperty = tp:pivotocl::Property{name = dv.name, class = tcv.type.oclAsType(pivotocl::Class)},
+ value = ve2:pivotocl::VariableExp{referredVariable = mdv}
+ }
+ };
+ where {
+ RelationToTraceClassVar(r, tcv);
+ RVarToMVar(dv, mdv);
+ }
+}
+
+relation ROppositeDomainVarsToTraceClassProps
+{
+ rdSeq: Sequence(pivotocl::Element);
+ tcv, mdv: pivotocl::Variable;
+
+ domain relations rdVarsSeq:Sequence(Set(pivotocl::Element)) {
+ rdSet: Set(pivotocl::Element) {
+ r:Relation {},
+ rd:RelationDomain {} ++ _
+ },
+ domainVars:Set(pivotocl::Variable) {dv:pivotocl::Variable{templateExp = te:TemplateExp{}} ++ _}
+ ++ _
+ };
+ enforce domain core mb:BottomPattern {
+ assignment = a:PropertyAssignment {
+ slotExpression = ve1:pivotocl::VariableExp{referredVariable = tcv},
+ targetProperty = tp:pivotocl::Property{name = dv.name, class = tcv.type.oclAsType(pivotocl::Class)},
+ value = ve2:pivotocl::VariableExp{referredVariable = mdv}
+ }
+ };
+ where {
+ rdSeq = let s : Sequence(pivotocl::Element) = Sequence{} in s->append(r)->append(rd);
+ RelationDomainToTraceClassVar(rdSeq, tcv);
+ RVarToMVar(dv, mdv);
+ }
+}
+
+relation RRelImplToMBottomEnforcementOperation
+{
+ emptySet:Set(qvtcorebase::EnforcementOperation);
+
+ domain relations repImplSeq:Sequence(pivotocl::Element) {
+ r:Relation {
+ operationalImpl = ri:RelationImplementation {
+ inDirectionOf = tm:TypedModel{},
+ impl = op:pivotocl::Operation{}
+ }
+ },
+ rd:RelationDomain {typedModel = tm:TypedModel{}}
+ ++ _
+ };
+ enforce domain core mb:BottomPattern {
+ enforcementOperation = eoSet:Set(EnforcementOperation) {
+ eoc:EnforcementOperation {
+ enforcementMode = EnforcementMode::Creation,
+ operationCallExp = oce:pivotocl::OperationCallExp {
+ referredOperation = op
+ }
+ },
+ eod:EnforcementOperation {
+ enforcementMode = EnforcementMode::Deletion,
+ operationCallExp = oce
+ }
+ ++ emptySet
+ }
+ }
+ default_values
+ {
+ emptySet = Set{};
+ };
+ where {
+ RRelDomainsToMOpCallArg(r, oce);
+ }
+}
+
+relation RRelDomainsToMOpCallArg
+{
+ domain relations r:Relation {
+ domain = rd:RelationDomain {
+ pattern = p:DomainPattern{bindsTo = rv:pivotocl::Variable{}}
+ }
+ };
+ enforce domain core oce:pivotocl::OperationCallExp {
+ argument = ar:pivotocl::VariableExp {
+ referredVariable = mv:pivotocl::Variable {}
+ }
+ };
+ where {
+ RVarToMVar(rv, mv);
+ }
+}
+
+relation RelationToTraceClassVar
+{
+ rn: String;
+ tc: pivotocl::Class;
+
+ domain relations r:Relation {name = rn};
+ enforce domain core tcv:RealizedVariable {
+ name = rn+'_v',
+ type = tc
+ };
+ when {
+ RelationToTraceClass(r, tc);
+ }
+}
+
+relation RelationDomainToTraceClassVar
+{
+ rn, dn: String;
+ tc: pivotocl::Class;
+
+ domain relations rdSeq:Sequence(pivotocl::Element) {
+ r:Relation {name = rn},
+ d:RelationDomain{name = dn}
+ ++ _
+ };
+ enforce domain core tcv:RealizedVariable {
+ name = rn+'_'+dn+'_v',
+ type = tc
+ };
+ when {
+ RelationToTraceClass(r, tc);
+ }
+}
+
+-- copy an ocl expression
+-- For space reasons this relation is not expanded out here
+relation RExpToMExp
+{
+ domain relations re:pivotocl::OCLExpression{};
+ enforce domain core me:pivotocl::OCLExpression{} /*implementedby CopyOclExpession(re, me)*/;
+}
+
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/RelationKey.java b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/RelationKey.java
new file mode 100644
index 000000000..79343cb81
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/RelationKey.java
@@ -0,0 +1,11 @@
+package org.eclipse.qvtd.build.qvtrtoqvtc;
+
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.qvtd.build.qvtrtoqvtc.impl.AbstractBindings.KeySet;
+
+public interface RelationKey {
+
+
+ @NonNull KeySet getKeyBindings();
+
+}
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/Rule.java b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/Rule.java
new file mode 100644
index 000000000..498e00c81
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/Rule.java
@@ -0,0 +1,118 @@
+/*******************************************************************************
+ * Copyright (c) 2014 The University of York and Willink Transformations.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Horacio Hoyos - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.qvtd.build.qvtrtoqvtc;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.qvtd.build.qvtrtoqvtc.impl.RuleBindings;
+
+
+/**
+ * The Interface Rule.
+ */
+public interface Rule {
+
+
+ public interface Factory {
+
+ @Nullable Rule createRule(@NonNull QvtrToQvtcTransformation transformation,
+ @NonNull EObject eo);
+
+ @Nullable Rule createRule(@NonNull QvtrToQvtcTransformation transformation,
+ @NonNull List<EObject> eos);
+
+ @NonNull List<Rule> getRules(@NonNull QvtrToQvtcTransformation transformation,
+ @NonNull Resource inputModelm);
+ }
+
+ public interface SubRecord {
+
+ @NonNull RuleBindings getRuleBindings();
+
+ /**
+ * Return the keys for all relations bindings of this rule.
+ */
+ @NonNull RuleBindings.KeySet getRuleBindingsKeys();
+ }
+
+ /**
+ * Derive input elements.
+ */
+ void check();
+
+ /**
+ * Instantiate output elements.
+ *
+ * @param qvtcModelElements the qvtc model elements
+ * @return the list
+ */
+ void instantiateOutput();
+
+
+ @NonNull RuleBindings getRuleBindings();
+
+ /**
+ * Return the keys for all relations bindings of this rule.
+ */
+ @NonNull RuleBindings.KeySet getRuleBindingsKeys();
+
+ /**
+ * Was executed.
+ *
+ * @return true, if successful
+ */
+ boolean hasExecuted();
+
+ /**
+ * Match a Bindings to the types requried by the rule
+ * @param tr
+ * @param bindings
+ * @return
+ */
+ //public boolean matchBindings(@NonNull Rule tr, @NonNull RelationsBindings relationsBindings);
+
+ /**
+ * Assing values to output elements' attributes.
+ *
+ */
+ public void setAttributes();
+
+ /**
+ * Was executed.
+ *
+ * @param executed the executed
+ */
+ void setExecuted(boolean executed);
+
+
+ //void setRelationsRoot(R root);
+
+
+ /**
+ * When.
+ *
+ * @param transformation the transformation
+ * @return true, if successful
+ */
+ public boolean when();
+
+ /**
+ * Where.
+ *
+ * @param transformation the transformation
+ */
+ public void where();
+
+}
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/AbstractBindings.java b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/AbstractBindings.java
new file mode 100644
index 000000000..27b2287b3
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/AbstractBindings.java
@@ -0,0 +1,114 @@
+/*******************************************************************************
+ * Copyright (c) 2014 The University of York and Willink Transformations.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Horacio Hoyos - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.qvtd.build.qvtrtoqvtc.impl;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.jdt.annotation.NonNull;
+
+/**
+ * AbstractBindings defines the interface for a typesafe heterogeneous Map<Key<T>,T> in which each entry may have a distinct T.
+ * <p>
+ * Derived classes provide further typesafety for keys of the distinct relations (input), core (output) and primitives (temporary) domains.
+ */
+public abstract class AbstractBindings
+{
+ public static abstract class Key<T>
+ {
+ private final @NonNull String key;
+
+ protected Key(@NonNull String key) {
+ this.key = key;
+ }
+
+ public @NonNull String getKey() {
+ return key;
+ }
+
+ /*
+ * The default per-object hashCode is suitable since Key<X>("x") is a different key to Key<Y)("x").
+ * In the absence of run-time class information inadvertent declaration of a duplicate will create
+ * two distinct keys.
+ */
+ // public int hashCode() { return super.hashCode(); }
+
+ /*
+ * The default per-object equals is suitable since Key<X>("x") is a different key to Key<Y)("x").
+ */
+ // public boolean equals(Object obj) {
+
+ @Override
+ public @NonNull String toString() {
+ return key;
+ }
+ }
+
+ public static abstract class KeySet
+ {
+ protected final @NonNull List<Key<?>> keys = new ArrayList<Key<?>>();
+
+
+ public @NonNull List<Key<?>> getKeys() {
+ return keys;
+ }
+
+ @Override
+ public String toString() {
+ return keys.toString();
+ }
+ }
+
+ protected final @NonNull Map<Key<?>, Object> delegate = new HashMap<Key<?>, Object>();
+// private Integer hashCode = null; // Non-nuyll once Bindings becomes readOnly.
+
+
+ public void clear() {
+ delegate.clear();
+ }
+
+ public boolean containsValue(Object value) {
+ return delegate.containsValue(value);
+ }
+
+ @SuppressWarnings("null")
+ public @NonNull Set<Map.Entry<Key<?>, Object>> entrySet() {
+ return delegate.entrySet();
+ }
+
+
+ public boolean isEmpty() {
+ return delegate.isEmpty();
+ }
+
+ @SuppressWarnings("null")
+ public @NonNull Set<Key<?>> keySet() {
+ return delegate.keySet();
+ }
+
+ public int size() {
+ return delegate.size();
+ }
+
+ @Override
+ public String toString() {
+ return delegate.toString();
+ }
+
+ @SuppressWarnings("null")
+ public @NonNull Collection<Object> values() {
+ return delegate.values();
+ }
+}
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/AbstractRule.java b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/AbstractRule.java
new file mode 100644
index 000000000..08765ebc2
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/AbstractRule.java
@@ -0,0 +1,122 @@
+/*******************************************************************************
+ * Copyright (c) 2014 The University of York and Willink Transformations.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Horacio Hoyos - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.qvtd.build.qvtrtoqvtc.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.qvtd.build.qvtrtoqvtc.QvtrToQvtcTransformation;
+import org.eclipse.qvtd.build.qvtrtoqvtc.Rule;
+
+public abstract class AbstractRule implements Rule
+{
+ protected static abstract class Factory implements Rule.Factory
+ {
+ public abstract @Nullable Rule createRule(@NonNull QvtrToQvtcTransformation transformation,
+ @NonNull EObject eo);
+
+ public abstract @Nullable Rule createRule(@NonNull QvtrToQvtcTransformation transformation,
+ @NonNull List<EObject> eos);
+
+ public @NonNull List<Rule> getRules(@NonNull QvtrToQvtcTransformation transformation, @NonNull Resource inputModel) {
+ List<Rule> rules = new ArrayList<Rule>();
+ TreeIterator<EObject> it = inputModel.getAllContents();
+ while(it.hasNext()) {
+ EObject eo = it.next();
+ if (eo != null) {
+ Rule rule = createRule(transformation, eo);
+ if (rule != null) {
+ rules.add(rule);
+ }
+ }
+ }
+ return rules;
+ }
+ }
+
+
+ public abstract class AbstractSubRecord implements AbstractRule.SubRecord
+ {
+ protected final @NonNull RuleBindings ruleBindings;
+
+
+ protected AbstractSubRecord(@NonNull Rule rule) {
+
+ ruleBindings = new RuleBindings(rule);
+ }
+
+ @Override
+ public @NonNull RuleBindings getRuleBindings() {
+ return ruleBindings;
+ }
+
+ @Override
+ @NonNull
+ public RuleBindings.KeySet getRuleBindingsKeys() {
+ return (RuleBindings.KeySet) ruleBindings.keySet();
+ }
+ }
+
+ protected final @NonNull QvtrToQvtcTransformation transformation;
+ protected final @NonNull RuleBindings ruleBindings = new RuleBindings(this);
+
+ protected boolean executed = false;
+
+ protected AbstractRule(@NonNull QvtrToQvtcTransformation transformation) {
+ this.transformation = transformation;
+ }
+
+ public void check() {
+ throw new UnsupportedOperationException();
+ }
+
+ // Some rules don't need to instantiate anything
+ public void instantiateOutput() { }
+
+ @Override
+ @NonNull
+ public RuleBindings getRuleBindings() {
+ return ruleBindings;
+ }
+
+ @Override
+ @NonNull
+ public RuleBindings.KeySet getRuleBindingsKeys() {
+ return (RuleBindings.KeySet) ruleBindings.keySet();
+ }
+
+ @Override
+ public boolean hasExecuted() {
+ return executed;
+ }
+
+ @Override
+ public void setAttributes() {}
+
+
+ @Override
+ public void setExecuted(boolean executed) {
+ this.executed = executed;
+ }
+
+ @Override
+ public boolean when() {
+ return true;
+ }
+
+ @Override
+ public void where() {}
+}
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/OCLExpCopy.java b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/OCLExpCopy.java
new file mode 100644
index 000000000..5a0d1f6b5
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/OCLExpCopy.java
@@ -0,0 +1,4073 @@
+package org.eclipse.qvtd.build.qvtrtoqvtc.impl;
+
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.ocl.examples.pivot.Annotation;
+import org.eclipse.ocl.examples.pivot.AnyType;
+import org.eclipse.ocl.examples.pivot.AssociationClass;
+import org.eclipse.ocl.examples.pivot.AssociationClassCallExp;
+import org.eclipse.ocl.examples.pivot.BagType;
+import org.eclipse.ocl.examples.pivot.Behavior;
+import org.eclipse.ocl.examples.pivot.BooleanLiteralExp;
+import org.eclipse.ocl.examples.pivot.CallExp;
+import org.eclipse.ocl.examples.pivot.CallOperationAction;
+import org.eclipse.ocl.examples.pivot.Class;
+import org.eclipse.ocl.examples.pivot.CollectionItem;
+import org.eclipse.ocl.examples.pivot.CollectionLiteralExp;
+import org.eclipse.ocl.examples.pivot.CollectionLiteralPart;
+import org.eclipse.ocl.examples.pivot.CollectionRange;
+import org.eclipse.ocl.examples.pivot.CollectionType;
+import org.eclipse.ocl.examples.pivot.Comment;
+import org.eclipse.ocl.examples.pivot.ConnectionPointReference;
+import org.eclipse.ocl.examples.pivot.Constraint;
+import org.eclipse.ocl.examples.pivot.ConstructorExp;
+import org.eclipse.ocl.examples.pivot.ConstructorPart;
+import org.eclipse.ocl.examples.pivot.DataType;
+import org.eclipse.ocl.examples.pivot.Detail;
+import org.eclipse.ocl.examples.pivot.DynamicBehavior;
+import org.eclipse.ocl.examples.pivot.DynamicElement;
+import org.eclipse.ocl.examples.pivot.DynamicProperty;
+import org.eclipse.ocl.examples.pivot.DynamicType;
+import org.eclipse.ocl.examples.pivot.Element;
+import org.eclipse.ocl.examples.pivot.ElementExtension;
+import org.eclipse.ocl.examples.pivot.EnumLiteralExp;
+import org.eclipse.ocl.examples.pivot.Enumeration;
+import org.eclipse.ocl.examples.pivot.EnumerationLiteral;
+import org.eclipse.ocl.examples.pivot.ExpressionInOCL;
+import org.eclipse.ocl.examples.pivot.Feature;
+import org.eclipse.ocl.examples.pivot.FeatureCallExp;
+import org.eclipse.ocl.examples.pivot.FinalState;
+import org.eclipse.ocl.examples.pivot.IfExp;
+import org.eclipse.ocl.examples.pivot.Import;
+import org.eclipse.ocl.examples.pivot.IntegerLiteralExp;
+import org.eclipse.ocl.examples.pivot.InvalidLiteralExp;
+import org.eclipse.ocl.examples.pivot.InvalidType;
+import org.eclipse.ocl.examples.pivot.IterateExp;
+import org.eclipse.ocl.examples.pivot.Iteration;
+import org.eclipse.ocl.examples.pivot.IteratorExp;
+import org.eclipse.ocl.examples.pivot.LambdaType;
+import org.eclipse.ocl.examples.pivot.LetExp;
+import org.eclipse.ocl.examples.pivot.Library;
+import org.eclipse.ocl.examples.pivot.LiteralExp;
+import org.eclipse.ocl.examples.pivot.LoopExp;
+import org.eclipse.ocl.examples.pivot.MessageExp;
+import org.eclipse.ocl.examples.pivot.MessageType;
+import org.eclipse.ocl.examples.pivot.Metaclass;
+import org.eclipse.ocl.examples.pivot.NamedElement;
+import org.eclipse.ocl.examples.pivot.Namespace;
+import org.eclipse.ocl.examples.pivot.NavigationCallExp;
+import org.eclipse.ocl.examples.pivot.NullLiteralExp;
+import org.eclipse.ocl.examples.pivot.NumericLiteralExp;
+import org.eclipse.ocl.examples.pivot.OCLExpression;
+import org.eclipse.ocl.examples.pivot.OpaqueExpression;
+import org.eclipse.ocl.examples.pivot.Operation;
+import org.eclipse.ocl.examples.pivot.OperationCallExp;
+import org.eclipse.ocl.examples.pivot.OperationTemplateParameter;
+import org.eclipse.ocl.examples.pivot.OppositePropertyCallExp;
+import org.eclipse.ocl.examples.pivot.OrderedSetType;
+import org.eclipse.ocl.examples.pivot.Package;
+import org.eclipse.ocl.examples.pivot.PackageableElement;
+import org.eclipse.ocl.examples.pivot.Parameter;
+import org.eclipse.ocl.examples.pivot.ParameterableElement;
+import org.eclipse.ocl.examples.pivot.Precedence;
+import org.eclipse.ocl.examples.pivot.PrimitiveLiteralExp;
+import org.eclipse.ocl.examples.pivot.PrimitiveType;
+import org.eclipse.ocl.examples.pivot.Profile;
+import org.eclipse.ocl.examples.pivot.ProfileApplication;
+import org.eclipse.ocl.examples.pivot.Property;
+import org.eclipse.ocl.examples.pivot.PropertyCallExp;
+import org.eclipse.ocl.examples.pivot.Pseudostate;
+import org.eclipse.ocl.examples.pivot.RealLiteralExp;
+import org.eclipse.ocl.examples.pivot.Region;
+import org.eclipse.ocl.examples.pivot.Root;
+import org.eclipse.ocl.examples.pivot.SelfType;
+import org.eclipse.ocl.examples.pivot.SendSignalAction;
+import org.eclipse.ocl.examples.pivot.SequenceType;
+import org.eclipse.ocl.examples.pivot.SetType;
+import org.eclipse.ocl.examples.pivot.Signal;
+import org.eclipse.ocl.examples.pivot.State;
+import org.eclipse.ocl.examples.pivot.StateExp;
+import org.eclipse.ocl.examples.pivot.StateMachine;
+import org.eclipse.ocl.examples.pivot.Stereotype;
+import org.eclipse.ocl.examples.pivot.StringLiteralExp;
+import org.eclipse.ocl.examples.pivot.TemplateBinding;
+import org.eclipse.ocl.examples.pivot.TemplateParameter;
+import org.eclipse.ocl.examples.pivot.TemplateParameterSubstitution;
+import org.eclipse.ocl.examples.pivot.TemplateParameterType;
+import org.eclipse.ocl.examples.pivot.TemplateSignature;
+import org.eclipse.ocl.examples.pivot.TemplateableElement;
+import org.eclipse.ocl.examples.pivot.Transition;
+import org.eclipse.ocl.examples.pivot.Trigger;
+import org.eclipse.ocl.examples.pivot.TupleLiteralExp;
+import org.eclipse.ocl.examples.pivot.TupleLiteralPart;
+import org.eclipse.ocl.examples.pivot.TupleType;
+import org.eclipse.ocl.examples.pivot.Type;
+import org.eclipse.ocl.examples.pivot.TypeExp;
+import org.eclipse.ocl.examples.pivot.TypeExtension;
+import org.eclipse.ocl.examples.pivot.TypeTemplateParameter;
+import org.eclipse.ocl.examples.pivot.TypedElement;
+import org.eclipse.ocl.examples.pivot.TypedMultiplicityElement;
+import org.eclipse.ocl.examples.pivot.UnlimitedNaturalLiteralExp;
+import org.eclipse.ocl.examples.pivot.UnspecifiedType;
+import org.eclipse.ocl.examples.pivot.UnspecifiedValueExp;
+import org.eclipse.ocl.examples.pivot.ValueSpecification;
+import org.eclipse.ocl.examples.pivot.Variable;
+import org.eclipse.ocl.examples.pivot.VariableDeclaration;
+import org.eclipse.ocl.examples.pivot.VariableExp;
+import org.eclipse.ocl.examples.pivot.Vertex;
+import org.eclipse.ocl.examples.pivot.VoidType;
+import org.eclipse.ocl.examples.pivot.PivotFactory;
+import org.eclipse.ocl.examples.pivot.util.PivotSwitch;
+import org.eclipse.qvtd.build.qvtrtoqvtc.QvtrToQvtcTransformation;
+
+/**
+ * A set of operations to correctly copy an OCLExp
+ * @generated
+ */
+public class OCLExpCopy extends PivotSwitch<Element> {
+
+ @NonNull private QvtrToQvtcTransformation transformation;
+
+ public OCLExpCopy(@NonNull QvtrToQvtcTransformation transformation) {
+ this.transformation = transformation;
+ }
+
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseAnnotation(Annotation in) {
+ final Annotation out = PivotFactory.eINSTANCE.createAnnotation();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (Element _ownedContent : in.getOwnedContent()) {
+ out.getOwnedContent().add((Element) doSwitch(_ownedContent));
+ }
+ for (Detail _ownedDetail : in.getOwnedDetail()) {
+ out.getOwnedDetail().add((Detail) doSwitch(_ownedDetail));
+ }
+ for (Element _reference : in.getReference()) {
+ out.getReference().add((Element) doSwitch(_reference));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseAnyType(AnyType in) {
+ final AnyType out = PivotFactory.eINSTANCE.createAnyType();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setInstanceClassName(in.getInstanceClassName());
+ out.setIsAbstract(in.isAbstract());
+ out.setIsActive(in.isActive());
+ out.setIsInterface(in.isInterface());
+ TemplateSignature _ownedTemplateSignature = in.getOwnedTemplateSignature();
+ if (_ownedTemplateSignature != null)
+ out.setOwnedTemplateSignature((TemplateSignature) doSwitch(_ownedTemplateSignature));
+ TemplateableElement _unspecializedElement = in.getUnspecializedElement();
+ if (_unspecializedElement != null)
+ out.setUnspecializedElement((TemplateableElement) doSwitch(_unspecializedElement));
+ TemplateParameter _owningTemplateParameter = in.getOwningTemplateParameter();
+ if (_owningTemplateParameter != null)
+ out.setOwningTemplateParameter((TemplateParameter) doSwitch(_owningTemplateParameter));
+ TemplateParameter _templateParameter = in.getTemplateParameter();
+ if (_templateParameter != null)
+ out.setTemplateParameter((TemplateParameter) doSwitch(_templateParameter));
+ Package _package = in.getPackage();
+ if (_package != null)
+ out.setPackage((Package) doSwitch(_package));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (TemplateBinding _templateBinding : in.getTemplateBinding()) {
+ out.getTemplateBinding().add((TemplateBinding) doSwitch(_templateBinding));
+ }
+ for (TypeExtension _extendedBys : in.getExtendedBys()) {
+ out.getExtendedBys().add((TypeExtension) doSwitch(_extendedBys));
+ }
+ for (Property _ownedAttribute : in.getOwnedAttribute()) {
+ out.getOwnedAttribute().add((Property) doSwitch(_ownedAttribute));
+ }
+ for (Constraint _ownedInvariant : in.getOwnedInvariant()) {
+ out.getOwnedInvariant().add((Constraint) doSwitch(_ownedInvariant));
+ }
+ for (Operation _ownedOperation : in.getOwnedOperation()) {
+ out.getOwnedOperation().add((Operation) doSwitch(_ownedOperation));
+ }
+ for (Type _superClass : in.getSuperClass()) {
+ out.getSuperClass().add((Type) doSwitch(_superClass));
+ }
+ for (Constraint _ownedRule : in.getOwnedRule()) {
+ out.getOwnedRule().add((Constraint) doSwitch(_ownedRule));
+ }
+ for (Class _nestedType : in.getNestedType()) {
+ out.getNestedType().add((Class) doSwitch(_nestedType));
+ }
+ for (Behavior _ownedBehavior : in.getOwnedBehavior()) {
+ out.getOwnedBehavior().add((Behavior) doSwitch(_ownedBehavior));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseAssociationClass(AssociationClass in) {
+ final AssociationClass out = PivotFactory.eINSTANCE.createAssociationClass();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setInstanceClassName(in.getInstanceClassName());
+ out.setIsAbstract(in.isAbstract());
+ out.setIsActive(in.isActive());
+ out.setIsInterface(in.isInterface());
+ TemplateSignature _ownedTemplateSignature = in.getOwnedTemplateSignature();
+ if (_ownedTemplateSignature != null)
+ out.setOwnedTemplateSignature((TemplateSignature) doSwitch(_ownedTemplateSignature));
+ TemplateableElement _unspecializedElement = in.getUnspecializedElement();
+ if (_unspecializedElement != null)
+ out.setUnspecializedElement((TemplateableElement) doSwitch(_unspecializedElement));
+ TemplateParameter _owningTemplateParameter = in.getOwningTemplateParameter();
+ if (_owningTemplateParameter != null)
+ out.setOwningTemplateParameter((TemplateParameter) doSwitch(_owningTemplateParameter));
+ TemplateParameter _templateParameter = in.getTemplateParameter();
+ if (_templateParameter != null)
+ out.setTemplateParameter((TemplateParameter) doSwitch(_templateParameter));
+ Package _package = in.getPackage();
+ if (_package != null)
+ out.setPackage((Package) doSwitch(_package));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (TemplateBinding _templateBinding : in.getTemplateBinding()) {
+ out.getTemplateBinding().add((TemplateBinding) doSwitch(_templateBinding));
+ }
+ for (TypeExtension _extendedBys : in.getExtendedBys()) {
+ out.getExtendedBys().add((TypeExtension) doSwitch(_extendedBys));
+ }
+ for (Property _ownedAttribute : in.getOwnedAttribute()) {
+ out.getOwnedAttribute().add((Property) doSwitch(_ownedAttribute));
+ }
+ for (Constraint _ownedInvariant : in.getOwnedInvariant()) {
+ out.getOwnedInvariant().add((Constraint) doSwitch(_ownedInvariant));
+ }
+ for (Operation _ownedOperation : in.getOwnedOperation()) {
+ out.getOwnedOperation().add((Operation) doSwitch(_ownedOperation));
+ }
+ for (Type _superClass : in.getSuperClass()) {
+ out.getSuperClass().add((Type) doSwitch(_superClass));
+ }
+ for (Constraint _ownedRule : in.getOwnedRule()) {
+ out.getOwnedRule().add((Constraint) doSwitch(_ownedRule));
+ }
+ for (Class _nestedType : in.getNestedType()) {
+ out.getNestedType().add((Class) doSwitch(_nestedType));
+ }
+ for (Behavior _ownedBehavior : in.getOwnedBehavior()) {
+ out.getOwnedBehavior().add((Behavior) doSwitch(_ownedBehavior));
+ }
+ for (Property _unownedAttribute : in.getUnownedAttribute()) {
+ out.getUnownedAttribute().add((Property) doSwitch(_unownedAttribute));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseAssociationClassCallExp(AssociationClassCallExp in) {
+ final AssociationClassCallExp out = PivotFactory.eINSTANCE.createAssociationClassCallExp();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ out.setImplicit(in.isImplicit());
+ out.setIsPre(in.isPre());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ OCLExpression _source = in.getSource();
+ if (_source != null)
+ out.setSource((OCLExpression) doSwitch(_source));
+ Property _navigationSource = in.getNavigationSource();
+ if (_navigationSource != null)
+ out.setNavigationSource((Property) doSwitch(_navigationSource));
+ AssociationClass _referredAssociationClass = in.getReferredAssociationClass();
+ if (_referredAssociationClass != null)
+ out.setReferredAssociationClass((AssociationClass) doSwitch(_referredAssociationClass));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (OCLExpression _qualifier : in.getQualifier()) {
+ out.getQualifier().add((OCLExpression) doSwitch(_qualifier));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseBagType(BagType in) {
+ final BagType out = PivotFactory.eINSTANCE.createBagType();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setInstanceClassName(in.getInstanceClassName());
+ out.setIsAbstract(in.isAbstract());
+ out.setIsActive(in.isActive());
+ out.setIsInterface(in.isInterface());
+ out.setIsSerializable(in.isSerializable());
+ out.setLower(in.getLower());
+ out.setUpper(in.getUpper());
+ TemplateSignature _ownedTemplateSignature = in.getOwnedTemplateSignature();
+ if (_ownedTemplateSignature != null)
+ out.setOwnedTemplateSignature((TemplateSignature) doSwitch(_ownedTemplateSignature));
+ TemplateableElement _unspecializedElement = in.getUnspecializedElement();
+ if (_unspecializedElement != null)
+ out.setUnspecializedElement((TemplateableElement) doSwitch(_unspecializedElement));
+ TemplateParameter _owningTemplateParameter = in.getOwningTemplateParameter();
+ if (_owningTemplateParameter != null)
+ out.setOwningTemplateParameter((TemplateParameter) doSwitch(_owningTemplateParameter));
+ TemplateParameter _templateParameter = in.getTemplateParameter();
+ if (_templateParameter != null)
+ out.setTemplateParameter((TemplateParameter) doSwitch(_templateParameter));
+ Package _package = in.getPackage();
+ if (_package != null)
+ out.setPackage((Package) doSwitch(_package));
+ Type _behavioralType = in.getBehavioralType();
+ if (_behavioralType != null)
+ out.setBehavioralType((Type) doSwitch(_behavioralType));
+ Type _elementType = in.getElementType();
+ if (_elementType != null)
+ out.setElementType((Type) doSwitch(_elementType));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (TemplateBinding _templateBinding : in.getTemplateBinding()) {
+ out.getTemplateBinding().add((TemplateBinding) doSwitch(_templateBinding));
+ }
+ for (TypeExtension _extendedBys : in.getExtendedBys()) {
+ out.getExtendedBys().add((TypeExtension) doSwitch(_extendedBys));
+ }
+ for (Property _ownedAttribute : in.getOwnedAttribute()) {
+ out.getOwnedAttribute().add((Property) doSwitch(_ownedAttribute));
+ }
+ for (Constraint _ownedInvariant : in.getOwnedInvariant()) {
+ out.getOwnedInvariant().add((Constraint) doSwitch(_ownedInvariant));
+ }
+ for (Operation _ownedOperation : in.getOwnedOperation()) {
+ out.getOwnedOperation().add((Operation) doSwitch(_ownedOperation));
+ }
+ for (Type _superClass : in.getSuperClass()) {
+ out.getSuperClass().add((Type) doSwitch(_superClass));
+ }
+ for (Constraint _ownedRule : in.getOwnedRule()) {
+ out.getOwnedRule().add((Constraint) doSwitch(_ownedRule));
+ }
+ for (Class _nestedType : in.getNestedType()) {
+ out.getNestedType().add((Class) doSwitch(_nestedType));
+ }
+ for (Behavior _ownedBehavior : in.getOwnedBehavior()) {
+ out.getOwnedBehavior().add((Behavior) doSwitch(_ownedBehavior));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseBooleanLiteralExp(BooleanLiteralExp in) {
+ final BooleanLiteralExp out = PivotFactory.eINSTANCE.createBooleanLiteralExp();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ out.setBooleanSymbol(in.isBooleanSymbol());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseCallOperationAction(CallOperationAction in) {
+ final CallOperationAction out = PivotFactory.eINSTANCE.createCallOperationAction();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ Operation _operation = in.getOperation();
+ if (_operation != null)
+ out.setOperation((Operation) doSwitch(_operation));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseClass(Class in) {
+ final Class out = PivotFactory.eINSTANCE.createClass();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setInstanceClassName(in.getInstanceClassName());
+ out.setIsAbstract(in.isAbstract());
+ out.setIsActive(in.isActive());
+ out.setIsInterface(in.isInterface());
+ TemplateSignature _ownedTemplateSignature = in.getOwnedTemplateSignature();
+ if (_ownedTemplateSignature != null)
+ out.setOwnedTemplateSignature((TemplateSignature) doSwitch(_ownedTemplateSignature));
+ TemplateableElement _unspecializedElement = in.getUnspecializedElement();
+ if (_unspecializedElement != null)
+ out.setUnspecializedElement((TemplateableElement) doSwitch(_unspecializedElement));
+ TemplateParameter _owningTemplateParameter = in.getOwningTemplateParameter();
+ if (_owningTemplateParameter != null)
+ out.setOwningTemplateParameter((TemplateParameter) doSwitch(_owningTemplateParameter));
+ TemplateParameter _templateParameter = in.getTemplateParameter();
+ if (_templateParameter != null)
+ out.setTemplateParameter((TemplateParameter) doSwitch(_templateParameter));
+ Package _package = in.getPackage();
+ if (_package != null)
+ out.setPackage((Package) doSwitch(_package));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (TemplateBinding _templateBinding : in.getTemplateBinding()) {
+ out.getTemplateBinding().add((TemplateBinding) doSwitch(_templateBinding));
+ }
+ for (TypeExtension _extendedBys : in.getExtendedBys()) {
+ out.getExtendedBys().add((TypeExtension) doSwitch(_extendedBys));
+ }
+ for (Property _ownedAttribute : in.getOwnedAttribute()) {
+ out.getOwnedAttribute().add((Property) doSwitch(_ownedAttribute));
+ }
+ for (Constraint _ownedInvariant : in.getOwnedInvariant()) {
+ out.getOwnedInvariant().add((Constraint) doSwitch(_ownedInvariant));
+ }
+ for (Operation _ownedOperation : in.getOwnedOperation()) {
+ out.getOwnedOperation().add((Operation) doSwitch(_ownedOperation));
+ }
+ for (Type _superClass : in.getSuperClass()) {
+ out.getSuperClass().add((Type) doSwitch(_superClass));
+ }
+ for (Constraint _ownedRule : in.getOwnedRule()) {
+ out.getOwnedRule().add((Constraint) doSwitch(_ownedRule));
+ }
+ for (Class _nestedType : in.getNestedType()) {
+ out.getNestedType().add((Class) doSwitch(_nestedType));
+ }
+ for (Behavior _ownedBehavior : in.getOwnedBehavior()) {
+ out.getOwnedBehavior().add((Behavior) doSwitch(_ownedBehavior));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseCollectionItem(CollectionItem in) {
+ final CollectionItem out = PivotFactory.eINSTANCE.createCollectionItem();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ OCLExpression _item = in.getItem();
+ if (_item != null)
+ out.setItem((OCLExpression) doSwitch(_item));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseCollectionLiteralExp(CollectionLiteralExp in) {
+ final CollectionLiteralExp out = PivotFactory.eINSTANCE.createCollectionLiteralExp();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ out.setKind(in.getKind());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (CollectionLiteralPart _part : in.getPart()) {
+ out.getPart().add((CollectionLiteralPart) doSwitch(_part));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseCollectionRange(CollectionRange in) {
+ final CollectionRange out = PivotFactory.eINSTANCE.createCollectionRange();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ OCLExpression _first = in.getFirst();
+ if (_first != null)
+ out.setFirst((OCLExpression) doSwitch(_first));
+ OCLExpression _last = in.getLast();
+ if (_last != null)
+ out.setLast((OCLExpression) doSwitch(_last));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseCollectionType(CollectionType in) {
+ final CollectionType out = PivotFactory.eINSTANCE.createCollectionType();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setInstanceClassName(in.getInstanceClassName());
+ out.setIsAbstract(in.isAbstract());
+ out.setIsActive(in.isActive());
+ out.setIsInterface(in.isInterface());
+ out.setIsSerializable(in.isSerializable());
+ out.setLower(in.getLower());
+ out.setUpper(in.getUpper());
+ TemplateSignature _ownedTemplateSignature = in.getOwnedTemplateSignature();
+ if (_ownedTemplateSignature != null)
+ out.setOwnedTemplateSignature((TemplateSignature) doSwitch(_ownedTemplateSignature));
+ TemplateableElement _unspecializedElement = in.getUnspecializedElement();
+ if (_unspecializedElement != null)
+ out.setUnspecializedElement((TemplateableElement) doSwitch(_unspecializedElement));
+ TemplateParameter _owningTemplateParameter = in.getOwningTemplateParameter();
+ if (_owningTemplateParameter != null)
+ out.setOwningTemplateParameter((TemplateParameter) doSwitch(_owningTemplateParameter));
+ TemplateParameter _templateParameter = in.getTemplateParameter();
+ if (_templateParameter != null)
+ out.setTemplateParameter((TemplateParameter) doSwitch(_templateParameter));
+ Package _package = in.getPackage();
+ if (_package != null)
+ out.setPackage((Package) doSwitch(_package));
+ Type _behavioralType = in.getBehavioralType();
+ if (_behavioralType != null)
+ out.setBehavioralType((Type) doSwitch(_behavioralType));
+ Type _elementType = in.getElementType();
+ if (_elementType != null)
+ out.setElementType((Type) doSwitch(_elementType));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (TemplateBinding _templateBinding : in.getTemplateBinding()) {
+ out.getTemplateBinding().add((TemplateBinding) doSwitch(_templateBinding));
+ }
+ for (TypeExtension _extendedBys : in.getExtendedBys()) {
+ out.getExtendedBys().add((TypeExtension) doSwitch(_extendedBys));
+ }
+ for (Property _ownedAttribute : in.getOwnedAttribute()) {
+ out.getOwnedAttribute().add((Property) doSwitch(_ownedAttribute));
+ }
+ for (Constraint _ownedInvariant : in.getOwnedInvariant()) {
+ out.getOwnedInvariant().add((Constraint) doSwitch(_ownedInvariant));
+ }
+ for (Operation _ownedOperation : in.getOwnedOperation()) {
+ out.getOwnedOperation().add((Operation) doSwitch(_ownedOperation));
+ }
+ for (Type _superClass : in.getSuperClass()) {
+ out.getSuperClass().add((Type) doSwitch(_superClass));
+ }
+ for (Constraint _ownedRule : in.getOwnedRule()) {
+ out.getOwnedRule().add((Constraint) doSwitch(_ownedRule));
+ }
+ for (Class _nestedType : in.getNestedType()) {
+ out.getNestedType().add((Class) doSwitch(_nestedType));
+ }
+ for (Behavior _ownedBehavior : in.getOwnedBehavior()) {
+ out.getOwnedBehavior().add((Behavior) doSwitch(_ownedBehavior));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseComment(Comment in) {
+ final Comment out = PivotFactory.eINSTANCE.createComment();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setBody(in.getBody());
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (Element _annotatedElement : in.getAnnotatedElement()) {
+ out.getAnnotatedElement().add((Element) doSwitch(_annotatedElement));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseConnectionPointReference(ConnectionPointReference in) {
+ final ConnectionPointReference out = PivotFactory.eINSTANCE.createConnectionPointReference();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ Region _container = in.getContainer();
+ if (_container != null)
+ out.setContainer((Region) doSwitch(_container));
+ State _state = in.getState();
+ if (_state != null)
+ out.setState((State) doSwitch(_state));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (Transition _incoming : in.getIncoming()) {
+ out.getIncoming().add((Transition) doSwitch(_incoming));
+ }
+ for (Transition _outgoing : in.getOutgoing()) {
+ out.getOutgoing().add((Transition) doSwitch(_outgoing));
+ }
+ for (Pseudostate _entry : in.getEntry()) {
+ out.getEntry().add((Pseudostate) doSwitch(_entry));
+ }
+ for (Pseudostate _exit : in.getExit()) {
+ out.getExit().add((Pseudostate) doSwitch(_exit));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseConstraint(Constraint in) {
+ final Constraint out = PivotFactory.eINSTANCE.createConstraint();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsCallable(in.isCallable());
+ State _owningState = in.getOwningState();
+ if (_owningState != null)
+ out.setOwningState((State) doSwitch(_owningState));
+ OpaqueExpression _specification = in.getSpecification();
+ if (_specification != null)
+ out.setSpecification((OpaqueExpression) doSwitch(_specification));
+ Transition _transition = in.getTransition();
+ if (_transition != null)
+ out.setTransition((Transition) doSwitch(_transition));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (Element _constrainedElement : in.getConstrainedElement()) {
+ out.getConstrainedElement().add((Element) doSwitch(_constrainedElement));
+ }
+ for (Constraint _redefinedConstraint : in.getRedefinedConstraint()) {
+ out.getRedefinedConstraint().add((Constraint) doSwitch(_redefinedConstraint));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseConstructorExp(ConstructorExp in) {
+ final ConstructorExp out = PivotFactory.eINSTANCE.createConstructorExp();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ out.setValue(in.getValue());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (ConstructorPart _part : in.getPart()) {
+ out.getPart().add((ConstructorPart) doSwitch(_part));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseConstructorPart(ConstructorPart in) {
+ final ConstructorPart out = PivotFactory.eINSTANCE.createConstructorPart();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ OCLExpression _initExpression = in.getInitExpression();
+ if (_initExpression != null)
+ out.setInitExpression((OCLExpression) doSwitch(_initExpression));
+ Property _referredProperty = in.getReferredProperty();
+ if (_referredProperty != null)
+ out.setReferredProperty((Property) doSwitch(_referredProperty));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseDataType(DataType in) {
+ final DataType out = PivotFactory.eINSTANCE.createDataType();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setInstanceClassName(in.getInstanceClassName());
+ out.setIsAbstract(in.isAbstract());
+ out.setIsActive(in.isActive());
+ out.setIsInterface(in.isInterface());
+ out.setIsSerializable(in.isSerializable());
+ TemplateSignature _ownedTemplateSignature = in.getOwnedTemplateSignature();
+ if (_ownedTemplateSignature != null)
+ out.setOwnedTemplateSignature((TemplateSignature) doSwitch(_ownedTemplateSignature));
+ TemplateableElement _unspecializedElement = in.getUnspecializedElement();
+ if (_unspecializedElement != null)
+ out.setUnspecializedElement((TemplateableElement) doSwitch(_unspecializedElement));
+ TemplateParameter _owningTemplateParameter = in.getOwningTemplateParameter();
+ if (_owningTemplateParameter != null)
+ out.setOwningTemplateParameter((TemplateParameter) doSwitch(_owningTemplateParameter));
+ TemplateParameter _templateParameter = in.getTemplateParameter();
+ if (_templateParameter != null)
+ out.setTemplateParameter((TemplateParameter) doSwitch(_templateParameter));
+ Package _package = in.getPackage();
+ if (_package != null)
+ out.setPackage((Package) doSwitch(_package));
+ Type _behavioralType = in.getBehavioralType();
+ if (_behavioralType != null)
+ out.setBehavioralType((Type) doSwitch(_behavioralType));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (TemplateBinding _templateBinding : in.getTemplateBinding()) {
+ out.getTemplateBinding().add((TemplateBinding) doSwitch(_templateBinding));
+ }
+ for (TypeExtension _extendedBys : in.getExtendedBys()) {
+ out.getExtendedBys().add((TypeExtension) doSwitch(_extendedBys));
+ }
+ for (Property _ownedAttribute : in.getOwnedAttribute()) {
+ out.getOwnedAttribute().add((Property) doSwitch(_ownedAttribute));
+ }
+ for (Constraint _ownedInvariant : in.getOwnedInvariant()) {
+ out.getOwnedInvariant().add((Constraint) doSwitch(_ownedInvariant));
+ }
+ for (Operation _ownedOperation : in.getOwnedOperation()) {
+ out.getOwnedOperation().add((Operation) doSwitch(_ownedOperation));
+ }
+ for (Type _superClass : in.getSuperClass()) {
+ out.getSuperClass().add((Type) doSwitch(_superClass));
+ }
+ for (Constraint _ownedRule : in.getOwnedRule()) {
+ out.getOwnedRule().add((Constraint) doSwitch(_ownedRule));
+ }
+ for (Class _nestedType : in.getNestedType()) {
+ out.getNestedType().add((Class) doSwitch(_nestedType));
+ }
+ for (Behavior _ownedBehavior : in.getOwnedBehavior()) {
+ out.getOwnedBehavior().add((Behavior) doSwitch(_ownedBehavior));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseDetail(Detail in) {
+ final Detail out = PivotFactory.eINSTANCE.createDetail();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.getValue().addAll(in.getValue());
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseDynamicBehavior(DynamicBehavior in) {
+ final DynamicBehavior out = PivotFactory.eINSTANCE.createDynamicBehavior();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setInstanceClassName(in.getInstanceClassName());
+ out.setIsAbstract(in.isAbstract());
+ out.setIsActive(in.isActive());
+ out.setIsInterface(in.isInterface());
+ TemplateSignature _ownedTemplateSignature = in.getOwnedTemplateSignature();
+ if (_ownedTemplateSignature != null)
+ out.setOwnedTemplateSignature((TemplateSignature) doSwitch(_ownedTemplateSignature));
+ TemplateableElement _unspecializedElement = in.getUnspecializedElement();
+ if (_unspecializedElement != null)
+ out.setUnspecializedElement((TemplateableElement) doSwitch(_unspecializedElement));
+ TemplateParameter _owningTemplateParameter = in.getOwningTemplateParameter();
+ if (_owningTemplateParameter != null)
+ out.setOwningTemplateParameter((TemplateParameter) doSwitch(_owningTemplateParameter));
+ TemplateParameter _templateParameter = in.getTemplateParameter();
+ if (_templateParameter != null)
+ out.setTemplateParameter((TemplateParameter) doSwitch(_templateParameter));
+ Package _package = in.getPackage();
+ if (_package != null)
+ out.setPackage((Package) doSwitch(_package));
+ Transition _transition = in.getTransition();
+ if (_transition != null)
+ out.setTransition((Transition) doSwitch(_transition));
+ Type _metaType = in.getMetaType();
+ if (_metaType != null)
+ out.setMetaType((Type) doSwitch(_metaType));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (TemplateBinding _templateBinding : in.getTemplateBinding()) {
+ out.getTemplateBinding().add((TemplateBinding) doSwitch(_templateBinding));
+ }
+ for (TypeExtension _extendedBys : in.getExtendedBys()) {
+ out.getExtendedBys().add((TypeExtension) doSwitch(_extendedBys));
+ }
+ for (Property _ownedAttribute : in.getOwnedAttribute()) {
+ out.getOwnedAttribute().add((Property) doSwitch(_ownedAttribute));
+ }
+ for (Constraint _ownedInvariant : in.getOwnedInvariant()) {
+ out.getOwnedInvariant().add((Constraint) doSwitch(_ownedInvariant));
+ }
+ for (Operation _ownedOperation : in.getOwnedOperation()) {
+ out.getOwnedOperation().add((Operation) doSwitch(_ownedOperation));
+ }
+ for (Type _superClass : in.getSuperClass()) {
+ out.getSuperClass().add((Type) doSwitch(_superClass));
+ }
+ for (Constraint _ownedRule : in.getOwnedRule()) {
+ out.getOwnedRule().add((Constraint) doSwitch(_ownedRule));
+ }
+ for (Class _nestedType : in.getNestedType()) {
+ out.getNestedType().add((Class) doSwitch(_nestedType));
+ }
+ for (Behavior _ownedBehavior : in.getOwnedBehavior()) {
+ out.getOwnedBehavior().add((Behavior) doSwitch(_ownedBehavior));
+ }
+ for (DynamicProperty _ownedProperty : in.getOwnedProperty()) {
+ out.getOwnedProperty().add((DynamicProperty) doSwitch(_ownedProperty));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseDynamicElement(DynamicElement in) {
+ final DynamicElement out = PivotFactory.eINSTANCE.createDynamicElement();
+ assert out != null;
+ transformation.addOrphan(out);
+ Type _metaType = in.getMetaType();
+ if (_metaType != null)
+ out.setMetaType((Type) doSwitch(_metaType));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseDynamicProperty(DynamicProperty in) {
+ final DynamicProperty out = PivotFactory.eINSTANCE.createDynamicProperty();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setDefault(in.getDefault());
+ Property _referredProperty = in.getReferredProperty();
+ if (_referredProperty != null)
+ out.setReferredProperty((Property) doSwitch(_referredProperty));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseDynamicType(DynamicType in) {
+ final DynamicType out = PivotFactory.eINSTANCE.createDynamicType();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setInstanceClassName(in.getInstanceClassName());
+ TemplateSignature _ownedTemplateSignature = in.getOwnedTemplateSignature();
+ if (_ownedTemplateSignature != null)
+ out.setOwnedTemplateSignature((TemplateSignature) doSwitch(_ownedTemplateSignature));
+ TemplateableElement _unspecializedElement = in.getUnspecializedElement();
+ if (_unspecializedElement != null)
+ out.setUnspecializedElement((TemplateableElement) doSwitch(_unspecializedElement));
+ TemplateParameter _owningTemplateParameter = in.getOwningTemplateParameter();
+ if (_owningTemplateParameter != null)
+ out.setOwningTemplateParameter((TemplateParameter) doSwitch(_owningTemplateParameter));
+ TemplateParameter _templateParameter = in.getTemplateParameter();
+ if (_templateParameter != null)
+ out.setTemplateParameter((TemplateParameter) doSwitch(_templateParameter));
+ Package _package = in.getPackage();
+ if (_package != null)
+ out.setPackage((Package) doSwitch(_package));
+ Type _metaType = in.getMetaType();
+ if (_metaType != null)
+ out.setMetaType((Type) doSwitch(_metaType));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (TemplateBinding _templateBinding : in.getTemplateBinding()) {
+ out.getTemplateBinding().add((TemplateBinding) doSwitch(_templateBinding));
+ }
+ for (TypeExtension _extendedBys : in.getExtendedBys()) {
+ out.getExtendedBys().add((TypeExtension) doSwitch(_extendedBys));
+ }
+ for (Property _ownedAttribute : in.getOwnedAttribute()) {
+ out.getOwnedAttribute().add((Property) doSwitch(_ownedAttribute));
+ }
+ for (Constraint _ownedInvariant : in.getOwnedInvariant()) {
+ out.getOwnedInvariant().add((Constraint) doSwitch(_ownedInvariant));
+ }
+ for (Operation _ownedOperation : in.getOwnedOperation()) {
+ out.getOwnedOperation().add((Operation) doSwitch(_ownedOperation));
+ }
+ for (Type _superClass : in.getSuperClass()) {
+ out.getSuperClass().add((Type) doSwitch(_superClass));
+ }
+ for (DynamicProperty _ownedProperty : in.getOwnedProperty()) {
+ out.getOwnedProperty().add((DynamicProperty) doSwitch(_ownedProperty));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseElementExtension(ElementExtension in) {
+ final ElementExtension out = PivotFactory.eINSTANCE.createElementExtension();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setInstanceClassName(in.getInstanceClassName());
+ out.setIsApplied(in.isApplied());
+ out.setIsRequired(in.isRequired());
+ TemplateSignature _ownedTemplateSignature = in.getOwnedTemplateSignature();
+ if (_ownedTemplateSignature != null)
+ out.setOwnedTemplateSignature((TemplateSignature) doSwitch(_ownedTemplateSignature));
+ TemplateableElement _unspecializedElement = in.getUnspecializedElement();
+ if (_unspecializedElement != null)
+ out.setUnspecializedElement((TemplateableElement) doSwitch(_unspecializedElement));
+ TemplateParameter _owningTemplateParameter = in.getOwningTemplateParameter();
+ if (_owningTemplateParameter != null)
+ out.setOwningTemplateParameter((TemplateParameter) doSwitch(_owningTemplateParameter));
+ TemplateParameter _templateParameter = in.getTemplateParameter();
+ if (_templateParameter != null)
+ out.setTemplateParameter((TemplateParameter) doSwitch(_templateParameter));
+ Package _package = in.getPackage();
+ if (_package != null)
+ out.setPackage((Package) doSwitch(_package));
+ Element _base = in.getBase();
+ if (_base != null)
+ out.setBase((Element) doSwitch(_base));
+ Stereotype _stereotype = in.getStereotype();
+ if (_stereotype != null)
+ out.setStereotype((Stereotype) doSwitch(_stereotype));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (TemplateBinding _templateBinding : in.getTemplateBinding()) {
+ out.getTemplateBinding().add((TemplateBinding) doSwitch(_templateBinding));
+ }
+ for (TypeExtension _extendedBys : in.getExtendedBys()) {
+ out.getExtendedBys().add((TypeExtension) doSwitch(_extendedBys));
+ }
+ for (Property _ownedAttribute : in.getOwnedAttribute()) {
+ out.getOwnedAttribute().add((Property) doSwitch(_ownedAttribute));
+ }
+ for (Constraint _ownedInvariant : in.getOwnedInvariant()) {
+ out.getOwnedInvariant().add((Constraint) doSwitch(_ownedInvariant));
+ }
+ for (Operation _ownedOperation : in.getOwnedOperation()) {
+ out.getOwnedOperation().add((Operation) doSwitch(_ownedOperation));
+ }
+ for (Type _superClass : in.getSuperClass()) {
+ out.getSuperClass().add((Type) doSwitch(_superClass));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseEnumLiteralExp(EnumLiteralExp in) {
+ final EnumLiteralExp out = PivotFactory.eINSTANCE.createEnumLiteralExp();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ EnumerationLiteral _referredEnumLiteral = in.getReferredEnumLiteral();
+ if (_referredEnumLiteral != null)
+ out.setReferredEnumLiteral((EnumerationLiteral) doSwitch(_referredEnumLiteral));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseEnumeration(Enumeration in) {
+ final Enumeration out = PivotFactory.eINSTANCE.createEnumeration();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setInstanceClassName(in.getInstanceClassName());
+ out.setIsAbstract(in.isAbstract());
+ out.setIsActive(in.isActive());
+ out.setIsInterface(in.isInterface());
+ out.setIsSerializable(in.isSerializable());
+ TemplateSignature _ownedTemplateSignature = in.getOwnedTemplateSignature();
+ if (_ownedTemplateSignature != null)
+ out.setOwnedTemplateSignature((TemplateSignature) doSwitch(_ownedTemplateSignature));
+ TemplateableElement _unspecializedElement = in.getUnspecializedElement();
+ if (_unspecializedElement != null)
+ out.setUnspecializedElement((TemplateableElement) doSwitch(_unspecializedElement));
+ TemplateParameter _owningTemplateParameter = in.getOwningTemplateParameter();
+ if (_owningTemplateParameter != null)
+ out.setOwningTemplateParameter((TemplateParameter) doSwitch(_owningTemplateParameter));
+ TemplateParameter _templateParameter = in.getTemplateParameter();
+ if (_templateParameter != null)
+ out.setTemplateParameter((TemplateParameter) doSwitch(_templateParameter));
+ Package _package = in.getPackage();
+ if (_package != null)
+ out.setPackage((Package) doSwitch(_package));
+ Type _behavioralType = in.getBehavioralType();
+ if (_behavioralType != null)
+ out.setBehavioralType((Type) doSwitch(_behavioralType));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (TemplateBinding _templateBinding : in.getTemplateBinding()) {
+ out.getTemplateBinding().add((TemplateBinding) doSwitch(_templateBinding));
+ }
+ for (TypeExtension _extendedBys : in.getExtendedBys()) {
+ out.getExtendedBys().add((TypeExtension) doSwitch(_extendedBys));
+ }
+ for (Property _ownedAttribute : in.getOwnedAttribute()) {
+ out.getOwnedAttribute().add((Property) doSwitch(_ownedAttribute));
+ }
+ for (Constraint _ownedInvariant : in.getOwnedInvariant()) {
+ out.getOwnedInvariant().add((Constraint) doSwitch(_ownedInvariant));
+ }
+ for (Operation _ownedOperation : in.getOwnedOperation()) {
+ out.getOwnedOperation().add((Operation) doSwitch(_ownedOperation));
+ }
+ for (Type _superClass : in.getSuperClass()) {
+ out.getSuperClass().add((Type) doSwitch(_superClass));
+ }
+ for (Constraint _ownedRule : in.getOwnedRule()) {
+ out.getOwnedRule().add((Constraint) doSwitch(_ownedRule));
+ }
+ for (Class _nestedType : in.getNestedType()) {
+ out.getNestedType().add((Class) doSwitch(_nestedType));
+ }
+ for (Behavior _ownedBehavior : in.getOwnedBehavior()) {
+ out.getOwnedBehavior().add((Behavior) doSwitch(_ownedBehavior));
+ }
+ for (EnumerationLiteral _ownedLiteral : in.getOwnedLiteral()) {
+ out.getOwnedLiteral().add((EnumerationLiteral) doSwitch(_ownedLiteral));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseEnumerationLiteral(EnumerationLiteral in) {
+ final EnumerationLiteral out = PivotFactory.eINSTANCE.createEnumerationLiteral();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setValue(in.getValue());
+ Enumeration _enumeration = in.getEnumeration();
+ if (_enumeration != null)
+ out.setEnumeration((Enumeration) doSwitch(_enumeration));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseExpressionInOCL(ExpressionInOCL in) {
+ final ExpressionInOCL out = PivotFactory.eINSTANCE.createExpressionInOCL();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ TemplateParameter _owningTemplateParameter = in.getOwningTemplateParameter();
+ if (_owningTemplateParameter != null)
+ out.setOwningTemplateParameter((TemplateParameter) doSwitch(_owningTemplateParameter));
+ TemplateParameter _templateParameter = in.getTemplateParameter();
+ if (_templateParameter != null)
+ out.setTemplateParameter((TemplateParameter) doSwitch(_templateParameter));
+ ExpressionInOCL _ownedExpressionInOCL = in.getOwnedExpressionInOCL();
+ if (_ownedExpressionInOCL != null)
+ out.setOwnedExpressionInOCL((ExpressionInOCL) doSwitch(_ownedExpressionInOCL));
+ OCLExpression _bodyExpression = in.getBodyExpression();
+ if (_bodyExpression != null)
+ out.setBodyExpression((OCLExpression) doSwitch(_bodyExpression));
+ Variable _contextVariable = in.getContextVariable();
+ if (_contextVariable != null)
+ out.setContextVariable((Variable) doSwitch(_contextVariable));
+ Variable _resultVariable = in.getResultVariable();
+ if (_resultVariable != null)
+ out.setResultVariable((Variable) doSwitch(_resultVariable));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (Variable _parameterVariable : in.getParameterVariable()) {
+ out.getParameterVariable().add((Variable) doSwitch(_parameterVariable));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseFinalState(FinalState in) {
+ final FinalState out = PivotFactory.eINSTANCE.createFinalState();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsSubmachineState(in.isSubmachineState());
+ Region _container = in.getContainer();
+ if (_container != null)
+ out.setContainer((Region) doSwitch(_container));
+ Behavior _doActivity = in.getDoActivity();
+ if (_doActivity != null)
+ out.setDoActivity((Behavior) doSwitch(_doActivity));
+ Behavior _entry = in.getEntry();
+ if (_entry != null)
+ out.setEntry((Behavior) doSwitch(_entry));
+ Behavior _exit = in.getExit();
+ if (_exit != null)
+ out.setExit((Behavior) doSwitch(_exit));
+ State _redefinedState = in.getRedefinedState();
+ if (_redefinedState != null)
+ out.setRedefinedState((State) doSwitch(_redefinedState));
+ Constraint _stateInvariant = in.getStateInvariant();
+ if (_stateInvariant != null)
+ out.setStateInvariant((Constraint) doSwitch(_stateInvariant));
+ StateMachine _submachine = in.getSubmachine();
+ if (_submachine != null)
+ out.setSubmachine((StateMachine) doSwitch(_submachine));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (Transition _incoming : in.getIncoming()) {
+ out.getIncoming().add((Transition) doSwitch(_incoming));
+ }
+ for (Transition _outgoing : in.getOutgoing()) {
+ out.getOutgoing().add((Transition) doSwitch(_outgoing));
+ }
+ for (Constraint _ownedRule : in.getOwnedRule()) {
+ out.getOwnedRule().add((Constraint) doSwitch(_ownedRule));
+ }
+ for (ConnectionPointReference _connection : in.getConnection()) {
+ out.getConnection().add((ConnectionPointReference) doSwitch(_connection));
+ }
+ for (Pseudostate _connectionPoint : in.getConnectionPoint()) {
+ out.getConnectionPoint().add((Pseudostate) doSwitch(_connectionPoint));
+ }
+ for (Trigger _deferrableTrigger : in.getDeferrableTrigger()) {
+ out.getDeferrableTrigger().add((Trigger) doSwitch(_deferrableTrigger));
+ }
+ for (Region _region : in.getRegion()) {
+ out.getRegion().add((Region) doSwitch(_region));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseIfExp(IfExp in) {
+ final IfExp out = PivotFactory.eINSTANCE.createIfExp();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ OCLExpression _condition = in.getCondition();
+ if (_condition != null)
+ out.setCondition((OCLExpression) doSwitch(_condition));
+ OCLExpression _elseExpression = in.getElseExpression();
+ if (_elseExpression != null)
+ out.setElseExpression((OCLExpression) doSwitch(_elseExpression));
+ OCLExpression _thenExpression = in.getThenExpression();
+ if (_thenExpression != null)
+ out.setThenExpression((OCLExpression) doSwitch(_thenExpression));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseImport(Import in) {
+ final Import out = PivotFactory.eINSTANCE.createImport();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ Namespace _importedNamespace = in.getImportedNamespace();
+ if (_importedNamespace != null)
+ out.setImportedNamespace((Namespace) doSwitch(_importedNamespace));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseIntegerLiteralExp(IntegerLiteralExp in) {
+ final IntegerLiteralExp out = PivotFactory.eINSTANCE.createIntegerLiteralExp();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ out.setIntegerSymbol(in.getIntegerSymbol());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseInvalidLiteralExp(InvalidLiteralExp in) {
+ final InvalidLiteralExp out = PivotFactory.eINSTANCE.createInvalidLiteralExp();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseInvalidType(InvalidType in) {
+ final InvalidType out = PivotFactory.eINSTANCE.createInvalidType();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setInstanceClassName(in.getInstanceClassName());
+ out.setIsAbstract(in.isAbstract());
+ out.setIsActive(in.isActive());
+ out.setIsInterface(in.isInterface());
+ TemplateSignature _ownedTemplateSignature = in.getOwnedTemplateSignature();
+ if (_ownedTemplateSignature != null)
+ out.setOwnedTemplateSignature((TemplateSignature) doSwitch(_ownedTemplateSignature));
+ TemplateableElement _unspecializedElement = in.getUnspecializedElement();
+ if (_unspecializedElement != null)
+ out.setUnspecializedElement((TemplateableElement) doSwitch(_unspecializedElement));
+ TemplateParameter _owningTemplateParameter = in.getOwningTemplateParameter();
+ if (_owningTemplateParameter != null)
+ out.setOwningTemplateParameter((TemplateParameter) doSwitch(_owningTemplateParameter));
+ TemplateParameter _templateParameter = in.getTemplateParameter();
+ if (_templateParameter != null)
+ out.setTemplateParameter((TemplateParameter) doSwitch(_templateParameter));
+ Package _package = in.getPackage();
+ if (_package != null)
+ out.setPackage((Package) doSwitch(_package));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (TemplateBinding _templateBinding : in.getTemplateBinding()) {
+ out.getTemplateBinding().add((TemplateBinding) doSwitch(_templateBinding));
+ }
+ for (TypeExtension _extendedBys : in.getExtendedBys()) {
+ out.getExtendedBys().add((TypeExtension) doSwitch(_extendedBys));
+ }
+ for (Property _ownedAttribute : in.getOwnedAttribute()) {
+ out.getOwnedAttribute().add((Property) doSwitch(_ownedAttribute));
+ }
+ for (Constraint _ownedInvariant : in.getOwnedInvariant()) {
+ out.getOwnedInvariant().add((Constraint) doSwitch(_ownedInvariant));
+ }
+ for (Operation _ownedOperation : in.getOwnedOperation()) {
+ out.getOwnedOperation().add((Operation) doSwitch(_ownedOperation));
+ }
+ for (Type _superClass : in.getSuperClass()) {
+ out.getSuperClass().add((Type) doSwitch(_superClass));
+ }
+ for (Constraint _ownedRule : in.getOwnedRule()) {
+ out.getOwnedRule().add((Constraint) doSwitch(_ownedRule));
+ }
+ for (Class _nestedType : in.getNestedType()) {
+ out.getNestedType().add((Class) doSwitch(_nestedType));
+ }
+ for (Behavior _ownedBehavior : in.getOwnedBehavior()) {
+ out.getOwnedBehavior().add((Behavior) doSwitch(_ownedBehavior));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseIterateExp(IterateExp in) {
+ final IterateExp out = PivotFactory.eINSTANCE.createIterateExp();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ out.setImplicit(in.isImplicit());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ OCLExpression _source = in.getSource();
+ if (_source != null)
+ out.setSource((OCLExpression) doSwitch(_source));
+ OCLExpression _body = in.getBody();
+ if (_body != null)
+ out.setBody((OCLExpression) doSwitch(_body));
+ Iteration _referredIteration = in.getReferredIteration();
+ if (_referredIteration != null)
+ out.setReferredIteration((Iteration) doSwitch(_referredIteration));
+ Variable _result = in.getResult();
+ if (_result != null)
+ out.setResult((Variable) doSwitch(_result));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (Variable _iterator : in.getIterator()) {
+ out.getIterator().add((Variable) doSwitch(_iterator));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseIteration(Iteration in) {
+ final Iteration out = PivotFactory.eINSTANCE.createIteration();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ out.setImplementation(in.getImplementation());
+ out.setImplementationClass(in.getImplementationClass());
+ out.setIsInvalidating(in.isInvalidating());
+ out.setIsValidating(in.isValidating());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ TemplateSignature _ownedTemplateSignature = in.getOwnedTemplateSignature();
+ if (_ownedTemplateSignature != null)
+ out.setOwnedTemplateSignature((TemplateSignature) doSwitch(_ownedTemplateSignature));
+ TemplateableElement _unspecializedElement = in.getUnspecializedElement();
+ if (_unspecializedElement != null)
+ out.setUnspecializedElement((TemplateableElement) doSwitch(_unspecializedElement));
+ TemplateParameter _owningTemplateParameter = in.getOwningTemplateParameter();
+ if (_owningTemplateParameter != null)
+ out.setOwningTemplateParameter((TemplateParameter) doSwitch(_owningTemplateParameter));
+ TemplateParameter _templateParameter = in.getTemplateParameter();
+ if (_templateParameter != null)
+ out.setTemplateParameter((TemplateParameter) doSwitch(_templateParameter));
+ OpaqueExpression _bodyExpression = in.getBodyExpression();
+ if (_bodyExpression != null)
+ out.setBodyExpression((OpaqueExpression) doSwitch(_bodyExpression));
+ Type _owningType = in.getOwningType();
+ if (_owningType != null)
+ out.setOwningType((Type) doSwitch(_owningType));
+ Precedence _precedence = in.getPrecedence();
+ if (_precedence != null)
+ out.setPrecedence((Precedence) doSwitch(_precedence));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (Constraint _ownedRule : in.getOwnedRule()) {
+ out.getOwnedRule().add((Constraint) doSwitch(_ownedRule));
+ }
+ for (TemplateBinding _templateBinding : in.getTemplateBinding()) {
+ out.getTemplateBinding().add((TemplateBinding) doSwitch(_templateBinding));
+ }
+ for (Parameter _ownedParameter : in.getOwnedParameter()) {
+ out.getOwnedParameter().add((Parameter) doSwitch(_ownedParameter));
+ }
+ for (Constraint _postcondition : in.getPostcondition()) {
+ out.getPostcondition().add((Constraint) doSwitch(_postcondition));
+ }
+ for (Constraint _precondition : in.getPrecondition()) {
+ out.getPrecondition().add((Constraint) doSwitch(_precondition));
+ }
+ for (Type _raisedException : in.getRaisedException()) {
+ out.getRaisedException().add((Type) doSwitch(_raisedException));
+ }
+ for (Operation _redefinedOperation : in.getRedefinedOperation()) {
+ out.getRedefinedOperation().add((Operation) doSwitch(_redefinedOperation));
+ }
+ for (Parameter _ownedAccumulator : in.getOwnedAccumulator()) {
+ out.getOwnedAccumulator().add((Parameter) doSwitch(_ownedAccumulator));
+ }
+ for (Parameter _ownedIterator : in.getOwnedIterator()) {
+ out.getOwnedIterator().add((Parameter) doSwitch(_ownedIterator));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseIteratorExp(IteratorExp in) {
+ final IteratorExp out = PivotFactory.eINSTANCE.createIteratorExp();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ out.setImplicit(in.isImplicit());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ OCLExpression _source = in.getSource();
+ if (_source != null)
+ out.setSource((OCLExpression) doSwitch(_source));
+ OCLExpression _body = in.getBody();
+ if (_body != null)
+ out.setBody((OCLExpression) doSwitch(_body));
+ Iteration _referredIteration = in.getReferredIteration();
+ if (_referredIteration != null)
+ out.setReferredIteration((Iteration) doSwitch(_referredIteration));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (Variable _iterator : in.getIterator()) {
+ out.getIterator().add((Variable) doSwitch(_iterator));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseLambdaType(LambdaType in) {
+ final LambdaType out = PivotFactory.eINSTANCE.createLambdaType();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setInstanceClassName(in.getInstanceClassName());
+ out.setIsAbstract(in.isAbstract());
+ out.setIsActive(in.isActive());
+ out.setIsInterface(in.isInterface());
+ out.setIsSerializable(in.isSerializable());
+ TemplateSignature _ownedTemplateSignature = in.getOwnedTemplateSignature();
+ if (_ownedTemplateSignature != null)
+ out.setOwnedTemplateSignature((TemplateSignature) doSwitch(_ownedTemplateSignature));
+ TemplateableElement _unspecializedElement = in.getUnspecializedElement();
+ if (_unspecializedElement != null)
+ out.setUnspecializedElement((TemplateableElement) doSwitch(_unspecializedElement));
+ TemplateParameter _owningTemplateParameter = in.getOwningTemplateParameter();
+ if (_owningTemplateParameter != null)
+ out.setOwningTemplateParameter((TemplateParameter) doSwitch(_owningTemplateParameter));
+ TemplateParameter _templateParameter = in.getTemplateParameter();
+ if (_templateParameter != null)
+ out.setTemplateParameter((TemplateParameter) doSwitch(_templateParameter));
+ Package _package = in.getPackage();
+ if (_package != null)
+ out.setPackage((Package) doSwitch(_package));
+ Type _behavioralType = in.getBehavioralType();
+ if (_behavioralType != null)
+ out.setBehavioralType((Type) doSwitch(_behavioralType));
+ Type _contextType = in.getContextType();
+ if (_contextType != null)
+ out.setContextType((Type) doSwitch(_contextType));
+ Type _resultType = in.getResultType();
+ if (_resultType != null)
+ out.setResultType((Type) doSwitch(_resultType));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (TemplateBinding _templateBinding : in.getTemplateBinding()) {
+ out.getTemplateBinding().add((TemplateBinding) doSwitch(_templateBinding));
+ }
+ for (TypeExtension _extendedBys : in.getExtendedBys()) {
+ out.getExtendedBys().add((TypeExtension) doSwitch(_extendedBys));
+ }
+ for (Property _ownedAttribute : in.getOwnedAttribute()) {
+ out.getOwnedAttribute().add((Property) doSwitch(_ownedAttribute));
+ }
+ for (Constraint _ownedInvariant : in.getOwnedInvariant()) {
+ out.getOwnedInvariant().add((Constraint) doSwitch(_ownedInvariant));
+ }
+ for (Operation _ownedOperation : in.getOwnedOperation()) {
+ out.getOwnedOperation().add((Operation) doSwitch(_ownedOperation));
+ }
+ for (Type _superClass : in.getSuperClass()) {
+ out.getSuperClass().add((Type) doSwitch(_superClass));
+ }
+ for (Constraint _ownedRule : in.getOwnedRule()) {
+ out.getOwnedRule().add((Constraint) doSwitch(_ownedRule));
+ }
+ for (Class _nestedType : in.getNestedType()) {
+ out.getNestedType().add((Class) doSwitch(_nestedType));
+ }
+ for (Behavior _ownedBehavior : in.getOwnedBehavior()) {
+ out.getOwnedBehavior().add((Behavior) doSwitch(_ownedBehavior));
+ }
+ for (Type _parameterType : in.getParameterType()) {
+ out.getParameterType().add((Type) doSwitch(_parameterType));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseLetExp(LetExp in) {
+ final LetExp out = PivotFactory.eINSTANCE.createLetExp();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ OCLExpression _in = in.getIn();
+ if (_in != null)
+ out.setIn((OCLExpression) doSwitch(_in));
+ Variable _variable = in.getVariable();
+ if (_variable != null)
+ out.setVariable((Variable) doSwitch(_variable));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseLibrary(Library in) {
+ final Library out = PivotFactory.eINSTANCE.createLibrary();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setNsPrefix(in.getNsPrefix());
+ out.setNsURI(in.getNsURI());
+ TemplateSignature _ownedTemplateSignature = in.getOwnedTemplateSignature();
+ if (_ownedTemplateSignature != null)
+ out.setOwnedTemplateSignature((TemplateSignature) doSwitch(_ownedTemplateSignature));
+ TemplateableElement _unspecializedElement = in.getUnspecializedElement();
+ if (_unspecializedElement != null)
+ out.setUnspecializedElement((TemplateableElement) doSwitch(_unspecializedElement));
+ Package _nestingPackage = in.getNestingPackage();
+ if (_nestingPackage != null)
+ out.setNestingPackage((Package) doSwitch(_nestingPackage));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (Constraint _ownedRule : in.getOwnedRule()) {
+ out.getOwnedRule().add((Constraint) doSwitch(_ownedRule));
+ }
+ for (TemplateBinding _templateBinding : in.getTemplateBinding()) {
+ out.getTemplateBinding().add((TemplateBinding) doSwitch(_templateBinding));
+ }
+ for (Package _importedPackage : in.getImportedPackage()) {
+ out.getImportedPackage().add((Package) doSwitch(_importedPackage));
+ }
+ for (Package _nestedPackage : in.getNestedPackage()) {
+ out.getNestedPackage().add((Package) doSwitch(_nestedPackage));
+ }
+ for (Type _ownedType : in.getOwnedType()) {
+ out.getOwnedType().add((Type) doSwitch(_ownedType));
+ }
+ for (ProfileApplication _profileApplication : in.getProfileApplication()) {
+ out.getProfileApplication().add((ProfileApplication) doSwitch(_profileApplication));
+ }
+ for (Precedence _ownedPrecedence : in.getOwnedPrecedence()) {
+ out.getOwnedPrecedence().add((Precedence) doSwitch(_ownedPrecedence));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseMessageExp(MessageExp in) {
+ final MessageExp out = PivotFactory.eINSTANCE.createMessageExp();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ CallOperationAction _calledOperation = in.getCalledOperation();
+ if (_calledOperation != null)
+ out.setCalledOperation((CallOperationAction) doSwitch(_calledOperation));
+ SendSignalAction _sentSignal = in.getSentSignal();
+ if (_sentSignal != null)
+ out.setSentSignal((SendSignalAction) doSwitch(_sentSignal));
+ OCLExpression _target = in.getTarget();
+ if (_target != null)
+ out.setTarget((OCLExpression) doSwitch(_target));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (OCLExpression _argument : in.getArgument()) {
+ out.getArgument().add((OCLExpression) doSwitch(_argument));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseMessageType(MessageType in) {
+ final MessageType out = PivotFactory.eINSTANCE.createMessageType();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setInstanceClassName(in.getInstanceClassName());
+ TemplateSignature _ownedTemplateSignature = in.getOwnedTemplateSignature();
+ if (_ownedTemplateSignature != null)
+ out.setOwnedTemplateSignature((TemplateSignature) doSwitch(_ownedTemplateSignature));
+ TemplateableElement _unspecializedElement = in.getUnspecializedElement();
+ if (_unspecializedElement != null)
+ out.setUnspecializedElement((TemplateableElement) doSwitch(_unspecializedElement));
+ TemplateParameter _owningTemplateParameter = in.getOwningTemplateParameter();
+ if (_owningTemplateParameter != null)
+ out.setOwningTemplateParameter((TemplateParameter) doSwitch(_owningTemplateParameter));
+ TemplateParameter _templateParameter = in.getTemplateParameter();
+ if (_templateParameter != null)
+ out.setTemplateParameter((TemplateParameter) doSwitch(_templateParameter));
+ Package _package = in.getPackage();
+ if (_package != null)
+ out.setPackage((Package) doSwitch(_package));
+ Operation _referredOperation = in.getReferredOperation();
+ if (_referredOperation != null)
+ out.setReferredOperation((Operation) doSwitch(_referredOperation));
+ Signal _referredSignal = in.getReferredSignal();
+ if (_referredSignal != null)
+ out.setReferredSignal((Signal) doSwitch(_referredSignal));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (TemplateBinding _templateBinding : in.getTemplateBinding()) {
+ out.getTemplateBinding().add((TemplateBinding) doSwitch(_templateBinding));
+ }
+ for (TypeExtension _extendedBys : in.getExtendedBys()) {
+ out.getExtendedBys().add((TypeExtension) doSwitch(_extendedBys));
+ }
+ for (Property _ownedAttribute : in.getOwnedAttribute()) {
+ out.getOwnedAttribute().add((Property) doSwitch(_ownedAttribute));
+ }
+ for (Constraint _ownedInvariant : in.getOwnedInvariant()) {
+ out.getOwnedInvariant().add((Constraint) doSwitch(_ownedInvariant));
+ }
+ for (Operation _ownedOperation : in.getOwnedOperation()) {
+ out.getOwnedOperation().add((Operation) doSwitch(_ownedOperation));
+ }
+ for (Type _superClass : in.getSuperClass()) {
+ out.getSuperClass().add((Type) doSwitch(_superClass));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseNullLiteralExp(NullLiteralExp in) {
+ final NullLiteralExp out = PivotFactory.eINSTANCE.createNullLiteralExp();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseOpaqueExpression(OpaqueExpression in) {
+ final OpaqueExpression out = PivotFactory.eINSTANCE.createOpaqueExpression();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ out.getBody().addAll(in.getBody());
+ out.getLanguage().addAll(in.getLanguage());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ TemplateParameter _owningTemplateParameter = in.getOwningTemplateParameter();
+ if (_owningTemplateParameter != null)
+ out.setOwningTemplateParameter((TemplateParameter) doSwitch(_owningTemplateParameter));
+ TemplateParameter _templateParameter = in.getTemplateParameter();
+ if (_templateParameter != null)
+ out.setTemplateParameter((TemplateParameter) doSwitch(_templateParameter));
+ ExpressionInOCL _ownedExpressionInOCL = in.getOwnedExpressionInOCL();
+ if (_ownedExpressionInOCL != null)
+ out.setOwnedExpressionInOCL((ExpressionInOCL) doSwitch(_ownedExpressionInOCL));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseOperation(Operation in) {
+ final Operation out = PivotFactory.eINSTANCE.createOperation();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ out.setImplementation(in.getImplementation());
+ out.setImplementationClass(in.getImplementationClass());
+ out.setIsInvalidating(in.isInvalidating());
+ out.setIsValidating(in.isValidating());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ TemplateSignature _ownedTemplateSignature = in.getOwnedTemplateSignature();
+ if (_ownedTemplateSignature != null)
+ out.setOwnedTemplateSignature((TemplateSignature) doSwitch(_ownedTemplateSignature));
+ TemplateableElement _unspecializedElement = in.getUnspecializedElement();
+ if (_unspecializedElement != null)
+ out.setUnspecializedElement((TemplateableElement) doSwitch(_unspecializedElement));
+ TemplateParameter _owningTemplateParameter = in.getOwningTemplateParameter();
+ if (_owningTemplateParameter != null)
+ out.setOwningTemplateParameter((TemplateParameter) doSwitch(_owningTemplateParameter));
+ TemplateParameter _templateParameter = in.getTemplateParameter();
+ if (_templateParameter != null)
+ out.setTemplateParameter((TemplateParameter) doSwitch(_templateParameter));
+ OpaqueExpression _bodyExpression = in.getBodyExpression();
+ if (_bodyExpression != null)
+ out.setBodyExpression((OpaqueExpression) doSwitch(_bodyExpression));
+ Type _owningType = in.getOwningType();
+ if (_owningType != null)
+ out.setOwningType((Type) doSwitch(_owningType));
+ Precedence _precedence = in.getPrecedence();
+ if (_precedence != null)
+ out.setPrecedence((Precedence) doSwitch(_precedence));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (Constraint _ownedRule : in.getOwnedRule()) {
+ out.getOwnedRule().add((Constraint) doSwitch(_ownedRule));
+ }
+ for (TemplateBinding _templateBinding : in.getTemplateBinding()) {
+ out.getTemplateBinding().add((TemplateBinding) doSwitch(_templateBinding));
+ }
+ for (Parameter _ownedParameter : in.getOwnedParameter()) {
+ out.getOwnedParameter().add((Parameter) doSwitch(_ownedParameter));
+ }
+ for (Constraint _postcondition : in.getPostcondition()) {
+ out.getPostcondition().add((Constraint) doSwitch(_postcondition));
+ }
+ for (Constraint _precondition : in.getPrecondition()) {
+ out.getPrecondition().add((Constraint) doSwitch(_precondition));
+ }
+ for (Type _raisedException : in.getRaisedException()) {
+ out.getRaisedException().add((Type) doSwitch(_raisedException));
+ }
+ for (Operation _redefinedOperation : in.getRedefinedOperation()) {
+ out.getRedefinedOperation().add((Operation) doSwitch(_redefinedOperation));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseOperationCallExp(OperationCallExp in) {
+ final OperationCallExp out = PivotFactory.eINSTANCE.createOperationCallExp();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ out.setImplicit(in.isImplicit());
+ out.setIsPre(in.isPre());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ OCLExpression _source = in.getSource();
+ if (_source != null)
+ out.setSource((OCLExpression) doSwitch(_source));
+ Operation _referredOperation = in.getReferredOperation();
+ if (_referredOperation != null)
+ out.setReferredOperation((Operation) doSwitch(_referredOperation));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (OCLExpression _argument : in.getArgument()) {
+ out.getArgument().add((OCLExpression) doSwitch(_argument));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseOperationTemplateParameter(OperationTemplateParameter in) {
+ final OperationTemplateParameter out = PivotFactory.eINSTANCE.createOperationTemplateParameter();
+ assert out != null;
+ transformation.addOrphan(out);
+ ParameterableElement _default = in.getDefault();
+ if (_default != null)
+ out.setDefault((ParameterableElement) doSwitch(_default));
+ ParameterableElement _ownedDefault = in.getOwnedDefault();
+ if (_ownedDefault != null)
+ out.setOwnedDefault((ParameterableElement) doSwitch(_ownedDefault));
+ ParameterableElement _ownedParameteredElement = in.getOwnedParameteredElement();
+ if (_ownedParameteredElement != null)
+ out.setOwnedParameteredElement((ParameterableElement) doSwitch(_ownedParameteredElement));
+ ParameterableElement _parameteredElement = in.getParameteredElement();
+ if (_parameteredElement != null)
+ out.setParameteredElement((ParameterableElement) doSwitch(_parameteredElement));
+ TemplateSignature _signature = in.getSignature();
+ if (_signature != null)
+ out.setSignature((TemplateSignature) doSwitch(_signature));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseOppositePropertyCallExp(OppositePropertyCallExp in) {
+ final OppositePropertyCallExp out = PivotFactory.eINSTANCE.createOppositePropertyCallExp();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ out.setImplicit(in.isImplicit());
+ out.setIsPre(in.isPre());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ OCLExpression _source = in.getSource();
+ if (_source != null)
+ out.setSource((OCLExpression) doSwitch(_source));
+ Property _navigationSource = in.getNavigationSource();
+ if (_navigationSource != null)
+ out.setNavigationSource((Property) doSwitch(_navigationSource));
+ Property _referredProperty = in.getReferredProperty();
+ if (_referredProperty != null)
+ out.setReferredProperty((Property) doSwitch(_referredProperty));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (OCLExpression _qualifier : in.getQualifier()) {
+ out.getQualifier().add((OCLExpression) doSwitch(_qualifier));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseOrderedSetType(OrderedSetType in) {
+ final OrderedSetType out = PivotFactory.eINSTANCE.createOrderedSetType();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setInstanceClassName(in.getInstanceClassName());
+ out.setIsAbstract(in.isAbstract());
+ out.setIsActive(in.isActive());
+ out.setIsInterface(in.isInterface());
+ out.setIsSerializable(in.isSerializable());
+ out.setLower(in.getLower());
+ out.setUpper(in.getUpper());
+ TemplateSignature _ownedTemplateSignature = in.getOwnedTemplateSignature();
+ if (_ownedTemplateSignature != null)
+ out.setOwnedTemplateSignature((TemplateSignature) doSwitch(_ownedTemplateSignature));
+ TemplateableElement _unspecializedElement = in.getUnspecializedElement();
+ if (_unspecializedElement != null)
+ out.setUnspecializedElement((TemplateableElement) doSwitch(_unspecializedElement));
+ TemplateParameter _owningTemplateParameter = in.getOwningTemplateParameter();
+ if (_owningTemplateParameter != null)
+ out.setOwningTemplateParameter((TemplateParameter) doSwitch(_owningTemplateParameter));
+ TemplateParameter _templateParameter = in.getTemplateParameter();
+ if (_templateParameter != null)
+ out.setTemplateParameter((TemplateParameter) doSwitch(_templateParameter));
+ Package _package = in.getPackage();
+ if (_package != null)
+ out.setPackage((Package) doSwitch(_package));
+ Type _behavioralType = in.getBehavioralType();
+ if (_behavioralType != null)
+ out.setBehavioralType((Type) doSwitch(_behavioralType));
+ Type _elementType = in.getElementType();
+ if (_elementType != null)
+ out.setElementType((Type) doSwitch(_elementType));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (TemplateBinding _templateBinding : in.getTemplateBinding()) {
+ out.getTemplateBinding().add((TemplateBinding) doSwitch(_templateBinding));
+ }
+ for (TypeExtension _extendedBys : in.getExtendedBys()) {
+ out.getExtendedBys().add((TypeExtension) doSwitch(_extendedBys));
+ }
+ for (Property _ownedAttribute : in.getOwnedAttribute()) {
+ out.getOwnedAttribute().add((Property) doSwitch(_ownedAttribute));
+ }
+ for (Constraint _ownedInvariant : in.getOwnedInvariant()) {
+ out.getOwnedInvariant().add((Constraint) doSwitch(_ownedInvariant));
+ }
+ for (Operation _ownedOperation : in.getOwnedOperation()) {
+ out.getOwnedOperation().add((Operation) doSwitch(_ownedOperation));
+ }
+ for (Type _superClass : in.getSuperClass()) {
+ out.getSuperClass().add((Type) doSwitch(_superClass));
+ }
+ for (Constraint _ownedRule : in.getOwnedRule()) {
+ out.getOwnedRule().add((Constraint) doSwitch(_ownedRule));
+ }
+ for (Class _nestedType : in.getNestedType()) {
+ out.getNestedType().add((Class) doSwitch(_nestedType));
+ }
+ for (Behavior _ownedBehavior : in.getOwnedBehavior()) {
+ out.getOwnedBehavior().add((Behavior) doSwitch(_ownedBehavior));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element casePackage(Package in) {
+ final Package out = PivotFactory.eINSTANCE.createPackage();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setNsPrefix(in.getNsPrefix());
+ out.setNsURI(in.getNsURI());
+ TemplateSignature _ownedTemplateSignature = in.getOwnedTemplateSignature();
+ if (_ownedTemplateSignature != null)
+ out.setOwnedTemplateSignature((TemplateSignature) doSwitch(_ownedTemplateSignature));
+ TemplateableElement _unspecializedElement = in.getUnspecializedElement();
+ if (_unspecializedElement != null)
+ out.setUnspecializedElement((TemplateableElement) doSwitch(_unspecializedElement));
+ Package _nestingPackage = in.getNestingPackage();
+ if (_nestingPackage != null)
+ out.setNestingPackage((Package) doSwitch(_nestingPackage));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (Constraint _ownedRule : in.getOwnedRule()) {
+ out.getOwnedRule().add((Constraint) doSwitch(_ownedRule));
+ }
+ for (TemplateBinding _templateBinding : in.getTemplateBinding()) {
+ out.getTemplateBinding().add((TemplateBinding) doSwitch(_templateBinding));
+ }
+ for (Package _importedPackage : in.getImportedPackage()) {
+ out.getImportedPackage().add((Package) doSwitch(_importedPackage));
+ }
+ for (Package _nestedPackage : in.getNestedPackage()) {
+ out.getNestedPackage().add((Package) doSwitch(_nestedPackage));
+ }
+ for (Type _ownedType : in.getOwnedType()) {
+ out.getOwnedType().add((Type) doSwitch(_ownedType));
+ }
+ for (ProfileApplication _profileApplication : in.getProfileApplication()) {
+ out.getProfileApplication().add((ProfileApplication) doSwitch(_profileApplication));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseParameter(Parameter in) {
+ final Parameter out = PivotFactory.eINSTANCE.createParameter();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ Operation _operation = in.getOperation();
+ if (_operation != null)
+ out.setOperation((Operation) doSwitch(_operation));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element casePrecedence(Precedence in) {
+ final Precedence out = PivotFactory.eINSTANCE.createPrecedence();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setAssociativity(in.getAssociativity());
+ out.setOrder(in.getOrder());
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element casePrimitiveType(PrimitiveType in) {
+ return in;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseProfile(Profile in) {
+ final Profile out = PivotFactory.eINSTANCE.createProfile();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setNsPrefix(in.getNsPrefix());
+ out.setNsURI(in.getNsURI());
+ TemplateSignature _ownedTemplateSignature = in.getOwnedTemplateSignature();
+ if (_ownedTemplateSignature != null)
+ out.setOwnedTemplateSignature((TemplateSignature) doSwitch(_ownedTemplateSignature));
+ TemplateableElement _unspecializedElement = in.getUnspecializedElement();
+ if (_unspecializedElement != null)
+ out.setUnspecializedElement((TemplateableElement) doSwitch(_unspecializedElement));
+ Package _nestingPackage = in.getNestingPackage();
+ if (_nestingPackage != null)
+ out.setNestingPackage((Package) doSwitch(_nestingPackage));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (Constraint _ownedRule : in.getOwnedRule()) {
+ out.getOwnedRule().add((Constraint) doSwitch(_ownedRule));
+ }
+ for (TemplateBinding _templateBinding : in.getTemplateBinding()) {
+ out.getTemplateBinding().add((TemplateBinding) doSwitch(_templateBinding));
+ }
+ for (Package _importedPackage : in.getImportedPackage()) {
+ out.getImportedPackage().add((Package) doSwitch(_importedPackage));
+ }
+ for (Package _nestedPackage : in.getNestedPackage()) {
+ out.getNestedPackage().add((Package) doSwitch(_nestedPackage));
+ }
+ for (Type _ownedType : in.getOwnedType()) {
+ out.getOwnedType().add((Type) doSwitch(_ownedType));
+ }
+ for (ProfileApplication _profileApplication : in.getProfileApplication()) {
+ out.getProfileApplication().add((ProfileApplication) doSwitch(_profileApplication));
+ }
+ for (ProfileApplication _application : in.getApplication()) {
+ out.getApplication().add((ProfileApplication) doSwitch(_application));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseProfileApplication(ProfileApplication in) {
+ final ProfileApplication out = PivotFactory.eINSTANCE.createProfileApplication();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStrict(in.isStrict());
+ Profile _appliedProfile = in.getAppliedProfile();
+ if (_appliedProfile != null)
+ out.setAppliedProfile((Profile) doSwitch(_appliedProfile));
+ Package _applyingPackage = in.getApplyingPackage();
+ if (_applyingPackage != null)
+ out.setApplyingPackage((Package) doSwitch(_applyingPackage));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseProperty(Property in) {
+ final Property out = PivotFactory.eINSTANCE.createProperty();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ out.setImplementation(in.getImplementation());
+ out.setImplementationClass(in.getImplementationClass());
+ out.setDefault(in.getDefault());
+ out.setImplicit(in.isImplicit());
+ out.setIsComposite(in.isComposite());
+ out.setIsDerived(in.isDerived());
+ out.setIsID(in.isID());
+ out.setIsReadOnly(in.isReadOnly());
+ out.setIsResolveProxies(in.isResolveProxies());
+ out.setIsTransient(in.isTransient());
+ out.setIsUnsettable(in.isUnsettable());
+ out.setIsVolatile(in.isVolatile());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ TemplateParameter _owningTemplateParameter = in.getOwningTemplateParameter();
+ if (_owningTemplateParameter != null)
+ out.setOwningTemplateParameter((TemplateParameter) doSwitch(_owningTemplateParameter));
+ TemplateParameter _templateParameter = in.getTemplateParameter();
+ if (_templateParameter != null)
+ out.setTemplateParameter((TemplateParameter) doSwitch(_templateParameter));
+ AssociationClass _associationClass = in.getAssociationClass();
+ if (_associationClass != null)
+ out.setAssociationClass((AssociationClass) doSwitch(_associationClass));
+ OpaqueExpression _defaultExpression = in.getDefaultExpression();
+ if (_defaultExpression != null)
+ out.setDefaultExpression((OpaqueExpression) doSwitch(_defaultExpression));
+ Property _opposite = in.getOpposite();
+ if (_opposite != null)
+ out.setOpposite((Property) doSwitch(_opposite));
+ Type _owningType = in.getOwningType();
+ if (_owningType != null)
+ out.setOwningType((Type) doSwitch(_owningType));
+ Property _referredProperty = in.getReferredProperty();
+ if (_referredProperty != null)
+ out.setReferredProperty((Property) doSwitch(_referredProperty));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (Property _keys : in.getKeys()) {
+ out.getKeys().add((Property) doSwitch(_keys));
+ }
+ for (Property _redefinedProperty : in.getRedefinedProperty()) {
+ out.getRedefinedProperty().add((Property) doSwitch(_redefinedProperty));
+ }
+ for (Property _subsettedProperty : in.getSubsettedProperty()) {
+ out.getSubsettedProperty().add((Property) doSwitch(_subsettedProperty));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element casePropertyCallExp(PropertyCallExp in) {
+ final PropertyCallExp out = PivotFactory.eINSTANCE.createPropertyCallExp();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ out.setImplicit(in.isImplicit());
+ out.setIsPre(in.isPre());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ OCLExpression _source = in.getSource();
+ if (_source != null)
+ out.setSource((OCLExpression) doSwitch(_source));
+ Property _navigationSource = in.getNavigationSource();
+ if (_navigationSource != null)
+ out.setNavigationSource((Property) doSwitch(_navigationSource));
+ Property _referredProperty = in.getReferredProperty();
+ if (_referredProperty != null)
+ out.setReferredProperty((Property) doSwitch(_referredProperty));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (OCLExpression _qualifier : in.getQualifier()) {
+ out.getQualifier().add((OCLExpression) doSwitch(_qualifier));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element casePseudostate(Pseudostate in) {
+ final Pseudostate out = PivotFactory.eINSTANCE.createPseudostate();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setKind(in.getKind());
+ Region _container = in.getContainer();
+ if (_container != null)
+ out.setContainer((Region) doSwitch(_container));
+ State _state = in.getState();
+ if (_state != null)
+ out.setState((State) doSwitch(_state));
+ StateMachine _stateMachine = in.getStateMachine();
+ if (_stateMachine != null)
+ out.setStateMachine((StateMachine) doSwitch(_stateMachine));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (Transition _incoming : in.getIncoming()) {
+ out.getIncoming().add((Transition) doSwitch(_incoming));
+ }
+ for (Transition _outgoing : in.getOutgoing()) {
+ out.getOutgoing().add((Transition) doSwitch(_outgoing));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseRealLiteralExp(RealLiteralExp in) {
+ final RealLiteralExp out = PivotFactory.eINSTANCE.createRealLiteralExp();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ out.setRealSymbol(in.getRealSymbol());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseRegion(Region in) {
+ final Region out = PivotFactory.eINSTANCE.createRegion();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ Region _extendedRegion = in.getExtendedRegion();
+ if (_extendedRegion != null)
+ out.setExtendedRegion((Region) doSwitch(_extendedRegion));
+ State _state = in.getState();
+ if (_state != null)
+ out.setState((State) doSwitch(_state));
+ StateMachine _stateMachine = in.getStateMachine();
+ if (_stateMachine != null)
+ out.setStateMachine((StateMachine) doSwitch(_stateMachine));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (Constraint _ownedRule : in.getOwnedRule()) {
+ out.getOwnedRule().add((Constraint) doSwitch(_ownedRule));
+ }
+ for (Vertex _subvertex : in.getSubvertex()) {
+ out.getSubvertex().add((Vertex) doSwitch(_subvertex));
+ }
+ for (Transition _transition : in.getTransition()) {
+ out.getTransition().add((Transition) doSwitch(_transition));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseRoot(Root in) {
+ final Root out = PivotFactory.eINSTANCE.createRoot();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setExternalURI(in.getExternalURI());
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (Constraint _ownedRule : in.getOwnedRule()) {
+ out.getOwnedRule().add((Constraint) doSwitch(_ownedRule));
+ }
+ for (Import _imports : in.getImports()) {
+ out.getImports().add((Import) doSwitch(_imports));
+ }
+ for (Package _nestedPackage : in.getNestedPackage()) {
+ out.getNestedPackage().add((Package) doSwitch(_nestedPackage));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseSelfType(SelfType in) {
+ final SelfType out = PivotFactory.eINSTANCE.createSelfType();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setInstanceClassName(in.getInstanceClassName());
+ out.setIsAbstract(in.isAbstract());
+ out.setIsActive(in.isActive());
+ out.setIsInterface(in.isInterface());
+ TemplateSignature _ownedTemplateSignature = in.getOwnedTemplateSignature();
+ if (_ownedTemplateSignature != null)
+ out.setOwnedTemplateSignature((TemplateSignature) doSwitch(_ownedTemplateSignature));
+ TemplateableElement _unspecializedElement = in.getUnspecializedElement();
+ if (_unspecializedElement != null)
+ out.setUnspecializedElement((TemplateableElement) doSwitch(_unspecializedElement));
+ TemplateParameter _owningTemplateParameter = in.getOwningTemplateParameter();
+ if (_owningTemplateParameter != null)
+ out.setOwningTemplateParameter((TemplateParameter) doSwitch(_owningTemplateParameter));
+ TemplateParameter _templateParameter = in.getTemplateParameter();
+ if (_templateParameter != null)
+ out.setTemplateParameter((TemplateParameter) doSwitch(_templateParameter));
+ Package _package = in.getPackage();
+ if (_package != null)
+ out.setPackage((Package) doSwitch(_package));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (TemplateBinding _templateBinding : in.getTemplateBinding()) {
+ out.getTemplateBinding().add((TemplateBinding) doSwitch(_templateBinding));
+ }
+ for (TypeExtension _extendedBys : in.getExtendedBys()) {
+ out.getExtendedBys().add((TypeExtension) doSwitch(_extendedBys));
+ }
+ for (Property _ownedAttribute : in.getOwnedAttribute()) {
+ out.getOwnedAttribute().add((Property) doSwitch(_ownedAttribute));
+ }
+ for (Constraint _ownedInvariant : in.getOwnedInvariant()) {
+ out.getOwnedInvariant().add((Constraint) doSwitch(_ownedInvariant));
+ }
+ for (Operation _ownedOperation : in.getOwnedOperation()) {
+ out.getOwnedOperation().add((Operation) doSwitch(_ownedOperation));
+ }
+ for (Type _superClass : in.getSuperClass()) {
+ out.getSuperClass().add((Type) doSwitch(_superClass));
+ }
+ for (Constraint _ownedRule : in.getOwnedRule()) {
+ out.getOwnedRule().add((Constraint) doSwitch(_ownedRule));
+ }
+ for (Class _nestedType : in.getNestedType()) {
+ out.getNestedType().add((Class) doSwitch(_nestedType));
+ }
+ for (Behavior _ownedBehavior : in.getOwnedBehavior()) {
+ out.getOwnedBehavior().add((Behavior) doSwitch(_ownedBehavior));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseSendSignalAction(SendSignalAction in) {
+ final SendSignalAction out = PivotFactory.eINSTANCE.createSendSignalAction();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ Signal _signal = in.getSignal();
+ if (_signal != null)
+ out.setSignal((Signal) doSwitch(_signal));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseSequenceType(SequenceType in) {
+ final SequenceType out = PivotFactory.eINSTANCE.createSequenceType();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setInstanceClassName(in.getInstanceClassName());
+ out.setIsAbstract(in.isAbstract());
+ out.setIsActive(in.isActive());
+ out.setIsInterface(in.isInterface());
+ out.setIsSerializable(in.isSerializable());
+ out.setLower(in.getLower());
+ out.setUpper(in.getUpper());
+ TemplateSignature _ownedTemplateSignature = in.getOwnedTemplateSignature();
+ if (_ownedTemplateSignature != null)
+ out.setOwnedTemplateSignature((TemplateSignature) doSwitch(_ownedTemplateSignature));
+ TemplateableElement _unspecializedElement = in.getUnspecializedElement();
+ if (_unspecializedElement != null)
+ out.setUnspecializedElement((TemplateableElement) doSwitch(_unspecializedElement));
+ TemplateParameter _owningTemplateParameter = in.getOwningTemplateParameter();
+ if (_owningTemplateParameter != null)
+ out.setOwningTemplateParameter((TemplateParameter) doSwitch(_owningTemplateParameter));
+ TemplateParameter _templateParameter = in.getTemplateParameter();
+ if (_templateParameter != null)
+ out.setTemplateParameter((TemplateParameter) doSwitch(_templateParameter));
+ Package _package = in.getPackage();
+ if (_package != null)
+ out.setPackage((Package) doSwitch(_package));
+ Type _behavioralType = in.getBehavioralType();
+ if (_behavioralType != null)
+ out.setBehavioralType((Type) doSwitch(_behavioralType));
+ Type _elementType = in.getElementType();
+ if (_elementType != null)
+ out.setElementType((Type) doSwitch(_elementType));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (TemplateBinding _templateBinding : in.getTemplateBinding()) {
+ out.getTemplateBinding().add((TemplateBinding) doSwitch(_templateBinding));
+ }
+ for (TypeExtension _extendedBys : in.getExtendedBys()) {
+ out.getExtendedBys().add((TypeExtension) doSwitch(_extendedBys));
+ }
+ for (Property _ownedAttribute : in.getOwnedAttribute()) {
+ out.getOwnedAttribute().add((Property) doSwitch(_ownedAttribute));
+ }
+ for (Constraint _ownedInvariant : in.getOwnedInvariant()) {
+ out.getOwnedInvariant().add((Constraint) doSwitch(_ownedInvariant));
+ }
+ for (Operation _ownedOperation : in.getOwnedOperation()) {
+ out.getOwnedOperation().add((Operation) doSwitch(_ownedOperation));
+ }
+ for (Type _superClass : in.getSuperClass()) {
+ out.getSuperClass().add((Type) doSwitch(_superClass));
+ }
+ for (Constraint _ownedRule : in.getOwnedRule()) {
+ out.getOwnedRule().add((Constraint) doSwitch(_ownedRule));
+ }
+ for (Class _nestedType : in.getNestedType()) {
+ out.getNestedType().add((Class) doSwitch(_nestedType));
+ }
+ for (Behavior _ownedBehavior : in.getOwnedBehavior()) {
+ out.getOwnedBehavior().add((Behavior) doSwitch(_ownedBehavior));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseSetType(SetType in) {
+ final SetType out = PivotFactory.eINSTANCE.createSetType();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setInstanceClassName(in.getInstanceClassName());
+ out.setIsAbstract(in.isAbstract());
+ out.setIsActive(in.isActive());
+ out.setIsInterface(in.isInterface());
+ out.setIsSerializable(in.isSerializable());
+ out.setLower(in.getLower());
+ out.setUpper(in.getUpper());
+ TemplateSignature _ownedTemplateSignature = in.getOwnedTemplateSignature();
+ if (_ownedTemplateSignature != null)
+ out.setOwnedTemplateSignature((TemplateSignature) doSwitch(_ownedTemplateSignature));
+ TemplateableElement _unspecializedElement = in.getUnspecializedElement();
+ if (_unspecializedElement != null)
+ out.setUnspecializedElement((TemplateableElement) doSwitch(_unspecializedElement));
+ TemplateParameter _owningTemplateParameter = in.getOwningTemplateParameter();
+ if (_owningTemplateParameter != null)
+ out.setOwningTemplateParameter((TemplateParameter) doSwitch(_owningTemplateParameter));
+ TemplateParameter _templateParameter = in.getTemplateParameter();
+ if (_templateParameter != null)
+ out.setTemplateParameter((TemplateParameter) doSwitch(_templateParameter));
+ Package _package = in.getPackage();
+ if (_package != null)
+ out.setPackage((Package) doSwitch(_package));
+ Type _behavioralType = in.getBehavioralType();
+ if (_behavioralType != null)
+ out.setBehavioralType((Type) doSwitch(_behavioralType));
+ Type _elementType = in.getElementType();
+ if (_elementType != null)
+ out.setElementType((Type) doSwitch(_elementType));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (TemplateBinding _templateBinding : in.getTemplateBinding()) {
+ out.getTemplateBinding().add((TemplateBinding) doSwitch(_templateBinding));
+ }
+ for (TypeExtension _extendedBys : in.getExtendedBys()) {
+ out.getExtendedBys().add((TypeExtension) doSwitch(_extendedBys));
+ }
+ for (Property _ownedAttribute : in.getOwnedAttribute()) {
+ out.getOwnedAttribute().add((Property) doSwitch(_ownedAttribute));
+ }
+ for (Constraint _ownedInvariant : in.getOwnedInvariant()) {
+ out.getOwnedInvariant().add((Constraint) doSwitch(_ownedInvariant));
+ }
+ for (Operation _ownedOperation : in.getOwnedOperation()) {
+ out.getOwnedOperation().add((Operation) doSwitch(_ownedOperation));
+ }
+ for (Type _superClass : in.getSuperClass()) {
+ out.getSuperClass().add((Type) doSwitch(_superClass));
+ }
+ for (Constraint _ownedRule : in.getOwnedRule()) {
+ out.getOwnedRule().add((Constraint) doSwitch(_ownedRule));
+ }
+ for (Class _nestedType : in.getNestedType()) {
+ out.getNestedType().add((Class) doSwitch(_nestedType));
+ }
+ for (Behavior _ownedBehavior : in.getOwnedBehavior()) {
+ out.getOwnedBehavior().add((Behavior) doSwitch(_ownedBehavior));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseSignal(Signal in) {
+ final Signal out = PivotFactory.eINSTANCE.createSignal();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseState(State in) {
+ final State out = PivotFactory.eINSTANCE.createState();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsSubmachineState(in.isSubmachineState());
+ Region _container = in.getContainer();
+ if (_container != null)
+ out.setContainer((Region) doSwitch(_container));
+ Behavior _doActivity = in.getDoActivity();
+ if (_doActivity != null)
+ out.setDoActivity((Behavior) doSwitch(_doActivity));
+ Behavior _entry = in.getEntry();
+ if (_entry != null)
+ out.setEntry((Behavior) doSwitch(_entry));
+ Behavior _exit = in.getExit();
+ if (_exit != null)
+ out.setExit((Behavior) doSwitch(_exit));
+ State _redefinedState = in.getRedefinedState();
+ if (_redefinedState != null)
+ out.setRedefinedState((State) doSwitch(_redefinedState));
+ Constraint _stateInvariant = in.getStateInvariant();
+ if (_stateInvariant != null)
+ out.setStateInvariant((Constraint) doSwitch(_stateInvariant));
+ StateMachine _submachine = in.getSubmachine();
+ if (_submachine != null)
+ out.setSubmachine((StateMachine) doSwitch(_submachine));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (Transition _incoming : in.getIncoming()) {
+ out.getIncoming().add((Transition) doSwitch(_incoming));
+ }
+ for (Transition _outgoing : in.getOutgoing()) {
+ out.getOutgoing().add((Transition) doSwitch(_outgoing));
+ }
+ for (Constraint _ownedRule : in.getOwnedRule()) {
+ out.getOwnedRule().add((Constraint) doSwitch(_ownedRule));
+ }
+ for (ConnectionPointReference _connection : in.getConnection()) {
+ out.getConnection().add((ConnectionPointReference) doSwitch(_connection));
+ }
+ for (Pseudostate _connectionPoint : in.getConnectionPoint()) {
+ out.getConnectionPoint().add((Pseudostate) doSwitch(_connectionPoint));
+ }
+ for (Trigger _deferrableTrigger : in.getDeferrableTrigger()) {
+ out.getDeferrableTrigger().add((Trigger) doSwitch(_deferrableTrigger));
+ }
+ for (Region _region : in.getRegion()) {
+ out.getRegion().add((Region) doSwitch(_region));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseStateExp(StateExp in) {
+ final StateExp out = PivotFactory.eINSTANCE.createStateExp();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ State _referredState = in.getReferredState();
+ if (_referredState != null)
+ out.setReferredState((State) doSwitch(_referredState));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseStateMachine(StateMachine in) {
+ final StateMachine out = PivotFactory.eINSTANCE.createStateMachine();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setInstanceClassName(in.getInstanceClassName());
+ out.setIsAbstract(in.isAbstract());
+ out.setIsActive(in.isActive());
+ out.setIsInterface(in.isInterface());
+ TemplateSignature _ownedTemplateSignature = in.getOwnedTemplateSignature();
+ if (_ownedTemplateSignature != null)
+ out.setOwnedTemplateSignature((TemplateSignature) doSwitch(_ownedTemplateSignature));
+ TemplateableElement _unspecializedElement = in.getUnspecializedElement();
+ if (_unspecializedElement != null)
+ out.setUnspecializedElement((TemplateableElement) doSwitch(_unspecializedElement));
+ TemplateParameter _owningTemplateParameter = in.getOwningTemplateParameter();
+ if (_owningTemplateParameter != null)
+ out.setOwningTemplateParameter((TemplateParameter) doSwitch(_owningTemplateParameter));
+ TemplateParameter _templateParameter = in.getTemplateParameter();
+ if (_templateParameter != null)
+ out.setTemplateParameter((TemplateParameter) doSwitch(_templateParameter));
+ Package _package = in.getPackage();
+ if (_package != null)
+ out.setPackage((Package) doSwitch(_package));
+ Transition _transition = in.getTransition();
+ if (_transition != null)
+ out.setTransition((Transition) doSwitch(_transition));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (TemplateBinding _templateBinding : in.getTemplateBinding()) {
+ out.getTemplateBinding().add((TemplateBinding) doSwitch(_templateBinding));
+ }
+ for (TypeExtension _extendedBys : in.getExtendedBys()) {
+ out.getExtendedBys().add((TypeExtension) doSwitch(_extendedBys));
+ }
+ for (Property _ownedAttribute : in.getOwnedAttribute()) {
+ out.getOwnedAttribute().add((Property) doSwitch(_ownedAttribute));
+ }
+ for (Constraint _ownedInvariant : in.getOwnedInvariant()) {
+ out.getOwnedInvariant().add((Constraint) doSwitch(_ownedInvariant));
+ }
+ for (Operation _ownedOperation : in.getOwnedOperation()) {
+ out.getOwnedOperation().add((Operation) doSwitch(_ownedOperation));
+ }
+ for (Type _superClass : in.getSuperClass()) {
+ out.getSuperClass().add((Type) doSwitch(_superClass));
+ }
+ for (Constraint _ownedRule : in.getOwnedRule()) {
+ out.getOwnedRule().add((Constraint) doSwitch(_ownedRule));
+ }
+ for (Class _nestedType : in.getNestedType()) {
+ out.getNestedType().add((Class) doSwitch(_nestedType));
+ }
+ for (Behavior _ownedBehavior : in.getOwnedBehavior()) {
+ out.getOwnedBehavior().add((Behavior) doSwitch(_ownedBehavior));
+ }
+ for (Pseudostate _connectionPoint : in.getConnectionPoint()) {
+ out.getConnectionPoint().add((Pseudostate) doSwitch(_connectionPoint));
+ }
+ for (StateMachine _extendedStateMachine : in.getExtendedStateMachine()) {
+ out.getExtendedStateMachine().add((StateMachine) doSwitch(_extendedStateMachine));
+ }
+ for (Region _region : in.getRegion()) {
+ out.getRegion().add((Region) doSwitch(_region));
+ }
+ for (State _submachineState : in.getSubmachineState()) {
+ out.getSubmachineState().add((State) doSwitch(_submachineState));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseStereotype(Stereotype in) {
+ final Stereotype out = PivotFactory.eINSTANCE.createStereotype();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setInstanceClassName(in.getInstanceClassName());
+ out.setIsAbstract(in.isAbstract());
+ out.setIsActive(in.isActive());
+ out.setIsInterface(in.isInterface());
+ TemplateSignature _ownedTemplateSignature = in.getOwnedTemplateSignature();
+ if (_ownedTemplateSignature != null)
+ out.setOwnedTemplateSignature((TemplateSignature) doSwitch(_ownedTemplateSignature));
+ TemplateableElement _unspecializedElement = in.getUnspecializedElement();
+ if (_unspecializedElement != null)
+ out.setUnspecializedElement((TemplateableElement) doSwitch(_unspecializedElement));
+ TemplateParameter _owningTemplateParameter = in.getOwningTemplateParameter();
+ if (_owningTemplateParameter != null)
+ out.setOwningTemplateParameter((TemplateParameter) doSwitch(_owningTemplateParameter));
+ TemplateParameter _templateParameter = in.getTemplateParameter();
+ if (_templateParameter != null)
+ out.setTemplateParameter((TemplateParameter) doSwitch(_templateParameter));
+ Package _package = in.getPackage();
+ if (_package != null)
+ out.setPackage((Package) doSwitch(_package));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (TemplateBinding _templateBinding : in.getTemplateBinding()) {
+ out.getTemplateBinding().add((TemplateBinding) doSwitch(_templateBinding));
+ }
+ for (TypeExtension _extendedBys : in.getExtendedBys()) {
+ out.getExtendedBys().add((TypeExtension) doSwitch(_extendedBys));
+ }
+ for (Property _ownedAttribute : in.getOwnedAttribute()) {
+ out.getOwnedAttribute().add((Property) doSwitch(_ownedAttribute));
+ }
+ for (Constraint _ownedInvariant : in.getOwnedInvariant()) {
+ out.getOwnedInvariant().add((Constraint) doSwitch(_ownedInvariant));
+ }
+ for (Operation _ownedOperation : in.getOwnedOperation()) {
+ out.getOwnedOperation().add((Operation) doSwitch(_ownedOperation));
+ }
+ for (Type _superClass : in.getSuperClass()) {
+ out.getSuperClass().add((Type) doSwitch(_superClass));
+ }
+ for (Constraint _ownedRule : in.getOwnedRule()) {
+ out.getOwnedRule().add((Constraint) doSwitch(_ownedRule));
+ }
+ for (Class _nestedType : in.getNestedType()) {
+ out.getNestedType().add((Class) doSwitch(_nestedType));
+ }
+ for (Behavior _ownedBehavior : in.getOwnedBehavior()) {
+ out.getOwnedBehavior().add((Behavior) doSwitch(_ownedBehavior));
+ }
+ for (TypeExtension _extensionOfs : in.getExtensionOfs()) {
+ out.getExtensionOfs().add((TypeExtension) doSwitch(_extensionOfs));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseStringLiteralExp(StringLiteralExp in) {
+ final StringLiteralExp out = PivotFactory.eINSTANCE.createStringLiteralExp();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ out.setStringSymbol(in.getStringSymbol());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseTemplateBinding(TemplateBinding in) {
+ final TemplateBinding out = PivotFactory.eINSTANCE.createTemplateBinding();
+ assert out != null;
+ transformation.addOrphan(out);
+ TemplateableElement _boundElement = in.getBoundElement();
+ if (_boundElement != null)
+ out.setBoundElement((TemplateableElement) doSwitch(_boundElement));
+ TemplateSignature _signature = in.getSignature();
+ if (_signature != null)
+ out.setSignature((TemplateSignature) doSwitch(_signature));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (TemplateParameterSubstitution _parameterSubstitution : in.getParameterSubstitution()) {
+ out.getParameterSubstitution().add((TemplateParameterSubstitution) doSwitch(_parameterSubstitution));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseTemplateParameter(TemplateParameter in) {
+ final TemplateParameter out = PivotFactory.eINSTANCE.createTemplateParameter();
+ assert out != null;
+ transformation.addOrphan(out);
+ ParameterableElement _default = in.getDefault();
+ if (_default != null)
+ out.setDefault((ParameterableElement) doSwitch(_default));
+ ParameterableElement _ownedDefault = in.getOwnedDefault();
+ if (_ownedDefault != null)
+ out.setOwnedDefault((ParameterableElement) doSwitch(_ownedDefault));
+ ParameterableElement _ownedParameteredElement = in.getOwnedParameteredElement();
+ if (_ownedParameteredElement != null)
+ out.setOwnedParameteredElement((ParameterableElement) doSwitch(_ownedParameteredElement));
+ ParameterableElement _parameteredElement = in.getParameteredElement();
+ if (_parameteredElement != null)
+ out.setParameteredElement((ParameterableElement) doSwitch(_parameteredElement));
+ TemplateSignature _signature = in.getSignature();
+ if (_signature != null)
+ out.setSignature((TemplateSignature) doSwitch(_signature));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseTemplateParameterSubstitution(TemplateParameterSubstitution in) {
+ final TemplateParameterSubstitution out = PivotFactory.eINSTANCE.createTemplateParameterSubstitution();
+ assert out != null;
+ transformation.addOrphan(out);
+ ParameterableElement _actual = in.getActual();
+ if (_actual != null)
+ out.setActual((ParameterableElement) doSwitch(_actual));
+ TemplateParameter _formal = in.getFormal();
+ if (_formal != null)
+ out.setFormal((TemplateParameter) doSwitch(_formal));
+ ParameterableElement _ownedActual = in.getOwnedActual();
+ if (_ownedActual != null)
+ out.setOwnedActual((ParameterableElement) doSwitch(_ownedActual));
+ TemplateBinding _templateBinding = in.getTemplateBinding();
+ if (_templateBinding != null)
+ out.setTemplateBinding((TemplateBinding) doSwitch(_templateBinding));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseTemplateParameterType(TemplateParameterType in) {
+ final TemplateParameterType out = PivotFactory.eINSTANCE.createTemplateParameterType();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setInstanceClassName(in.getInstanceClassName());
+ out.setSpecification(in.getSpecification());
+ TemplateSignature _ownedTemplateSignature = in.getOwnedTemplateSignature();
+ if (_ownedTemplateSignature != null)
+ out.setOwnedTemplateSignature((TemplateSignature) doSwitch(_ownedTemplateSignature));
+ TemplateableElement _unspecializedElement = in.getUnspecializedElement();
+ if (_unspecializedElement != null)
+ out.setUnspecializedElement((TemplateableElement) doSwitch(_unspecializedElement));
+ TemplateParameter _owningTemplateParameter = in.getOwningTemplateParameter();
+ if (_owningTemplateParameter != null)
+ out.setOwningTemplateParameter((TemplateParameter) doSwitch(_owningTemplateParameter));
+ TemplateParameter _templateParameter = in.getTemplateParameter();
+ if (_templateParameter != null)
+ out.setTemplateParameter((TemplateParameter) doSwitch(_templateParameter));
+ Package _package = in.getPackage();
+ if (_package != null)
+ out.setPackage((Package) doSwitch(_package));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (TemplateBinding _templateBinding : in.getTemplateBinding()) {
+ out.getTemplateBinding().add((TemplateBinding) doSwitch(_templateBinding));
+ }
+ for (TypeExtension _extendedBys : in.getExtendedBys()) {
+ out.getExtendedBys().add((TypeExtension) doSwitch(_extendedBys));
+ }
+ for (Property _ownedAttribute : in.getOwnedAttribute()) {
+ out.getOwnedAttribute().add((Property) doSwitch(_ownedAttribute));
+ }
+ for (Constraint _ownedInvariant : in.getOwnedInvariant()) {
+ out.getOwnedInvariant().add((Constraint) doSwitch(_ownedInvariant));
+ }
+ for (Operation _ownedOperation : in.getOwnedOperation()) {
+ out.getOwnedOperation().add((Operation) doSwitch(_ownedOperation));
+ }
+ for (Type _superClass : in.getSuperClass()) {
+ out.getSuperClass().add((Type) doSwitch(_superClass));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseTemplateSignature(TemplateSignature in) {
+ final TemplateSignature out = PivotFactory.eINSTANCE.createTemplateSignature();
+ assert out != null;
+ transformation.addOrphan(out);
+ TemplateableElement _template = in.getTemplate();
+ if (_template != null)
+ out.setTemplate((TemplateableElement) doSwitch(_template));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (TemplateParameter _ownedParameter : in.getOwnedParameter()) {
+ out.getOwnedParameter().add((TemplateParameter) doSwitch(_ownedParameter));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseTransition(Transition in) {
+ final Transition out = PivotFactory.eINSTANCE.createTransition();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setKind(in.getKind());
+ Region _container = in.getContainer();
+ if (_container != null)
+ out.setContainer((Region) doSwitch(_container));
+ Behavior _effect = in.getEffect();
+ if (_effect != null)
+ out.setEffect((Behavior) doSwitch(_effect));
+ Constraint _guard = in.getGuard();
+ if (_guard != null)
+ out.setGuard((Constraint) doSwitch(_guard));
+ Vertex _source = in.getSource();
+ if (_source != null)
+ out.setSource((Vertex) doSwitch(_source));
+ Vertex _target = in.getTarget();
+ if (_target != null)
+ out.setTarget((Vertex) doSwitch(_target));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (Constraint _ownedRule : in.getOwnedRule()) {
+ out.getOwnedRule().add((Constraint) doSwitch(_ownedRule));
+ }
+ for (Trigger _trigger : in.getTrigger()) {
+ out.getTrigger().add((Trigger) doSwitch(_trigger));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseTrigger(Trigger in) {
+ final Trigger out = PivotFactory.eINSTANCE.createTrigger();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ State _state = in.getState();
+ if (_state != null)
+ out.setState((State) doSwitch(_state));
+ Transition _transition = in.getTransition();
+ if (_transition != null)
+ out.setTransition((Transition) doSwitch(_transition));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseTupleLiteralExp(TupleLiteralExp in) {
+ final TupleLiteralExp out = PivotFactory.eINSTANCE.createTupleLiteralExp();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (TupleLiteralPart _part : in.getPart()) {
+ out.getPart().add((TupleLiteralPart) doSwitch(_part));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseTupleLiteralPart(TupleLiteralPart in) {
+ final TupleLiteralPart out = PivotFactory.eINSTANCE.createTupleLiteralPart();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ OCLExpression _initExpression = in.getInitExpression();
+ if (_initExpression != null)
+ out.setInitExpression((OCLExpression) doSwitch(_initExpression));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseTupleType(TupleType in) {
+ final TupleType out = PivotFactory.eINSTANCE.createTupleType();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setInstanceClassName(in.getInstanceClassName());
+ out.setIsAbstract(in.isAbstract());
+ out.setIsActive(in.isActive());
+ out.setIsInterface(in.isInterface());
+ out.setIsSerializable(in.isSerializable());
+ TemplateSignature _ownedTemplateSignature = in.getOwnedTemplateSignature();
+ if (_ownedTemplateSignature != null)
+ out.setOwnedTemplateSignature((TemplateSignature) doSwitch(_ownedTemplateSignature));
+ TemplateableElement _unspecializedElement = in.getUnspecializedElement();
+ if (_unspecializedElement != null)
+ out.setUnspecializedElement((TemplateableElement) doSwitch(_unspecializedElement));
+ TemplateParameter _owningTemplateParameter = in.getOwningTemplateParameter();
+ if (_owningTemplateParameter != null)
+ out.setOwningTemplateParameter((TemplateParameter) doSwitch(_owningTemplateParameter));
+ TemplateParameter _templateParameter = in.getTemplateParameter();
+ if (_templateParameter != null)
+ out.setTemplateParameter((TemplateParameter) doSwitch(_templateParameter));
+ Package _package = in.getPackage();
+ if (_package != null)
+ out.setPackage((Package) doSwitch(_package));
+ Type _behavioralType = in.getBehavioralType();
+ if (_behavioralType != null)
+ out.setBehavioralType((Type) doSwitch(_behavioralType));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (TemplateBinding _templateBinding : in.getTemplateBinding()) {
+ out.getTemplateBinding().add((TemplateBinding) doSwitch(_templateBinding));
+ }
+ for (TypeExtension _extendedBys : in.getExtendedBys()) {
+ out.getExtendedBys().add((TypeExtension) doSwitch(_extendedBys));
+ }
+ for (Property _ownedAttribute : in.getOwnedAttribute()) {
+ out.getOwnedAttribute().add((Property) doSwitch(_ownedAttribute));
+ }
+ for (Constraint _ownedInvariant : in.getOwnedInvariant()) {
+ out.getOwnedInvariant().add((Constraint) doSwitch(_ownedInvariant));
+ }
+ for (Operation _ownedOperation : in.getOwnedOperation()) {
+ out.getOwnedOperation().add((Operation) doSwitch(_ownedOperation));
+ }
+ for (Type _superClass : in.getSuperClass()) {
+ out.getSuperClass().add((Type) doSwitch(_superClass));
+ }
+ for (Constraint _ownedRule : in.getOwnedRule()) {
+ out.getOwnedRule().add((Constraint) doSwitch(_ownedRule));
+ }
+ for (Class _nestedType : in.getNestedType()) {
+ out.getNestedType().add((Class) doSwitch(_nestedType));
+ }
+ for (Behavior _ownedBehavior : in.getOwnedBehavior()) {
+ out.getOwnedBehavior().add((Behavior) doSwitch(_ownedBehavior));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseType(Type in) {
+ final Type out = PivotFactory.eINSTANCE.createType();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setInstanceClassName(in.getInstanceClassName());
+ TemplateSignature _ownedTemplateSignature = in.getOwnedTemplateSignature();
+ if (_ownedTemplateSignature != null)
+ out.setOwnedTemplateSignature((TemplateSignature) doSwitch(_ownedTemplateSignature));
+ TemplateableElement _unspecializedElement = in.getUnspecializedElement();
+ if (_unspecializedElement != null)
+ out.setUnspecializedElement((TemplateableElement) doSwitch(_unspecializedElement));
+ TemplateParameter _owningTemplateParameter = in.getOwningTemplateParameter();
+ if (_owningTemplateParameter != null)
+ out.setOwningTemplateParameter((TemplateParameter) doSwitch(_owningTemplateParameter));
+ TemplateParameter _templateParameter = in.getTemplateParameter();
+ if (_templateParameter != null)
+ out.setTemplateParameter((TemplateParameter) doSwitch(_templateParameter));
+ Package _package = in.getPackage();
+ if (_package != null)
+ out.setPackage((Package) doSwitch(_package));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (TemplateBinding _templateBinding : in.getTemplateBinding()) {
+ out.getTemplateBinding().add((TemplateBinding) doSwitch(_templateBinding));
+ }
+ for (TypeExtension _extendedBys : in.getExtendedBys()) {
+ out.getExtendedBys().add((TypeExtension) doSwitch(_extendedBys));
+ }
+ for (Property _ownedAttribute : in.getOwnedAttribute()) {
+ out.getOwnedAttribute().add((Property) doSwitch(_ownedAttribute));
+ }
+ for (Constraint _ownedInvariant : in.getOwnedInvariant()) {
+ out.getOwnedInvariant().add((Constraint) doSwitch(_ownedInvariant));
+ }
+ for (Operation _ownedOperation : in.getOwnedOperation()) {
+ out.getOwnedOperation().add((Operation) doSwitch(_ownedOperation));
+ }
+ for (Type _superClass : in.getSuperClass()) {
+ out.getSuperClass().add((Type) doSwitch(_superClass));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseTypeExp(TypeExp in) {
+ final TypeExp out = PivotFactory.eINSTANCE.createTypeExp();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ Type _referredType = in.getReferredType();
+ if (_referredType != null)
+ out.setReferredType((Type) doSwitch(_referredType));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseTypeExtension(TypeExtension in) {
+ final TypeExtension out = PivotFactory.eINSTANCE.createTypeExtension();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsRequired(in.isRequired());
+ Stereotype _stereotype = in.getStereotype();
+ if (_stereotype != null)
+ out.setStereotype((Stereotype) doSwitch(_stereotype));
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseTypeTemplateParameter(TypeTemplateParameter in) {
+ final TypeTemplateParameter out = PivotFactory.eINSTANCE.createTypeTemplateParameter();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setAllowSubstitutable(in.isAllowSubstitutable());
+ ParameterableElement _default = in.getDefault();
+ if (_default != null)
+ out.setDefault((ParameterableElement) doSwitch(_default));
+ ParameterableElement _ownedDefault = in.getOwnedDefault();
+ if (_ownedDefault != null)
+ out.setOwnedDefault((ParameterableElement) doSwitch(_ownedDefault));
+ ParameterableElement _ownedParameteredElement = in.getOwnedParameteredElement();
+ if (_ownedParameteredElement != null)
+ out.setOwnedParameteredElement((ParameterableElement) doSwitch(_ownedParameteredElement));
+ ParameterableElement _parameteredElement = in.getParameteredElement();
+ if (_parameteredElement != null)
+ out.setParameteredElement((ParameterableElement) doSwitch(_parameteredElement));
+ TemplateSignature _signature = in.getSignature();
+ if (_signature != null)
+ out.setSignature((TemplateSignature) doSwitch(_signature));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (Type _constrainingType : in.getConstrainingType()) {
+ out.getConstrainingType().add((Type) doSwitch(_constrainingType));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseUnlimitedNaturalLiteralExp(UnlimitedNaturalLiteralExp in) {
+ final UnlimitedNaturalLiteralExp out = PivotFactory.eINSTANCE.createUnlimitedNaturalLiteralExp();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ out.setUnlimitedNaturalSymbol(in.getUnlimitedNaturalSymbol());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseUnspecifiedType(UnspecifiedType in) {
+ final UnspecifiedType out = PivotFactory.eINSTANCE.createUnspecifiedType();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setInstanceClassName(in.getInstanceClassName());
+ out.setIsAbstract(in.isAbstract());
+ out.setIsActive(in.isActive());
+ out.setIsInterface(in.isInterface());
+ TemplateSignature _ownedTemplateSignature = in.getOwnedTemplateSignature();
+ if (_ownedTemplateSignature != null)
+ out.setOwnedTemplateSignature((TemplateSignature) doSwitch(_ownedTemplateSignature));
+ TemplateableElement _unspecializedElement = in.getUnspecializedElement();
+ if (_unspecializedElement != null)
+ out.setUnspecializedElement((TemplateableElement) doSwitch(_unspecializedElement));
+ TemplateParameter _owningTemplateParameter = in.getOwningTemplateParameter();
+ if (_owningTemplateParameter != null)
+ out.setOwningTemplateParameter((TemplateParameter) doSwitch(_owningTemplateParameter));
+ TemplateParameter _templateParameter = in.getTemplateParameter();
+ if (_templateParameter != null)
+ out.setTemplateParameter((TemplateParameter) doSwitch(_templateParameter));
+ Package _package = in.getPackage();
+ if (_package != null)
+ out.setPackage((Package) doSwitch(_package));
+ Type _lowerBound = in.getLowerBound();
+ if (_lowerBound != null)
+ out.setLowerBound((Type) doSwitch(_lowerBound));
+ Type _upperBound = in.getUpperBound();
+ if (_upperBound != null)
+ out.setUpperBound((Type) doSwitch(_upperBound));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (TemplateBinding _templateBinding : in.getTemplateBinding()) {
+ out.getTemplateBinding().add((TemplateBinding) doSwitch(_templateBinding));
+ }
+ for (TypeExtension _extendedBys : in.getExtendedBys()) {
+ out.getExtendedBys().add((TypeExtension) doSwitch(_extendedBys));
+ }
+ for (Property _ownedAttribute : in.getOwnedAttribute()) {
+ out.getOwnedAttribute().add((Property) doSwitch(_ownedAttribute));
+ }
+ for (Constraint _ownedInvariant : in.getOwnedInvariant()) {
+ out.getOwnedInvariant().add((Constraint) doSwitch(_ownedInvariant));
+ }
+ for (Operation _ownedOperation : in.getOwnedOperation()) {
+ out.getOwnedOperation().add((Operation) doSwitch(_ownedOperation));
+ }
+ for (Type _superClass : in.getSuperClass()) {
+ out.getSuperClass().add((Type) doSwitch(_superClass));
+ }
+ for (Constraint _ownedRule : in.getOwnedRule()) {
+ out.getOwnedRule().add((Constraint) doSwitch(_ownedRule));
+ }
+ for (Class _nestedType : in.getNestedType()) {
+ out.getNestedType().add((Class) doSwitch(_nestedType));
+ }
+ for (Behavior _ownedBehavior : in.getOwnedBehavior()) {
+ out.getOwnedBehavior().add((Behavior) doSwitch(_ownedBehavior));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseUnspecifiedValueExp(UnspecifiedValueExp in) {
+ final UnspecifiedValueExp out = PivotFactory.eINSTANCE.createUnspecifiedValueExp();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseVariable(Variable in) {
+ final Variable out = PivotFactory.eINSTANCE.createVariable();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ out.setImplicit(in.isImplicit());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ OCLExpression _initExpression = in.getInitExpression();
+ if (_initExpression != null)
+ out.setInitExpression((OCLExpression) doSwitch(_initExpression));
+ Parameter _representedParameter = in.getRepresentedParameter();
+ if (_representedParameter != null)
+ out.setRepresentedParameter((Parameter) doSwitch(_representedParameter));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseVariableExp(VariableExp in) {
+ final VariableExp out = PivotFactory.eINSTANCE.createVariableExp();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setIsRequired(in.isRequired());
+ out.setImplicit(in.isImplicit());
+ Type _type = in.getType();
+ if (_type != null)
+ out.setType((Type) doSwitch(_type));
+ Variable v = (Variable) in.getReferredVariable();
+ assert v != null;
+ out.setReferredVariable(transformation.getVariableTrace(v));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ return out;
+ }
+ /**
+ * @generated
+ */
+ @Override
+ public Element caseVoidType(VoidType in) {
+ final VoidType out = PivotFactory.eINSTANCE.createVoidType();
+ assert out != null;
+ transformation.addOrphan(out);
+ out.setIsStatic(in.isStatic());
+ out.setName(in.getName());
+ out.setInstanceClassName(in.getInstanceClassName());
+ out.setIsAbstract(in.isAbstract());
+ out.setIsActive(in.isActive());
+ out.setIsInterface(in.isInterface());
+ TemplateSignature _ownedTemplateSignature = in.getOwnedTemplateSignature();
+ if (_ownedTemplateSignature != null)
+ out.setOwnedTemplateSignature((TemplateSignature) doSwitch(_ownedTemplateSignature));
+ TemplateableElement _unspecializedElement = in.getUnspecializedElement();
+ if (_unspecializedElement != null)
+ out.setUnspecializedElement((TemplateableElement) doSwitch(_unspecializedElement));
+ TemplateParameter _owningTemplateParameter = in.getOwningTemplateParameter();
+ if (_owningTemplateParameter != null)
+ out.setOwningTemplateParameter((TemplateParameter) doSwitch(_owningTemplateParameter));
+ TemplateParameter _templateParameter = in.getTemplateParameter();
+ if (_templateParameter != null)
+ out.setTemplateParameter((TemplateParameter) doSwitch(_templateParameter));
+ Package _package = in.getPackage();
+ if (_package != null)
+ out.setPackage((Package) doSwitch(_package));
+ for (ElementExtension _extension : in.getExtension()) {
+ out.getExtension().add((ElementExtension) doSwitch(_extension));
+ }
+ for (Element _ownedAnnotation : in.getOwnedAnnotation()) {
+ out.getOwnedAnnotation().add((Element) doSwitch(_ownedAnnotation));
+ }
+ for (Comment _ownedComment : in.getOwnedComment()) {
+ out.getOwnedComment().add((Comment) doSwitch(_ownedComment));
+ }
+ for (TemplateBinding _templateBinding : in.getTemplateBinding()) {
+ out.getTemplateBinding().add((TemplateBinding) doSwitch(_templateBinding));
+ }
+ for (TypeExtension _extendedBys : in.getExtendedBys()) {
+ out.getExtendedBys().add((TypeExtension) doSwitch(_extendedBys));
+ }
+ for (Property _ownedAttribute : in.getOwnedAttribute()) {
+ out.getOwnedAttribute().add((Property) doSwitch(_ownedAttribute));
+ }
+ for (Constraint _ownedInvariant : in.getOwnedInvariant()) {
+ out.getOwnedInvariant().add((Constraint) doSwitch(_ownedInvariant));
+ }
+ for (Operation _ownedOperation : in.getOwnedOperation()) {
+ out.getOwnedOperation().add((Operation) doSwitch(_ownedOperation));
+ }
+ for (Type _superClass : in.getSuperClass()) {
+ out.getSuperClass().add((Type) doSwitch(_superClass));
+ }
+ for (Constraint _ownedRule : in.getOwnedRule()) {
+ out.getOwnedRule().add((Constraint) doSwitch(_ownedRule));
+ }
+ for (Class _nestedType : in.getNestedType()) {
+ out.getNestedType().add((Class) doSwitch(_nestedType));
+ }
+ for (Behavior _ownedBehavior : in.getOwnedBehavior()) {
+ out.getOwnedBehavior().add((Behavior) doSwitch(_ownedBehavior));
+ }
+ return out;
+ }
+}
+
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/QVTcoreBaseBottomPatternKey.java b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/QVTcoreBaseBottomPatternKey.java
new file mode 100644
index 000000000..3500405e1
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/QVTcoreBaseBottomPatternKey.java
@@ -0,0 +1,39 @@
+package org.eclipse.qvtd.build.qvtrtoqvtc.impl;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.qvtd.build.qvtrtoqvtc.KeyBindings;
+import org.eclipse.qvtd.build.qvtrtoqvtc.RelationKey;
+import org.eclipse.qvtd.build.qvtrtoqvtc.impl.AbstractBindings.KeySet;
+import org.eclipse.qvtd.pivot.qvtcorebase.Area;
+import org.eclipse.qvtd.pivot.qvtcorebase.BottomPattern;
+
+public class QVTcoreBaseBottomPatternKey implements RelationKey {
+
+ private static final @NonNull KeyBindings.KeySet RELATION_KEY_BINDINGS = new KeyBindings.KeySet();
+ public static final @NonNull KeyBindings.KeyKey<Area> AREA = RELATION_KEY_BINDINGS.create((Area)null, "area");
+
+ private Map<KeyBindings, BottomPattern> bottomPatterns = new HashMap<KeyBindings, BottomPattern>();
+
+
+ public void add(BottomPattern bottomPattern) {
+ KeyBindings relationKeyBindings = new KeyBindings(this);
+ relationKeyBindings.put(AREA, bottomPattern.getArea());
+ bottomPatterns.put(relationKeyBindings, bottomPattern);
+ }
+
+ public BottomPattern get(Area area) {
+ KeyBindings relationKeyBindings = new KeyBindings(this);
+ relationKeyBindings.put(AREA, area);
+ return bottomPatterns.get(relationKeyBindings);
+ }
+
+ @Override
+ @NonNull
+ public KeySet getKeyBindings() {
+ return RELATION_KEY_BINDINGS;
+ }
+
+}
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/QVTcoreBaseCoreDomainKey.java b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/QVTcoreBaseCoreDomainKey.java
new file mode 100644
index 000000000..b8f88c2cc
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/QVTcoreBaseCoreDomainKey.java
@@ -0,0 +1,41 @@
+package org.eclipse.qvtd.build.qvtrtoqvtc.impl;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.qvtd.build.qvtrtoqvtc.KeyBindings;
+import org.eclipse.qvtd.build.qvtrtoqvtc.impl.AbstractBindings.KeySet;
+import org.eclipse.qvtd.build.qvtrtoqvtc.RelationKey;
+import org.eclipse.qvtd.pivot.qvtcorebase.CoreDomain;
+
+public class QVTcoreBaseCoreDomainKey implements RelationKey {
+
+
+ private static final @NonNull KeyBindings.KeySet RELATION_KEY_BINDINGS = new KeyBindings.KeySet();
+ public static final @NonNull KeyBindings.KeyKey<String> NAME = RELATION_KEY_BINDINGS.create((String)null, "name");
+ public static final @NonNull KeyBindings.KeyKey<org.eclipse.qvtd.pivot.qvtbase.Rule> RULE = RELATION_KEY_BINDINGS.create((org.eclipse.qvtd.pivot.qvtbase.Rule)null, "rule");
+
+ private Map<KeyBindings, CoreDomain> coreDomains = new HashMap<KeyBindings, CoreDomain>();
+
+ public void add(CoreDomain coreDomain) {
+ KeyBindings relationKeyBindings = new KeyBindings(this);
+ relationKeyBindings.put(NAME, coreDomain.getName());
+ relationKeyBindings.put(RULE, coreDomain.getRule());
+ coreDomains.put(relationKeyBindings, coreDomain);
+ }
+
+ public CoreDomain get(String name, org.eclipse.qvtd.pivot.qvtbase.Rule rule) {
+ KeyBindings relationKeyBindings = new KeyBindings(this);
+ relationKeyBindings.put(NAME, name);
+ relationKeyBindings.put(RULE, rule);
+ return coreDomains.get(relationKeyBindings);
+ }
+
+ @Override
+ @NonNull
+ public KeySet getKeyBindings() {
+ return RELATION_KEY_BINDINGS;
+ }
+
+}
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/QVTcoreBaseGuardPatternKey.java b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/QVTcoreBaseGuardPatternKey.java
new file mode 100644
index 000000000..d2913f861
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/QVTcoreBaseGuardPatternKey.java
@@ -0,0 +1,40 @@
+package org.eclipse.qvtd.build.qvtrtoqvtc.impl;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.qvtd.build.qvtrtoqvtc.KeyBindings;
+import org.eclipse.qvtd.build.qvtrtoqvtc.RelationKey;
+import org.eclipse.qvtd.build.qvtrtoqvtc.impl.AbstractBindings.KeySet;
+import org.eclipse.qvtd.pivot.qvtcorebase.Area;
+import org.eclipse.qvtd.pivot.qvtcorebase.GuardPattern;
+
+public class QVTcoreBaseGuardPatternKey implements RelationKey {
+
+ private static final @NonNull KeyBindings.KeySet RELATION_KEY_BINDINGS = new KeyBindings.KeySet();
+ public static final @NonNull KeyBindings.KeyKey<Area> AREA = RELATION_KEY_BINDINGS.create((Area)null, "area");
+
+
+ private Map<KeyBindings, GuardPattern> guardPatterns = new HashMap<KeyBindings, GuardPattern>();
+
+
+ public void add(GuardPattern guardPattern) {
+ KeyBindings relationKeyBindings = new KeyBindings(this);
+ relationKeyBindings.put(AREA, guardPattern.getArea());
+ guardPatterns.put(relationKeyBindings, guardPattern);
+ }
+
+ public GuardPattern get(Area area) {
+ KeyBindings relationKeyBindings = new KeyBindings(this);
+ relationKeyBindings.put(AREA, area);
+ return guardPatterns.get(relationKeyBindings);
+ }
+
+ @Override
+ @NonNull
+ public KeySet getKeyBindings() {
+ return RELATION_KEY_BINDINGS;
+ }
+
+}
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/QVTcoreMappingKey.java b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/QVTcoreMappingKey.java
new file mode 100644
index 000000000..315b6db3f
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/QVTcoreMappingKey.java
@@ -0,0 +1,43 @@
+package org.eclipse.qvtd.build.qvtrtoqvtc.impl;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.qvtd.build.qvtrtoqvtc.KeyBindings;
+import org.eclipse.qvtd.build.qvtrtoqvtc.RelationKey;
+import org.eclipse.qvtd.build.qvtrtoqvtc.impl.AbstractBindings.KeySet;
+import org.eclipse.qvtd.pivot.qvtbase.Transformation;
+import org.eclipse.qvtd.pivot.qvtcore.Mapping;
+
+public class QVTcoreMappingKey implements RelationKey {
+
+ private static final @NonNull KeyBindings.KeySet RELATION_KEY_BINDINGS = new KeyBindings.KeySet();
+ public static final @NonNull KeyBindings.KeyKey<String> NAME = RELATION_KEY_BINDINGS.create((String)null, "name");
+ public static final @NonNull KeyBindings.KeyKey<Transformation> TRANSFORMATION = RELATION_KEY_BINDINGS.create((Transformation)null, "transformation");
+
+ private Map<KeyBindings, Mapping> mappings = new HashMap<KeyBindings, Mapping>();
+
+
+ public void add(Mapping mapping) {
+ KeyBindings relationKeyBindings = new KeyBindings(this);
+ relationKeyBindings.put(NAME, mapping.getName());
+ relationKeyBindings.put(TRANSFORMATION, mapping.getTransformation());
+ mappings.put(relationKeyBindings, mapping);
+ }
+
+ public Mapping get(String mn, Transformation mt) {
+ KeyBindings relationKeyBindings = new KeyBindings(this);
+ relationKeyBindings.put(NAME, mn);
+ relationKeyBindings.put(TRANSFORMATION, mt);
+ return mappings.get(relationKeyBindings);
+ }
+
+ @Override
+ @NonNull
+ public KeySet getKeyBindings() {
+ return RELATION_KEY_BINDINGS;
+ }
+
+
+}
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/QVTcoreVariableKey.java b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/QVTcoreVariableKey.java
new file mode 100644
index 000000000..909d028be
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/QVTcoreVariableKey.java
@@ -0,0 +1,45 @@
+package org.eclipse.qvtd.build.qvtrtoqvtc.impl;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.ocl.examples.pivot.Type;
+import org.eclipse.ocl.examples.pivot.Variable;
+import org.eclipse.qvtd.build.qvtrtoqvtc.KeyBindings;
+import org.eclipse.qvtd.build.qvtrtoqvtc.KeyBindings.KeySet;
+import org.eclipse.qvtd.build.qvtrtoqvtc.RelationKey;
+import org.eclipse.qvtd.pivot.qvtcorebase.CorePattern;
+
+public class QVTcoreVariableKey implements RelationKey {
+
+ private static final @NonNull KeyBindings.KeySet RELATION_KEY_BINDINGS = new KeyBindings.KeySet();
+ public static final @NonNull KeyBindings.KeyKey<String> NAME = RELATION_KEY_BINDINGS.create((String)null, "name");
+ public static final @NonNull KeyBindings.KeyKey<Type> TYPE = RELATION_KEY_BINDINGS.create((Type)null, "type");
+ public static final @NonNull KeyBindings.KeyKey<CorePattern> CORE_PATTERN = RELATION_KEY_BINDINGS.create((CorePattern)null, "corePattern");
+
+ private Map<KeyBindings, Variable> variables = new HashMap<KeyBindings, Variable>();
+
+ public void add(Variable variable, CorePattern pattern) {
+ KeyBindings relationKeyBindings = new KeyBindings(this);
+ relationKeyBindings.put(NAME, variable.getName());
+ relationKeyBindings.put(TYPE, variable.getType());
+ relationKeyBindings.put(CORE_PATTERN, pattern);
+ variables.put(relationKeyBindings, variable);
+ }
+
+ public Variable get(String name, Type type, CorePattern pattern) {
+ KeyBindings relationKeyBindings = new KeyBindings(this);
+ relationKeyBindings.put(NAME, name);
+ relationKeyBindings.put(TYPE, type);
+ relationKeyBindings.put(CORE_PATTERN, pattern);
+ return variables.get(relationKeyBindings);
+ }
+
+ @Override
+ @NonNull
+ public KeySet getKeyBindings() {
+ return RELATION_KEY_BINDINGS;
+ }
+
+}
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/RelationToTraceClass.java b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/RelationToTraceClass.java
new file mode 100644
index 000000000..f1f5bc739
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/RelationToTraceClass.java
@@ -0,0 +1,192 @@
+/*******************************************************************************
+ * Copyright (c) 2014 The University of York and Willink Transformations.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Horacio Hoyos - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.qvtd.build.qvtrtoqvtc.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.ocl.examples.pivot.OCLExpression;
+import org.eclipse.ocl.examples.pivot.PivotFactory;
+import org.eclipse.ocl.examples.pivot.Property;
+import org.eclipse.ocl.examples.pivot.Type;
+import org.eclipse.ocl.examples.pivot.Variable;
+import org.eclipse.qvtd.build.qvtrtoqvtc.QvtrToQvtcTransformation;
+import org.eclipse.qvtd.build.qvtrtoqvtc.Rule;
+import org.eclipse.qvtd.pivot.qvtbase.Domain;
+import org.eclipse.qvtd.pivot.qvtrelation.DomainPattern;
+import org.eclipse.qvtd.pivot.qvtrelation.Relation;
+import org.eclipse.qvtd.pivot.qvtrelation.RelationDomain;
+import org.eclipse.qvtd.pivot.qvttemplate.ObjectTemplateExp;
+
+public class RelationToTraceClass extends AbstractRule
+{
+ /*
+ private static class Factory extends AbstractRule.Factory
+ {
+ @Override
+ public @Nullable Rule createRule(
+ @NonNull QvtrToQvtcTransformation transformation,
+ @NonNull EObject eo) {
+ Rule rule = null;
+ if (eo instanceof Relation) {
+ rule = new RelationToTraceClass(transformation, (Relation) eo);
+ Rule tracedRule = transformation.getRecord(rule.getRuleBindings());
+ if (tracedRule != null)
+ rule = tracedRule;
+ }
+ return rule;
+ }
+
+ @Override
+ public @Nullable Rule createRule(
+ @NonNull QvtrToQvtcTransformation transformation,
+ @NonNull List<EObject> eos) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ }
+ */
+ private class SubRecord
+ {
+ // Relations
+ @NonNull private ObjectTemplateExp t;
+ @NonNull private String vn;
+ @NonNull private Type c;
+
+ // Core
+ @Nullable private Property a;
+
+ public SubRecord(@NonNull ObjectTemplateExp t, @NonNull String vn, @NonNull Type c) {
+ this.t = t;
+ this.vn = vn;
+ this.c = c;
+ }
+ }
+
+ //public static final @NonNull Rule.Factory FACTORY = new Factory();
+
+ // Relations
+ private static final @NonNull RuleBindings.KeySet RULE_BINDINGS = new RuleBindings.KeySet();
+ public static final @NonNull RuleBindings.RuleKey<Relation> RELATIONS_r = RULE_BINDINGS.createRoot((Relation)null, "r");
+
+ // Core
+ private org.eclipse.ocl.examples.pivot.Class rc;
+
+ private String rn;
+
+ protected final @NonNull List<SubRecord> subRecords = new ArrayList<SubRecord>();
+
+ public RelationToTraceClass(@NonNull QvtrToQvtcTransformation transformation, @NonNull Relation r) {
+ super(transformation);
+ ruleBindings.put(RELATIONS_r, r);
+ }
+
+ public void check() {
+ Relation r = ruleBindings.get(RELATIONS_r);
+ assert r != null;
+ rn = r.getName();
+ for (Domain d : r.getDomain()) {
+ RelationDomain rd = (RelationDomain) d;
+ DomainPattern rdp = rd.getPattern();
+ OCLExpression templateExpression = rdp.getTemplateExpression();
+ if (templateExpression instanceof ObjectTemplateExp) {
+ ObjectTemplateExp t = (ObjectTemplateExp) templateExpression;
+ Variable tv = t.getBindsTo();
+ if (tv != null) {
+ Type c = tv.getType();
+ if (c != null) {
+ String vn = tv.getName();
+ assert vn != null;
+ subRecords.add(new SubRecord(t, vn, c));
+ }
+ }
+ }
+ }
+ }
+
+ public @Nullable org.eclipse.ocl.examples.pivot.Class getCore() {
+ return rc;
+ }
+
+ public @NonNull RuleBindings.KeySet getRuleBindingsKeys() {
+ return RULE_BINDINGS;
+ }
+
+ @Override
+ public void instantiateOutput() {
+ //if (rc != null) {
+ // rc = PivotFactory.eINSTANCE.createClass();
+ //}
+ // HACK rc should be instantiated here, where a name and type are defined
+ // Since it was instantiated before, we need to set its name
+ assert rc != null;
+ rc.setName("T"+rn);
+ for (SubRecord subRecord : subRecords) {
+ //Property a = PivotFactory.eINSTANCE.createProperty();
+ Property a = transformation.findProperty(subRecord.vn, rc);
+ assert a != null;
+ subRecord.a = a;
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.qvtd.build.qvtrtoqvtc.impl.AbstractRule#setAttributes()
+ */
+ @Override
+ public void setAttributes() {
+ assert rc != null;
+ for (SubRecord subRecord : subRecords) {
+ Property a = subRecord.a;
+ assert a != null;
+ a.setType(subRecord.c);
+ }
+ }
+
+ public void setCore(@NonNull org.eclipse.ocl.examples.pivot.Class rc) {
+ this.rc = rc;
+ }
+
+ /*
+ @Override
+ public boolean when() {
+ Relation r = ruleBindings.get(RELATIONS_r);
+ assert r != null;
+ RelationalTransformation rt = (RelationalTransformation) r.getTransformation();
+ assert rt != null;
+ // This is the same code the factory has, and IMHO its better encapsulated by the factory. The real issue is that the bindings need a rule
+ RuleBindings whenBindings = new RuleBindings(new RelationalTransformationToTracePackage(transformation, rt));
+ RelationalTransformationToTracePackage whenRule = (RelationalTransformationToTracePackage) transformation.getRecord(whenBindings);
+ //Rule whenRule = RelationalTransformationToTracePackage.FACTORY.createRule(transformation, rt);
+ if (whenRule != null && whenRule.hasExecuted()) {
+ p = (Package) whenRule.getCore();
+ assert p != null;
+ return true;
+ }
+ return false;
+ }
+ */
+
+ @Override
+ public void where() {
+ for (SubRecord subRecord : subRecords) {
+ Rule innerRule = new SubTemplateToTraceClassProps(transformation, subRecord.t, rc);
+ if (innerRule != null) {
+ assert !innerRule.hasExecuted();
+ transformation.executeNestedRule(innerRule);
+ }
+ }
+ }
+
+
+}
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/RelationalTransformationToMappingTransformation.java b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/RelationalTransformationToMappingTransformation.java
new file mode 100644
index 000000000..bb37c7e1f
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/RelationalTransformationToMappingTransformation.java
@@ -0,0 +1,176 @@
+/*******************************************************************************
+ * Copyright (c) 2014 The University of York and Willink Transformations.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Horacio Hoyos - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.qvtd.build.qvtrtoqvtc.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.ocl.examples.pivot.Package;
+import org.eclipse.qvtd.build.qvtrtoqvtc.QvtrToQvtcTransformation;
+import org.eclipse.qvtd.build.qvtrtoqvtc.Rule;
+import org.eclipse.qvtd.pivot.qvtbase.QVTbaseFactory;
+import org.eclipse.qvtd.pivot.qvtbase.Transformation;
+import org.eclipse.qvtd.pivot.qvtbase.TypedModel;
+import org.eclipse.qvtd.pivot.qvtrelation.RelationalTransformation;
+
+public class RelationalTransformationToMappingTransformation extends AbstractRule
+{
+ private static class Factory extends AbstractRule.Factory
+ {
+ public @Nullable Rule createRule(@NonNull QvtrToQvtcTransformation transformation, @NonNull EObject eo) {
+ Rule rule = null;
+ if (eo instanceof RelationalTransformation) {
+ rule = new RelationalTransformationToMappingTransformation(transformation, (RelationalTransformation) eo);
+ Rule tracedRule = transformation.getRecord(rule.getRuleBindings());
+ if (tracedRule != null)
+ rule = tracedRule;
+ }
+ return rule;
+ }
+
+ @Override
+ public @Nullable Rule createRule(
+ @NonNull QvtrToQvtcTransformation transformation,
+ @NonNull List<EObject> eos) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+ }
+
+ private class SubRecord
+ {
+
+ // Relations
+ @NonNull public TypedModel rtm;
+ @NonNull public String tmn;
+ @NonNull public List<Package> up;
+
+ // Core
+ @Nullable public TypedModel mtm;
+
+ public SubRecord(@NonNull TypedModel rtm, @NonNull String tmn, @NonNull List<Package> up) {
+ this.rtm = rtm;
+ this.tmn = tmn;
+ this.up = up;
+ }
+
+
+ }
+
+ public static final @NonNull Rule.Factory FACTORY = new Factory();
+
+ // Relations
+ private static final @NonNull RuleBindings.KeySet RULE_BINDINGS = new RuleBindings.KeySet();
+ public static final @NonNull RuleBindings.RuleKey<RelationalTransformation> RELATIONS_rt = RULE_BINDINGS.createRoot((RelationalTransformation)null, "rt");
+// private static final @NonNull RuleBindings.RuleKey<TypedModel> RELATIONS_rtm = RULE_BINDINGS.create((TypedModel)null, "rtm");
+
+ // Core
+ Transformation mt = null;
+ org.eclipse.ocl.examples.pivot.Package p = null;
+ private TypedModel tmtm = null;
+ //public static final @NonNull RuleBindings.RuleKey<Transformation> CORE_mt = RULE_BINDINGS.create((Transformation)null, "mt");
+// public static final @NonNull RuleBindings.RuleKey<TypedModel> CORE_mtm = RULE_BINDINGS.create((TypedModel)null, "mtm");
+
+ // Shared
+// public static final @NonNull RuleBindings.RuleKey<String> SHARED_tmn = RULE_BINDINGS.create((String)null, "tmn");
+// public static final @NonNull RuleBindings.RuleKey<List<org.eclipse.ocl.examples.pivot.Package>> SHARED_up = RULE_BINDINGS.create((List<org.eclipse.ocl.examples.pivot.Package>)null, "up");
+ String rtn;
+
+
+ protected final @NonNull List<SubRecord> subRecords = new ArrayList<SubRecord>();
+
+
+
+ public RelationalTransformationToMappingTransformation(@NonNull QvtrToQvtcTransformation transformation, @NonNull RelationalTransformation rt) {
+ super(transformation);
+ ruleBindings.put(RELATIONS_rt, rt);
+ }
+
+ @Override
+ public void check() {
+ RelationalTransformation rt = ruleBindings.get(RELATIONS_rt);
+ rtn = rt.getName();
+ assert (rt != null) && (mt == null);
+ for (TypedModel rtm : rt.getModelParameter()) {
+ @SuppressWarnings("null")@NonNull List<Package> usedPackage = rtm.getUsedPackage();
+ String tmn = rtm.getName();
+ assert tmn != null;
+ subRecords.add(new SubRecord(rtm, tmn, usedPackage));
+ }
+ }
+
+ public @Nullable Transformation getCore() {
+ return mt;
+ }
+
+ public @NonNull RuleBindings.KeySet getRuleBindingsKeys() {
+ return RULE_BINDINGS;
+ }
+
+ @Override
+ public void instantiateOutput() {
+ mt = QVTbaseFactory.eINSTANCE.createTransformation();
+ assert mt != null;
+ transformation.addOrphan(mt);
+ // Middle model
+ tmtm = QVTbaseFactory.eINSTANCE.createTypedModel();
+ for (SubRecord subRecord : subRecords) {
+ TypedModel mtm = QVTbaseFactory.eINSTANCE.createTypedModel();
+ subRecord.mtm = mtm;
+ }
+
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.qvtd.build.qvtrtoqvtc.impl.AbstractRule#setAttributes()
+ */
+ @Override
+ public void setAttributes() {
+ assert mt != null;
+ mt.setName(rtn);
+ assert p != null;
+ assert tmtm != null;
+ tmtm.setName("");
+ tmtm.getUsedPackage().add(p);
+ mt.getModelParameter().add(tmtm);
+ for (SubRecord subRecord : subRecords) {
+ TypedModel mtm = subRecord.mtm;
+ assert mtm != null;
+ mtm.setName(subRecord.tmn);
+ mtm.getUsedPackage().addAll(subRecord.up);
+ mt.getModelParameter().add(mtm);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.qvtd.build.qvtrtoqvtc.impl.AbstractRule#when()
+ */
+ @Override
+ public boolean when() {
+ RelationalTransformation rt = ruleBindings.get(RELATIONS_rt);
+ assert rt != null;
+ RelationalTransformationToTracePackage whenRule = new RelationalTransformationToTracePackage(transformation, rt);
+ RuleBindings whenBindings = whenRule.getRuleBindings();
+ RelationalTransformationToTracePackage whenRuleRecord = (RelationalTransformationToTracePackage) transformation.getRecord(whenBindings);
+ if (whenRuleRecord != null && whenRuleRecord.hasExecuted()) {
+ p = (Package) whenRuleRecord.getCore();
+ assert p != null;
+ return true;
+ }
+ return false;
+ }
+
+
+
+}
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/RelationalTransformationToTracePackage.java b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/RelationalTransformationToTracePackage.java
new file mode 100644
index 000000000..bc5906dc9
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/RelationalTransformationToTracePackage.java
@@ -0,0 +1,139 @@
+/*******************************************************************************
+ * Copyright (c) 2014 The University of York and Willink Transformations.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Horacio Hoyos - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.qvtd.build.qvtrtoqvtc.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.ocl.examples.pivot.Class;
+import org.eclipse.ocl.examples.pivot.PivotFactory;
+import org.eclipse.qvtd.build.qvtrtoqvtc.QvtrToQvtcTransformation;
+import org.eclipse.qvtd.build.qvtrtoqvtc.Rule;
+import org.eclipse.qvtd.pivot.qvtrelation.Relation;
+import org.eclipse.qvtd.pivot.qvtrelation.RelationalTransformation;
+
+public class RelationalTransformationToTracePackage extends AbstractRule
+{
+ private static class Factory extends AbstractRule.Factory
+ {
+ public @Nullable Rule createRule(@NonNull QvtrToQvtcTransformation transformation, @NonNull EObject eo) {
+ Rule rule = null;
+ if (eo instanceof RelationalTransformation) {
+ rule = new RelationalTransformationToTracePackage(transformation, (RelationalTransformation) eo);
+ Rule tracedRule = transformation.getRecord(rule.getRuleBindings());
+ if (tracedRule != null)
+ rule = tracedRule;
+ }
+ return rule;
+ }
+
+ @Override
+ public @Nullable Rule createRule(
+ @NonNull QvtrToQvtcTransformation transformation,
+ @NonNull List<EObject> eos) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+ }
+
+ private class SubRecord {
+
+ // Relations
+ @NonNull private Relation r;
+
+ // Core
+ @Nullable private Class rc;
+
+ public SubRecord(@NonNull Relation r) {
+ this.r = r;
+ }
+
+ }
+
+
+ public static final @NonNull Rule.Factory FACTORY = new Factory();
+
+ private static final @NonNull RuleBindings.KeySet RULE_BINDINGS = new RuleBindings.KeySet();
+ public static final @NonNull RuleBindings.RuleKey<RelationalTransformation> RELATIONS_rt = RULE_BINDINGS.createRoot((RelationalTransformation)null, "rt");
+
+ // Core
+ private org.eclipse.ocl.examples.pivot.Package p = null;
+
+ // Primitives
+ private String rtn;
+
+ protected final @NonNull List<SubRecord> subRecords = new ArrayList<SubRecord>();
+
+ public RelationalTransformationToTracePackage(@NonNull QvtrToQvtcTransformation transformation, @NonNull RelationalTransformation rt) {
+ super(transformation);
+ ruleBindings.put(RELATIONS_rt, rt);
+ }
+
+ @Override
+ public void check() {
+ RelationalTransformation rt = ruleBindings.get(RELATIONS_rt);
+ assert rt != null;
+ rtn = rt.getName();
+ for (org.eclipse.qvtd.pivot.qvtbase.Rule r : rt.getRule()) {
+ assert r!= null;
+ subRecords.add(new SubRecord((Relation) r));
+ }
+ }
+
+ public @Nullable org.eclipse.ocl.examples.pivot.Package getCore() {
+ return p;
+ }
+
+ public @NonNull RuleBindings.KeySet getRuleBindingsKeys() {
+ return RULE_BINDINGS;
+ }
+
+ @Override
+ public void instantiateOutput() {
+ p = PivotFactory.eINSTANCE.createPackage();
+ assert p != null;
+ final org.eclipse.ocl.examples.pivot.Package p2 = p;
+ assert p2 != null;
+ transformation.addOrphan(p2);
+ for (SubRecord subRecord : subRecords) {
+ org.eclipse.ocl.examples.pivot.Class rc = PivotFactory.eINSTANCE.createClass();
+ assert rc != null;
+ p.getOwnedType().add(rc);
+ subRecord.rc = rc;
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.qvtd.build.qvtrtoqvtc.impl.AbstractRule#setAttributes()
+ */
+ @Override
+ public void setAttributes() {
+
+ p.setName("P" + rtn);
+ }
+
+ @Override
+ public void where() {
+ for (SubRecord subRecord : subRecords) {
+ RelationToTraceClass whenRule = new RelationToTraceClass(transformation, subRecord.r);
+ final Class rc2 = subRecord.rc;
+ if (rc2 != null) {
+ whenRule.setCore(rc2);
+ transformation.executeNestedRule(whenRule);
+ } else {
+ // TODO handle null value
+ }
+ }
+ }
+}
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/RuleBindings.java b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/RuleBindings.java
new file mode 100644
index 000000000..4fe5a3055
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/RuleBindings.java
@@ -0,0 +1,153 @@
+/*******************************************************************************
+ * Copyright (c) 2014 The University of York and Willink Transformations.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Horacio Hoyos - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.qvtd.build.qvtrtoqvtc.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.qvtd.build.qvtrtoqvtc.Rule;
+
+public class RuleBindings extends AbstractBindings
+{
+ public static class RuleKey<T> extends AbstractBindings.Key<T>
+ {
+ private RuleKey(@NonNull String key) {
+ super(key);
+ }
+ }
+
+ public static class KeySet extends AbstractBindings.KeySet
+ {
+ protected final @NonNull List<Key<?>> rootKeys = new ArrayList<Key<?>>();
+
+ public @NonNull <T> RuleKey<T> create(@Nullable T keyClass, @NonNull String key) {
+ RuleKey<T> theKey = new RuleKey<T>(key);
+ keys.add(theKey);
+ return theKey;
+ }
+
+ public @NonNull <T> RuleKey<T> createRoot(@Nullable T keyClass, @NonNull String key) {
+ RuleKey<T> rootKey = create(keyClass, key);
+ rootKeys.add(rootKey);
+ return (RuleKey<T>) rootKey;
+ }
+
+ public @NonNull List<Key<?>> getRootKeys() {
+ return rootKeys;
+ }
+ }
+
+ protected @NonNull final Rule rule;
+ private Integer hashCode;
+
+ public RuleBindings(@NonNull Rule rule) {
+ this.rule = rule;
+ }
+
+ protected void checkKey(@NonNull AbstractBindings.Key<?> key) {
+ for (Key<?> relationsKey : rule.getRuleBindingsKeys().getKeys()) {
+ if (relationsKey == key) {
+ return;
+ }
+ }
+ throw new IllegalArgumentException("Incompatible relations key " + key + " for " + rule);
+ }
+
+ public boolean containsKey(@NonNull RuleKey<?> key) {
+ return delegate.containsKey(key);
+ }
+
+ @SuppressWarnings("unchecked")
+ public <T> T get(@NonNull RuleKey<T> key) {
+ return (T) delegate.get(key);
+ }
+
+ public @NonNull Rule getRule() {
+ return rule;
+ }
+
+ public boolean matches(@NonNull RuleKey<?> rootKey, @NonNull RuleBindings traceBindings) {
+
+ Object boundValue = get(rootKey);
+ if ((boundValue == null) && !containsKey(rootKey)) {
+ return false;
+ }
+ Object traceValue = traceBindings.get(rootKey);
+ if ((traceValue == null) && !traceBindings.containsKey(rootKey)) {
+ return false;
+ }
+ if (traceValue == null) {
+ if (boundValue != null) {
+ return false;
+ }
+ }
+ else if (!(traceValue.equals(boundValue))) {
+ return false;
+ }
+
+ return true;
+ }
+
+ @SuppressWarnings("unchecked")
+ public <T> T put(@NonNull RuleKey<T> key, T value) {
+ return (T) delegate.put(key, value);
+ }
+
+ @SuppressWarnings("unchecked")
+ public <T> T remove(@NonNull RuleKey<T> key) {
+ return (T) delegate.remove(key);
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (o == this)
+ return true;
+ if (!(o instanceof RuleBindings))
+ return false;
+ RuleBindings rb = (RuleBindings) o;
+ if (rule.getClass() != rb.getRule().getClass())
+ return false;
+ /*
+ for (Key<?> key : rule.getRuleBindingsKeys().getRootKeys()) {
+ assert key != null;
+ Object thisValue = get((RuleKey<?>) key);
+ Object thatValue = rb.get((RuleKey<?>) key);
+ if (thisValue != thatValue)
+ return false;
+ }
+ return true;
+ */
+ return delegate.equals(rb.delegate);
+ }
+
+ @Override
+ public int hashCode() {
+ if (hashCode == null) {
+ hashCode = getClass().hashCode() + delegate.hashCode();
+ }
+ return hashCode.intValue();
+ }
+ /*
+ @Override
+ public int hashCode() {
+ int code = 0;
+ code += this.getClass().hashCode();
+ for (Key<?> key : rule.getRuleBindingsKeys().getRootKeys()) {
+ assert key != null;
+ code += get((RuleKey<?>) key).hashCode();
+ }
+ return code;
+ }
+ */
+
+}
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/SubTemplateToTraceClassProps.java b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/SubTemplateToTraceClassProps.java
new file mode 100644
index 000000000..f1f913c77
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/SubTemplateToTraceClassProps.java
@@ -0,0 +1,131 @@
+/*******************************************************************************
+ * Copyright (c) 2014 The University of York and Willink Transformations.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Horacio Hoyos - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.qvtd.build.qvtrtoqvtc.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.ocl.examples.pivot.OCLExpression;
+import org.eclipse.ocl.examples.pivot.PivotFactory;
+import org.eclipse.ocl.examples.pivot.Property;
+import org.eclipse.ocl.examples.pivot.Type;
+import org.eclipse.ocl.examples.pivot.Variable;
+import org.eclipse.qvtd.build.qvtrtoqvtc.QvtrToQvtcTransformation;
+import org.eclipse.qvtd.build.qvtrtoqvtc.Rule;
+import org.eclipse.qvtd.pivot.qvttemplate.ObjectTemplateExp;
+import org.eclipse.qvtd.pivot.qvttemplate.PropertyTemplateItem;
+
+public class SubTemplateToTraceClassProps extends AbstractRule
+{
+
+ private class SubRecord
+ {
+ // Relations
+ @NonNull private ObjectTemplateExp tp;
+ @NonNull private String vn;
+ @NonNull private Type c;
+
+ // Core
+ @Nullable private Property a;
+
+ public SubRecord( @NonNull ObjectTemplateExp tp, @NonNull String vn, @NonNull Type c) {
+
+ this.tp = tp;
+ this.vn = vn;
+ this.c = c;
+ }
+
+ }
+
+ // Relations
+ private static final @NonNull RuleBindings.KeySet RULE_BINDINGS = new RuleBindings.KeySet();
+ public static final @NonNull RuleBindings.RuleKey<ObjectTemplateExp> RELATIONS_t = RULE_BINDINGS.createRoot((ObjectTemplateExp)null, "t");
+ public static final @NonNull RuleBindings.RuleKey<ObjectTemplateExp> RELATIONS_tp = RULE_BINDINGS.create((ObjectTemplateExp)null, "tp");
+
+ // Core
+ @NonNull org.eclipse.ocl.examples.pivot.Class rc;
+
+ protected final @NonNull List<SubRecord> subRecords = new ArrayList<SubRecord>();
+
+ public SubTemplateToTraceClassProps(@NonNull QvtrToQvtcTransformation transformation,
+ @NonNull ObjectTemplateExp t,
+ @NonNull org.eclipse.ocl.examples.pivot.Class rc) {
+ super(transformation);
+ ruleBindings.put(RELATIONS_t, t);
+ this.rc = rc;
+ }
+
+ public void check() {
+ ObjectTemplateExp t = ruleBindings.get(RELATIONS_t);
+ assert (t != null) && (rc != null);
+ for (PropertyTemplateItem pt : t.getPart()) {
+ OCLExpression value = pt.getValue();
+ if (value instanceof ObjectTemplateExp) {
+ ObjectTemplateExp tp = (ObjectTemplateExp) value;
+ Variable tv = tp.getBindsTo();
+ if (tv != null) {
+ Type c = tv.getType();
+ if (c != null) {
+ String vn = tv.getName();
+ assert vn != null;
+ subRecords.add(new SubRecord(tp, vn, c));
+ }
+ }
+ }
+ }
+ }
+
+ public @NonNull RuleBindings.KeySet getRuleBindingsKeys() {
+ return RULE_BINDINGS;
+ }
+
+
+ @Override
+ public void instantiateOutput() {
+ for (SubRecord subRecord : subRecords) {
+ Property a = transformation.findProperty(subRecord.vn, rc);
+ assert a != null;
+ transformation.addOrphan(a);
+ subRecord.a = a;
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.qvtd.build.qvtrtoqvtc.impl.AbstractRule#setAttributes()
+ */
+ @Override
+ public void setAttributes() {
+ assert rc != null;
+ for (SubRecord subRecord : subRecords) {
+ Property a = subRecord.a;
+ assert a != null;
+ //a.setName(subRecord.vn);
+ a.setType(subRecord.c);
+ //rc.getOwnedAttribute().add(a);
+ }
+
+ }
+
+ @Override
+ public void where() {
+ for (SubRecord subRecord : subRecords) {
+ Rule innerRule = new SubTemplateToTraceClassProps(transformation, subRecord.tp, rc);
+ if (innerRule != null) {
+ assert !innerRule.hasExecuted();
+ transformation.executeNestedRule(innerRule);
+ }
+
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/TROppositeDomainsToMappingForEnforcement.java b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/TROppositeDomainsToMappingForEnforcement.java
new file mode 100644
index 000000000..2576787e9
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/TROppositeDomainsToMappingForEnforcement.java
@@ -0,0 +1,19 @@
+package org.eclipse.qvtd.build.qvtrtoqvtc.impl;
+
+import org.eclipse.qvtd.build.qvtrtoqvtc.QvtrToQvtcTransformation;
+
+public class TROppositeDomainsToMappingForEnforcement extends AbstractRule {
+
+
+
+ private class SubRecord {
+
+ }
+
+ protected TROppositeDomainsToMappingForEnforcement(
+ QvtrToQvtcTransformation transformation) {
+ super(transformation);
+
+ }
+
+}
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/TopLevelRelationToMappingForEnforcement.java b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/TopLevelRelationToMappingForEnforcement.java
new file mode 100644
index 000000000..5e1e06f04
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/TopLevelRelationToMappingForEnforcement.java
@@ -0,0 +1,313 @@
+package org.eclipse.qvtd.build.qvtrtoqvtc.impl;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.ocl.examples.pivot.Package;
+import org.eclipse.ocl.examples.pivot.Variable;
+import org.eclipse.qvtd.build.qvtrtoqvtc.QVTr2QVTcRelations;
+import org.eclipse.qvtd.build.qvtrtoqvtc.QvtrToQvtcTransformation;
+import org.eclipse.qvtd.build.qvtrtoqvtc.Rule;
+import org.eclipse.qvtd.pivot.qvtbase.Domain;
+import org.eclipse.qvtd.pivot.qvtbase.Predicate;
+import org.eclipse.qvtd.pivot.qvtbase.Transformation;
+import org.eclipse.qvtd.pivot.qvtbase.TypedModel;
+import org.eclipse.qvtd.pivot.qvtcore.Mapping;
+import org.eclipse.qvtd.pivot.qvtcorebase.BottomPattern;
+import org.eclipse.qvtd.pivot.qvtcorebase.CoreDomain;
+import org.eclipse.qvtd.pivot.qvtcorebase.GuardPattern;
+import org.eclipse.qvtd.pivot.qvtcorebase.RealizedVariable;
+import org.eclipse.qvtd.pivot.qvtrelation.DomainPattern;
+import org.eclipse.qvtd.pivot.qvtrelation.Relation;
+import org.eclipse.qvtd.pivot.qvtrelation.RelationDomain;
+import org.eclipse.qvtd.pivot.qvtrelation.RelationalTransformation;
+import org.eclipse.qvtd.pivot.qvttemplate.ObjectTemplateExp;
+
+public class TopLevelRelationToMappingForEnforcement extends AbstractRule
+{
+
+ private static class Factory extends AbstractRule.Factory
+ {
+ public @Nullable Rule createRule(@NonNull QvtrToQvtcTransformation transformation, @NonNull EObject eo) {
+ Rule rule = null;
+ if (eo instanceof Relation) {
+ rule = new TopLevelRelationToMappingForEnforcement(transformation, (Relation) eo);
+ Rule tracedRule = transformation.getRecord(rule.getRuleBindings());
+ if (tracedRule != null)
+ rule = tracedRule;
+ }
+ return rule;
+ }
+
+ @Override
+ public @Nullable Rule createRule(
+ @NonNull QvtrToQvtcTransformation transformation,
+ @NonNull List<EObject> eos) {
+ return null;
+ }
+ }
+
+ private class SubRecord
+ {
+ // Relations
+ @NonNull private RelationDomain rd;
+ @SuppressWarnings("unused")
+ @NonNull private TypedModel dir;
+ @NonNull private String tmn;
+ @NonNull private String dn;
+ @NonNull private List<Package> up;
+ @NonNull private ObjectTemplateExp te;
+ @NonNull private Variable tev;
+ @NonNull private List<RelationDomain> rOppositeDomains;
+ @NonNull private List<Variable> domainVars;
+
+ // Core
+ @Nullable private Mapping m;
+ @Nullable private GuardPattern mg;
+ @Nullable private BottomPattern mb;
+ @Nullable private RealizedVariable tcv;
+ @Nullable private CoreDomain md;
+ @Nullable private TypedModel mdir;
+ @Nullable private GuardPattern dg;
+ @Nullable private BottomPattern db;
+ @Nullable private RealizedVariable mtev;
+ @Nullable public List<Variable> mbvars;
+
+
+ public SubRecord(@NonNull RelationDomain rd, @NonNull TypedModel dir,
+ @NonNull String tmn, @NonNull String dn,
+ @NonNull List<Package> up,@NonNull List<Variable> domainVars,
+ @NonNull ObjectTemplateExp te, @NonNull Variable tev,
+ @NonNull List<RelationDomain> rOppositeDomains) {
+ this.rd = rd;
+ this.dir = dir;
+ this.tmn = tmn;
+ this.dn = dn;
+ this.up = up;
+ this.te = te;
+ this.tev = tev;
+ this.domainVars = domainVars;
+ this.rOppositeDomains = rOppositeDomains;
+ }
+
+ }
+
+ // Relations
+ private static final @NonNull RuleBindings.KeySet RULE_BINDINGS = new RuleBindings.KeySet();
+ private static final @NonNull RuleBindings.RuleKey<Relation> RELATIONS_r = RULE_BINDINGS.createRoot((Relation)null, "r");
+
+ private String rn;
+
+ public Transformation mt;
+
+ public static final @NonNull Rule.Factory FACTORY = new Factory();
+
+ protected final @NonNull List<SubRecord> subRecords = new ArrayList<SubRecord>();
+
+ public TopLevelRelationToMappingForEnforcement(@NonNull QvtrToQvtcTransformation transformation,
+ @NonNull Relation r) {
+ super(transformation);
+ ruleBindings.put(RELATIONS_r, r);
+ }
+
+ // One Mapping per domain
+ public void check() {
+ Relation r = ruleBindings.get(RELATIONS_r);
+ rn = r.getName();
+ assert (r != null);
+ if (r.isIsTopLevel()) {
+ for (Domain d : r.getDomain()) {
+ RelationDomain rd = (RelationDomain) d;
+ if (rd.isIsEnforceable() && rd.getPattern().getTemplateExpression() instanceof ObjectTemplateExp) {
+ //Mapping m = QVTcoreFactory.eINSTANCE.createMapping();
+ String dn = rd.getName();
+ assert dn != null;
+ TypedModel dir = rd.getTypedModel();
+ String tmn = dir.getName();
+ assert tmn != null;
+ List<Package> up = dir.getUsedPackage();
+ assert up != null;
+ DomainPattern dp = rd.getPattern();
+ List<Variable> domainVars = dp.getBindsTo();
+ ObjectTemplateExp te = (ObjectTemplateExp) dp.getTemplateExpression();
+ Variable tev = te.getBindsTo();
+ assert tev != null;
+ List<RelationDomain> rOppositeDomains = new ArrayList<RelationDomain>();
+ Iterator<Domain> it = r.getDomain().iterator();
+ while (it.hasNext()) {
+ rOppositeDomains.add((RelationDomain) it.next());
+ }
+ rOppositeDomains.remove(rd);
+ subRecords.add(new SubRecord(rd, dir, tmn, dn, up, domainVars, te, tev, rOppositeDomains));
+ }
+ }
+ }
+ }
+
+ public @NonNull RuleBindings.KeySet getRuleBindingsKeys() {
+ return RULE_BINDINGS;
+ }
+
+ public void instantiateOutput() {
+ Relation r = ruleBindings.get(RELATIONS_r);
+ assert (r != null) && (mt != null);
+ for (SubRecord subRecord : subRecords) {
+ final Transformation mt2 = mt;
+ if (mt2 != null) {
+ Mapping m = transformation.findMapping(rn+'_'+subRecord.dn, mt2);
+ assert m != null;
+ subRecord.m = m;
+ GuardPattern mg = transformation.findGuardPattern(m);
+ assert mg != null;
+ subRecord.mg = mg;
+ BottomPattern mb = transformation.findBottomPattern(m);
+ assert mb != null;
+ subRecord.mb = mb;
+ CoreDomain md = transformation.findCoreDomain(subRecord.dn, m);
+ assert md != null;
+ subRecord.md = md;
+ TypedModel mdir = null;
+ for (TypedModel tm : mt2.getModelParameter()) {
+ if (tm.getName() == subRecord.tmn) {
+ if (tm.getUsedPackage().equals(subRecord.up)) {
+ mdir = tm;
+ break;
+ }
+ }
+ }
+ assert mdir != null;
+ subRecord.mdir = mdir;
+ GuardPattern dg = transformation.findGuardPattern(md);
+ assert dg != null;
+ subRecord.dg = dg;
+ BottomPattern db = transformation.findBottomPattern(md);
+ assert db != null;
+ subRecord.db = db;
+ } else {
+ // TODO handle null value
+ }
+ }
+ }
+
+
+ public void setAttributes() {
+ for (SubRecord subRecord : subRecords) {
+ BottomPattern mb = subRecord.mb;
+ RealizedVariable tcv = subRecord.tcv;
+ assert (mb != null) && (tcv != null);
+ mb.getRealizedVariable().add(tcv);
+ //mb.getVariable().addAll(mbvars);
+ CoreDomain md = subRecord.md;
+ assert (md != null);
+ md.setTypedModel(subRecord.mdir);
+ md.setIsEnforceable(true);
+ BottomPattern db = subRecord.db;
+ RealizedVariable mtev = subRecord.mtev;
+ assert (db != null) && (tcv != null);
+ db.getRealizedVariable().add(mtev);
+ }
+ }
+
+ @Override
+ public boolean when() {
+ Relation r = ruleBindings.get(RELATIONS_r);
+ assert r != null;
+ RelationalTransformation rt = (RelationalTransformation) r.getTransformation();
+ assert rt != null;
+ // This is the same code the factory has, and IMHO its better encapsulated by the factory.
+ // The real issue is that the bindings needs a rule and to get a record (rule) we need a binding
+ //Rule whenRule = RelationalTransformationToMappingTransformation.FACTORY.createRule(transformation, rt);
+ RelationalTransformationToMappingTransformation whenRule = new RelationalTransformationToMappingTransformation(transformation, rt);
+ RuleBindings whenBindings = whenRule.getRuleBindings();
+ RelationalTransformationToMappingTransformation whenRuleRecord = (RelationalTransformationToMappingTransformation) transformation.getRecord(whenBindings);
+ if (whenRuleRecord != null && whenRuleRecord.hasExecuted()) {
+ mt = (Transformation) whenRuleRecord.getCore();
+ assert mt != null;
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public void where() {
+ QVTr2QVTcRelations relations = new QVTr2QVTcRelations(transformation);
+ Relation r = ruleBindings.get(RELATIONS_r);
+ assert r != null;
+ Set<Predicate> rpSet = new HashSet<Predicate>();
+ Set<Variable> whereVars = new HashSet<Variable>();
+ Set<Variable> whenVars = new HashSet<Variable>();
+ if (r.getWhen() != null) {
+ whenVars.addAll(r.getWhen().getBindsTo());
+ }
+ if (r.getWhere() != null) {
+ rpSet.addAll(relations.rejectRelationCallPredicates(r.getWhere().getPredicate()));
+ whereVars.addAll(r.getWhere().getBindsTo());
+ }
+ Set<Variable> sharedDomainVars = relations.getSharedDomainVars(r);
+ Set<Variable> allDomainVars = relations.getAllDomainVars(r);
+ Set<Variable> unsharedWhereVars = new HashSet<Variable>(whereVars);
+ unsharedWhereVars.removeAll(whenVars);
+ unsharedWhereVars.removeAll(allDomainVars);
+ unsharedWhereVars.addAll(sharedDomainVars);
+ Set<Variable> unsharedWhenVars = new HashSet<Variable>(whenVars);
+ unsharedWhenVars.removeAll(allDomainVars);
+ for (SubRecord subRecord : subRecords) {
+ Set<Variable> oppositeDomainVars = new HashSet<Variable>();
+ for (Domain d : subRecord.rOppositeDomains) {
+ if (((RelationDomain)d).getPattern() != null) {
+ oppositeDomainVars.addAll(((RelationDomain)d).getPattern().getBindsTo());
+ }
+ }
+ Set<Variable> domainBottomUnSharedVars = new HashSet<Variable>(subRecord.domainVars);
+ domainBottomUnSharedVars.removeAll(whenVars);
+ domainBottomUnSharedVars.removeAll(sharedDomainVars);
+ Set<Predicate> predicatesWithVarBindings = relations.filterOutPredicatesThatReferToVars(rpSet, domainBottomUnSharedVars);
+ Set<Predicate> predicatesWithoutVarBindings = new HashSet<Predicate>(rpSet);
+ predicatesWithoutVarBindings.removeAll(predicatesWithVarBindings);
+ Set<Variable> domainVarsSharedWithWhen = new HashSet<Variable>(subRecord.domainVars);
+ domainVarsSharedWithWhen.retainAll(whenVars);
+ BottomPattern mb = subRecord.mb;
+ assert mb != null;
+ final BottomPattern db = subRecord.db;
+ assert db != null;
+ // Relation Calls
+ // T6
+ RealizedVariable mtev = relations.doRVarToMRealizedVar(subRecord.tev, db);
+ assert mtev != null;
+ subRecord.mtev = mtev;
+ RealizedVariable tcv = relations.doRelationDomainToTraceClassVar(r, subRecord.rd, mb);
+ assert tcv != null;
+ subRecord.tcv = tcv;
+ //T5
+ relations.doRPredicateSetToMBPredicateSet(new ArrayList<Predicate>(predicatesWithVarBindings), mb);
+ GuardPattern dg = subRecord.dg;
+ assert dg != null;
+ relations.doRVarSetToDGVarSet(new ArrayList<Variable>(domainVarsSharedWithWhen), dg);
+
+ //T4
+ /* List<Variable> mbvars =*/ relations.doRVarSetToMBVarSet(new ArrayList<Variable>(unsharedWhereVars), mb);
+ //subRecord.mbvars = mbvars;
+ //T3
+ Mapping m = subRecord.m;
+ assert m!= null;
+ relations.doTROppositeDomainsToMappingForEnforcement(r, subRecord.rd, m);
+ // Invoked here so the variables are instantiated
+ relations.doROppositeDomainVarsToTraceClassProps(r, subRecord.rd, subRecord.te, oppositeDomainVars, mb);
+ GuardPattern mg = subRecord.mg;
+ assert mg != null;
+ relations.doRWhenPatternToMGuardPattern(r, mg);
+ relations.doRDomainToMDBottomForEnforcement(r, subRecord.rd, subRecord.te, predicatesWithoutVarBindings, domainBottomUnSharedVars, db);
+ RelationDomain rd = subRecord.rd;
+ assert rd != null;
+ relations.doRRelImplToMBottomEnforcementOperation(r, rd, mb);
+
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/OCLExpressionCopyMethods.egl b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/OCLExpressionCopyMethods.egl
new file mode 100644
index 000000000..54c33e0c5
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/OCLExpressionCopyMethods.egl
@@ -0,0 +1,104 @@
+package org.eclipse.qvtd.build.qvtrtoqvtc.impl;
+
+import org.eclipse.jdt.annotation.NonNull;
+[%for (ec in pivot!EClass.all().select(c | not c.interface
+ or (c.abstract and pivot!EReference.all().exists(er | er.eReferenceType == c))
+ )) {%]
+import org.eclipse.ocl.examples.pivot.[%=ec.name%];
+[%} %]
+import org.eclipse.ocl.examples.pivot.PivotFactory;
+import org.eclipse.ocl.examples.pivot.util.PivotSwitch;
+import org.eclipse.qvtd.build.qvtrtoqvtc.QvtrToQvtcTransformation;
+
+/**
+ * A set of operations to correctly copy an OCLExp
+ * @generated
+ */
+public class OCLExpCopy extends PivotSwitch<Element> {
+
+ @NonNull private QvtrToQvtcTransformation transformation;
+
+ public OCLExpCopy(@NonNull QvtrToQvtcTransformation transformation) {
+ this.transformation = transformation;
+ }
+
+[%for (ec in pivot!EClass.all().select(c | (not (c.abstract or c.interface)) and c.eTypeParameters.isEmpty())) {%]
+ /**
+ * @generated
+ */
+ @Override
+ public Element case[%=ec.name%]([%=ec.name%] in) {
+ [%ec.name.println();%]
+ [%switch (ec.name) {
+ case "VariableExp" :%]
+ final [%=ec.name%] out = PivotFactory.eINSTANCE.create[%=ec.name%]();
+ assert out != null;
+ transformation.addOrphan(out);
+ [%for (a in ec.eAllAttributes.select(esf | esf.changeable and not (esf.many or esf.derived))) {%]
+ out.set[%=a.getName().firstToUpperCase()%](in.[%=a.getAttributeGetMethod()%]());
+ [%}%]
+ [%for (a in ec.eAttributes.select(esf | esf.changeable and esf.many and not esf.derived)) {%]
+ out.get[%=a.getName().firstToUpperCase()%]().addAll(in.[%=a.getAttributeGetMethod()%]());
+ [%}%]
+ [%for (r in ec.eAllReferences.select(er | er.changeable and not (er.many or er.derived))) {
+ if (r.name <> "referredVariable") {%]
+ [%=r.eReferenceType.name%] _[%=r.getName()%] = in.get[%=r.name.firstToUpperCase()%]();
+ if (_[%=r.getName()%] != null)
+ out.set[%=r.getName().firstToUpperCase()%](([%=r.eReferenceType.name%]) doSwitch(_[%=r.getName()%]));
+ [%} else {%]
+ Variable v = (Variable) in.getReferredVariable();
+ assert v != null;
+ out.setReferredVariable(transformation.getVariableTrace(v));
+ [%}%]
+ [%}%]
+ [%for (r in ec.eAllReferences.select(er | er.changeable and er.many and not er.derived)) {%]
+ for ([%=r.eReferenceType.name%] _[%=r.getName()%] : in.get[%=r.name.firstToUpperCase()%]()) {
+ out.get[%=r.getName().firstToUpperCase()%]().add(([%=r.eReferenceType.name%]) doSwitch(_[%=r.getName()%]));
+ }
+ [%}%]
+ return out;
+ [% case "PrimitiveType" :%]
+ return in;
+ [% default :%]
+ final [%=ec.name%] out = PivotFactory.eINSTANCE.create[%=ec.name%]();
+ assert out != null;
+ transformation.addOrphan(out);
+ [%for (a in ec.eAllAttributes.select(esf | esf.changeable and not (esf.many or esf.derived))) {%]
+ out.set[%=a.getName().firstToUpperCase()%](in.[%=a.getAttributeGetMethod()%]());
+ [%}%]
+ [%for (a in ec.eAttributes.select(esf | esf.changeable and esf.many and not esf.derived)) {%]
+ out.get[%=a.getName().firstToUpperCase()%]().addAll(in.[%=a.getAttributeGetMethod()%]());
+ [%}%]
+ [%for (r in ec.eAllReferences.select(er | er.changeable and not (er.many or er.derived))) {%]
+ [%=r.eReferenceType.name%] _[%=r.getName()%] = in.get[%=r.name.firstToUpperCase()%]();
+ if (_[%=r.getName()%] != null)
+ out.set[%=r.getName().firstToUpperCase()%](([%=r.eReferenceType.name%]) doSwitch(_[%=r.getName()%]));
+ [%}%]
+ [%for (r in ec.eAllReferences.select(er | er.changeable and er.many and not er.derived)) {%]
+ for ([%=r.eReferenceType.name%] _[%=r.getName()%] : in.get[%=r.name.firstToUpperCase()%]()) {
+ out.get[%=r.getName().firstToUpperCase()%]().add(([%=r.eReferenceType.name%]) doSwitch(_[%=r.getName()%]));
+ }
+ [%}%]
+ return out;
+ [%} %]
+ }
+
+[%} %]
+}
+
+[%operation pivot!EAttribute getAttributeGetMethod() : String {
+
+ if(self.eType.name == "Boolean") {
+ if (self.name.startsWith("is")) {
+ return self.name;
+ } else {
+ return "is"+self.name.firstToUpperCase();
+ }
+ } else {
+ return "get"+self.name.firstToUpperCase();
+ }
+
+}%]
+
+[% %]
+
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/OCLExpressionCopyMethods.launch b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/OCLExpressionCopyMethods.launch
new file mode 100644
index 000000000..940f18c9d
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/OCLExpressionCopyMethods.launch
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.epsilon.egl.eclipse.dt.launching.EglLaunchConfigurationDelegate">
+<booleanAttribute key="appendToFile" value="false"/>
+<listAttribute key="defaultFormatters"/>
+<booleanAttribute key="fine_grained_profiling" value="false"/>
+<intAttribute key="generateTo" value="2"/>
+<listAttribute key="models">
+<listEntry value="#Tue Dec 02 14:46:41 GMT 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=pivot&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/emf/2002/Ecore&#13;&#10;modelUri=platform\:/resource/org.eclipse.ocl.examples.pivot/model/Pivot.ecore&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.ocl.examples.pivot/model/Pivot.ecore&#13;&#10;expand=false&#13;&#10;metamodelFile="/>
+</listAttribute>
+<stringAttribute key="outputFilePath" value="/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/impl/OCLExpCopy.java"/>
+<listAttribute key="parameters"/>
+<booleanAttribute key="produceTrace" value="false"/>
+<booleanAttribute key="profile_model_loading" value="false"/>
+<booleanAttribute key="profiling_enabled" value="false"/>
+<booleanAttribute key="reset_profiler" value="false"/>
+<stringAttribute key="source" value="/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/OCLExpressionCopyMethods.egl"/>
+<stringAttribute key="templateFactoryType" value="org.eclipse.epsilon.egl.EglFileGeneratingTemplateFactory"/>
+<stringAttribute key="traceDestination" value=""/>
+</launchConfiguration>
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/QVTrCallTreeToGraphML.launch b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/QVTrCallTreeToGraphML.launch
new file mode 100644
index 000000000..0cf34dc19
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/QVTrCallTreeToGraphML.launch
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.epsilon.eol.eclipse.dt.launching.EolLaunchConfigurationDelegate">
+<booleanAttribute key="fine_grained_profiling" value="false"/>
+<listAttribute key="models">
+<listEntry value="#Sun Nov 30 11:13:06 GMT 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=qvtrAST&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/0.9/QVTtemplate,http\://www.eclipse.org/qvt/0.9/QVTbase,http\://www.eclipse.org/ocl/3.1.0/Pivot,http\://www.eclipse.org/qvt/0.9/QVTrelation&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/RelToCore.qvtras&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/RelToCore.qvtras&#13;&#10;expand=true&#13;&#10;metamodelFile="/>
+<listEntry value="#Sun Nov 30 11:13:43 GMT 2014&#13;&#10;aliases=&#13;&#10;modelFile=/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/RelToCore.graphml&#13;&#10;xsdFile=/org.eclipse.qvtd.build.etl/schema/ygraphml.xsd&#13;&#10;name=gml&#13;&#10;cached=true&#13;&#10;type=XML&#13;&#10;storeOnDisposal=true&#13;&#10;readOnLoad=false"/>
+</listAttribute>
+<listAttribute key="parameters"/>
+<booleanAttribute key="profile_model_loading" value="false"/>
+<booleanAttribute key="profiling_enabled" value="false"/>
+<booleanAttribute key="reset_profiler" value="false"/>
+<stringAttribute key="source" value="/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/QVTrRelationCallsToGraphML.eol"/>
+</launchConfiguration>
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/QVTrRelationCallsToGraphML.eol b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/QVTrRelationCallsToGraphML.eol
new file mode 100644
index 000000000..e100b0aaf
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/QVTrRelationCallsToGraphML.eol
@@ -0,0 +1,136 @@
+var root : new gml!DocumentRoot;
+var graphml : new gml!GraphmlType;
+var g : new gml!GraphType;
+
+root.graphml = graphml;
+root.xMLNSPrefixMap.put("", "http://graphml.graphdrawing.org/xmlns");
+root.xMLNSPrefixMap.put("xsi", "http://www.w3.org/2001/XMLSchema-instance");
+root.xMLNSPrefixMap.put("y", "http://www.yworks.com/xml/graphml");
+root.xMLNSPrefixMap.put("yed", "http://www.yworks.com/xml/yed/3");
+root.xSISchemaLocation.put("http://graphml.graphdrawing.org/xmlns", "http://graphml.graphdrawing.org/xmlns/1.1/graphml.xsd");
+// Yed Node attributes
+// <key attr.name="description" attr.type="string" for="node" id="d5"/>
+var key5 : new gml!KeyType;
+key5.`for` = gml!KeyForType#node;
+key5.id = "d5";
+key5.attrName = "description";
+key5.attrType = gml!KeyTypeType#string;
+graphml.key.add(key5);
+
+// <key for="node" id="d6" yfiles.type="nodegraphics"/>
+var key6 : new gml!KeyType;
+key6.`for` = gml!KeyForType#node;
+key6.id = "d6";
+key6.yfilesType="nodegraphics";
+graphml.key.add(key6);
+
+//<key attr.name="description" attr.type="string" for="edge" id="d8"/>
+var key8 : new gml!KeyType;
+key8.attrName = "description";
+key8.attrType = gml!KeyTypeType#string;
+key8.`for` = gml!KeyForType#edge;
+key8.id = "d8";
+graphml.key.add(key8);
+//<key for="edge" id="d9" yfiles.type="edgegraphics"/>
+var key9 : new gml!KeyType;
+key9.`for` = gml!KeyForType#edge;
+key9.id = "d9";
+key9.yfilesType="edgegraphics";
+graphml.key.add(key9);
+
+// Graph information
+graphml.graph.add(g);
+g.edgedefault = gml!GraphEdgedefaultType#directed;
+g.id = "G";
+
+var nodeNodeMap : Map;
+for (rule in qvtrAST!Relation.all().sortBy(r | r.name)) {
+ var n = new gml!NodeType;
+ n.id = "n" + (loopCount-1).toString();
+ g.node.add(n);
+ nodeNodeMap.put(rule, n.id);
+
+ /* Yed Information */
+ var d5 : new gml!DataType;
+ d5.key = key5.id;
+
+ n.data.add(d5);
+
+ var d6 : new gml!DataType;
+ d6.key = key6.id;
+ var sNode : new gml!ShapeNodeType;
+ var label : new gml!NodeLabelType;
+ var shape : new gml!ShapeType1;
+ var fill = new gml!FillType;
+ // Label
+ label.value = ((n.id.substring(1)).asInteger() + 1).toString();
+ rule.name.println(label.value + ": ");
+ sNode.nodeLabel.add(label);
+ shape.type = gml!ShapeTypeType#ellipse;
+ if (rule.isTopLevel) {
+ fill.color = "#99cc00";
+ } else {
+ fill.color = "#ffcc00";
+ }
+ sNode.shape = shape;
+ fill.transparent = false;
+ sNode.fill = fill;
+ d6.shapeNode = sNode;
+ n.data.add(d6);
+}
+var edgeId = 0;
+
+for (rule in qvtrAST!Relation.all()) {
+ if (rule.when.isDefined())
+ for (p in rule.when.predicate.select(p | p.conditionExpression.isTypeOf(qvtrAST!RelationCallExp))) {
+ var e = new gml!EdgeType;
+ e.target = nodeNodeMap.get(rule);
+ e.source = nodeNodeMap.get(p.conditionExpression.referredRelation);
+ e.id = edgeId.toString();
+ edgeId = edgeId+1;
+ /* Yed Information */
+ var d9 = new gml!DataType;
+ d9.key = key9.id;
+ e.data.add(d9);
+ var plEdge = new gml!PolyLineEdgeType;
+ var arrow : new gml!ArrowsType;
+ arrow.target = gml!ArrowTypeType#standard;
+ arrow.source = gml!ArrowTypeType#none;
+ var style : new gml!LineStyleType;
+ style.type = gml!LineTypeType#line;
+ style.color = "#ff0000";
+ plEdge.arrows= arrow;
+ plEdge.lineStyle = style;
+ d9.polyLineEdge = plEdge;
+ g.edge.add(e);
+ }
+
+ if (rule.where.isDefined())
+ for (p in rule.where.predicate.select(p | p.conditionExpression.isTypeOf(qvtrAST!RelationCallExp))) {
+ var e = new gml!EdgeType;
+ e.source = nodeNodeMap.get(rule);
+ e.target = nodeNodeMap.get(p.conditionExpression.referredRelation);
+ e.id = edgeId.toString();
+ edgeId = edgeId+1;
+ /* Yed Information */
+ var d9 = new gml!DataType;
+ d9.key = key9.id;
+ e.data.add(d9);
+ var plEdge = new gml!PolyLineEdgeType;
+ var arrow : new gml!ArrowsType;
+ arrow.target = gml!ArrowTypeType#standard;
+ arrow.source = gml!ArrowTypeType#none;
+ var style : new gml!LineStyleType;
+ style.type = gml!LineTypeType#line;
+ style.color = "#008000";
+ plEdge.arrows= arrow;
+ plEdge.lineStyle = style;
+ d9.polyLineEdge = plEdge;
+ g.edge.add(e);
+ }
+}
+
+"Done".println();
+
+
+
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/RelToCore.graphml b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/RelToCore.graphml
new file mode 100644
index 000000000..4d066378c
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/RelToCore.graphml
@@ -0,0 +1,1169 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<graphml:graphml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://graphml.graphdrawing.org/xmlns"
+ xmlns:graphml="http://graphml.graphdrawing.org/xmlns/graphml" xmlns:y="http://www.yworks.com/xml/graphml"
+ xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://graphml.graphdrawing.org/xmlns/1.1/graphml.xsd">
+ <graphml:key attr.name="description" attr.type="string" for="node" id="d5"/>
+ <graphml:key for="node" id="d6" yfiles.type="nodegraphics"/>
+ <graphml:key attr.name="description" attr.type="string" for="edge" id="d8"/>
+ <graphml:key for="edge" id="d9" yfiles.type="edgegraphics"/>
+ <graphml:graph edgedefault="directed" id="G">
+ <graphml:node id="n0">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>1</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n1">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>2</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n2">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>3</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n3">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#99cc00" transparent="false"/>
+ <y:NodeLabel>4</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n4">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#99cc00" transparent="false"/>
+ <y:NodeLabel>5</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n5">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>6</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n6">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>7</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n7">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>8</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n8">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>9</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n9">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>10</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n10">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>11</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n11">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>12</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n12">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>13</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n13">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>14</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n14">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>15</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n15">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>16</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n16">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>17</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n17">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>18</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n18">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>19</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n19">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>20</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n20">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>21</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n21">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>22</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n22">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>23</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n23">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>24</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n24">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>25</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n25">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>26</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n26">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>27</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n27">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>28</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n28">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>29</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n29">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>30</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n30">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>31</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n31">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>32</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n32">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>33</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n33">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>34</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n34">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>35</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n35">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>36</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n36">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>37</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n37">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>38</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n38">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>39</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n39">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>40</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n40">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>41</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n41">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>42</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n42">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>43</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n43">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>44</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n44">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#99cc00" transparent="false"/>
+ <y:NodeLabel>45</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n45">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#99cc00" transparent="false"/>
+ <y:NodeLabel>46</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n46">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>47</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n47">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>48</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n48">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#99cc00" transparent="false"/>
+ <y:NodeLabel>49</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n49">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#99cc00" transparent="false"/>
+ <y:NodeLabel>50</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n50">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>51</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:edge id="0" source="n45" target="n42">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="1" source="n45" target="n42">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ff0000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="2" source="n42" target="n46">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="3" source="n46" target="n46">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="4" source="n44" target="n48">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ff0000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="5" source="n48" target="n43">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="6" source="n48" target="n21">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="7" source="n48" target="n37">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="8" source="n48" target="n40">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="9" source="n40" target="n31">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="10" source="n50" target="n34">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="11" source="n1" target="n34">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="12" source="n0" target="n34">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="13" source="n44" target="n49">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ff0000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="14" source="n49" target="n30">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="15" source="n49" target="n1">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="16" source="n49" target="n28">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="17" source="n49" target="n35">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="18" source="n49" target="n16">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="19" source="n49" target="n41">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="20" source="n49" target="n27">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="21" source="n49" target="n37">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="22" source="n49" target="n47">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="23" source="n44" target="n3">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ff0000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="24" source="n3" target="n43">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="25" source="n3" target="n37">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="26" source="n3" target="n40">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="27" source="n3" target="n21">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="28" source="n3" target="n25">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="29" source="n44" target="n4">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ff0000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="30" source="n4" target="n16">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="31" source="n4" target="n34">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="32" source="n4" target="n27">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="33" source="n4" target="n37">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="34" source="n4" target="n41">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="35" source="n4" target="n28">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="36" source="n4" target="n25">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="37" source="n4" target="n30">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="38" source="n4" target="n2">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="39" source="n44" target="n21">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ff0000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="40" source="n21" target="n1">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="41" source="n21" target="n9">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="42" source="n21" target="n23">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="43" source="n21" target="n0">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="44" source="n44" target="n2">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ff0000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="45" source="n2" target="n34">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="46" source="n2" target="n34">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="47" source="n2" target="n33">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="48" source="n2" target="n9">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="49" source="n47" target="n33">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="50" source="n47" target="n44">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="51" source="n47" target="n32">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="52" source="n47" target="n33">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="53" source="n47" target="n9">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="54" source="n37" target="n50">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="55" source="n37" target="n39">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="56" source="n37" target="n31">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="57" source="n34" target="n36">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="58" source="n33" target="n33">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="59" source="n33" target="n36">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="60" source="n32" target="n36">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="61" source="n32" target="n32">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="62" source="n31" target="n24">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="63" source="n42" target="n38">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ff0000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="64" source="n38" target="n36">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="65" source="n42" target="n26">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ff0000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="66" source="n26" target="n36">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="67" source="n9" target="n13">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="68" source="n9" target="n10">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="69" source="n9" target="n11">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="70" source="n9" target="n12">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="71" source="n16" target="n14">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="72" source="n16" target="n22">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="73" source="n16" target="n17">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="74" source="n16" target="n19">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="75" source="n16" target="n20">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="76" source="n22" target="n41">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="77" source="n22" target="n36">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="78" source="n14" target="n36">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="79" source="n14" target="n41">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="80" source="n14" target="n28">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="81" source="n28" target="n28">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="82" source="n28" target="n24">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="83" source="n17" target="n5">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="84" source="n17" target="n6">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="85" source="n17" target="n8">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="86" source="n17" target="n7">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="87" source="n18" target="n41">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="88" source="n18" target="n36">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="89" source="n6" target="n36">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="90" source="n6" target="n24">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="91" source="n8" target="n35">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="92" source="n8" target="n36">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="93" source="n7" target="n36">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="94" source="n7" target="n35">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="95" source="n5" target="n35">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="96" source="n5" target="n36">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="97" source="n44" target="n20">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ff0000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="98" source="n20" target="n15">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="99" source="n20" target="n36">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="100" source="n20" target="n24">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="101" source="n44" target="n15">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ff0000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="102" source="n15" target="n36">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="103" source="n15" target="n41">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="104" source="n44" target="n19">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ff0000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="105" source="n19" target="n35">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="106" source="n19" target="n36">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="107" source="n19" target="n16">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="108" source="n10" target="n36">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="109" source="n10" target="n36">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="110" source="n10" target="n9">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="111" source="n13" target="n36">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="112" source="n13" target="n36">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="113" source="n12" target="n36">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="114" source="n12" target="n36">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="115" source="n11" target="n24">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="116" source="n11" target="n36">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="117" source="n23" target="n36">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="118" source="n23" target="n43">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="119" source="n27" target="n41">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="120" source="n27" target="n36">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="121" source="n30" target="n29">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="122" source="n29" target="n36">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="123" source="n42" target="n43">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ff0000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="124" source="n42" target="n41">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ff0000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ </graphml:graph>
+</graphml:graphml> \ No newline at end of file
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/RelToCore.qvtras b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/RelToCore.qvtras
new file mode 100644
index 000000000..01f3b139b
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/RelToCore.qvtras
@@ -0,0 +1,9512 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<qvtr:RelationModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:pivot="http://www.eclipse.org/ocl/3.1.0/Pivot" xmlns:qvtb="http://www.eclipse.org/qvt/0.9/QVTbase"
+ xmlns:qvtr="http://www.eclipse.org/qvt/0.9/QVTrelation" xmlns:qvtt="http://www.eclipse.org/qvt/0.9/QVTtemplate"
+ xsi:schemaLocation="http://www.eclipse.org/ocl/3.1.0/Pivot java://org.eclipse.ocl.examples.pivot.PivotPackage http://www.eclipse.org/qvt/0.9/QVTbase java://org.eclipse.qvtd.pivot.qvtbase.QVTbasePackage http://www.eclipse.org/qvt/0.9/QVTrelation java://org.eclipse.qvtd.pivot.qvtrelation.QVTrelationPackage http://www.eclipse.org/qvt/0.9/QVTtemplate java://org.eclipse.qvtd.pivot.qvttemplate.QVTtemplatePackage"
+ name="RelToCoreRevised.qvtr" externalURI="platform:/resource/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/RelToCoreRevised.qvtr">
+ <nestedPackage xsi:type="qvtr:RelationalTransformation" xmi:id="T.relToCore" name="relToCore"
+ superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclElement">
+ <ownedOperation xsi:type="qvtb:Function" xmi:id="o.relToCore.getSharedDomainVars..qvtrelation.Relation"
+ name="getSharedDomainVars" type="#//@nestedPackage.1/@ownedType.0">
+ <ownedParameter xmi:id="p0o.relToCore.getSharedDomainVars..qvtrelation.Relation"
+ name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <queryExpression xsi:type="pivot:IterateExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Collection.iterate..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.1"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.domain">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#p0o.relToCore.getSharedDomainVars..qvtrelation.Relation"/>
+ </source>
+ <body xsi:type="pivot:IfExp" type="#//@nestedPackage.1/@ownedType.0">
+ <condition xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.isEmpty">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@ownedOperation.0/@queryExpression/@result"/>
+ </condition>
+ <elseExpression xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.intersection..$$.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@ownedOperation.0/@queryExpression/@result"/>
+ <argument xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.bindsTo">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.RelationDomain.pattern">
+ <source xsi:type="pivot:OperationCallExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclAsType..$$.Metaclass">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Domain"
+ referredVariable="#//@nestedPackage.0/@ownedOperation.0/@queryExpression/@iterator.0"/>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.2"
+ referredType="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ </source>
+ </source>
+ </argument>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.UniqueCollection.union..ocl.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@ownedOperation.0/@queryExpression/@result"/>
+ <argument xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.bindsTo">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.RelationDomain.pattern">
+ <source xsi:type="pivot:OperationCallExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclAsType..$$.Metaclass">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Domain"
+ referredVariable="#//@nestedPackage.0/@ownedOperation.0/@queryExpression/@iterator.0"/>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.2"
+ referredType="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ </source>
+ </source>
+ </argument>
+ </thenExpression>
+ </body>
+ <iterator name="d" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Domain"
+ representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Collection.iterate..T"/>
+ <result name="vars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#a0i.ocl.Collection.iterate..T">
+ <initExpression xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.0"
+ kind="Set"/>
+ </result>
+ </queryExpression>
+ </ownedOperation>
+ <ownedOperation xsi:type="qvtb:Function" xmi:id="o.relToCore.getWhenVars..qvtrelation.Relation"
+ name="getWhenVars" type="#//@nestedPackage.1/@ownedType.0">
+ <ownedParameter xmi:id="p0o.relToCore.getWhenVars..qvtrelation.Relation" name="r"
+ type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <queryExpression xsi:type="pivot:LetExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0">
+ <in xsi:type="pivot:IterateExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Collection.iterate..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.1"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.domain">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#p0o.relToCore.getWhenVars..qvtrelation.Relation"/>
+ </source>
+ <body xsi:type="pivot:IfExp" type="#//@nestedPackage.1/@ownedType.0">
+ <condition xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.isEmpty">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@ownedOperation.1/@queryExpression/@in/@result"/>
+ </condition>
+ <elseExpression xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.intersection..$$.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@ownedOperation.1/@queryExpression/@in/@result"/>
+ <argument xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.bindsTo">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.RelationDomain.pattern">
+ <source xsi:type="pivot:OperationCallExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclAsType..$$.Metaclass">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Domain"
+ referredVariable="#//@nestedPackage.0/@ownedOperation.1/@queryExpression/@in/@iterator.0"/>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.2"
+ referredType="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ </source>
+ </source>
+ </argument>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.UniqueCollection.union..ocl.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@ownedOperation.1/@queryExpression/@in/@result"/>
+ <argument xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.bindsTo">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.RelationDomain.pattern">
+ <source xsi:type="pivot:OperationCallExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclAsType..$$.Metaclass">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Domain"
+ referredVariable="#//@nestedPackage.0/@ownedOperation.1/@queryExpression/@in/@iterator.0"/>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.2"
+ referredType="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ </source>
+ </source>
+ </argument>
+ </thenExpression>
+ </body>
+ <iterator name="d" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Domain"
+ representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Collection.iterate..T"/>
+ <result name="vars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#a0i.ocl.Collection.iterate..T">
+ <initExpression xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.0"
+ kind="Set"/>
+ </result>
+ </in>
+ <variable name="vs" type="#//@nestedPackage.1/@ownedType.0">
+ <initExpression xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.0"
+ kind="Set"/>
+ </variable>
+ </queryExpression>
+ </ownedOperation>
+ <ownedOperation xsi:type="qvtb:Function" xmi:id="o.relToCore.getVarsOfExp..pivot.OCLExpression"
+ name="getVarsOfExp" type="#//@nestedPackage.1/@ownedType.0">
+ <ownedParameter xmi:id="p0o.relToCore.getVarsOfExp..pivot.OCLExpression" name="e"
+ type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"/>
+ <queryExpression xsi:type="pivot:LetExp" type="#//@nestedPackage.1/@ownedType.0">
+ <in xsi:type="pivot:IfExp" type="#//@nestedPackage.1/@ownedType.0">
+ <condition xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclIsTypeOf..$$.Metaclass">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredVariable="#p0o.relToCore.getVarsOfExp..pivot.OCLExpression"/>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.3"
+ referredType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ </condition>
+ <elseExpression xsi:type="pivot:IfExp" type="#//@nestedPackage.1/@ownedType.0">
+ <condition xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclIsTypeOf..$$.Metaclass">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredVariable="#p0o.relToCore.getVarsOfExp..pivot.OCLExpression"/>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.4"
+ referredType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OperationCallExp"/>
+ </condition>
+ <elseExpression xsi:type="pivot:IfExp" type="#//@nestedPackage.1/@ownedType.0">
+ <condition xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclIsTypeOf..$$.Metaclass">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredVariable="#p0o.relToCore.getVarsOfExp..pivot.OCLExpression"/>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.5"
+ referredType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.PropertyCallExp"/>
+ </condition>
+ <elseExpression xsi:type="pivot:IfExp" type="#//@nestedPackage.1/@ownedType.0">
+ <condition xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclIsTypeOf..$$.Metaclass">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredVariable="#p0o.relToCore.getVarsOfExp..pivot.OCLExpression"/>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.6"
+ referredType="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationCallExp"/>
+ </condition>
+ <elseExpression xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@ownedOperation.2/@queryExpression/@variable"/>
+ <thenExpression xsi:type="pivot:LetExp" type="#//@nestedPackage.1/@ownedType.0">
+ <in xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.UniqueCollection.union..ocl.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@ownedOperation.2/@queryExpression/@variable"/>
+ <argument xsi:type="pivot:IterateExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Collection.iterate..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.7"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.RelationCallExp.argument">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationCallExp"
+ referredVariable="#//@nestedPackage.0/@ownedOperation.2/@queryExpression/@in/@elseExpression/@elseExpression/@elseExpression/@thenExpression/@variable"/>
+ </source>
+ <body xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.UniqueCollection.union..ocl.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@ownedOperation.2/@queryExpression/@in/@elseExpression/@elseExpression/@elseExpression/@thenExpression/@in/@argument.0/@result"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="#o.relToCore.getVarsOfExp..pivot.OCLExpression">
+ <argument xsi:type="pivot:VariableExp" isRequired="false"
+ type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredVariable="#//@nestedPackage.0/@ownedOperation.2/@queryExpression/@in/@elseExpression/@elseExpression/@elseExpression/@thenExpression/@in/@argument.0/@iterator.0"/>
+ </argument>
+ </body>
+ <iterator name="a" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Collection.iterate..T"/>
+ <result name="avs" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#a0i.ocl.Collection.iterate..T">
+ <initExpression xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.0"
+ kind="Set"/>
+ </result>
+ </argument>
+ </in>
+ <variable name="rc" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationCallExp">
+ <initExpression xsi:type="pivot:OperationCallExp" isRequired="false"
+ type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationCallExp"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclAsType..$$.Metaclass">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredVariable="#p0o.relToCore.getVarsOfExp..pivot.OCLExpression"/>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.6"
+ referredType="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationCallExp"/>
+ </initExpression>
+ </variable>
+ </thenExpression>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.UniqueCollection.union..ocl.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@ownedOperation.2/@queryExpression/@variable"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="#o.relToCore.getVarsOfExp..pivot.OCLExpression">
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.CallExp.source">
+ <source xsi:type="pivot:OperationCallExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.PropertyCallExp"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclAsType..$$.Metaclass">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredVariable="#p0o.relToCore.getVarsOfExp..pivot.OCLExpression"/>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.5"
+ referredType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.PropertyCallExp"/>
+ </source>
+ </argument>
+ </argument>
+ </thenExpression>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:LetExp" type="#//@nestedPackage.1/@ownedType.0">
+ <in xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.UniqueCollection.union..ocl.UniqueCollection">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.UniqueCollection.union..ocl.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@ownedOperation.2/@queryExpression/@variable"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="#o.relToCore.getVarsOfExp..pivot.OCLExpression">
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.CallExp.source">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OperationCallExp"
+ referredVariable="#//@nestedPackage.0/@ownedOperation.2/@queryExpression/@in/@elseExpression/@thenExpression/@variable"/>
+ </argument>
+ </argument>
+ </source>
+ <argument xsi:type="pivot:IterateExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Collection.iterate..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.7"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.OperationCallExp.argument">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OperationCallExp"
+ referredVariable="#//@nestedPackage.0/@ownedOperation.2/@queryExpression/@in/@elseExpression/@thenExpression/@variable"/>
+ </source>
+ <body xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.UniqueCollection.union..ocl.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@ownedOperation.2/@queryExpression/@in/@elseExpression/@thenExpression/@in/@argument.0/@result"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="#o.relToCore.getVarsOfExp..pivot.OCLExpression">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredVariable="#//@nestedPackage.0/@ownedOperation.2/@queryExpression/@in/@elseExpression/@thenExpression/@in/@argument.0/@iterator.0"/>
+ </argument>
+ </body>
+ <iterator name="a" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Collection.iterate..T"/>
+ <result name="avs" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#a0i.ocl.Collection.iterate..T">
+ <initExpression xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.0"
+ kind="Set"/>
+ </result>
+ </argument>
+ </in>
+ <variable name="oc" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OperationCallExp">
+ <initExpression xsi:type="pivot:OperationCallExp" isRequired="false"
+ type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OperationCallExp"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclAsType..$$.Metaclass">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredVariable="#p0o.relToCore.getVarsOfExp..pivot.OCLExpression"/>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.4"
+ referredType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OperationCallExp"/>
+ </initExpression>
+ </variable>
+ </thenExpression>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.including..T">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@ownedOperation.2/@queryExpression/@variable"/>
+ <argument xsi:type="pivot:OperationCallExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclAsType..$$.Metaclass">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableDeclaration"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <source xsi:type="pivot:OperationCallExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclAsType..$$.Metaclass">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredVariable="#p0o.relToCore.getVarsOfExp..pivot.OCLExpression"/>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.3"
+ referredType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ </source>
+ </source>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.8"
+ referredType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ </argument>
+ </thenExpression>
+ </in>
+ <variable name="vs" type="#//@nestedPackage.1/@ownedType.0">
+ <initExpression xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.0"
+ kind="Set"/>
+ </variable>
+ </queryExpression>
+ </ownedOperation>
+ <ownedOperation xsi:type="qvtb:Function" xmi:id="o.relToCore.filterOutPredicatesThatReferToVars..$$.Set..$$.Set"
+ name="filterOutPredicatesThatReferToVars" type="#//@nestedPackage.1/@ownedType.9">
+ <ownedParameter xmi:id="p0o.relToCore.filterOutPredicatesThatReferToVars..$$.Set..$$.Set"
+ name="rpSet" type="#//@nestedPackage.1/@ownedType.9"/>
+ <ownedParameter xmi:id="p1o.relToCore.filterOutPredicatesThatReferToVars..$$.Set..$$.Set"
+ name="ownrdVars" type="#//@nestedPackage.1/@ownedType.0"/>
+ <queryExpression xsi:type="pivot:IterateExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"
+ referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Collection.iterate..T">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.9"
+ referredVariable="#p0o.relToCore.filterOutPredicatesThatReferToVars..$$.Set..$$.Set"/>
+ <body xsi:type="pivot:IfExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.9">
+ <condition xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.isEmpty">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.intersection..$$.UniqueCollection">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="#o.relToCore.getVarsOfExp..pivot.OCLExpression">
+ <argument xsi:type="pivot:PropertyCallExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Predicate.conditionExpression">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"
+ referredVariable="#//@nestedPackage.0/@ownedOperation.3/@queryExpression/@iterator.0"/>
+ </argument>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#p1o.relToCore.filterOutPredicatesThatReferToVars..$$.Set..$$.Set"/>
+ </source>
+ </condition>
+ <elseExpression xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"
+ referredVariable="#//@nestedPackage.0/@ownedOperation.3/@queryExpression/@result"/>
+ <thenExpression xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.9"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.including..T">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"
+ referredVariable="#//@nestedPackage.0/@ownedOperation.3/@queryExpression/@result"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"
+ referredVariable="#//@nestedPackage.0/@ownedOperation.3/@queryExpression/@iterator.0"/>
+ </thenExpression>
+ </body>
+ <iterator name="p" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"
+ representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Collection.iterate..T"/>
+ <result name="fpSet" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"
+ representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#a0i.ocl.Collection.iterate..T">
+ <initExpression xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.9"
+ kind="Set"/>
+ </result>
+ </queryExpression>
+ </ownedOperation>
+ <ownedOperation xsi:type="qvtb:Function" xmi:id="o.relToCore.isVarBoundToSomeOtherTemplate..qvttemplate.ObjectTemplateExp..qvttemplate.ObjectTemplateExp..pivot.Variable"
+ name="isVarBoundToSomeOtherTemplate" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean">
+ <ownedParameter xmi:id="p0o.relToCore.isVarBoundToSomeOtherTemplate..qvttemplate.ObjectTemplateExp..qvttemplate.ObjectTemplateExp..pivot.Variable"
+ name="rootTe" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ <ownedParameter xmi:id="p1o.relToCore.isVarBoundToSomeOtherTemplate..qvttemplate.ObjectTemplateExp..qvttemplate.ObjectTemplateExp..pivot.Variable"
+ name="skipTe" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ <ownedParameter xmi:id="p2o.relToCore.isVarBoundToSomeOtherTemplate..qvttemplate.ObjectTemplateExp..qvttemplate.ObjectTemplateExp..pivot.Variable"
+ name="v" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <queryExpression xsi:type="pivot:IfExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean">
+ <condition xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ referredVariable="#p0o.relToCore.isVarBoundToSomeOtherTemplate..qvttemplate.ObjectTemplateExp..qvttemplate.ObjectTemplateExp..pivot.Variable"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ referredVariable="#p1o.relToCore.isVarBoundToSomeOtherTemplate..qvttemplate.ObjectTemplateExp..qvttemplate.ObjectTemplateExp..pivot.Variable"/>
+ </condition>
+ <elseExpression xsi:type="pivot:IfExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean">
+ <condition xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.TemplateExp.bindsTo">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ referredVariable="#p0o.relToCore.isVarBoundToSomeOtherTemplate..qvttemplate.ObjectTemplateExp..qvttemplate.ObjectTemplateExp..pivot.Variable"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#p2o.relToCore.isVarBoundToSomeOtherTemplate..qvttemplate.ObjectTemplateExp..qvttemplate.ObjectTemplateExp..pivot.Variable"/>
+ </condition>
+ <elseExpression xsi:type="pivot:IteratorExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Collection.exists..T">
+ <source xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.10"
+ referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Bag.select..T">
+ <source xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.10"
+ implicit="true" referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Set.collect..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.11"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.ObjectTemplateExp.part">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ referredVariable="#p0o.relToCore.isVarBoundToSomeOtherTemplate..qvttemplate.ObjectTemplateExp..qvttemplate.ObjectTemplateExp..pivot.Variable"/>
+ </source>
+ <body xsi:type="pivot:PropertyCallExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.PropertyTemplateItem.value">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem"
+ implicit="true" referredVariable="#//@nestedPackage.0/@ownedOperation.4/@queryExpression/@elseExpression/@elseExpression/@source/@source/@iterator.0"/>
+ </body>
+ <iterator name="1_" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem"
+ implicit="true" representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Set.collect..T"/>
+ </source>
+ <body xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclIsKindOf..$$.Metaclass">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredVariable="#//@nestedPackage.0/@ownedOperation.4/@queryExpression/@elseExpression/@elseExpression/@source/@iterator.0"/>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.12"
+ referredType="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ </body>
+ <iterator name="pe" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Bag.select..T"/>
+ </source>
+ <body xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="#o.relToCore.isVarBoundToSomeOtherTemplate..qvttemplate.ObjectTemplateExp..qvttemplate.ObjectTemplateExp..pivot.Variable">
+ <argument xsi:type="pivot:OperationCallExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclAsType..$$.Metaclass">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredVariable="#//@nestedPackage.0/@ownedOperation.4/@queryExpression/@elseExpression/@elseExpression/@iterator.0"/>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.12"
+ referredType="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ </argument>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ referredVariable="#p1o.relToCore.isVarBoundToSomeOtherTemplate..qvttemplate.ObjectTemplateExp..qvttemplate.ObjectTemplateExp..pivot.Variable"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#p2o.relToCore.isVarBoundToSomeOtherTemplate..qvttemplate.ObjectTemplateExp..qvttemplate.ObjectTemplateExp..pivot.Variable"/>
+ </body>
+ <iterator name="pet" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Collection.exists..T"/>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:BooleanLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ booleanSymbol="true"/>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:BooleanLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ booleanSymbol="false"/>
+ </queryExpression>
+ </ownedOperation>
+ <modelParameter xmi:id="qT.relToCore.relations" name="relations" usedPackage="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#P.qvtrelation ../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#P.qvttemplate ../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#P.qvtbase http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#P.ocl"/>
+ <modelParameter xmi:id="qT.relToCore.core" name="core" usedPackage="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#P.qvtcore ../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#P.qvtcorebase ../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#P.qvtbase http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#P.ocl"/>
+ <rule xsi:type="qvtr:Relation" name="RelationalTransformationToMappingTransformation"
+ isTopLevel="true">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RelationalTransformationToMappingTransformation.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.0/@variable.2">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"
+ bindsTo="#//@nestedPackage.0/@rule.0/@variable.2" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.0/@variable.0"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Transformation.modelParameter">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"
+ bindsTo="#//@nestedPackage.0/@rule.0/@variable.3" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.0/@variable.1"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.TypedModel.usedPackage">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"
+ bindsTo="#//@nestedPackage.0/@rule.0/@variable.4" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"/>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RelationalTransformationToMappingTransformation.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.0/@variable.5">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"
+ bindsTo="#//@nestedPackage.0/@rule.0/@variable.5" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.0/@variable.0"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Transformation.modelParameter">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"
+ bindsTo="#//@nestedPackage.0/@rule.0/@variable.6" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.0/@variable.1"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.TypedModel.usedPackage">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"
+ referredVariable="#//@nestedPackage.0/@rule.0/@variable.4"/>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="rtn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="tmn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="rt" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"/>
+ <variable name="rtm" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"/>
+ <variable name="up" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"/>
+ <variable name="mt" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"/>
+ <variable name="mtm" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"/>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RelationalTransformationToPackage" isTopLevel="true">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RelationalTransformationToPackage.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.1/@variable.2">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"
+ bindsTo="#//@nestedPackage.0/@rule.1/@variable.2" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.1/@variable.0"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Transformation.rule">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.1/@variable.3" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RelationalTransformationToPackage.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.1/@variable.4">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"
+ bindsTo="#//@nestedPackage.0/@rule.1/@variable.4" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.1/@variable.0"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.Package.ownedType">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ bindsTo="#//@nestedPackage.0/@rule.1/@variable.5" referredClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="rtn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="rn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="rt" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"/>
+ <variable name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="p" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"/>
+ <variable name="rc" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.2">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.1/@variable.3"/>
+ <argument xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredVariable="#//@nestedPackage.0/@rule.1/@variable.5"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RelationToTraceClass">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RelationToTraceClass.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.2/@variable.4">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.2/@variable.4" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.2/@variable.2"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.transformation">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"
+ referredVariable="#//@nestedPackage.0/@rule.2/@variable.0"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.domain">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ bindsTo="#//@nestedPackage.0/@rule.2/@variable.5" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.RelationDomain.pattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"
+ bindsTo="#//@nestedPackage.0/@rule.2/@variable.6" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.DomainPattern.templateExpression">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ bindsTo="#//@nestedPackage.0/@rule.2/@variable.7" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.TemplateExp.bindsTo">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.2/@variable.8" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.2/@variable.3"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ bindsTo="#//@nestedPackage.0/@rule.2/@variable.9"
+ referredClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RelationToTraceClass.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.2/@variable.10">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ bindsTo="#//@nestedPackage.0/@rule.2/@variable.10" referredClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="T"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.2/@variable.2"/>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.Type.package">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"
+ referredVariable="#//@nestedPackage.0/@rule.2/@variable.1"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.Type.ownedAttribute">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ bindsTo="#//@nestedPackage.0/@rule.2/@variable.11" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.2/@variable.3"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type">
+ <value xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredVariable="#//@nestedPackage.0/@rule.2/@variable.9"/>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="rt" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"/>
+ <variable name="p" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"/>
+ <variable name="rn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="vn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="rd" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ <variable name="rdp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"/>
+ <variable name="t" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ <variable name="tv" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="c" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ <variable name="rc" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ <variable name="a" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"/>
+ <when>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.1">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"
+ referredVariable="#//@nestedPackage.0/@rule.2/@variable.0"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"
+ referredVariable="#//@nestedPackage.0/@rule.2/@variable.1"/>
+ </conditionExpression>
+ </predicate>
+ </when>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.3">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ referredVariable="#//@nestedPackage.0/@rule.2/@variable.7"/>
+ <argument xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredVariable="#//@nestedPackage.0/@rule.2/@variable.10"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="SubTemplateToTraceClassProps">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.SubTemplateToTraceClassProps.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.3/@variable.1">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ bindsTo="#//@nestedPackage.0/@rule.3/@variable.1" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.ObjectTemplateExp.part">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem"
+ bindsTo="#//@nestedPackage.0/@rule.3/@variable.2" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.PropertyTemplateItem.value">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ bindsTo="#//@nestedPackage.0/@rule.3/@variable.3" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.TemplateExp.bindsTo">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.3/@variable.4" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.3/@variable.0"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ bindsTo="#//@nestedPackage.0/@rule.3/@variable.5" referredClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.SubTemplateToTraceClassProps.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.3/@variable.6">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ bindsTo="#//@nestedPackage.0/@rule.3/@variable.6" referredClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.Type.ownedAttribute">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ bindsTo="#//@nestedPackage.0/@rule.3/@variable.7" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.3/@variable.0"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type">
+ <value xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredVariable="#//@nestedPackage.0/@rule.3/@variable.5"/>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="vn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="t" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ <variable name="pt" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem"/>
+ <variable name="tp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ <variable name="tv" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="c" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ <variable name="rc" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ <variable name="a" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"/>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.3">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ referredVariable="#//@nestedPackage.0/@rule.3/@variable.3"/>
+ <argument xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredVariable="#//@nestedPackage.0/@rule.3/@variable.6"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="TopLevelRelationToMappingForChecking" isTopLevel="true">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.TopLevelRelationToMappingForChecking.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.4/@variable.8">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.4/@variable.8" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <where xsi:type="pivot:OperationCallExp" name="not" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.not">
+ <source xsi:type="pivot:IteratorExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Collection.exists..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.1"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.domain">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.4/@variable.8"/>
+ </source>
+ <body xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.isEnforceable">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Domain"
+ referredVariable="#//@nestedPackage.0/@rule.4/@domain.0/@pattern/@templateExpression/@where/@source/@iterator.0"/>
+ </source>
+ <argument xsi:type="pivot:BooleanLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ booleanSymbol="true"/>
+ </body>
+ <iterator name="d" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Domain"
+ representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Collection.exists..T"/>
+ </source>
+ </where>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.transformation">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"
+ referredVariable="#//@nestedPackage.0/@rule.4/@variable.6"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.Relation.isTopLevel">
+ <value xsi:type="pivot:BooleanLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ booleanSymbol="true"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.4/@variable.5"/>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.TopLevelRelationToMappingForChecking.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.4/@variable.9">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ bindsTo="#//@nestedPackage.0/@rule.4/@variable.9" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.transformation">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"
+ referredVariable="#//@nestedPackage.0/@rule.4/@variable.7"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.4/@variable.5"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Area.guardPattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ bindsTo="#//@nestedPackage.0/@rule.4/@variable.10" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.GuardPattern.area">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ referredVariable="#//@nestedPackage.0/@rule.4/@variable.9"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Area.bottomPattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.4/@variable.11" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.CorePattern.variable">
+ <value xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.0"
+ bindsTo="#//@nestedPackage.0/@rule.4/@variable.12" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.194"
+ rest="#//@nestedPackage.0/@rule.4/@variable.13"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.realizedVariable">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"
+ bindsTo="#//@nestedPackage.0/@rule.4/@variable.14" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"/>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="allDomainVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="sharedDomainVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="unsharedWhereVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="whenVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="whereVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="rn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="rt" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"/>
+ <variable name="mt" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"/>
+ <variable name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="m" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"/>
+ <variable name="mg" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"/>
+ <variable name="mb" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <variable name="mbVars" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable implicit="true"/>
+ <variable name="tcv" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"/>
+ <when>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.0">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"
+ referredVariable="#//@nestedPackage.0/@rule.4/@variable.6"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"
+ referredVariable="#//@nestedPackage.0/@rule.4/@variable.7"/>
+ </conditionExpression>
+ </predicate>
+ </when>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.4/@variable.0"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.asSet">
+ <source xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.13"
+ implicit="true" referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Bag.collect..T">
+ <source xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.14"
+ implicit="true" referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Set.collect..T">
+ <source xsi:type="pivot:IterateExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.15"
+ referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Collection.iterate..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.1"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.domain">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.4/@variable.8"/>
+ </source>
+ <body xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.15"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.including..T">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.15"
+ referredVariable="#//@nestedPackage.0/@rule.4/@where/@predicate.0/@conditionExpression/@argument.0/@source/@source/@source/@result"/>
+ <argument xsi:type="pivot:OperationCallExp" isRequired="false"
+ type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclAsType..$$.Metaclass">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Domain"
+ referredVariable="#//@nestedPackage.0/@rule.4/@where/@predicate.0/@conditionExpression/@argument.0/@source/@source/@source/@iterator.0"/>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.2"
+ referredType="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ </argument>
+ </body>
+ <iterator name="md" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Domain"
+ representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Collection.iterate..T"/>
+ <result name="acc" isRequired="false" type="#//@nestedPackage.1/@ownedType.15"
+ representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#a0i.ocl.Collection.iterate..T">
+ <initExpression xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.15"
+ kind="Set"/>
+ </result>
+ </source>
+ <body xsi:type="pivot:PropertyCallExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.RelationDomain.pattern">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ implicit="true" referredVariable="#//@nestedPackage.0/@rule.4/@where/@predicate.0/@conditionExpression/@argument.0/@source/@source/@iterator.0"/>
+ </body>
+ <iterator name="1_" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ implicit="true" representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Set.collect..T"/>
+ </source>
+ <body xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.bindsTo">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"
+ implicit="true" referredVariable="#//@nestedPackage.0/@rule.4/@where/@predicate.0/@conditionExpression/@argument.0/@source/@iterator.0"/>
+ </body>
+ <iterator name="1_" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"
+ implicit="true" representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Bag.collect..T"/>
+ </source>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.4/@variable.3"/>
+ <argument xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.bindsTo">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.Relation.when">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.4/@variable.8"/>
+ </source>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.4/@variable.4"/>
+ <argument xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.bindsTo">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.Relation.where">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.4/@variable.8"/>
+ </source>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.4/@variable.1"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="#o.relToCore.getSharedDomainVars..qvtrelation.Relation">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.4/@variable.8"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.4/@variable.2"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.UniqueCollection.union..ocl.UniqueCollection">
+ <source xsi:type="pivot:OperationCallExp" name="-" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%45%..$$.UniqueCollection">
+ <source xsi:type="pivot:OperationCallExp" name="-" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%45%..$$.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.4/@variable.4"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.4/@variable.3"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.4/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.4/@variable.1"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.48">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.4/@variable.8"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"
+ referredVariable="#//@nestedPackage.0/@rule.4/@variable.14"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.15">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.4/@variable.8"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ referredVariable="#//@nestedPackage.0/@rule.4/@variable.10"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:IfExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean">
+ <condition xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.isEmpty">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.4/@variable.2"/>
+ </condition>
+ <elseExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.16">
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.16"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.asSequence">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.4/@variable.2"/>
+ </argument>
+ <argument xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.4/@variable.12"/>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.4/@variable.12"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.0"
+ kind="Set"/>
+ </thenExpression>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.5">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.4/@variable.8"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ referredVariable="#//@nestedPackage.0/@rule.4/@variable.11"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.12">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.4/@variable.8"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ referredVariable="#//@nestedPackage.0/@rule.4/@variable.9"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RWherePatternToMPattern">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RWherePatternToMPattern.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.5/@variable.0">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.5/@variable.0" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.Relation.where">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"
+ bindsTo="#//@nestedPackage.0/@rule.5/@variable.1" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"/>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RWherePatternToMPattern.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.5/@variable.2">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"
+ bindsTo="#//@nestedPackage.0/@rule.5/@variable.2" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"/>
+ </pattern>
+ </domain>
+ <variable name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="wherep" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"/>
+ <variable name="mp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"/>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.21">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"
+ referredVariable="#//@nestedPackage.0/@rule.5/@variable.1"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"
+ referredVariable="#//@nestedPackage.0/@rule.5/@variable.2"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="UnsharedWhenVarsToMgVars">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.UnsharedWhenVarsToMgVars.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.6/@variable.0">
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.0"
+ bindsTo="#//@nestedPackage.0/@rule.6/@variable.0" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.194"
+ rest="#//@nestedPackage.0/@rule.6/@variable.2">
+ <member xsi:type="pivot:VariableExp" referredVariable="#//@nestedPackage.0/@rule.6/@variable.1"/>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.UnsharedWhenVarsToMgVars.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.6/@variable.3">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ bindsTo="#//@nestedPackage.0/@rule.6/@variable.3" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.CorePattern.variable">
+ <value xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.0"
+ bindsTo="#//@nestedPackage.0/@rule.6/@variable.4" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.194"
+ rest="#//@nestedPackage.0/@rule.6/@variable.5"/>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="unsharedWhenVars" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable/>
+ <variable implicit="true"/>
+ <variable name="mg" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"/>
+ <variable name="mgVars" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable implicit="true"/>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.16">
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.16"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.asSequence">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.6/@variable.0"/>
+ </argument>
+ <argument xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.6/@variable.4"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="DomainVarsSharedWithWhenToDgVars">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.DomainVarsSharedWithWhenToDgVars.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.7/@variable.0">
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.0"
+ bindsTo="#//@nestedPackage.0/@rule.7/@variable.0" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.194"
+ rest="#//@nestedPackage.0/@rule.7/@variable.2">
+ <member xsi:type="pivot:VariableExp" referredVariable="#//@nestedPackage.0/@rule.7/@variable.1"/>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.DomainVarsSharedWithWhenToDgVars.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.7/@variable.3">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ bindsTo="#//@nestedPackage.0/@rule.7/@variable.3" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.CorePattern.variable">
+ <value xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.0"
+ bindsTo="#//@nestedPackage.0/@rule.7/@variable.4" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.194"
+ rest="#//@nestedPackage.0/@rule.7/@variable.5"/>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="domainVarsSharedWithWhen" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable/>
+ <variable implicit="true"/>
+ <variable name="dg" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"/>
+ <variable name="dgVars" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable implicit="true"/>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.16">
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.16"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.asSequence">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.7/@variable.0"/>
+ </argument>
+ <argument xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.7/@variable.4"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="DomainBottomUnSharedVarsToDbVars">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.DomainBottomUnSharedVarsToDbVars.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.8/@variable.0">
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.0"
+ bindsTo="#//@nestedPackage.0/@rule.8/@variable.0" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.194"
+ rest="#//@nestedPackage.0/@rule.8/@variable.2">
+ <member xsi:type="pivot:VariableExp" referredVariable="#//@nestedPackage.0/@rule.8/@variable.1"/>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.DomainBottomUnSharedVarsToDbVars.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.8/@variable.3">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.8/@variable.3" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.CorePattern.variable">
+ <value xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.0"
+ bindsTo="#//@nestedPackage.0/@rule.8/@variable.4" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.194"
+ rest="#//@nestedPackage.0/@rule.8/@variable.5"/>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="domainBottomUnSharedVars" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable/>
+ <variable implicit="true"/>
+ <variable name="db" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <variable name="dbVars" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable implicit="true"/>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.16">
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.16"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.asSequence">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.8/@variable.0"/>
+ </argument>
+ <argument xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.8/@variable.4"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="TopLevelRelationToMappingForEnforcement"
+ isTopLevel="true">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.TopLevelRelationToMappingForEnforcement.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.9/@variable.26">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.9/@variable.26" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.transformation">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.24"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.Relation.isTopLevel">
+ <value xsi:type="pivot:BooleanLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ booleanSymbol="true"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.16"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.domain">
+ <value xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.15"
+ bindsTo="#//@nestedPackage.0/@rule.9/@variable.27" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.256">
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ bindsTo="#//@nestedPackage.0/@rule.9/@variable.28" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.isEnforceable">
+ <value xsi:type="pivot:BooleanLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ booleanSymbol="true"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.17"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.typedModel">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"
+ bindsTo="#//@nestedPackage.0/@rule.9/@variable.29" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.18"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.TypedModel.usedPackage">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"
+ bindsTo="#//@nestedPackage.0/@rule.9/@variable.30" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.TypedModel.transformation">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.24"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.RelationDomain.pattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"
+ bindsTo="#//@nestedPackage.0/@rule.9/@variable.31" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.bindsTo">
+ <value xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.0"
+ bindsTo="#//@nestedPackage.0/@rule.9/@variable.32" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.194"
+ rest="#//@nestedPackage.0/@rule.9/@variable.33"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.DomainPattern.templateExpression">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ bindsTo="#//@nestedPackage.0/@rule.9/@variable.34" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.TemplateExp.bindsTo">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.9/@variable.35"
+ referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </member>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.TopLevelRelationToMappingForEnforcement.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.9/@variable.36">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ bindsTo="#//@nestedPackage.0/@rule.9/@variable.36" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.transformation">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.25"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.16"/>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.17"/>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Area.guardPattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ bindsTo="#//@nestedPackage.0/@rule.9/@variable.37" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.GuardPattern.area">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.36"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Area.bottomPattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.9/@variable.38" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.CorePattern.variable">
+ <value xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.0"
+ bindsTo="#//@nestedPackage.0/@rule.9/@variable.39" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.194"
+ rest="#//@nestedPackage.0/@rule.9/@variable.40"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.realizedVariable">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"
+ bindsTo="#//@nestedPackage.0/@rule.9/@variable.41" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.domain">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain"
+ bindsTo="#//@nestedPackage.0/@rule.9/@variable.42" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.17"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.isEnforceable">
+ <value xsi:type="pivot:BooleanLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ booleanSymbol="true"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.typedModel">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"
+ bindsTo="#//@nestedPackage.0/@rule.9/@variable.43" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.18"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.TypedModel.usedPackage">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.30"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.TypedModel.transformation">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.25"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Area.guardPattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ bindsTo="#//@nestedPackage.0/@rule.9/@variable.44" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.GuardPattern.area">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.42"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Area.bottomPattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.9/@variable.45" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.area">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.42"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.realizedVariable">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.9/@variable.46" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="allDomainVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="oppositeDomainVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="sharedDomainVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="predicatesWithVarBindings" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"/>
+ <variable name="predicatesWithoutVarBindings" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"/>
+ <variable name="unsharedWhenVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="unsharedWhereVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="domainVarsSharedWithWhen" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="domainBottomUnSharedVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="rdSeq" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="rdtSeq" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="relImplSeq" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="rdSet" isRequired="false" type="#//@nestedPackage.1/@ownedType.18"/>
+ <variable name="rdVarsSeq" isRequired="false" type="#//@nestedPackage.1/@ownedType.19"/>
+ <variable name="rdtSet" isRequired="false" type="#//@nestedPackage.1/@ownedType.18"/>
+ <variable name="rdtVarsSeq" isRequired="false" type="#//@nestedPackage.1/@ownedType.19"/>
+ <variable name="rn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="dn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="tmn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="rOppositeDomains" isRequired="false" type="#//@nestedPackage.1/@ownedType.15"/>
+ <variable name="oppDomainSeq" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="whenVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="whereVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="rpSet" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"/>
+ <variable name="rt" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"/>
+ <variable name="mt" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"/>
+ <variable name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="rds" type="#//@nestedPackage.1/@ownedType.15"/>
+ <variable name="rd" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ <variable name="dir" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"/>
+ <variable name="up" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"/>
+ <variable name="dp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"/>
+ <variable name="domainVars" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable implicit="true"/>
+ <variable name="te" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ <variable name="tev" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="m" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"/>
+ <variable name="mg" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"/>
+ <variable name="mb" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <variable name="mbVars" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable implicit="true"/>
+ <variable name="tcv" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"/>
+ <variable name="md" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain"/>
+ <variable name="mdir" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"/>
+ <variable name="dg" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"/>
+ <variable name="db" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <variable name="mtev" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <when>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.0">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.24"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.25"/>
+ </conditionExpression>
+ </predicate>
+ </when>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.0"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.asSet">
+ <source xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.13"
+ implicit="true" referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Bag.collect..T">
+ <source xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.14"
+ implicit="true" referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Set.collect..T">
+ <source xsi:type="pivot:IterateExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.15"
+ referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Collection.iterate..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.1"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.domain">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.26"/>
+ </source>
+ <body xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.15"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.including..T">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.15"
+ referredVariable="#//@nestedPackage.0/@rule.9/@where/@predicate.0/@conditionExpression/@argument.0/@source/@source/@source/@result"/>
+ <argument xsi:type="pivot:OperationCallExp" isRequired="false"
+ type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclAsType..$$.Metaclass">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Domain"
+ referredVariable="#//@nestedPackage.0/@rule.9/@where/@predicate.0/@conditionExpression/@argument.0/@source/@source/@source/@iterator.0"/>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.2"
+ referredType="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ </argument>
+ </body>
+ <iterator name="md" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Domain"
+ representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Collection.iterate..T"/>
+ <result name="acc" isRequired="false" type="#//@nestedPackage.1/@ownedType.15"
+ representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#a0i.ocl.Collection.iterate..T">
+ <initExpression xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.15"
+ kind="Set"/>
+ </result>
+ </source>
+ <body xsi:type="pivot:PropertyCallExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.RelationDomain.pattern">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ implicit="true" referredVariable="#//@nestedPackage.0/@rule.9/@where/@predicate.0/@conditionExpression/@argument.0/@source/@source/@iterator.0"/>
+ </body>
+ <iterator name="1_" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ implicit="true" representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Set.collect..T"/>
+ </source>
+ <body xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.bindsTo">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"
+ implicit="true" referredVariable="#//@nestedPackage.0/@rule.9/@where/@predicate.0/@conditionExpression/@argument.0/@source/@iterator.0"/>
+ </body>
+ <iterator name="1_" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"
+ implicit="true" representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Bag.collect..T"/>
+ </source>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.21"/>
+ <argument xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.bindsTo">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.Relation.when">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.26"/>
+ </source>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.22"/>
+ <argument xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.bindsTo">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.Relation.where">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.26"/>
+ </source>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.23"/>
+ <argument xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.9"
+ referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Set.reject..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.9"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.predicate">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.Relation.where">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.26"/>
+ </source>
+ </source>
+ <body xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclIsTypeOf..$$.Metaclass">
+ <source xsi:type="pivot:PropertyCallExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Predicate.conditionExpression">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"
+ referredVariable="#//@nestedPackage.0/@rule.9/@where/@predicate.3/@conditionExpression/@argument.0/@iterator.0"/>
+ </source>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.6"
+ referredType="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationCallExp"/>
+ </body>
+ <iterator name="p" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"
+ representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Set.reject..T"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.1"/>
+ <argument xsi:type="pivot:IterateExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Collection.iterate..T">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.15"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.19"/>
+ <body xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.UniqueCollection.union..ocl.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.9/@where/@predicate.4/@conditionExpression/@argument.0/@result"/>
+ <argument xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.bindsTo">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.RelationDomain.pattern">
+ <source xsi:type="pivot:OperationCallExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclAsType..$$.Metaclass">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredVariable="#//@nestedPackage.0/@rule.9/@where/@predicate.4/@conditionExpression/@argument.0/@iterator.0"/>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.2"
+ referredType="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ </source>
+ </source>
+ </argument>
+ </body>
+ <iterator name="d" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Collection.iterate..T"/>
+ <result name="vars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#a0i.ocl.Collection.iterate..T">
+ <initExpression xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.0"
+ kind="Set"/>
+ </result>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.2"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="#o.relToCore.getSharedDomainVars..qvtrelation.Relation">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.26"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.8"/>
+ <argument xsi:type="pivot:OperationCallExp" name="-" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%45%..$$.UniqueCollection">
+ <source xsi:type="pivot:OperationCallExp" name="-" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%45%..$$.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.32"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.21"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.2"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.6"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.UniqueCollection.union..ocl.UniqueCollection">
+ <source xsi:type="pivot:OperationCallExp" name="-" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%45%..$$.UniqueCollection">
+ <source xsi:type="pivot:OperationCallExp" name="-" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%45%..$$.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.22"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.21"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.2"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.3"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.9"
+ referredOperation="#o.relToCore.filterOutPredicatesThatReferToVars..$$.Set..$$.Set">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.23"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.8"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.4"/>
+ <argument xsi:type="pivot:OperationCallExp" name="-" type="#//@nestedPackage.1/@ownedType.9"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%45%..$$.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.23"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.3"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.5"/>
+ <argument xsi:type="pivot:OperationCallExp" name="-" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%45%..$$.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.21"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.0"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.7"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.intersection..$$.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.32"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.21"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Sequence.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.9"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.20"
+ kind="Sequence">
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.26"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.28"/>
+ </part>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.18"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.12"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.21"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.26"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.28"/>
+ </part>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Sequence.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.19"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.13"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.19"
+ kind="Sequence">
+ <part xsi:type="pivot:CollectionItem" isRequired="false" type="#//@nestedPackage.1/@ownedType.18">
+ <item xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.18"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.12"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" isRequired="false" type="#//@nestedPackage.1/@ownedType.0">
+ <item xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.1"/>
+ </part>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.18"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.14"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.21"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.26"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.28"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.34"/>
+ </part>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Sequence.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.19"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.15"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.19"
+ kind="Sequence">
+ <part xsi:type="pivot:CollectionItem" isRequired="false" type="#//@nestedPackage.1/@ownedType.18">
+ <item xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.18"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.14"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" isRequired="false" type="#//@nestedPackage.1/@ownedType.9">
+ <item xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.4"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" isRequired="false" type="#//@nestedPackage.1/@ownedType.0">
+ <item xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.8"/>
+ </part>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Sequence.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.20"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.20"
+ kind="Sequence">
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.26"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.28"/>
+ </part>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Sequence.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.11"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.20"
+ kind="Sequence">
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.26"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.28"/>
+ </part>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.49">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.9"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.41"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.15">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.26"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.37"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.7">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.7"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.44"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.20">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.35"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.46"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:IfExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean">
+ <condition xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.isEmpty">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.6"/>
+ </condition>
+ <elseExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.16">
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.16"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.asSequence">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.6"/>
+ </argument>
+ <argument xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.39"/>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.39"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.0"
+ kind="Set"/>
+ </thenExpression>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.30">
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.22"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.asSequence">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.3"/>
+ </argument>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.38"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.27">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.19"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.15"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.45"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.45">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.19"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.13"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.38"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.14">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.20"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.36"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.46">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.11"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ referredVariable="#//@nestedPackage.0/@rule.9/@variable.38"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="InvokedRelationToMappingForChecking" isTopLevel="true">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.InvokedRelationToMappingForChecking.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.10/@variable.10">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.10/@variable.10" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <where xsi:type="pivot:OperationCallExp" name="not" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.not">
+ <source xsi:type="pivot:IteratorExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Collection.exists..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.1"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.domain">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.10"/>
+ </source>
+ <body xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.isEnforceable">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Domain"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.0/@pattern/@templateExpression/@where/@source/@iterator.0"/>
+ </source>
+ <argument xsi:type="pivot:BooleanLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ booleanSymbol="true"/>
+ </body>
+ <iterator name="d" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Domain"
+ representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Collection.exists..T"/>
+ </source>
+ </where>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.transformation">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.6"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.Relation.isTopLevel">
+ <value xsi:type="pivot:BooleanLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ booleanSymbol="false"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.4"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.Relation.relationCallExp">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationCallExp"
+ bindsTo="#//@nestedPackage.0/@rule.10/@variable.11" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationCallExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.OCLExpression.predicate">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"
+ bindsTo="#//@nestedPackage.0/@rule.10/@variable.12" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Predicate.pattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"
+ bindsTo="#//@nestedPackage.0/@rule.10/@variable.13" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.whereOwner">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.10/@variable.14"
+ referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.5"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.InvokedRelationToMappingForChecking.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.10/@variable.15">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ bindsTo="#//@nestedPackage.0/@rule.10/@variable.15" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.transformation">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.7"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.4"/>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.5"/>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Area.guardPattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ bindsTo="#//@nestedPackage.0/@rule.10/@variable.16" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.GuardPattern.area">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.15"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Area.bottomPattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.10/@variable.17" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.CorePattern.variable">
+ <value xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.0"
+ bindsTo="#//@nestedPackage.0/@rule.10/@variable.18" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.194"
+ rest="#//@nestedPackage.0/@rule.10/@variable.19"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.realizedVariable">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"
+ bindsTo="#//@nestedPackage.0/@rule.10/@variable.20" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"/>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="allDomainVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="sharedDomainVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="unsharedWhereVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="seqForInvoker" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="rn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="irn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="rt" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"/>
+ <variable name="mt" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"/>
+ <variable name="whenVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="whereVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="ri" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationCallExp"/>
+ <variable name="p" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"/>
+ <variable name="pt" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"/>
+ <variable name="ir" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="m" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"/>
+ <variable name="mg" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"/>
+ <variable name="mb" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <variable name="mbVars" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable implicit="true"/>
+ <variable name="tcv" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"/>
+ <when>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.0">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.6"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.7"/>
+ </conditionExpression>
+ </predicate>
+ </when>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.0"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.asSet">
+ <source xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.13"
+ implicit="true" referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Bag.collect..T">
+ <source xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.14"
+ implicit="true" referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Set.collect..T">
+ <source xsi:type="pivot:IterateExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.15"
+ referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Collection.iterate..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.1"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.domain">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.10"/>
+ </source>
+ <body xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.15"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.including..T">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.15"
+ referredVariable="#//@nestedPackage.0/@rule.10/@where/@predicate.0/@conditionExpression/@argument.0/@source/@source/@source/@result"/>
+ <argument xsi:type="pivot:OperationCallExp" isRequired="false"
+ type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclAsType..$$.Metaclass">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Domain"
+ referredVariable="#//@nestedPackage.0/@rule.10/@where/@predicate.0/@conditionExpression/@argument.0/@source/@source/@source/@iterator.0"/>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.2"
+ referredType="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ </argument>
+ </body>
+ <iterator name="md" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Domain"
+ representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Collection.iterate..T"/>
+ <result name="acc" isRequired="false" type="#//@nestedPackage.1/@ownedType.15"
+ representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#a0i.ocl.Collection.iterate..T">
+ <initExpression xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.15"
+ kind="Set"/>
+ </result>
+ </source>
+ <body xsi:type="pivot:PropertyCallExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.RelationDomain.pattern">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ implicit="true" referredVariable="#//@nestedPackage.0/@rule.10/@where/@predicate.0/@conditionExpression/@argument.0/@source/@source/@iterator.0"/>
+ </body>
+ <iterator name="1_" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ implicit="true" representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Set.collect..T"/>
+ </source>
+ <body xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.bindsTo">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"
+ implicit="true" referredVariable="#//@nestedPackage.0/@rule.10/@where/@predicate.0/@conditionExpression/@argument.0/@source/@iterator.0"/>
+ </body>
+ <iterator name="1_" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"
+ implicit="true" representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Bag.collect..T"/>
+ </source>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.8"/>
+ <argument xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.bindsTo">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.Relation.when">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.10"/>
+ </source>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.9"/>
+ <argument xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.bindsTo">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.Relation.where">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.10"/>
+ </source>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.1"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="#o.relToCore.getSharedDomainVars..qvtrelation.Relation">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.10"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.2"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.UniqueCollection.union..ocl.UniqueCollection">
+ <source xsi:type="pivot:OperationCallExp" name="-" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%45%..$$.UniqueCollection">
+ <source xsi:type="pivot:OperationCallExp" name="-" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%45%..$$.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.9"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.8"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.1"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Sequence.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.3"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.20"
+ kind="Sequence">
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.14"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationCallExp">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationCallExp"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.11"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.10"/>
+ </part>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.48">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.10"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.20"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.15">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.10"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.16"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.24">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.3"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.16"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:IfExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean">
+ <condition xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.isEmpty">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.2"/>
+ </condition>
+ <elseExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.16">
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.16"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.asSequence">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.2"/>
+ </argument>
+ <argument xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.18"/>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.18"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.0"
+ kind="Set"/>
+ </thenExpression>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.5">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.10"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.17"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.12">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.10"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ referredVariable="#//@nestedPackage.0/@rule.10/@variable.15"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="InvokedRelationToMappingForEnforcement" isTopLevel="true">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.InvokedRelationToMappingForEnforcement.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.11/@variable.27">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.11/@variable.27" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.transformation">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.25"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.Relation.isTopLevel">
+ <value xsi:type="pivot:BooleanLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ booleanSymbol="false"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.16"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.Relation.relationCallExp">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationCallExp"
+ bindsTo="#//@nestedPackage.0/@rule.11/@variable.28" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationCallExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.OCLExpression.predicate">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"
+ bindsTo="#//@nestedPackage.0/@rule.11/@variable.29" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Predicate.pattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"
+ bindsTo="#//@nestedPackage.0/@rule.11/@variable.30" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.whereOwner">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.11/@variable.31"
+ referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.17"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.domain">
+ <value xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.15"
+ bindsTo="#//@nestedPackage.0/@rule.11/@variable.32" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.256">
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ bindsTo="#//@nestedPackage.0/@rule.11/@variable.33" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.isEnforceable">
+ <value xsi:type="pivot:BooleanLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ booleanSymbol="true"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.18"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.typedModel">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"
+ bindsTo="#//@nestedPackage.0/@rule.11/@variable.34" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.19"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.TypedModel.usedPackage">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"
+ bindsTo="#//@nestedPackage.0/@rule.11/@variable.35" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.TypedModel.transformation">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.25"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.RelationDomain.pattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"
+ bindsTo="#//@nestedPackage.0/@rule.11/@variable.36" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.bindsTo">
+ <value xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.0"
+ bindsTo="#//@nestedPackage.0/@rule.11/@variable.37" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.194"
+ rest="#//@nestedPackage.0/@rule.11/@variable.38"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.DomainPattern.templateExpression">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ bindsTo="#//@nestedPackage.0/@rule.11/@variable.39" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.TemplateExp.bindsTo">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.11/@variable.40"
+ referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </member>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.InvokedRelationToMappingForEnforcement.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.11/@variable.41">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ bindsTo="#//@nestedPackage.0/@rule.11/@variable.41" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.transformation">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.26"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.16"/>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.17"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.18"/>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Area.guardPattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ bindsTo="#//@nestedPackage.0/@rule.11/@variable.42" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.GuardPattern.area">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.41"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Area.bottomPattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.11/@variable.43" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.CorePattern.variable">
+ <value xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.0"
+ bindsTo="#//@nestedPackage.0/@rule.11/@variable.44" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.194"
+ rest="#//@nestedPackage.0/@rule.11/@variable.45"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.realizedVariable">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"
+ bindsTo="#//@nestedPackage.0/@rule.11/@variable.46" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.domain">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain"
+ bindsTo="#//@nestedPackage.0/@rule.11/@variable.47" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.18"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.isEnforceable">
+ <value xsi:type="pivot:BooleanLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ booleanSymbol="true"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.typedModel">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"
+ bindsTo="#//@nestedPackage.0/@rule.11/@variable.48" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.19"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.TypedModel.usedPackage">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.35"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.TypedModel.transformation">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.26"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Area.guardPattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ bindsTo="#//@nestedPackage.0/@rule.11/@variable.49" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.CorePattern.variable">
+ <value xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.0"
+ bindsTo="#//@nestedPackage.0/@rule.11/@variable.50" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.194"
+ rest="#//@nestedPackage.0/@rule.11/@variable.51"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Area.bottomPattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.11/@variable.52" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.area">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.47"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="allDomainVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="oppositeDomainVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="sharedDomainVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="predicatesWithVarBindings" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"/>
+ <variable name="predicatesWithoutVarBindings" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"/>
+ <variable name="unsharedWhenVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="unsharedWhereVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="domainTopVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="domainBottomUnSharedVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="rdSeq" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="relImplSeq" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="rdSet" isRequired="false" type="#//@nestedPackage.1/@ownedType.18"/>
+ <variable name="rdVarsSeq" isRequired="false" type="#//@nestedPackage.1/@ownedType.19"/>
+ <variable name="rdtSet" isRequired="false" type="#//@nestedPackage.1/@ownedType.18"/>
+ <variable name="rdtVarsSeq" isRequired="false" type="#//@nestedPackage.1/@ownedType.19"/>
+ <variable name="seqForInvoker" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="rn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="irn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="dn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="tmn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="rOppositeDomains" isRequired="false" type="#//@nestedPackage.1/@ownedType.15"/>
+ <variable name="oppDomainSeq" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="whenVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="whereVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="rpSet" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"/>
+ <variable name="rt" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"/>
+ <variable name="mt" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"/>
+ <variable name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="ri" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationCallExp"/>
+ <variable name="p" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"/>
+ <variable name="pt" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"/>
+ <variable name="ir" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="rds" type="#//@nestedPackage.1/@ownedType.15"/>
+ <variable name="rd" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ <variable name="dir" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"/>
+ <variable name="up" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"/>
+ <variable name="dp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"/>
+ <variable name="domainVars" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable implicit="true"/>
+ <variable name="te" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ <variable name="tev" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="m" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"/>
+ <variable name="mg" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"/>
+ <variable name="mb" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <variable name="mbVars" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable implicit="true"/>
+ <variable name="tcv" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"/>
+ <variable name="md" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain"/>
+ <variable name="mdir" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"/>
+ <variable name="dg" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"/>
+ <variable name="dgVars" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable implicit="true"/>
+ <variable name="db" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <when>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.0">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.25"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.26"/>
+ </conditionExpression>
+ </predicate>
+ </when>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.0"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.asSet">
+ <source xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.13"
+ implicit="true" referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Bag.collect..T">
+ <source xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.14"
+ implicit="true" referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Set.collect..T">
+ <source xsi:type="pivot:IterateExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.15"
+ referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Collection.iterate..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.1"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.domain">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.27"/>
+ </source>
+ <body xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.15"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.including..T">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.15"
+ referredVariable="#//@nestedPackage.0/@rule.11/@where/@predicate.0/@conditionExpression/@argument.0/@source/@source/@source/@result"/>
+ <argument xsi:type="pivot:OperationCallExp" isRequired="false"
+ type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclAsType..$$.Metaclass">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Domain"
+ referredVariable="#//@nestedPackage.0/@rule.11/@where/@predicate.0/@conditionExpression/@argument.0/@source/@source/@source/@iterator.0"/>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.2"
+ referredType="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ </argument>
+ </body>
+ <iterator name="md" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Domain"
+ representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Collection.iterate..T"/>
+ <result name="acc" isRequired="false" type="#//@nestedPackage.1/@ownedType.15"
+ representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#a0i.ocl.Collection.iterate..T">
+ <initExpression xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.15"
+ kind="Set"/>
+ </result>
+ </source>
+ <body xsi:type="pivot:PropertyCallExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.RelationDomain.pattern">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ implicit="true" referredVariable="#//@nestedPackage.0/@rule.11/@where/@predicate.0/@conditionExpression/@argument.0/@source/@source/@iterator.0"/>
+ </body>
+ <iterator name="1_" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ implicit="true" representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Set.collect..T"/>
+ </source>
+ <body xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.bindsTo">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"
+ implicit="true" referredVariable="#//@nestedPackage.0/@rule.11/@where/@predicate.0/@conditionExpression/@argument.0/@source/@iterator.0"/>
+ </body>
+ <iterator name="1_" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"
+ implicit="true" representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Bag.collect..T"/>
+ </source>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.22"/>
+ <argument xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.bindsTo">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.Relation.when">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.27"/>
+ </source>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.23"/>
+ <argument xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.bindsTo">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.Relation.where">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.27"/>
+ </source>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.24"/>
+ <argument xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.9"
+ referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Set.reject..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.9"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.predicate">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.Relation.where">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.27"/>
+ </source>
+ </source>
+ <body xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclIsTypeOf..$$.Metaclass">
+ <source xsi:type="pivot:PropertyCallExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Predicate.conditionExpression">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"
+ referredVariable="#//@nestedPackage.0/@rule.11/@where/@predicate.3/@conditionExpression/@argument.0/@iterator.0"/>
+ </source>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.6"
+ referredType="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationCallExp"/>
+ </body>
+ <iterator name="p" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"
+ representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Set.reject..T"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.1"/>
+ <argument xsi:type="pivot:IterateExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Collection.iterate..T">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.15"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.20"/>
+ <body xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.UniqueCollection.union..ocl.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.11/@where/@predicate.4/@conditionExpression/@argument.0/@result"/>
+ <argument xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.bindsTo">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.RelationDomain.pattern">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredVariable="#//@nestedPackage.0/@rule.11/@where/@predicate.4/@conditionExpression/@argument.0/@iterator.0"/>
+ </source>
+ </argument>
+ </body>
+ <iterator name="d" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Collection.iterate..T"/>
+ <result name="vars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#a0i.ocl.Collection.iterate..T">
+ <initExpression xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.0"
+ kind="Set"/>
+ </result>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.2"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="#o.relToCore.getSharedDomainVars..qvtrelation.Relation">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.27"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.8"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.excluding..ocl.OclAny">
+ <source xsi:type="pivot:OperationCallExp" name="-" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%45%..$$.UniqueCollection">
+ <source xsi:type="pivot:OperationCallExp" name="-" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%45%..$$.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.37"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.22"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.2"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.40"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.6"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.UniqueCollection.union..ocl.UniqueCollection">
+ <source xsi:type="pivot:OperationCallExp" name="-" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%45%..$$.UniqueCollection">
+ <source xsi:type="pivot:OperationCallExp" name="-" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%45%..$$.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.23"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.22"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.2"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.3"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.9"
+ referredOperation="#o.relToCore.filterOutPredicatesThatReferToVars..$$.Set..$$.Set">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.24"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.8"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.4"/>
+ <argument xsi:type="pivot:OperationCallExp" name="-" type="#//@nestedPackage.1/@ownedType.9"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%45%..$$.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.24"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.3"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.5"/>
+ <argument xsi:type="pivot:OperationCallExp" name="-" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%45%..$$.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.22"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.0"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.7"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.including..T">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.intersection..$$.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.37"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.22"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.40"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Sequence.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.9"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.20"
+ kind="Sequence">
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.27"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.33"/>
+ </part>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.18"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.11"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.21"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.27"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.33"/>
+ </part>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Sequence.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.19"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.12"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.19"
+ kind="Sequence">
+ <part xsi:type="pivot:CollectionItem" isRequired="false" type="#//@nestedPackage.1/@ownedType.18">
+ <item xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.18"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.11"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" isRequired="false" type="#//@nestedPackage.1/@ownedType.0">
+ <item xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.1"/>
+ </part>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.18"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.13"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.21"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.27"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.33"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.39"/>
+ </part>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Sequence.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.19"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.14"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.19"
+ kind="Sequence">
+ <part xsi:type="pivot:CollectionItem" isRequired="false" type="#//@nestedPackage.1/@ownedType.18">
+ <item xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.18"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.13"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" isRequired="false" type="#//@nestedPackage.1/@ownedType.9">
+ <item xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.4"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" isRequired="false" type="#//@nestedPackage.1/@ownedType.0">
+ <item xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.8"/>
+ </part>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Sequence.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.21"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.20"
+ kind="Sequence">
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.27"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.31"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.33"/>
+ </part>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Sequence.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.15"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.20"
+ kind="Sequence">
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.31"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationCallExp">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationCallExp"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.28"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.27"/>
+ </part>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Sequence.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.10"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.20"
+ kind="Sequence">
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.27"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.33"/>
+ </part>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.49">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.9"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.46"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:IfExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean">
+ <condition xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.isEmpty">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.6"/>
+ </condition>
+ <elseExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.16">
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.16"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.asSequence">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.6"/>
+ </argument>
+ <argument xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.44"/>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.44"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.0"
+ kind="Set"/>
+ </thenExpression>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.30">
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.22"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.asSequence">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.3"/>
+ </argument>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.43"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.15">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.27"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.42"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.24">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.15"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.42"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.16">
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.16"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.asSequence">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.7"/>
+ </argument>
+ <argument xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.50"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.27">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.19"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.14"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.52"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.45">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.19"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.12"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.43"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.13">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.21"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.41"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.46">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.10"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ referredVariable="#//@nestedPackage.0/@rule.11/@variable.43"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RDomainToMDomainForChecking">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainToMDomainForChecking.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.12/@variable.9">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.12/@variable.9" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.domain">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ bindsTo="#//@nestedPackage.0/@rule.12/@variable.10" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.12/@variable.5"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.isCheckable">
+ <value xsi:type="pivot:BooleanLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ booleanSymbol="true"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.typedModel">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"
+ bindsTo="#//@nestedPackage.0/@rule.12/@variable.11" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.12/@variable.6"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.TypedModel.usedPackage">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"
+ bindsTo="#//@nestedPackage.0/@rule.12/@variable.12" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.TypedModel.transformation">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"
+ referredVariable="#//@nestedPackage.0/@rule.12/@variable.7"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.RelationDomain.pattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"
+ bindsTo="#//@nestedPackage.0/@rule.12/@variable.13" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.bindsTo">
+ <value xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.0"
+ bindsTo="#//@nestedPackage.0/@rule.12/@variable.14" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.194"
+ rest="#//@nestedPackage.0/@rule.12/@variable.15"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.DomainPattern.templateExpression">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ bindsTo="#//@nestedPackage.0/@rule.12/@variable.16" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainToMDomainForChecking.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.12/@variable.17">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ bindsTo="#//@nestedPackage.0/@rule.12/@variable.17" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Area.bottomPattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.12/@variable.18" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.area">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ referredVariable="#//@nestedPackage.0/@rule.12/@variable.17"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.domain">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain"
+ bindsTo="#//@nestedPackage.0/@rule.12/@variable.19" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.12/@variable.5"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.isCheckable">
+ <value xsi:type="pivot:BooleanLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ booleanSymbol="true"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.typedModel">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"
+ bindsTo="#//@nestedPackage.0/@rule.12/@variable.20" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.12/@variable.6"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.TypedModel.usedPackage">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"
+ referredVariable="#//@nestedPackage.0/@rule.12/@variable.12"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.TypedModel.transformation">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"
+ referredVariable="#//@nestedPackage.0/@rule.12/@variable.8"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Area.guardPattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ bindsTo="#//@nestedPackage.0/@rule.12/@variable.21" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.GuardPattern.area">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain"
+ referredVariable="#//@nestedPackage.0/@rule.12/@variable.19"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Area.bottomPattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.12/@variable.22" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.area">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain"
+ referredVariable="#//@nestedPackage.0/@rule.12/@variable.19"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="sharedDomainVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="domainVarsSharedWithWhen" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="domainBottomUnSharedVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="seqForDomainPtrn" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="whenVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="dn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="tmn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="rt" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"/>
+ <variable name="mt" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"/>
+ <variable name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="rd" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ <variable name="dir" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"/>
+ <variable name="up" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"/>
+ <variable name="dp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"/>
+ <variable name="domainVars" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable implicit="true"/>
+ <variable name="te" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ <variable name="m" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"/>
+ <variable name="mb" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <variable name="md" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain"/>
+ <variable name="mdir" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"/>
+ <variable name="dg" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"/>
+ <variable name="db" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <when>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.0">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"
+ referredVariable="#//@nestedPackage.0/@rule.12/@variable.7"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"
+ referredVariable="#//@nestedPackage.0/@rule.12/@variable.8"/>
+ </conditionExpression>
+ </predicate>
+ </when>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.12/@variable.4"/>
+ <argument xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.bindsTo">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.Relation.when">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.12/@variable.9"/>
+ </source>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.12/@variable.0"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="#o.relToCore.getSharedDomainVars..qvtrelation.Relation">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.12/@variable.9"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.12/@variable.1"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.intersection..$$.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.12/@variable.14"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.12/@variable.4"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.12/@variable.2"/>
+ <argument xsi:type="pivot:OperationCallExp" name="-" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%45%..$$.UniqueCollection">
+ <source xsi:type="pivot:OperationCallExp" name="-" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%45%..$$.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.12/@variable.14"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.12/@variable.4"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.12/@variable.0"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Sequence.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.12/@variable.3"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.20"
+ kind="Sequence">
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.12/@variable.9"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ referredVariable="#//@nestedPackage.0/@rule.12/@variable.16"/>
+ </part>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.7">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.12/@variable.1"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ referredVariable="#//@nestedPackage.0/@rule.12/@variable.21"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.8">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.12/@variable.2"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ referredVariable="#//@nestedPackage.0/@rule.12/@variable.22"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.26">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.12/@variable.3"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ referredVariable="#//@nestedPackage.0/@rule.12/@variable.22"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.44">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredVariable="#//@nestedPackage.0/@rule.12/@variable.10"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ referredVariable="#//@nestedPackage.0/@rule.12/@variable.18"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="IROppositeDomainsToMappingForEnforcement">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.IROppositeDomainsToMappingForEnforcement.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.13/@variable.13">
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.17"
+ bindsTo="#//@nestedPackage.0/@rule.13/@variable.13" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.257"
+ rest="#//@nestedPackage.0/@rule.13/@variable.26">
+ <where xsi:type="pivot:OperationCallExp" name="&lt;>" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%60%%62%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.16"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.25"/>
+ </where>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.13/@variable.14" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.domain">
+ <value xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.15"
+ bindsTo="#//@nestedPackage.0/@rule.13/@variable.15" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.256"
+ rest="#//@nestedPackage.0/@rule.13/@variable.23">
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ bindsTo="#//@nestedPackage.0/@rule.13/@variable.16" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.5"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.typedModel">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"
+ bindsTo="#//@nestedPackage.0/@rule.13/@variable.17" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.6"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.TypedModel.usedPackage">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.12"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.TypedModel.transformation">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.10"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.isCheckable">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.7"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.RelationDomain.pattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"
+ bindsTo="#//@nestedPackage.0/@rule.13/@variable.18" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.bindsTo">
+ <value xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.0"
+ bindsTo="#//@nestedPackage.0/@rule.13/@variable.19"
+ referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.194"
+ rest="#//@nestedPackage.0/@rule.13/@variable.20"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.DomainPattern.templateExpression">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ bindsTo="#//@nestedPackage.0/@rule.13/@variable.21"
+ referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.TemplateExp.bindsTo">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.13/@variable.22"
+ referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </member>
+ </value>
+ </part>
+ </member>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.13/@variable.24" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ bindsTo="#//@nestedPackage.0/@rule.13/@variable.25" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.IROppositeDomainsToMappingForEnforcement.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.13/@variable.27">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ bindsTo="#//@nestedPackage.0/@rule.13/@variable.27" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.domain">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain"
+ bindsTo="#//@nestedPackage.0/@rule.13/@variable.28" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.5"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.typedModel">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"
+ bindsTo="#//@nestedPackage.0/@rule.13/@variable.29" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.6"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.TypedModel.usedPackage">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.12"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.TypedModel.transformation">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.11"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.isCheckable">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.7"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.isEnforceable">
+ <value xsi:type="pivot:BooleanLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ booleanSymbol="false"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Area.guardPattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ bindsTo="#//@nestedPackage.0/@rule.13/@variable.30" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.CorePattern.variable">
+ <value xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.0"
+ bindsTo="#//@nestedPackage.0/@rule.13/@variable.31" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.194"
+ rest="#//@nestedPackage.0/@rule.13/@variable.32"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Area.bottomPattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.13/@variable.33" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.CorePattern.variable">
+ <value xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.0"
+ bindsTo="#//@nestedPackage.0/@rule.13/@variable.34" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.194"
+ rest="#//@nestedPackage.0/@rule.13/@variable.35"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Area.bottomPattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.13/@variable.36" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.area">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.27"/>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="sharedDomainVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="domainTopVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="domainBottomUnSharedVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="domainBottomSharedVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="seqForDomainPtrn" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="dn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="tmn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="c" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"/>
+ <variable name="mbVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="whenVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="rt" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"/>
+ <variable name="mt" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"/>
+ <variable name="up" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"/>
+ <variable name="oppDomainSeq" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="rds" type="#//@nestedPackage.1/@ownedType.15"/>
+ <variable name="ord" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ <variable name="dir" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"/>
+ <variable name="dp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"/>
+ <variable name="domainVars" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable implicit="true"/>
+ <variable name="te" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ <variable name="tev" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable implicit="true"/>
+ <variable name="ir" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="rd" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ <variable implicit="true"/>
+ <variable name="m" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"/>
+ <variable name="cd" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain"/>
+ <variable name="mdir" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"/>
+ <variable name="dg" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"/>
+ <variable name="dgVars" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable implicit="true"/>
+ <variable name="db" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <variable name="dbVars" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable implicit="true"/>
+ <variable name="mb" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <when>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.0">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.10"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.11"/>
+ </conditionExpression>
+ </predicate>
+ </when>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.9"/>
+ <argument xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.bindsTo">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.Relation.when">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.14"/>
+ </source>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.1"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.including..T">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.intersection..$$.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.19"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.9"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.22"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.0"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="#o.relToCore.getSharedDomainVars..qvtrelation.Relation">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.14"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.2"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.excluding..ocl.OclAny">
+ <source xsi:type="pivot:OperationCallExp" name="-" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%45%..$$.UniqueCollection">
+ <source xsi:type="pivot:OperationCallExp" name="-" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%45%..$$.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.19"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.9"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.22"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.3"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.excluding..ocl.OclAny">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.intersection..$$.UniqueCollection">
+ <source xsi:type="pivot:OperationCallExp" name="-" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%45%..$$.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.19"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.9"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.22"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Sequence.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.4"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.20"
+ kind="Sequence">
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.14"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.21"/>
+ </part>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.16">
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.16"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.asSequence">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.1"/>
+ </argument>
+ <argument xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.31"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.16">
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.16"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.asSequence">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.2"/>
+ </argument>
+ <argument xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.34"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.17">
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.16"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.asSequence">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.3"/>
+ </argument>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.36"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.26">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.4"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ referredVariable="#//@nestedPackage.0/@rule.13/@variable.33"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="TROppositeDomainsToMappingForEnforcement">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.TROppositeDomainsToMappingForEnforcement.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.14/@variable.13">
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.17"
+ bindsTo="#//@nestedPackage.0/@rule.14/@variable.13" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.257"
+ rest="#//@nestedPackage.0/@rule.14/@variable.24">
+ <where xsi:type="pivot:OperationCallExp" name="&lt;>" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%60%%62%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.16"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.23"/>
+ </where>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.14/@variable.14" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.domain">
+ <value xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.15"
+ bindsTo="#//@nestedPackage.0/@rule.14/@variable.15" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.256"
+ rest="#//@nestedPackage.0/@rule.14/@variable.22">
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ bindsTo="#//@nestedPackage.0/@rule.14/@variable.16" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.5"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.typedModel">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"
+ bindsTo="#//@nestedPackage.0/@rule.14/@variable.17" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.6"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.TypedModel.usedPackage">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.12"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.TypedModel.transformation">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.10"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.isCheckable">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.7"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.RelationDomain.pattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"
+ bindsTo="#//@nestedPackage.0/@rule.14/@variable.18" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.bindsTo">
+ <value xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.0"
+ bindsTo="#//@nestedPackage.0/@rule.14/@variable.19"
+ referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.194"
+ rest="#//@nestedPackage.0/@rule.14/@variable.20"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.DomainPattern.templateExpression">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ bindsTo="#//@nestedPackage.0/@rule.14/@variable.21"
+ referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ </part>
+ </value>
+ </part>
+ </member>
+ </value>
+ </part>
+ </member>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ bindsTo="#//@nestedPackage.0/@rule.14/@variable.23" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.TROppositeDomainsToMappingForEnforcement.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.14/@variable.25">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ bindsTo="#//@nestedPackage.0/@rule.14/@variable.25" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.domain">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain"
+ bindsTo="#//@nestedPackage.0/@rule.14/@variable.26" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.5"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.typedModel">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"
+ bindsTo="#//@nestedPackage.0/@rule.14/@variable.27" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.6"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.TypedModel.usedPackage">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.12"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.TypedModel.transformation">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.11"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.isCheckable">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.7"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.isEnforceable">
+ <value xsi:type="pivot:BooleanLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ booleanSymbol="false"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Area.guardPattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ bindsTo="#//@nestedPackage.0/@rule.14/@variable.28" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.CorePattern.variable">
+ <value xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.0"
+ bindsTo="#//@nestedPackage.0/@rule.14/@variable.29" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.194"
+ rest="#//@nestedPackage.0/@rule.14/@variable.30"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.GuardPattern.area">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.26"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Area.bottomPattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.14/@variable.31" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.CorePattern.variable">
+ <value xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.0"
+ bindsTo="#//@nestedPackage.0/@rule.14/@variable.32" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.194"
+ rest="#//@nestedPackage.0/@rule.14/@variable.33"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Area.bottomPattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.14/@variable.34" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.area">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.25"/>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="sharedDomainVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="domainTopVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="domainBottomUnSharedVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="domainBottomSharedVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="seqForDomainPtrn" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="dn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="tmn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="c" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"/>
+ <variable name="mbVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="whenVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="rt" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"/>
+ <variable name="mt" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"/>
+ <variable name="up" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"/>
+ <variable name="oppDomainSeq" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="rds" type="#//@nestedPackage.1/@ownedType.15"/>
+ <variable name="ord" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ <variable name="dir" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"/>
+ <variable name="dp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"/>
+ <variable name="domainVars" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable implicit="true"/>
+ <variable name="te" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ <variable implicit="true"/>
+ <variable name="rd" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ <variable implicit="true"/>
+ <variable name="m" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"/>
+ <variable name="cd" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain"/>
+ <variable name="mdir" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"/>
+ <variable name="dg" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"/>
+ <variable name="dgVars" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable implicit="true"/>
+ <variable name="db" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <variable name="dbVars" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable implicit="true"/>
+ <variable name="mb" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.9"/>
+ <argument xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.bindsTo">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.Relation.when">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.14"/>
+ </source>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.1"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.intersection..$$.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.19"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.9"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.0"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="#o.relToCore.getSharedDomainVars..qvtrelation.Relation">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.14"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.2"/>
+ <argument xsi:type="pivot:OperationCallExp" name="-" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%45%..$$.UniqueCollection">
+ <source xsi:type="pivot:OperationCallExp" name="-" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%45%..$$.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.19"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.9"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.0"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.3"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.intersection..$$.UniqueCollection">
+ <source xsi:type="pivot:OperationCallExp" name="-" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%45%..$$.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.19"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.9"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.0"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Sequence.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.4"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.20"
+ kind="Sequence">
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.14"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.21"/>
+ </part>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.0">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.10"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.11"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.18">
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.16"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.asSequence">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.1"/>
+ </argument>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.28"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.17">
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.16"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.asSequence">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.2"/>
+ </argument>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.31"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.17">
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.16"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.asSequence">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.3"/>
+ </argument>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.34"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.26">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.4"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ referredVariable="#//@nestedPackage.0/@rule.14/@variable.31"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RWhenPatternToMGuardPattern">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RWhenPatternToMGuardPattern.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.15/@variable.2">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.15/@variable.2" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.Relation.when">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"
+ bindsTo="#//@nestedPackage.0/@rule.15/@variable.3" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.bindsTo">
+ <value xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.0"
+ bindsTo="#//@nestedPackage.0/@rule.15/@variable.4" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.194"
+ rest="#//@nestedPackage.0/@rule.15/@variable.5"/>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RWhenPatternToMGuardPattern.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.15/@variable.6">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ bindsTo="#//@nestedPackage.0/@rule.15/@variable.6" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"/>
+ </pattern>
+ </domain>
+ <variable name="allDomainVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="unsharedWhenVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="whenp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"/>
+ <variable name="whenVars" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable implicit="true"/>
+ <variable name="mg" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"/>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.15/@variable.0"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.asSet">
+ <source xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.13"
+ implicit="true" referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Bag.collect..T">
+ <source xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.14"
+ implicit="true" referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Set.collect..T">
+ <source xsi:type="pivot:IterateExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.15"
+ referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Collection.iterate..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.1"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.domain">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.15/@variable.2"/>
+ </source>
+ <body xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.15"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.including..T">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.15"
+ referredVariable="#//@nestedPackage.0/@rule.15/@where/@predicate.0/@conditionExpression/@argument.0/@source/@source/@source/@result"/>
+ <argument xsi:type="pivot:OperationCallExp" isRequired="false"
+ type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclAsType..$$.Metaclass">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Domain"
+ referredVariable="#//@nestedPackage.0/@rule.15/@where/@predicate.0/@conditionExpression/@argument.0/@source/@source/@source/@iterator.0"/>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.2"
+ referredType="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ </argument>
+ </body>
+ <iterator name="md" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Domain"
+ representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Collection.iterate..T"/>
+ <result name="acc" isRequired="false" type="#//@nestedPackage.1/@ownedType.15"
+ representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#a0i.ocl.Collection.iterate..T">
+ <initExpression xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.15"
+ kind="Set"/>
+ </result>
+ </source>
+ <body xsi:type="pivot:PropertyCallExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.RelationDomain.pattern">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ implicit="true" referredVariable="#//@nestedPackage.0/@rule.15/@where/@predicate.0/@conditionExpression/@argument.0/@source/@source/@iterator.0"/>
+ </body>
+ <iterator name="1_" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ implicit="true" representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Set.collect..T"/>
+ </source>
+ <body xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.bindsTo">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"
+ implicit="true" referredVariable="#//@nestedPackage.0/@rule.15/@where/@predicate.0/@conditionExpression/@argument.0/@source/@iterator.0"/>
+ </body>
+ <iterator name="1_" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"
+ implicit="true" representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Bag.collect..T"/>
+ </source>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.15/@variable.1"/>
+ <argument xsi:type="pivot:OperationCallExp" name="-" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%45%..$$.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.15/@variable.4"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.15/@variable.0"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.22">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"
+ referredVariable="#//@nestedPackage.0/@rule.15/@variable.3"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ referredVariable="#//@nestedPackage.0/@rule.15/@variable.6"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.21">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"
+ referredVariable="#//@nestedPackage.0/@rule.15/@variable.3"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ referredVariable="#//@nestedPackage.0/@rule.15/@variable.6"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.6">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.15/@variable.1"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ referredVariable="#//@nestedPackage.0/@rule.15/@variable.6"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RVarSetToMVarSet">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RVarSetToMVarSet.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.16/@variable.2">
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.16"
+ bindsTo="#//@nestedPackage.0/@rule.16/@variable.2" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.258">
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.16/@variable.3" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RVarSetToMVarSet.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.16/@variable.4">
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.0"
+ bindsTo="#//@nestedPackage.0/@rule.16/@variable.4" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.194">
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.16/@variable.5" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="rvRest" isRequired="false" type="#//@nestedPackage.1/@ownedType.16"/>
+ <variable name="mvRest" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="rvSeq" type="#//@nestedPackage.1/@ownedType.16"/>
+ <variable name="rv" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="mvSet" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="mv" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.19">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.16/@variable.3"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.16/@variable.5"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:IfExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean">
+ <condition xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.isEmpty">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.16"
+ referredVariable="#//@nestedPackage.0/@rule.16/@variable.0"/>
+ </condition>
+ <elseExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.16">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.16"
+ referredVariable="#//@nestedPackage.0/@rule.16/@variable.0"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.16/@variable.1"/>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.16/@variable.1"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.0"
+ kind="Set"/>
+ </thenExpression>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RVarSetToMBVarSet">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RVarSetToMBVarSet.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.17/@variable.2">
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.16"
+ bindsTo="#//@nestedPackage.0/@rule.17/@variable.2" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.258">
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.17/@variable.3" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RVarSetToMBVarSet.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.17/@variable.4">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.17/@variable.4" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.CorePattern.variable">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.17/@variable.5" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="rvRest" isRequired="false" type="#//@nestedPackage.1/@ownedType.16"/>
+ <variable name="mvRest" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="rvSeq" type="#//@nestedPackage.1/@ownedType.16"/>
+ <variable name="rv" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="mb" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <variable name="mv" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.19">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.17/@variable.3"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.17/@variable.5"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.17">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.16"
+ referredVariable="#//@nestedPackage.0/@rule.17/@variable.0"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ referredVariable="#//@nestedPackage.0/@rule.17/@variable.4"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RVarSetToDGVarSet">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RVarSetToDGVarSet.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.18/@variable.2">
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.16"
+ bindsTo="#//@nestedPackage.0/@rule.18/@variable.2" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.258">
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.18/@variable.3" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RVarSetToDGVarSet.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.18/@variable.4">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ bindsTo="#//@nestedPackage.0/@rule.18/@variable.4" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.CorePattern.variable">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.18/@variable.5" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="rvRest" isRequired="false" type="#//@nestedPackage.1/@ownedType.16"/>
+ <variable name="mvRest" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="rvSeq" type="#//@nestedPackage.1/@ownedType.16"/>
+ <variable name="rv" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="dg" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"/>
+ <variable name="mv" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.19">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.18/@variable.3"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.18/@variable.5"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.18">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.16"
+ referredVariable="#//@nestedPackage.0/@rule.18/@variable.0"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ referredVariable="#//@nestedPackage.0/@rule.18/@variable.4"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RVarToMVar">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RVarToMVar.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.19/@variable.1">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.19/@variable.1" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.19/@variable.0"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Type"
+ bindsTo="#//@nestedPackage.0/@rule.19/@variable.2" referredClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Type"/>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RVarToMVar.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.19/@variable.3">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.19/@variable.3" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.19/@variable.0"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type">
+ <value xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Type"
+ referredVariable="#//@nestedPackage.0/@rule.19/@variable.2"/>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="n" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="rv" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="t" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Type"/>
+ <variable name="mv" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RVarToMRealizedVar">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RVarToMRealizedVar.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.20/@variable.1">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.20/@variable.1" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.20/@variable.0"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Type"
+ bindsTo="#//@nestedPackage.0/@rule.20/@variable.2" referredClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Type"/>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RVarToMRealizedVar.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.20/@variable.3">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"
+ bindsTo="#//@nestedPackage.0/@rule.20/@variable.3" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.20/@variable.0"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type">
+ <value xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Type"
+ referredVariable="#//@nestedPackage.0/@rule.20/@variable.2"/>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="n" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="rv" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="t" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Type"/>
+ <variable name="mv" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"/>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RSimplePatternToMPattern">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RSimplePatternToMPattern.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.21/@variable.0">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"
+ bindsTo="#//@nestedPackage.0/@rule.21/@variable.0" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern">
+ <where xsi:type="pivot:OperationCallExp" name="not" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.not">
+ <source xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclIsTypeOf..$$.Metaclass">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredVariable="#//@nestedPackage.0/@rule.21/@variable.2"/>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.6"
+ referredType="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationCallExp"/>
+ </source>
+ </where>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.predicate">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"
+ bindsTo="#//@nestedPackage.0/@rule.21/@variable.1" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Predicate.conditionExpression">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ bindsTo="#//@nestedPackage.0/@rule.21/@variable.2" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"/>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RSimplePatternToMPattern.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.21/@variable.3">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"
+ bindsTo="#//@nestedPackage.0/@rule.21/@variable.3" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.predicate">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"
+ bindsTo="#//@nestedPackage.0/@rule.21/@variable.4" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Predicate.conditionExpression">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ bindsTo="#//@nestedPackage.0/@rule.21/@variable.5" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"/>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="rp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"/>
+ <variable name="pd" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"/>
+ <variable name="re" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"/>
+ <variable name="mp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"/>
+ <variable name="mpd" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"/>
+ <variable name="me" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"/>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.50">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredVariable="#//@nestedPackage.0/@rule.21/@variable.2"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredVariable="#//@nestedPackage.0/@rule.21/@variable.5"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RWhenRelCallToMGuard">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RWhenRelCallToMGuard.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.22/@variable.0">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"
+ bindsTo="#//@nestedPackage.0/@rule.22/@variable.0" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.predicate">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"
+ bindsTo="#//@nestedPackage.0/@rule.22/@variable.1" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Predicate.conditionExpression">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationCallExp"
+ bindsTo="#//@nestedPackage.0/@rule.22/@variable.2" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationCallExp">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.RelationCallExp.referredRelation">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.22/@variable.3" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.domain">
+ <value xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.23"
+ bindsTo="#//@nestedPackage.0/@rule.22/@variable.4" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.260"
+ rest="#//@nestedPackage.0/@rule.22/@variable.5"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.RelationCallExp.argument">
+ <value xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.24"
+ bindsTo="#//@nestedPackage.0/@rule.22/@variable.6" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.262"
+ rest="#//@nestedPackage.0/@rule.22/@variable.7"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RWhenRelCallToMGuard.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.22/@variable.8">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ bindsTo="#//@nestedPackage.0/@rule.22/@variable.8" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"/>
+ </pattern>
+ </domain>
+ <variable name="rp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Pattern"/>
+ <variable name="pd" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"/>
+ <variable name="e" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationCallExp"/>
+ <variable name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="dseq" type="#//@nestedPackage.1/@ownedType.23"/>
+ <variable implicit="true"/>
+ <variable name="aseq" type="#//@nestedPackage.1/@ownedType.24"/>
+ <variable implicit="true"/>
+ <variable name="mp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"/>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="pivot:IteratorExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Collection.forAll..T">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.24"
+ referredVariable="#//@nestedPackage.0/@rule.22/@variable.6"/>
+ <body xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.23">
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.20"
+ kind="Sequence">
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.22/@variable.3"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <item xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ referredVariable="#//@nestedPackage.0/@rule.22/@where/@predicate.0/@conditionExpression/@iterator.0"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <item xsi:type="pivot:OperationCallExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OrderedCollection.at..ocl.Integer">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.23"
+ referredVariable="#//@nestedPackage.0/@rule.22/@variable.4"/>
+ <argument xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Integer"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OrderedCollection.indexOf..ocl.OclAny">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.24"
+ referredVariable="#//@nestedPackage.0/@rule.22/@variable.6"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ referredVariable="#//@nestedPackage.0/@rule.22/@where/@predicate.0/@conditionExpression/@iterator.0"/>
+ </argument>
+ </item>
+ </part>
+ </argument>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ referredVariable="#//@nestedPackage.0/@rule.22/@variable.8"/>
+ </body>
+ <iterator name="a" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Collection.forAll..T"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RWhenRelCallArgToMGuardPredicate">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RWhenRelCallArgToMGuardPredicate.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.23/@variable.3">
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.17"
+ bindsTo="#//@nestedPackage.0/@rule.23/@variable.3" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.257"
+ rest="#//@nestedPackage.0/@rule.23/@variable.9">
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.23/@variable.4" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.23/@variable.5" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.23/@variable.6" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ </part>
+ </member>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ bindsTo="#//@nestedPackage.0/@rule.23/@variable.7" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.RelationDomain.rootVariable">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.23/@variable.8" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.23/@variable.1"/>
+ </part>
+ </value>
+ </part>
+ </member>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RWhenRelCallArgToMGuardPredicate.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.23/@variable.10">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ bindsTo="#//@nestedPackage.0/@rule.23/@variable.10" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.CorePattern.variable">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.23/@variable.11" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredVariable="#//@nestedPackage.0/@rule.23/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_v"/>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredVariable="#//@nestedPackage.0/@rule.23/@variable.0"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.predicate">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"
+ bindsTo="#//@nestedPackage.0/@rule.23/@variable.12" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Predicate.conditionExpression">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OperationCallExp"
+ bindsTo="#//@nestedPackage.0/@rule.23/@variable.13" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OperationCallExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.CallExp.source">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.PropertyCallExp"
+ bindsTo="#//@nestedPackage.0/@rule.23/@variable.14" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.PropertyCallExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.CallExp.source">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.23/@variable.15"
+ referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.23/@variable.11"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.PropertyCallExp.referredProperty">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ bindsTo="#//@nestedPackage.0/@rule.23/@variable.16"
+ referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.23/@variable.1"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.Property.class">
+ <value xsi:type="pivot:OperationCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclAsType..$$.Metaclass">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Type"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.23/@variable.11"/>
+ </source>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.25"
+ referredType="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ </value>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.OperationCallExp.referredOperation">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Operation"
+ bindsTo="#//@nestedPackage.0/@rule.23/@variable.17" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Operation">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="="/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.OperationCallExp.argument">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.23/@variable.18" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.23/@variable.2"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="tc" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ <variable name="dvn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="mv" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="daSeq" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="ve" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <variable name="v" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="d" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ <variable name="dv" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable implicit="true"/>
+ <variable name="mg" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"/>
+ <variable name="vd" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="mgp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"/>
+ <variable name="ee" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OperationCallExp"/>
+ <variable name="pe" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.PropertyCallExp"/>
+ <variable name="pve" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <variable name="pep" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"/>
+ <variable name="eo" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Operation"/>
+ <variable name="ave" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <when>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.2">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.23/@variable.4"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredVariable="#//@nestedPackage.0/@rule.23/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ </when>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.19">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.23/@variable.6"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.23/@variable.2"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RInvokerToMGuard">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RInvokerToMGuard.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.24/@variable.0">
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.17"
+ bindsTo="#//@nestedPackage.0/@rule.24/@variable.0" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.257"
+ rest="#//@nestedPackage.0/@rule.24/@variable.8">
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.24/@variable.1" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationCallExp"
+ bindsTo="#//@nestedPackage.0/@rule.24/@variable.2" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationCallExp">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.RelationCallExp.argument">
+ <value xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.24"
+ bindsTo="#//@nestedPackage.0/@rule.24/@variable.3" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.262"
+ rest="#//@nestedPackage.0/@rule.24/@variable.4"/>
+ </part>
+ </member>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.24/@variable.5" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.domain">
+ <value xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.23"
+ bindsTo="#//@nestedPackage.0/@rule.24/@variable.6" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.260"
+ rest="#//@nestedPackage.0/@rule.24/@variable.7"/>
+ </part>
+ </member>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RInvokerToMGuard.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.24/@variable.9">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ bindsTo="#//@nestedPackage.0/@rule.24/@variable.9" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"/>
+ </pattern>
+ </domain>
+ <variable name="seqForInvoker" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="ir" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="ri" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationCallExp"/>
+ <variable name="aseq" type="#//@nestedPackage.1/@ownedType.24"/>
+ <variable implicit="true"/>
+ <variable name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="dseq" type="#//@nestedPackage.1/@ownedType.23"/>
+ <variable implicit="true"/>
+ <variable implicit="true"/>
+ <variable name="mg" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"/>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="pivot:IteratorExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Collection.forAll..T">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.24"
+ referredVariable="#//@nestedPackage.0/@rule.24/@variable.3"/>
+ <body xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.25">
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.20"
+ kind="Sequence">
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.24/@variable.1"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <item xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ referredVariable="#//@nestedPackage.0/@rule.24/@where/@predicate.0/@conditionExpression/@iterator.0"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <item xsi:type="pivot:OperationCallExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OrderedCollection.at..ocl.Integer">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.23"
+ referredVariable="#//@nestedPackage.0/@rule.24/@variable.6"/>
+ <argument xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Integer"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OrderedCollection.indexOf..ocl.OclAny">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.24"
+ referredVariable="#//@nestedPackage.0/@rule.24/@variable.3"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ referredVariable="#//@nestedPackage.0/@rule.24/@where/@predicate.0/@conditionExpression/@iterator.0"/>
+ </argument>
+ </item>
+ </part>
+ </argument>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ referredVariable="#//@nestedPackage.0/@rule.24/@variable.9"/>
+ </body>
+ <iterator name="a" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Collection.forAll..T"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RInvokerToMGuardPredicate">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RInvokerToMGuardPredicate.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.25/@variable.3">
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.17"
+ bindsTo="#//@nestedPackage.0/@rule.25/@variable.3" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.257"
+ rest="#//@nestedPackage.0/@rule.25/@variable.9">
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.25/@variable.4" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.25/@variable.5" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.25/@variable.6" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.25/@variable.0"/>
+ </part>
+ </value>
+ </part>
+ </member>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ bindsTo="#//@nestedPackage.0/@rule.25/@variable.7" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.RelationDomain.rootVariable">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.25/@variable.8" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ </part>
+ </member>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RInvokerToMGuardPredicate.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.25/@variable.10">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ bindsTo="#//@nestedPackage.0/@rule.25/@variable.10" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.CorePattern.variable">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.25/@variable.11" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredVariable="#//@nestedPackage.0/@rule.25/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_v"/>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredVariable="#//@nestedPackage.0/@rule.25/@variable.1"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.predicate">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"
+ bindsTo="#//@nestedPackage.0/@rule.25/@variable.12" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Predicate.conditionExpression">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OperationCallExp"
+ bindsTo="#//@nestedPackage.0/@rule.25/@variable.13" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OperationCallExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.CallExp.source">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.PropertyCallExp"
+ bindsTo="#//@nestedPackage.0/@rule.25/@variable.14" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.PropertyCallExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.CallExp.source">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.25/@variable.15"
+ referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.25/@variable.11"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.PropertyCallExp.referredProperty">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ bindsTo="#//@nestedPackage.0/@rule.25/@variable.16"
+ referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.25/@variable.0"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.Property.class">
+ <value xsi:type="pivot:OperationCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclAsType..$$.Metaclass">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Type"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.25/@variable.11"/>
+ </source>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.25"
+ referredType="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ </value>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.OperationCallExp.referredOperation">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Operation"
+ bindsTo="#//@nestedPackage.0/@rule.25/@variable.17" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Operation">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="="/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.OperationCallExp.argument">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.25/@variable.18" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.25/@variable.2"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="vn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="tc" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ <variable name="mdv" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="seqForInvoker" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="ir" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="ve" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <variable name="v" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="d" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ <variable name="dv" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable implicit="true"/>
+ <variable name="mg" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"/>
+ <variable name="vd" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="pd" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"/>
+ <variable name="ee" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OperationCallExp"/>
+ <variable name="pe" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.PropertyCallExp"/>
+ <variable name="mve" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <variable name="pep" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"/>
+ <variable name="eo" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Operation"/>
+ <variable name="ave" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <when>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.2">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.25/@variable.4"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredVariable="#//@nestedPackage.0/@rule.25/@variable.1"/>
+ </conditionExpression>
+ </predicate>
+ </when>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.19">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.25/@variable.8"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.25/@variable.2"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RDomainPatternToMDBottomPattern">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainPatternToMDBottomPattern.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.26/@variable.0">
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.17"
+ bindsTo="#//@nestedPackage.0/@rule.26/@variable.0" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.257"
+ rest="#//@nestedPackage.0/@rule.26/@variable.1"/>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainPatternToMDBottomPattern.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.26/@variable.2">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.26/@variable.2" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.area">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain"
+ bindsTo="#//@nestedPackage.0/@rule.26/@variable.3" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.rule">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ bindsTo="#//@nestedPackage.0/@rule.26/@variable.4" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Area.bottomPattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.26/@variable.5" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.area">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ referredVariable="#//@nestedPackage.0/@rule.26/@variable.4"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="seqForDomainPtrn" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable implicit="true"/>
+ <variable name="db" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <variable name="cd" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain"/>
+ <variable name="m" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"/>
+ <variable name="mb" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.40">
+ <argument xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.26/@variable.0"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ referredVariable="#//@nestedPackage.0/@rule.26/@variable.2"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.43">
+ <argument xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.26/@variable.0"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ referredVariable="#//@nestedPackage.0/@rule.26/@variable.2"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.41">
+ <argument xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.26/@variable.0"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ referredVariable="#//@nestedPackage.0/@rule.26/@variable.2"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.42">
+ <argument xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.26/@variable.0"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ referredVariable="#//@nestedPackage.0/@rule.26/@variable.5"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RDomainToMDBottomForEnforcement">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainToMDBottomForEnforcement.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.27/@variable.11">
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.19"
+ bindsTo="#//@nestedPackage.0/@rule.27/@variable.11" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.267"
+ rest="#//@nestedPackage.0/@rule.27/@variable.18">
+ <member xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.18"
+ bindsTo="#//@nestedPackage.0/@rule.27/@variable.12" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.78"
+ rest="#//@nestedPackage.0/@rule.27/@variable.17">
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.27/@variable.13" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ bindsTo="#//@nestedPackage.0/@rule.27/@variable.14" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ bindsTo="#//@nestedPackage.0/@rule.27/@variable.15" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.TemplateExp.bindsTo">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.27/@variable.16" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ </part>
+ </member>
+ </member>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainToMDBottomForEnforcement.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.27/@variable.19">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.27/@variable.19" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.area">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain"
+ bindsTo="#//@nestedPackage.0/@rule.27/@variable.20" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.rule">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ bindsTo="#//@nestedPackage.0/@rule.27/@variable.21" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Area.bottomPattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.27/@variable.22" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.area">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.21"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="remainingUnBoundDomainVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="predicatesWithVarBindings" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"/>
+ <variable name="remainingPredicatesWithoutVarBindings" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"/>
+ <variable name="rdSeq" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="rtSeq" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="rtdSeq" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="rdtVarsSeqRest" isRequired="false" type="#//@nestedPackage.1/@ownedType.19"/>
+ <variable name="predicatesWithoutVarBindings" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"/>
+ <variable name="unboundDomainVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="tcv" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="mv" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="rdtVarsSeq" type="#//@nestedPackage.1/@ownedType.19"/>
+ <variable name="rdtSet" type="#//@nestedPackage.1/@ownedType.18"/>
+ <variable name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="rd" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ <variable name="te" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ <variable name="v" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable implicit="true"/>
+ <variable implicit="true"/>
+ <variable name="db" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <variable name="cd" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain"/>
+ <variable name="m" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"/>
+ <variable name="mb" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:OperationCallExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.18"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OrderedCollection.at..ocl.Integer">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.19"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.11"/>
+ <argument xsi:type="pivot:UnlimitedNaturalLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#UnlimitedNatural"
+ unlimitedNaturalSymbol="2"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.7"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:OperationCallExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.18"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OrderedCollection.at..ocl.Integer">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.19"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.11"/>
+ <argument xsi:type="pivot:UnlimitedNaturalLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#UnlimitedNatural"
+ unlimitedNaturalSymbol="3"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.8"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.0"/>
+ <argument xsi:type="pivot:OperationCallExp" name="-" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%45%..$$.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.8"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.0"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.16"/>
+ </part>
+ </argument>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.1"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.9"
+ referredOperation="#o.relToCore.filterOutPredicatesThatReferToVars..$$.Set..$$.Set">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.7"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.0"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.2"/>
+ <argument xsi:type="pivot:OperationCallExp" name="-" type="#//@nestedPackage.1/@ownedType.9"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%45%..$$.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.7"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.1"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Sequence.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.4"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.20"
+ kind="Sequence">
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.13"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.15"/>
+ </part>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Sequence.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.5"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.20"
+ kind="Sequence">
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.13"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.15"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.14"/>
+ </part>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Sequence.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.19"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.6"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.19"
+ kind="Sequence">
+ <part xsi:type="pivot:CollectionItem" type="#//@nestedPackage.1/@ownedType.18">
+ <item xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.18"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.12"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" isRequired="false" type="#//@nestedPackage.1/@ownedType.9">
+ <item xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.2"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" isRequired="false" type="#//@nestedPackage.1/@ownedType.0">
+ <item xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.0"/>
+ </part>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.31">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.4"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.19"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.28">
+ <argument xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.19"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.11"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.22"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.37">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.5"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.21"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.39">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.19"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.6"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.21"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.29">
+ <argument xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.19"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.11"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ referredVariable="#//@nestedPackage.0/@rule.27/@variable.22"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RDomainVarToMDBottomAssignmnetForEnforcement">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainVarToMDBottomAssignmnetForEnforcement.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.28/@variable.2">
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.19"
+ bindsTo="#//@nestedPackage.0/@rule.28/@variable.2" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.267"
+ rest="#//@nestedPackage.0/@rule.28/@variable.9">
+ <member xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.18"
+ bindsTo="#//@nestedPackage.0/@rule.28/@variable.3" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.78"
+ rest="#//@nestedPackage.0/@rule.28/@variable.8">
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.28/@variable.4" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ bindsTo="#//@nestedPackage.0/@rule.28/@variable.5" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ bindsTo="#//@nestedPackage.0/@rule.28/@variable.6" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.TemplateExp.bindsTo">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.28/@variable.7" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ </part>
+ </member>
+ </member>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainVarToMDBottomAssignmnetForEnforcement.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.28/@variable.10">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.28/@variable.10" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.realizedVariable">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"
+ bindsTo="#//@nestedPackage.0/@rule.28/@variable.11" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.assignment">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment"
+ bindsTo="#//@nestedPackage.0/@rule.28/@variable.12" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.PropertyAssignment.slotExpression">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.28/@variable.13" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"
+ referredVariable="#//@nestedPackage.0/@rule.28/@variable.11"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.PropertyAssignment.targetProperty">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ bindsTo="#//@nestedPackage.0/@rule.28/@variable.14" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.28/@variable.7"/>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.Property.class">
+ <value xsi:type="pivot:OperationCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclAsType..$$.Metaclass">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Type"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"
+ referredVariable="#//@nestedPackage.0/@rule.28/@variable.11"/>
+ </source>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.25"
+ referredType="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ </value>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Assignment.value">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.28/@variable.15" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.28/@variable.1"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="rdSeq" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="mv" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="rdtVarsSeq" type="#//@nestedPackage.1/@ownedType.19"/>
+ <variable name="rdtSet" type="#//@nestedPackage.1/@ownedType.18"/>
+ <variable name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="rd" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ <variable name="te" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ <variable name="v" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable implicit="true"/>
+ <variable implicit="true"/>
+ <variable name="mb" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <variable name="tcv" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"/>
+ <variable name="a" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment"/>
+ <variable name="ve1" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <variable name="tp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"/>
+ <variable name="ve2" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Sequence.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.28/@variable.0"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.20"
+ kind="Sequence">
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.28/@variable.4"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredVariable="#//@nestedPackage.0/@rule.28/@variable.5"/>
+ </part>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.49">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.28/@variable.0"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"
+ referredVariable="#//@nestedPackage.0/@rule.28/@variable.11"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.19">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.28/@variable.7"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.28/@variable.1"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RDomainToMBottomPredicateForEnforcement">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainToMBottomPredicateForEnforcement.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.29/@variable.7">
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.19"
+ bindsTo="#//@nestedPackage.0/@rule.29/@variable.7" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.267"
+ rest="#//@nestedPackage.0/@rule.29/@variable.14">
+ <member xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.18"
+ bindsTo="#//@nestedPackage.0/@rule.29/@variable.8" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.78"
+ rest="#//@nestedPackage.0/@rule.29/@variable.13">
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.29/@variable.9" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ bindsTo="#//@nestedPackage.0/@rule.29/@variable.10" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ bindsTo="#//@nestedPackage.0/@rule.29/@variable.11" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.TemplateExp.bindsTo">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.29/@variable.12" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ </part>
+ </member>
+ </member>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainToMBottomPredicateForEnforcement.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.29/@variable.15">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.29/@variable.15" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.predicate">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"
+ bindsTo="#//@nestedPackage.0/@rule.29/@variable.16" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Predicate.conditionExpression">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OperationCallExp"
+ bindsTo="#//@nestedPackage.0/@rule.29/@variable.17" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OperationCallExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.CallExp.source">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.PropertyCallExp"
+ bindsTo="#//@nestedPackage.0/@rule.29/@variable.18" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.PropertyCallExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.CallExp.source">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.29/@variable.19"
+ referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" isRequired="false"
+ type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.29/@variable.5"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.PropertyCallExp.referredProperty">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ bindsTo="#//@nestedPackage.0/@rule.29/@variable.20"
+ referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.29/@variable.12"/>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.Property.class">
+ <value xsi:type="pivot:OperationCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclAsType..$$.Metaclass">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Type"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type">
+ <source xsi:type="pivot:VariableExp" isRequired="false"
+ type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.29/@variable.5"/>
+ </source>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.25"
+ referredType="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ </value>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.OperationCallExp.referredOperation">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Operation"
+ bindsTo="#//@nestedPackage.0/@rule.29/@variable.21" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Operation">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="="/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.OperationCallExp.argument">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.29/@variable.22" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.29/@variable.6"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="remainingUnBoundDomainVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="predicatesWithVarBindings" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"/>
+ <variable name="rdSeq" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="predicatesWithoutVarBindings" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"/>
+ <variable name="unboundDomainVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="tcv" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="mv" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="rdtVarsSeq" type="#//@nestedPackage.1/@ownedType.19"/>
+ <variable name="rdtSet" type="#//@nestedPackage.1/@ownedType.18"/>
+ <variable name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="rd" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ <variable name="te" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ <variable name="v" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable implicit="true"/>
+ <variable implicit="true"/>
+ <variable name="mb" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <variable name="pd" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"/>
+ <variable name="ee" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OperationCallExp"/>
+ <variable name="pe" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.PropertyCallExp"/>
+ <variable name="pve" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <variable name="pep" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"/>
+ <variable name="eo" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Operation"/>
+ <variable name="ave" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Sequence.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.29/@variable.2"/>
+ <argument xsi:type="pivot:LetExp" type="#//@nestedPackage.1/@ownedType.17">
+ <in xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.17"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Sequence.append..T">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.17"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Sequence.append..T">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.29/@where/@predicate.0/@conditionExpression/@argument.0/@variable"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.29/@variable.9"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredVariable="#//@nestedPackage.0/@rule.29/@variable.10"/>
+ </in>
+ <variable name="s" type="#//@nestedPackage.1/@ownedType.17">
+ <initExpression xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.17"
+ kind="Sequence"/>
+ </variable>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.49">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.29/@variable.2"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.29/@variable.5"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.19">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.29/@variable.12"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.29/@variable.6"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:OperationCallExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.18"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OrderedCollection.at..ocl.Integer">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.19"
+ referredVariable="#//@nestedPackage.0/@rule.29/@variable.7"/>
+ <argument xsi:type="pivot:UnlimitedNaturalLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#UnlimitedNatural"
+ unlimitedNaturalSymbol="2"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"
+ referredVariable="#//@nestedPackage.0/@rule.29/@variable.3"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:OperationCallExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.18"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OrderedCollection.at..ocl.Integer">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.19"
+ referredVariable="#//@nestedPackage.0/@rule.29/@variable.7"/>
+ <argument xsi:type="pivot:UnlimitedNaturalLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#UnlimitedNatural"
+ unlimitedNaturalSymbol="3"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.29/@variable.4"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.29/@variable.0"/>
+ <argument xsi:type="pivot:OperationCallExp" name="-" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%45%..$$.UniqueCollection">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.29/@variable.4"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.0"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.29/@variable.12"/>
+ </part>
+ </argument>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"
+ referredVariable="#//@nestedPackage.0/@rule.29/@variable.1"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.9"
+ referredOperation="#o.relToCore.filterOutPredicatesThatReferToVars..$$.Set..$$.Set">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"
+ referredVariable="#//@nestedPackage.0/@rule.29/@variable.3"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.29/@variable.0"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.30">
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.22"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.asSequence">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"
+ referredVariable="#//@nestedPackage.0/@rule.29/@variable.1"/>
+ </argument>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ referredVariable="#//@nestedPackage.0/@rule.29/@variable.15"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RPredicateSetToMBPredicateSet">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RPredicateSetToMBPredicateSet.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.30/@variable.1">
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.22"
+ bindsTo="#//@nestedPackage.0/@rule.30/@variable.1" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.264">
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"
+ bindsTo="#//@nestedPackage.0/@rule.30/@variable.2" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Predicate.conditionExpression">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ bindsTo="#//@nestedPackage.0/@rule.30/@variable.3" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"/>
+ </part>
+ </member>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RPredicateSetToMBPredicateSet.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.30/@variable.4">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.30/@variable.4" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.predicate">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"
+ bindsTo="#//@nestedPackage.0/@rule.30/@variable.5" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Predicate.conditionExpression">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ bindsTo="#//@nestedPackage.0/@rule.30/@variable.6" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"/>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="rpRest" isRequired="false" type="#//@nestedPackage.1/@ownedType.22"/>
+ <variable name="predSeq" type="#//@nestedPackage.1/@ownedType.22"/>
+ <variable name="rp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"/>
+ <variable name="re" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"/>
+ <variable name="mb" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <variable name="mp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"/>
+ <variable name="me" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"/>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.50">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredVariable="#//@nestedPackage.0/@rule.30/@variable.3"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredVariable="#//@nestedPackage.0/@rule.30/@variable.6"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.30">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.22"
+ referredVariable="#//@nestedPackage.0/@rule.30/@variable.0"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ referredVariable="#//@nestedPackage.0/@rule.30/@variable.4"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RDomainToMDBottomForEnforcementOfIdentityProp">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainToMDBottomForEnforcementOfIdentityProp.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.31/@variable.1">
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.17"
+ bindsTo="#//@nestedPackage.0/@rule.31/@variable.1" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.257"
+ rest="#//@nestedPackage.0/@rule.31/@variable.9">
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.31/@variable.2" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ bindsTo="#//@nestedPackage.0/@rule.31/@variable.3" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp">
+ <where xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.includes..ocl.OclAny">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.26"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.Key.part">
+ <source xsi:type="pivot:OppositePropertyCallExp" isRequired="false"
+ type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Key"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.Key.identifies">
+ <source xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredVariable="#//@nestedPackage.0/@rule.31/@variable.5"/>
+ </source>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ referredVariable="#//@nestedPackage.0/@rule.31/@variable.7"/>
+ </where>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.TemplateExp.bindsTo">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.31/@variable.4" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ bindsTo="#//@nestedPackage.0/@rule.31/@variable.5" referredClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.ObjectTemplateExp.part">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem"
+ bindsTo="#//@nestedPackage.0/@rule.31/@variable.6" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.PropertyTemplateItem.referredProperty">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ bindsTo="#//@nestedPackage.0/@rule.31/@variable.7" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.PropertyTemplateItem.value">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ bindsTo="#//@nestedPackage.0/@rule.31/@variable.8" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"/>
+ </part>
+ </value>
+ </part>
+ </member>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainToMDBottomForEnforcementOfIdentityProp.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.31/@variable.10">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.31/@variable.10" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.area">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain"
+ bindsTo="#//@nestedPackage.0/@rule.31/@variable.11" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.rule">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ bindsTo="#//@nestedPackage.0/@rule.31/@variable.12" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Area.bottomPattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.31/@variable.13" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.area">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ referredVariable="#//@nestedPackage.0/@rule.31/@variable.12"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="seqForAssignment" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="rtSeq" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="te" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ <variable name="v" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="c" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ <variable name="pt" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem"/>
+ <variable name="pp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"/>
+ <variable name="e" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"/>
+ <variable implicit="true"/>
+ <variable name="db" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <variable name="cd" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain"/>
+ <variable name="m" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"/>
+ <variable name="mb" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Sequence.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.31/@variable.0"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.20"
+ kind="Sequence">
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.31/@variable.2"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.31/@variable.4"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ referredVariable="#//@nestedPackage.0/@rule.31/@variable.7"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredVariable="#//@nestedPackage.0/@rule.31/@variable.8"/>
+ </part>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.33">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.31/@variable.0"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ referredVariable="#//@nestedPackage.0/@rule.31/@variable.10"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.34">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.31/@variable.0"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ referredVariable="#//@nestedPackage.0/@rule.31/@variable.10"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.35">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.31/@variable.0"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ referredVariable="#//@nestedPackage.0/@rule.31/@variable.10"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.36">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.31/@variable.0"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ referredVariable="#//@nestedPackage.0/@rule.31/@variable.13"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RDomainToMDBottomForEnforcementOfIdentityPropObject">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainToMDBottomForEnforcementOfIdentityPropObject.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.32/@variable.4">
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.17"
+ bindsTo="#//@nestedPackage.0/@rule.32/@variable.4" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.257"
+ rest="#//@nestedPackage.0/@rule.32/@variable.14">
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.32/@variable.5" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ bindsTo="#//@nestedPackage.0/@rule.32/@variable.6" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ bindsTo="#//@nestedPackage.0/@rule.32/@variable.7" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp">
+ <where xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.includes..ocl.OclAny">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.26"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.Key.part">
+ <source xsi:type="pivot:OppositePropertyCallExp" isRequired="false"
+ type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Key"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.Key.identifies">
+ <source xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredVariable="#//@nestedPackage.0/@rule.32/@variable.9"/>
+ </source>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ referredVariable="#//@nestedPackage.0/@rule.32/@variable.11"/>
+ </where>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.TemplateExp.bindsTo">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.32/@variable.8" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ bindsTo="#//@nestedPackage.0/@rule.32/@variable.9" referredClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.ObjectTemplateExp.part">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem"
+ bindsTo="#//@nestedPackage.0/@rule.32/@variable.10" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.PropertyTemplateItem.referredProperty">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ bindsTo="#//@nestedPackage.0/@rule.32/@variable.11" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.PropertyTemplateItem.value">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ bindsTo="#//@nestedPackage.0/@rule.32/@variable.12" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.TemplateExp.bindsTo">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.32/@variable.13" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </member>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainToMDBottomForEnforcementOfIdentityPropObject.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.32/@variable.15">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.32/@variable.15" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.assignment">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment"
+ bindsTo="#//@nestedPackage.0/@rule.32/@variable.16" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.PropertyAssignment.slotExpression">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.32/@variable.17" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.32/@variable.2"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.PropertyAssignment.targetProperty">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ bindsTo="#//@nestedPackage.0/@rule.32/@variable.18" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.32/@variable.13"/>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.Property.class">
+ <value xsi:type="pivot:OperationCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclAsType..$$.Metaclass">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Type"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type">
+ <source xsi:type="pivot:VariableExp" isRequired="false"
+ type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.32/@variable.2"/>
+ </source>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.25"
+ referredType="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ </value>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Assignment.value">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.32/@variable.19" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.32/@variable.1"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="seqForAssignment" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="mtv" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="tcv" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="rdSeq" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="rtSeq" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="rd" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ <variable name="te" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ <variable name="v" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="c" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ <variable name="pt" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem"/>
+ <variable name="pp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"/>
+ <variable name="e" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ <variable name="tv" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable implicit="true"/>
+ <variable name="mb" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <variable name="a" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment"/>
+ <variable name="ve1" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <variable name="tp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"/>
+ <variable name="ve2" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Sequence.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.32/@variable.3"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.20"
+ kind="Sequence">
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.32/@variable.5"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredVariable="#//@nestedPackage.0/@rule.32/@variable.6"/>
+ </part>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.49">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.32/@variable.3"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.32/@variable.2"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.19">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.32/@variable.13"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.32/@variable.1"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RDomainPatternExprToMappingDomainAssignment">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainPatternExprToMappingDomainAssignment.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.33/@variable.2">
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.17"
+ bindsTo="#//@nestedPackage.0/@rule.33/@variable.2" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.257"
+ rest="#//@nestedPackage.0/@rule.33/@variable.7">
+ <member xsi:type="pivot:VariableExp" referredVariable="#//@nestedPackage.0/@rule.33/@variable.3"/>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.33/@variable.4" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ bindsTo="#//@nestedPackage.0/@rule.33/@variable.5" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.33/@variable.0"/>
+ </part>
+ </member>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ bindsTo="#//@nestedPackage.0/@rule.33/@variable.6" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression">
+ <where xsi:type="pivot:OperationCallExp" name="and" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.and..ocl.Boolean">
+ <source xsi:type="pivot:OperationCallExp" name="not" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.not">
+ <source xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclIsTypeOf..$$.Metaclass">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredVariable="#//@nestedPackage.0/@rule.33/@variable.6"/>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.3"
+ referredType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ </source>
+ </source>
+ <argument xsi:type="pivot:OperationCallExp" name="not" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.not">
+ <source xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclIsTypeOf..$$.Metaclass">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredVariable="#//@nestedPackage.0/@rule.33/@variable.6"/>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.12"
+ referredType="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ </source>
+ </argument>
+ </where>
+ </member>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainPatternExprToMappingDomainAssignment.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.33/@variable.8">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.33/@variable.8" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.assignment">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment"
+ bindsTo="#//@nestedPackage.0/@rule.33/@variable.9" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.PropertyAssignment.slotExpression">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.33/@variable.10" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.33/@variable.1"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.PropertyAssignment.targetProperty">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ bindsTo="#//@nestedPackage.0/@rule.33/@variable.11" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.33/@variable.0"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.Property.class">
+ <value xsi:type="pivot:OperationCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclAsType..$$.Metaclass">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Type"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type">
+ <source xsi:type="pivot:VariableExp" isRequired="false"
+ type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.33/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.25"
+ referredType="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ </value>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Assignment.value">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ bindsTo="#//@nestedPackage.0/@rule.33/@variable.12" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"/>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="pn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="mv" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="seqForAssignment" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable/>
+ <variable name="v" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="pp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"/>
+ <variable name="e" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"/>
+ <variable implicit="true"/>
+ <variable name="db" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <variable name="a" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment"/>
+ <variable name="ve" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <variable name="tp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"/>
+ <variable name="me" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"/>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.19">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.33/@variable.4"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.33/@variable.1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.50">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredVariable="#//@nestedPackage.0/@rule.33/@variable.6"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredVariable="#//@nestedPackage.0/@rule.33/@variable.12"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RDomainPatternExprToMappingDomainVarAssignment">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainPatternExprToMappingDomainVarAssignment.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.34/@variable.4">
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.17"
+ bindsTo="#//@nestedPackage.0/@rule.34/@variable.4" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.257"
+ rest="#//@nestedPackage.0/@rule.34/@variable.9">
+ <where xsi:type="pivot:OperationCallExp" name="not" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.not">
+ <source xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.includes..ocl.OclAny">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.34/@variable.0"/>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableDeclaration"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ referredVariable="#//@nestedPackage.0/@rule.34/@variable.8"/>
+ </argument>
+ </source>
+ </where>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.34/@variable.5" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.34/@variable.6" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ bindsTo="#//@nestedPackage.0/@rule.34/@variable.7" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.34/@variable.3"/>
+ </part>
+ </member>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.34/@variable.8" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.34/@variable.1"/>
+ </part>
+ </member>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainPatternExprToMappingDomainVarAssignment.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.34/@variable.10">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.34/@variable.10" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.realizedVariable">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"
+ bindsTo="#//@nestedPackage.0/@rule.34/@variable.11" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.assignment">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment"
+ bindsTo="#//@nestedPackage.0/@rule.34/@variable.12" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.PropertyAssignment.slotExpression">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.34/@variable.13" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"
+ referredVariable="#//@nestedPackage.0/@rule.34/@variable.11"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.PropertyAssignment.targetProperty">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ bindsTo="#//@nestedPackage.0/@rule.34/@variable.14" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.34/@variable.3"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.Property.class">
+ <value xsi:type="pivot:OperationCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclAsType..$$.Metaclass">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Type"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"
+ referredVariable="#//@nestedPackage.0/@rule.34/@variable.11"/>
+ </source>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.25"
+ referredType="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ </value>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Assignment.value">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.34/@variable.15" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.34/@variable.2"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="sharedDomainVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="rev" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="mev" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="pn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="seqForAssignment" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="v" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="pp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"/>
+ <variable name="e" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <variable implicit="true"/>
+ <variable name="db" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <variable name="mv" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"/>
+ <variable name="a" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment"/>
+ <variable name="ve" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <variable name="tp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"/>
+ <variable name="me" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <when>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.34/@variable.0"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="#o.relToCore.getSharedDomainVars..qvtrelation.Relation">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.34/@variable.5"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ </when>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.20">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.34/@variable.6"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"
+ referredVariable="#//@nestedPackage.0/@rule.34/@variable.11"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.19">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.34/@variable.1"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.34/@variable.2"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RDomainPatternExprToMappingDomainTemplateVarAssignment">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainPatternExprToMappingDomainTemplateVarAssignment.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.35/@variable.4">
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.17"
+ bindsTo="#//@nestedPackage.0/@rule.35/@variable.4" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.257"
+ rest="#//@nestedPackage.0/@rule.35/@variable.9">
+ <where xsi:type="pivot:OperationCallExp" name="not" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.not">
+ <source xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.includes..ocl.OclAny">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.35/@variable.0"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.35/@variable.1"/>
+ </source>
+ </where>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.35/@variable.5" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.35/@variable.6" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ bindsTo="#//@nestedPackage.0/@rule.35/@variable.7" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.35/@variable.3"/>
+ </part>
+ </member>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ bindsTo="#//@nestedPackage.0/@rule.35/@variable.8" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.TemplateExp.bindsTo">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.35/@variable.1"/>
+ </part>
+ </member>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainPatternExprToMappingDomainTemplateVarAssignment.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.35/@variable.10">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.35/@variable.10" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.realizedVariable">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"
+ bindsTo="#//@nestedPackage.0/@rule.35/@variable.11" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.assignment">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment"
+ bindsTo="#//@nestedPackage.0/@rule.35/@variable.12" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.PropertyAssignment.slotExpression">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.35/@variable.13" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"
+ referredVariable="#//@nestedPackage.0/@rule.35/@variable.11"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.PropertyAssignment.targetProperty">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ bindsTo="#//@nestedPackage.0/@rule.35/@variable.14" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.35/@variable.3"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.Property.class">
+ <value xsi:type="pivot:OperationCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclAsType..$$.Metaclass">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Type"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"
+ referredVariable="#//@nestedPackage.0/@rule.35/@variable.11"/>
+ </source>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.25"
+ referredType="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ </value>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Assignment.value">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.35/@variable.15" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.35/@variable.2"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="sharedDomainVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="rev" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="mev" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="pn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="seqForAssignment" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="v" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="pp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"/>
+ <variable name="e" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ <variable implicit="true"/>
+ <variable name="db" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <variable name="mv" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"/>
+ <variable name="a" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment"/>
+ <variable name="ve" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <variable name="tp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"/>
+ <variable name="me" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <when>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.35/@variable.0"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="#o.relToCore.getSharedDomainVars..qvtrelation.Relation">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.35/@variable.5"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ </when>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.20">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.35/@variable.6"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"
+ referredVariable="#//@nestedPackage.0/@rule.35/@variable.11"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.19">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.35/@variable.1"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.35/@variable.2"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RDomainPatternExprToMappingBottomVarAssignment">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainPatternExprToMappingBottomVarAssignment.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.36/@variable.5">
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.17"
+ bindsTo="#//@nestedPackage.0/@rule.36/@variable.5" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.257"
+ rest="#//@nestedPackage.0/@rule.36/@variable.10">
+ <where xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.includes..ocl.OclAny">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.36/@variable.0"/>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableDeclaration"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ referredVariable="#//@nestedPackage.0/@rule.36/@variable.9"/>
+ </argument>
+ </where>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.36/@variable.6" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.36/@variable.7" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ bindsTo="#//@nestedPackage.0/@rule.36/@variable.8" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.36/@variable.4"/>
+ </part>
+ </member>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.36/@variable.9" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.36/@variable.1"/>
+ </part>
+ </member>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainPatternExprToMappingBottomVarAssignment.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.36/@variable.11">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.36/@variable.11" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.assignment">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment"
+ bindsTo="#//@nestedPackage.0/@rule.36/@variable.12" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.PropertyAssignment.slotExpression">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.36/@variable.13" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.36/@variable.3"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.PropertyAssignment.targetProperty">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ bindsTo="#//@nestedPackage.0/@rule.36/@variable.14" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.36/@variable.4"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.Property.class">
+ <value xsi:type="pivot:OperationCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclAsType..$$.Metaclass">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Type"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type">
+ <source xsi:type="pivot:VariableExp" isRequired="false"
+ type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.36/@variable.3"/>
+ </source>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.25"
+ referredType="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ </value>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Assignment.value">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.36/@variable.15" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.36/@variable.2"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="sharedDomainVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="rev" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="mev" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="mv" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="pn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="seqForAssignment" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="v" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="pp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"/>
+ <variable name="e" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <variable implicit="true"/>
+ <variable name="mb" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <variable name="a" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment"/>
+ <variable name="ve" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <variable name="tp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"/>
+ <variable name="me" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <when>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.36/@variable.0"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="#o.relToCore.getSharedDomainVars..qvtrelation.Relation">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.36/@variable.6"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ </when>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.20">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.36/@variable.7"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.36/@variable.3"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.19">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.36/@variable.1"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.36/@variable.2"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RDomainToMDBottomForEnforcementOfNonIdentityPropPrimitive">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainToMDBottomForEnforcementOfNonIdentityPropPrimitive.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.37/@variable.3">
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.17"
+ bindsTo="#//@nestedPackage.0/@rule.37/@variable.3" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.257"
+ rest="#//@nestedPackage.0/@rule.37/@variable.15">
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.37/@variable.4" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.transformation">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"
+ bindsTo="#//@nestedPackage.0/@rule.37/@variable.5" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"/>
+ </part>
+ </member>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ bindsTo="#//@nestedPackage.0/@rule.37/@variable.6" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp">
+ <where xsi:type="pivot:OperationCallExp" name="and" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.and..ocl.Boolean">
+ <source xsi:type="pivot:OperationCallExp" name="not" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.not">
+ <source xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.includes..ocl.OclAny">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.26"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.Key.part">
+ <source xsi:type="pivot:OppositePropertyCallExp" isRequired="false"
+ type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Key"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.Key.identifies">
+ <source xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredVariable="#//@nestedPackage.0/@rule.37/@variable.8"/>
+ </source>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ referredVariable="#//@nestedPackage.0/@rule.37/@variable.10"/>
+ </source>
+ </source>
+ <argument xsi:type="pivot:OperationCallExp" name="not" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.not">
+ <source xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclIsKindOf..$$.Metaclass">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredVariable="#//@nestedPackage.0/@rule.37/@variable.11"/>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.27"
+ referredType="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.TemplateExp"/>
+ </source>
+ </argument>
+ </where>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.TemplateExp.bindsTo">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.37/@variable.7" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ bindsTo="#//@nestedPackage.0/@rule.37/@variable.8" referredClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.ObjectTemplateExp.part">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem"
+ bindsTo="#//@nestedPackage.0/@rule.37/@variable.9" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.PropertyTemplateItem.referredProperty">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ bindsTo="#//@nestedPackage.0/@rule.37/@variable.10" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.37/@variable.0"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.PropertyTemplateItem.value">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ bindsTo="#//@nestedPackage.0/@rule.37/@variable.11" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"/>
+ </part>
+ </value>
+ </part>
+ </member>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ bindsTo="#//@nestedPackage.0/@rule.37/@variable.12" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.RelationDomain.pattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"
+ bindsTo="#//@nestedPackage.0/@rule.37/@variable.13" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.DomainPattern.templateExpression">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ bindsTo="#//@nestedPackage.0/@rule.37/@variable.14" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ </part>
+ </value>
+ </part>
+ </member>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainToMDBottomForEnforcementOfNonIdentityPropPrimitive.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.37/@variable.16">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ bindsTo="#//@nestedPackage.0/@rule.37/@variable.16" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#p.qvtcore.Mapping.local">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ bindsTo="#//@nestedPackage.0/@rule.37/@variable.17" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ referredVariable="#//@nestedPackage.0/@rule.37/@variable.16"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_forNonIdentityProp"/>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.transformation">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"
+ bindsTo="#//@nestedPackage.0/@rule.37/@variable.18" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Area.guardPattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ bindsTo="#//@nestedPackage.0/@rule.37/@variable.19" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.GuardPattern.area">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ referredVariable="#//@nestedPackage.0/@rule.37/@variable.17"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Area.bottomPattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.37/@variable.20" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.area">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ referredVariable="#//@nestedPackage.0/@rule.37/@variable.17"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.assignment">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment"
+ bindsTo="#//@nestedPackage.0/@rule.37/@variable.21" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.PropertyAssignment.slotExpression">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.37/@variable.22"
+ referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" isRequired="false"
+ type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.37/@variable.1"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.PropertyAssignment.targetProperty">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ bindsTo="#//@nestedPackage.0/@rule.37/@variable.23"
+ referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.37/@variable.0"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.Property.class">
+ <value xsi:type="pivot:OperationCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclAsType..$$.Metaclass">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Type"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type">
+ <source xsi:type="pivot:VariableExp" isRequired="false"
+ type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.37/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.25"
+ referredType="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ </value>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Assignment.value">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ bindsTo="#//@nestedPackage.0/@rule.37/@variable.24"
+ referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="pn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="mv" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="rtdeSeq" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="rtdSeq" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="rt" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"/>
+ <variable name="te" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ <variable name="v" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="c" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ <variable name="pt" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem"/>
+ <variable name="pp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"/>
+ <variable name="e" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"/>
+ <variable name="rd" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ <variable name="rdp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"/>
+ <variable name="rdt" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ <variable implicit="true"/>
+ <variable name="m" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"/>
+ <variable name="cm" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"/>
+ <variable name="mt" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"/>
+ <variable name="gp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"/>
+ <variable name="bp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <variable name="a" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment"/>
+ <variable name="ve" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <variable name="tp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"/>
+ <variable name="me" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"/>
+ <when>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.0">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"
+ referredVariable="#//@nestedPackage.0/@rule.37/@variable.5"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"
+ referredVariable="#//@nestedPackage.0/@rule.37/@variable.18"/>
+ </conditionExpression>
+ </predicate>
+ </when>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.19">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.37/@variable.7"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.37/@variable.1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.50">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredVariable="#//@nestedPackage.0/@rule.37/@variable.11"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredVariable="#//@nestedPackage.0/@rule.37/@variable.24"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Sequence.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.37/@variable.2"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.20"
+ kind="Sequence">
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.37/@variable.4"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ referredVariable="#//@nestedPackage.0/@rule.37/@variable.6"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredVariable="#//@nestedPackage.0/@rule.37/@variable.12"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredVariable="#//@nestedPackage.0/@rule.37/@variable.11"/>
+ </part>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.38">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.37/@variable.2"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ referredVariable="#//@nestedPackage.0/@rule.37/@variable.17"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RDomainToMComposedMappingGuard">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainToMComposedMappingGuard.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.38/@variable.6">
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.17"
+ bindsTo="#//@nestedPackage.0/@rule.38/@variable.6" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.257"
+ rest="#//@nestedPackage.0/@rule.38/@variable.17">
+ <where xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="#o.relToCore.isVarBoundToSomeOtherTemplate..qvttemplate.ObjectTemplateExp..qvttemplate.ObjectTemplateExp..pivot.Variable">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ referredVariable="#//@nestedPackage.0/@rule.38/@variable.14"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ referredVariable="#//@nestedPackage.0/@rule.38/@variable.9"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.38/@variable.16"/>
+ </where>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.38/@variable.7" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.transformation">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"
+ bindsTo="#//@nestedPackage.0/@rule.38/@variable.8" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"/>
+ </part>
+ </member>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ bindsTo="#//@nestedPackage.0/@rule.38/@variable.9" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ bindsTo="#//@nestedPackage.0/@rule.38/@variable.10" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.38/@variable.0"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.typedModel">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"
+ bindsTo="#//@nestedPackage.0/@rule.38/@variable.11" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.38/@variable.1"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.TypedModel.usedPackage">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"
+ bindsTo="#//@nestedPackage.0/@rule.38/@variable.12" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.TypedModel.transformation">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"
+ referredVariable="#//@nestedPackage.0/@rule.38/@variable.8"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.RelationDomain.pattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"
+ bindsTo="#//@nestedPackage.0/@rule.38/@variable.13" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.DomainPattern.templateExpression">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ bindsTo="#//@nestedPackage.0/@rule.38/@variable.14" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ </part>
+ </value>
+ </part>
+ </member>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.38/@variable.15" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.38/@variable.16" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ </part>
+ </member>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainToMComposedMappingGuard.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.38/@variable.18">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ bindsTo="#//@nestedPackage.0/@rule.38/@variable.18" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Area.guardPattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ bindsTo="#//@nestedPackage.0/@rule.38/@variable.19" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.predicate">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"
+ bindsTo="#//@nestedPackage.0/@rule.38/@variable.20" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Predicate.conditionExpression">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OperationCallExp"
+ bindsTo="#//@nestedPackage.0/@rule.38/@variable.21" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OperationCallExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.CallExp.source">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.PropertyCallExp"
+ bindsTo="#//@nestedPackage.0/@rule.38/@variable.22"
+ referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.PropertyCallExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.CallExp.source">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.38/@variable.23"
+ referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" isRequired="false"
+ type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.38/@variable.2"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.PropertyCallExp.referredProperty">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ bindsTo="#//@nestedPackage.0/@rule.38/@variable.24"
+ referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <source xsi:type="pivot:VariableExp" isRequired="false"
+ type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.38/@variable.3"/>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.Property.class">
+ <value xsi:type="pivot:OperationCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclAsType..$$.Metaclass">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Type"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type">
+ <source xsi:type="pivot:VariableExp" isRequired="false"
+ type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.38/@variable.3"/>
+ </source>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.25"
+ referredType="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ </value>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.OperationCallExp.referredOperation">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Operation"
+ bindsTo="#//@nestedPackage.0/@rule.38/@variable.25"
+ referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Operation">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="="/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.OperationCallExp.argument">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.38/@variable.26"
+ referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" isRequired="false"
+ type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.38/@variable.3"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.domain">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain"
+ bindsTo="#//@nestedPackage.0/@rule.38/@variable.27" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.38/@variable.0"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.typedModel">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"
+ bindsTo="#//@nestedPackage.0/@rule.38/@variable.28" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.38/@variable.1"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.TypedModel.usedPackage">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"
+ referredVariable="#//@nestedPackage.0/@rule.38/@variable.12"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.TypedModel.transformation">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"
+ referredVariable="#//@nestedPackage.0/@rule.38/@variable.5"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Area.guardPattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ bindsTo="#//@nestedPackage.0/@rule.38/@variable.29" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.CorePattern.variable">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.38/@variable.3"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="dn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="tmn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="tcv" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="mv" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="rdSeq" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="mt" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"/>
+ <variable name="rtdSeq" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="rt" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"/>
+ <variable name="te" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ <variable name="rd" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ <variable name="dir" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"/>
+ <variable name="up" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"/>
+ <variable name="rdp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"/>
+ <variable name="rdt" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ <variable name="ve" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <variable name="v" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable implicit="true"/>
+ <variable name="cm" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"/>
+ <variable name="mg" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"/>
+ <variable name="pd" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"/>
+ <variable name="ee" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OperationCallExp"/>
+ <variable name="pe" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.PropertyCallExp"/>
+ <variable name="ve1" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <variable name="tp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"/>
+ <variable name="eo" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Operation"/>
+ <variable name="ve2" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <variable name="cd" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain"/>
+ <variable name="mdir" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"/>
+ <variable name="cmdg" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"/>
+ <when>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.0">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"
+ referredVariable="#//@nestedPackage.0/@rule.38/@variable.8"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"
+ referredVariable="#//@nestedPackage.0/@rule.38/@variable.5"/>
+ </conditionExpression>
+ </predicate>
+ </when>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Sequence.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.38/@variable.4"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.20"
+ kind="Sequence">
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.38/@variable.7"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredVariable="#//@nestedPackage.0/@rule.38/@variable.10"/>
+ </part>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.49">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.38/@variable.4"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.38/@variable.2"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.19">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.38/@variable.16"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.38/@variable.3"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RDomainToMDBottomForEnforcementOfNonIdentityPropObject">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainToMDBottomForEnforcementOfNonIdentityPropObject.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.39/@variable.8">
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.19"
+ bindsTo="#//@nestedPackage.0/@rule.39/@variable.8" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.267"
+ rest="#//@nestedPackage.0/@rule.39/@variable.23">
+ <member xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.18"
+ bindsTo="#//@nestedPackage.0/@rule.39/@variable.9" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.78"
+ rest="#//@nestedPackage.0/@rule.39/@variable.22">
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.39/@variable.10" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.transformation">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"
+ bindsTo="#//@nestedPackage.0/@rule.39/@variable.11" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"/>
+ </part>
+ </member>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ bindsTo="#//@nestedPackage.0/@rule.39/@variable.12" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.4"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.typedModel">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"
+ bindsTo="#//@nestedPackage.0/@rule.39/@variable.13" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.6"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.TypedModel.usedPackage">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"
+ bindsTo="#//@nestedPackage.0/@rule.39/@variable.14" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.TypedModel.transformation">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.11"/>
+ </part>
+ </value>
+ </part>
+ </member>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ bindsTo="#//@nestedPackage.0/@rule.39/@variable.15" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp">
+ <where xsi:type="pivot:OperationCallExp" name="not" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.not">
+ <source xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.includes..ocl.OclAny">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.26"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.Key.part">
+ <source xsi:type="pivot:OppositePropertyCallExp" isRequired="false"
+ type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Key"
+ referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.Key.identifies">
+ <source xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.17"/>
+ </source>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.19"/>
+ </source>
+ </where>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.TemplateExp.bindsTo">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.39/@variable.16" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ bindsTo="#//@nestedPackage.0/@rule.39/@variable.17" referredClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.ObjectTemplateExp.part">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem"
+ bindsTo="#//@nestedPackage.0/@rule.39/@variable.18" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.PropertyTemplateItem.referredProperty">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ bindsTo="#//@nestedPackage.0/@rule.39/@variable.19" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.5"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.PropertyTemplateItem.value">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ bindsTo="#//@nestedPackage.0/@rule.39/@variable.20" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.TemplateExp.bindsTo">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.39/@variable.21"
+ referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </member>
+ </member>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainToMDBottomForEnforcementOfNonIdentityPropObject.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.39/@variable.24">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ bindsTo="#//@nestedPackage.0/@rule.39/@variable.24" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#p.qvtcore.Mapping.local">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ bindsTo="#//@nestedPackage.0/@rule.39/@variable.25" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.24"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_for_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.21"/>
+ </argument>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.transformation">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"
+ bindsTo="#//@nestedPackage.0/@rule.39/@variable.26" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.domain">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain"
+ bindsTo="#//@nestedPackage.0/@rule.39/@variable.27" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.4"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.isEnforceable">
+ <value xsi:type="pivot:BooleanLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ booleanSymbol="true"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.typedModel">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"
+ bindsTo="#//@nestedPackage.0/@rule.39/@variable.28" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.6"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.TypedModel.usedPackage">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.14"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.TypedModel.transformation">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.26"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Area.bottomPattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.39/@variable.29" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.realizedVariable">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"
+ bindsTo="#//@nestedPackage.0/@rule.39/@variable.30"
+ referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.assignment">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment"
+ bindsTo="#//@nestedPackage.0/@rule.39/@variable.31"
+ referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.PropertyAssignment.slotExpression">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.39/@variable.32"
+ referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" isRequired="false"
+ type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.7"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.PropertyAssignment.targetProperty">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ bindsTo="#//@nestedPackage.0/@rule.39/@variable.33"
+ referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.5"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.Property.class">
+ <value xsi:type="pivot:OperationCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclAsType..$$.Metaclass">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Type"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type">
+ <source xsi:type="pivot:VariableExp" isRequired="false"
+ type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.7"/>
+ </source>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.25"
+ referredType="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ </value>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Assignment.value">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.39/@variable.34"
+ referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.30"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Area.bottomPattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.39/@variable.35" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.area">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.25"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="rdtSetNext" isRequired="false" type="#//@nestedPackage.1/@ownedType.18"/>
+ <variable name="rdtVarsSeqRest" isRequired="false" type="#//@nestedPackage.1/@ownedType.19"/>
+ <variable name="predicatesWithoutVarBindings" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"/>
+ <variable name="unboundDomainVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="dn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="pn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="tmn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="mv" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="rdtVarsSeq" type="#//@nestedPackage.1/@ownedType.19"/>
+ <variable name="rdtSet" type="#//@nestedPackage.1/@ownedType.18"/>
+ <variable name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="rt" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"/>
+ <variable name="rd" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ <variable name="dir" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"/>
+ <variable name="up" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"/>
+ <variable name="te" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ <variable name="v" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="c" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ <variable name="pt" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem"/>
+ <variable name="pp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"/>
+ <variable name="pte" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ <variable name="pv" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable implicit="true"/>
+ <variable implicit="true"/>
+ <variable name="m" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"/>
+ <variable name="cm" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"/>
+ <variable name="mt" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"/>
+ <variable name="cd" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain"/>
+ <variable name="mdir" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"/>
+ <variable name="cmdb" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <variable name="mpv" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"/>
+ <variable name="a" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment"/>
+ <variable name="ve1" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <variable name="tp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"/>
+ <variable name="ve2" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <variable name="mb" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <when>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.0">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationalTransformation"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.11"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.26"/>
+ </conditionExpression>
+ </predicate>
+ </when>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.19">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.16"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.7"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.20">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.21"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.30"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:OperationCallExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.18"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OrderedCollection.at..ocl.Integer">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.19"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.8"/>
+ <argument xsi:type="pivot:UnlimitedNaturalLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#UnlimitedNatural"
+ unlimitedNaturalSymbol="2"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.2"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:OperationCallExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.18"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OrderedCollection.at..ocl.Integer">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.19"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.8"/>
+ <argument xsi:type="pivot:UnlimitedNaturalLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#UnlimitedNatural"
+ unlimitedNaturalSymbol="3"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.3"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.18"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.0"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.21"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.10"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.12"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.20"/>
+ </part>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Sequence.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.19"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.1"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.19"
+ kind="Sequence">
+ <part xsi:type="pivot:CollectionItem" isRequired="false" type="#//@nestedPackage.1/@ownedType.18">
+ <item xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.18"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.0"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" isRequired="false" type="#//@nestedPackage.1/@ownedType.9">
+ <item xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.9"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.2"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" isRequired="false" type="#//@nestedPackage.1/@ownedType.0">
+ <item xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.3"/>
+ </part>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.27">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.19"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.1"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ referredVariable="#//@nestedPackage.0/@rule.39/@variable.29"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RDomainPatternToMDBottomPatternComposite">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainPatternToMDBottomPatternComposite.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.40/@variable.5">
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.17"
+ bindsTo="#//@nestedPackage.0/@rule.40/@variable.5" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.257"
+ rest="#//@nestedPackage.0/@rule.40/@variable.13">
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.40/@variable.6" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ bindsTo="#//@nestedPackage.0/@rule.40/@variable.7" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.TemplateExp.bindsTo">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.40/@variable.8" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.ObjectTemplateExp.part">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem"
+ bindsTo="#//@nestedPackage.0/@rule.40/@variable.9" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.PropertyTemplateItem.referredProperty">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ bindsTo="#//@nestedPackage.0/@rule.40/@variable.10" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.40/@variable.2"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.PropertyTemplateItem.value">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ bindsTo="#//@nestedPackage.0/@rule.40/@variable.11" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.TemplateExp.bindsTo">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.40/@variable.12" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </member>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainPatternToMDBottomPatternComposite.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.40/@variable.14">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.40/@variable.14" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.assignment">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment"
+ bindsTo="#//@nestedPackage.0/@rule.40/@variable.15" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.PropertyAssignment.slotExpression">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.40/@variable.16" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.40/@variable.3"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.PropertyAssignment.targetProperty">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ bindsTo="#//@nestedPackage.0/@rule.40/@variable.17" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.40/@variable.2"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.Property.class">
+ <value xsi:type="pivot:OperationCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclAsType..$$.Metaclass">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Type"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type">
+ <source xsi:type="pivot:VariableExp" isRequired="false"
+ type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.40/@variable.3"/>
+ </source>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.25"
+ referredType="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ </value>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Assignment.value">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.40/@variable.18" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.40/@variable.4"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="nextSeqForDomainPtrn" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="sharedDomainVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="pn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="mvte" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="mvpte" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="seqForDomainPtrn" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="te" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ <variable name="vte" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="pt" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem"/>
+ <variable name="pp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"/>
+ <variable name="pte" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ <variable name="vpte" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable implicit="true"/>
+ <variable name="db" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <variable name="a" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment"/>
+ <variable name="ve1" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <variable name="tp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"/>
+ <variable name="ve2" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.19">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.40/@variable.8"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.40/@variable.3"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.19">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.40/@variable.12"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.40/@variable.4"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Sequence.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.40/@variable.0"/>
+ <argument xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.20"
+ kind="Sequence">
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.40/@variable.6"/>
+ </part>
+ <part xsi:type="pivot:CollectionItem" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp">
+ <item xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ referredVariable="#//@nestedPackage.0/@rule.40/@variable.11"/>
+ </part>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.26">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.40/@variable.0"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ referredVariable="#//@nestedPackage.0/@rule.40/@variable.14"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RDomainPatternToMDBottomPatternSimpleUnSharedVarExpr">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainPatternToMDBottomPatternSimpleUnSharedVarExpr.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.41/@variable.4">
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.17"
+ bindsTo="#//@nestedPackage.0/@rule.41/@variable.4" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.257"
+ rest="#//@nestedPackage.0/@rule.41/@variable.12">
+ <where xsi:type="pivot:OperationCallExp" name="not" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.not">
+ <source xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.includes..ocl.OclAny">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.41/@variable.0"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.41/@variable.11"/>
+ </source>
+ </where>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.41/@variable.5" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ bindsTo="#//@nestedPackage.0/@rule.41/@variable.6" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.TemplateExp.bindsTo">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.41/@variable.7" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.ObjectTemplateExp.part">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem"
+ bindsTo="#//@nestedPackage.0/@rule.41/@variable.8" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.PropertyTemplateItem.referredProperty">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ bindsTo="#//@nestedPackage.0/@rule.41/@variable.9" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.41/@variable.1"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.PropertyTemplateItem.value">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.41/@variable.10" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.41/@variable.11" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </member>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainPatternToMDBottomPatternSimpleUnSharedVarExpr.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.41/@variable.13">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.41/@variable.13" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.assignment">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment"
+ bindsTo="#//@nestedPackage.0/@rule.41/@variable.14" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.PropertyAssignment.slotExpression">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.41/@variable.15" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.41/@variable.2"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.PropertyAssignment.targetProperty">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ bindsTo="#//@nestedPackage.0/@rule.41/@variable.16" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.41/@variable.1"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.Property.class">
+ <value xsi:type="pivot:OperationCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclAsType..$$.Metaclass">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Type"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type">
+ <source xsi:type="pivot:VariableExp" isRequired="false"
+ type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.41/@variable.2"/>
+ </source>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.25"
+ referredType="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ </value>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Assignment.value">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.41/@variable.17" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.41/@variable.3"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="sharedDomainVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="pn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="mvte" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="mvpte" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="seqForDomainPtrn" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="te" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ <variable name="vte" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="pt" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem"/>
+ <variable name="pp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"/>
+ <variable name="e" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <variable name="vpte" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable implicit="true"/>
+ <variable name="db" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <variable name="a" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment"/>
+ <variable name="ve1" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <variable name="tp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"/>
+ <variable name="ve2" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <when>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.41/@variable.0"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="#o.relToCore.getSharedDomainVars..qvtrelation.Relation">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.41/@variable.5"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ </when>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.19">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.41/@variable.7"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.41/@variable.2"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.19">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.41/@variable.11"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.41/@variable.3"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RDomainPatternToMDBottomPatternSimpleSharedVarExpr">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainPatternToMDBottomPatternSimpleSharedVarExpr.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.42/@variable.4">
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.17"
+ bindsTo="#//@nestedPackage.0/@rule.42/@variable.4" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.257"
+ rest="#//@nestedPackage.0/@rule.42/@variable.12">
+ <where xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.includes..ocl.OclAny">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.42/@variable.0"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.42/@variable.11"/>
+ </where>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.42/@variable.5" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ bindsTo="#//@nestedPackage.0/@rule.42/@variable.6" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.TemplateExp.bindsTo">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.42/@variable.7" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.ObjectTemplateExp.part">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem"
+ bindsTo="#//@nestedPackage.0/@rule.42/@variable.8" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.PropertyTemplateItem.referredProperty">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ bindsTo="#//@nestedPackage.0/@rule.42/@variable.9" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.42/@variable.1"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.PropertyTemplateItem.value">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.42/@variable.10" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.42/@variable.11" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </member>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainPatternToMDBottomPatternSimpleSharedVarExpr.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.42/@variable.13">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.42/@variable.13" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.assignment">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment"
+ bindsTo="#//@nestedPackage.0/@rule.42/@variable.14" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.PropertyAssignment.slotExpression">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.42/@variable.15" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.42/@variable.2"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.PropertyAssignment.targetProperty">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ bindsTo="#//@nestedPackage.0/@rule.42/@variable.16" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.42/@variable.1"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.Property.class">
+ <value xsi:type="pivot:OperationCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclAsType..$$.Metaclass">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Type"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type">
+ <source xsi:type="pivot:VariableExp" isRequired="false"
+ type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.42/@variable.2"/>
+ </source>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.25"
+ referredType="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ </value>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Assignment.value">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.42/@variable.17" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.42/@variable.3"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="sharedDomainVars" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="pn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="mvte" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="mvpte" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="seqForDomainPtrn" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="te" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ <variable name="vte" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="pt" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem"/>
+ <variable name="pp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"/>
+ <variable name="e" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <variable name="vpte" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable implicit="true"/>
+ <variable name="mb" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <variable name="a" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment"/>
+ <variable name="ve1" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <variable name="tp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"/>
+ <variable name="ve2" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <when>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Set.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.42/@variable.0"/>
+ <argument xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="#o.relToCore.getSharedDomainVars..qvtrelation.Relation">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.42/@variable.5"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ </when>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.19">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.42/@variable.7"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.42/@variable.2"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.19">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.42/@variable.11"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.42/@variable.3"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RDomainPatternToMDBottomPatternSimpleNonVarExpr">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainPatternToMDBottomPatternSimpleNonVarExpr.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.43/@variable.2">
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.17"
+ bindsTo="#//@nestedPackage.0/@rule.43/@variable.2" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.257"
+ rest="#//@nestedPackage.0/@rule.43/@variable.9">
+ <where xsi:type="pivot:OperationCallExp" name="and" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.and..ocl.Boolean">
+ <source xsi:type="pivot:OperationCallExp" name="not" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.not">
+ <source xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclIsKindOf..$$.Metaclass">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredVariable="#//@nestedPackage.0/@rule.43/@variable.8"/>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.27"
+ referredType="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.TemplateExp"/>
+ </source>
+ </source>
+ <argument xsi:type="pivot:OperationCallExp" name="not" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.not">
+ <source xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclIsTypeOf..$$.Metaclass">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredVariable="#//@nestedPackage.0/@rule.43/@variable.8"/>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.3"
+ referredType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ </source>
+ </argument>
+ </where>
+ <member xsi:type="pivot:VariableExp" referredVariable="#//@nestedPackage.0/@rule.43/@variable.3"/>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ bindsTo="#//@nestedPackage.0/@rule.43/@variable.4" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.TemplateExp.bindsTo">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.43/@variable.5" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.ObjectTemplateExp.part">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem"
+ bindsTo="#//@nestedPackage.0/@rule.43/@variable.6" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.PropertyTemplateItem.referredProperty">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ bindsTo="#//@nestedPackage.0/@rule.43/@variable.7" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.43/@variable.0"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#p.qvttemplate.PropertyTemplateItem.value">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ bindsTo="#//@nestedPackage.0/@rule.43/@variable.8" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"/>
+ </part>
+ </value>
+ </part>
+ </member>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainPatternToMDBottomPatternSimpleNonVarExpr.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.43/@variable.10">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.43/@variable.10" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.assignment">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment"
+ bindsTo="#//@nestedPackage.0/@rule.43/@variable.11" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.PropertyAssignment.slotExpression">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.43/@variable.12" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.43/@variable.1"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.PropertyAssignment.targetProperty">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ bindsTo="#//@nestedPackage.0/@rule.43/@variable.13" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.43/@variable.0"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.Property.class">
+ <value xsi:type="pivot:OperationCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclAsType..$$.Metaclass">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Type"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type">
+ <source xsi:type="pivot:VariableExp" isRequired="false"
+ type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.43/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.25"
+ referredType="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ </value>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Assignment.value">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ bindsTo="#//@nestedPackage.0/@rule.43/@variable.14" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"/>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="pn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="mvte" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="seqForDomainPtrn" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable/>
+ <variable name="te" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"/>
+ <variable name="vte" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="pt" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem"/>
+ <variable name="pp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"/>
+ <variable name="e" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"/>
+ <variable implicit="true"/>
+ <variable name="db" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <variable name="a" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment"/>
+ <variable name="ve" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <variable name="tp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"/>
+ <variable name="me" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"/>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.19">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.43/@variable.5"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.43/@variable.1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.50">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredVariable="#//@nestedPackage.0/@rule.43/@variable.8"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ referredVariable="#//@nestedPackage.0/@rule.43/@variable.14"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RDomainVarsToTraceClassProps">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainVarsToTraceClassProps.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.44/@variable.2">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ bindsTo="#//@nestedPackage.0/@rule.44/@variable.2" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.rule">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.44/@variable.3" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.RelationDomain.pattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"
+ bindsTo="#//@nestedPackage.0/@rule.44/@variable.4" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.bindsTo">
+ <value xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.0"
+ bindsTo="#//@nestedPackage.0/@rule.44/@variable.5" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.194"
+ rest="#//@nestedPackage.0/@rule.44/@variable.8">
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.44/@variable.6" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.Variable.templateExp">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.TemplateExp"
+ bindsTo="#//@nestedPackage.0/@rule.44/@variable.7" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.TemplateExp"/>
+ </part>
+ </member>
+ </value>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RDomainVarsToTraceClassProps.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.44/@variable.9">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.44/@variable.9" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.assignment">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment"
+ bindsTo="#//@nestedPackage.0/@rule.44/@variable.10" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.PropertyAssignment.slotExpression">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.44/@variable.11" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.44/@variable.0"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.PropertyAssignment.targetProperty">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ bindsTo="#//@nestedPackage.0/@rule.44/@variable.12" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.44/@variable.6"/>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.Property.class">
+ <value xsi:type="pivot:OperationCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclAsType..$$.Metaclass">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Type"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type">
+ <source xsi:type="pivot:VariableExp" isRequired="false"
+ type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.44/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.25"
+ referredType="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ </value>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Assignment.value">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.44/@variable.13" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.44/@variable.1"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="tcv" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="mdv" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="rd" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ <variable name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="dp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"/>
+ <variable name="domainVars" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="dv" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="te" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.TemplateExp"/>
+ <variable implicit="true"/>
+ <variable name="mb" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <variable name="a" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment"/>
+ <variable name="ve1" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <variable name="tp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"/>
+ <variable name="ve2" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.48">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.44/@variable.3"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.44/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.19">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.44/@variable.6"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.44/@variable.1"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="ROppositeDomainVarsToTraceClassProps">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.ROppositeDomainVarsToTraceClassProps.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.45/@variable.3">
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.19"
+ bindsTo="#//@nestedPackage.0/@rule.45/@variable.3" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.267"
+ rest="#//@nestedPackage.0/@rule.45/@variable.12">
+ <member xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.18"
+ bindsTo="#//@nestedPackage.0/@rule.45/@variable.4" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.78"
+ rest="#//@nestedPackage.0/@rule.45/@variable.7">
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.45/@variable.5" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ bindsTo="#//@nestedPackage.0/@rule.45/@variable.6" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ </member>
+ <member xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.0"
+ bindsTo="#//@nestedPackage.0/@rule.45/@variable.8" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.194"
+ rest="#//@nestedPackage.0/@rule.45/@variable.11">
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.45/@variable.9" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.Variable.templateExp">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.TemplateExp"
+ bindsTo="#//@nestedPackage.0/@rule.45/@variable.10" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.TemplateExp"/>
+ </part>
+ </member>
+ </member>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.ROppositeDomainVarsToTraceClassProps.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.45/@variable.13">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.45/@variable.13" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.assignment">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment"
+ bindsTo="#//@nestedPackage.0/@rule.45/@variable.14" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.PropertyAssignment.slotExpression">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.45/@variable.15" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.45/@variable.1"/>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.PropertyAssignment.targetProperty">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ bindsTo="#//@nestedPackage.0/@rule.45/@variable.16" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <source xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.45/@variable.9"/>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.Property.class">
+ <value xsi:type="pivot:OperationCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.oclAsType..$$.Metaclass">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Type"
+ referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type">
+ <source xsi:type="pivot:VariableExp" isRequired="false"
+ type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.45/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:TypeExp" type="#//@nestedPackage.1/@ownedType.25"
+ referredType="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ </value>
+ </part>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.Assignment.value">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.45/@variable.17" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.45/@variable.2"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="rdSeq" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="tcv" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="mdv" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="rdVarsSeq" type="#//@nestedPackage.1/@ownedType.19"/>
+ <variable name="rdSet" type="#//@nestedPackage.1/@ownedType.18"/>
+ <variable name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="rd" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ <variable implicit="true"/>
+ <variable name="domainVars" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="dv" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="te" type="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.TemplateExp"/>
+ <variable implicit="true"/>
+ <variable implicit="true"/>
+ <variable name="mb" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <variable name="a" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.PropertyAssignment"/>
+ <variable name="ve1" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <variable name="tp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"/>
+ <variable name="ve2" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Sequence.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.45/@variable.0"/>
+ <argument xsi:type="pivot:LetExp" type="#//@nestedPackage.1/@ownedType.17">
+ <in xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.17"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Sequence.append..T">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.17"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Sequence.append..T">
+ <source xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.45/@where/@predicate.0/@conditionExpression/@argument.0/@variable"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.45/@variable.5"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ referredVariable="#//@nestedPackage.0/@rule.45/@variable.6"/>
+ </in>
+ <variable name="s" type="#//@nestedPackage.1/@ownedType.17">
+ <initExpression xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.17"
+ kind="Sequence"/>
+ </variable>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.49">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.17"
+ referredVariable="#//@nestedPackage.0/@rule.45/@variable.0"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.45/@variable.1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.19">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.45/@variable.9"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.45/@variable.2"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RRelImplToMBottomEnforcementOperation">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RRelImplToMBottomEnforcementOperation.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.46/@variable.1">
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.17"
+ bindsTo="#//@nestedPackage.0/@rule.46/@variable.1" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.257"
+ rest="#//@nestedPackage.0/@rule.46/@variable.8">
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.46/@variable.2" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.Relation.operationalImpl">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationImplementation"
+ bindsTo="#//@nestedPackage.0/@rule.46/@variable.3" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationImplementation">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.RelationImplementation.inDirectionOf">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"
+ bindsTo="#//@nestedPackage.0/@rule.46/@variable.4" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.RelationImplementation.impl">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Operation"
+ bindsTo="#//@nestedPackage.0/@rule.46/@variable.5" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Operation"/>
+ </part>
+ </value>
+ </part>
+ </member>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ bindsTo="#//@nestedPackage.0/@rule.46/@variable.6" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.typedModel">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"
+ bindsTo="#//@nestedPackage.0/@rule.46/@variable.7" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"/>
+ </part>
+ </member>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RRelImplToMBottomEnforcementOperation.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.46/@variable.9">
+ <defaultAssignment variable="#//@nestedPackage.0/@rule.46/@variable.0">
+ <valueExp xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.28"
+ kind="Set"/>
+ </defaultAssignment>
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ bindsTo="#//@nestedPackage.0/@rule.46/@variable.9" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.enforcementOperation">
+ <value xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.29"
+ bindsTo="#//@nestedPackage.0/@rule.46/@variable.10" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.251">
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.EnforcementOperation"
+ bindsTo="#//@nestedPackage.0/@rule.46/@variable.11" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.EnforcementOperation">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.EnforcementOperation.enforcementMode">
+ <value xsi:type="pivot:EnumLiteralExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.EnforcementMode"
+ referredEnumLiteral="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#//@nestedPackage.0/@ownedType.11/@ownedLiteral.0"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.EnforcementOperation.operationCallExp">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OperationCallExp"
+ bindsTo="#//@nestedPackage.0/@rule.46/@variable.12" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OperationCallExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.OperationCallExp.referredOperation">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Operation"
+ referredVariable="#//@nestedPackage.0/@rule.46/@variable.5"/>
+ </part>
+ </value>
+ </part>
+ </member>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.EnforcementOperation"
+ bindsTo="#//@nestedPackage.0/@rule.46/@variable.13" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.EnforcementOperation">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.EnforcementOperation.enforcementMode">
+ <value xsi:type="pivot:EnumLiteralExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.EnforcementMode"
+ referredEnumLiteral="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#//@nestedPackage.0/@ownedType.11/@ownedLiteral.1"/>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.EnforcementOperation.operationCallExp">
+ <value xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OperationCallExp"
+ referredVariable="#//@nestedPackage.0/@rule.46/@variable.12"/>
+ </part>
+ </member>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="emptySet" isRequired="false" type="#//@nestedPackage.1/@ownedType.29"/>
+ <variable name="repImplSeq" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="ri" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationImplementation"/>
+ <variable name="tm" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"/>
+ <variable name="op" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Operation"/>
+ <variable name="rd" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ <variable name="tm" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"/>
+ <variable implicit="true"/>
+ <variable name="mb" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"/>
+ <variable name="eoSet" type="#//@nestedPackage.1/@ownedType.29"/>
+ <variable name="eoc" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.EnforcementOperation"/>
+ <variable name="oce" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OperationCallExp"/>
+ <variable name="eod" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.EnforcementOperation"/>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.47">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.46/@variable.2"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OperationCallExp"
+ referredVariable="#//@nestedPackage.0/@rule.46/@variable.12"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RRelDomainsToMOpCallArg">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RRelDomainsToMOpCallArg.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.47/@variable.0">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.47/@variable.0" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.domain">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ bindsTo="#//@nestedPackage.0/@rule.47/@variable.1" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#p.qvtrelation.RelationDomain.pattern">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"
+ bindsTo="#//@nestedPackage.0/@rule.47/@variable.2" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern">
+ <part referredProperty="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Pattern.bindsTo">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.47/@variable.3" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RRelDomainsToMOpCallArg.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.47/@variable.4">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OperationCallExp"
+ bindsTo="#//@nestedPackage.0/@rule.47/@variable.4" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OperationCallExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.OperationCallExp.argument">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ bindsTo="#//@nestedPackage.0/@rule.47/@variable.5" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.VariableExp.referredVariable">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ bindsTo="#//@nestedPackage.0/@rule.47/@variable.6" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="rd" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ <variable name="p" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"/>
+ <variable name="rv" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <variable name="oce" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OperationCallExp"/>
+ <variable name="ar" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"/>
+ <variable name="mv" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"/>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.19">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.47/@variable.3"/>
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ referredVariable="#//@nestedPackage.0/@rule.47/@variable.6"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RelationToTraceClassVar">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RelationToTraceClassVar.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.48/@variable.2">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.48/@variable.2" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.48/@variable.0"/>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RelationToTraceClassVar.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.48/@variable.3">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"
+ bindsTo="#//@nestedPackage.0/@rule.48/@variable.3" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.48/@variable.0"/>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_v"/>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredVariable="#//@nestedPackage.0/@rule.48/@variable.1"/>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="rn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="tc" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ <variable name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="tcv" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"/>
+ <when>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.2">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.48/@variable.2"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredVariable="#//@nestedPackage.0/@rule.48/@variable.1"/>
+ </conditionExpression>
+ </predicate>
+ </when>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RelationDomainToTraceClassVar">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RelationDomainToTraceClassVar.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.49/@variable.3">
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.17"
+ bindsTo="#//@nestedPackage.0/@rule.49/@variable.3" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.257"
+ rest="#//@nestedPackage.0/@rule.49/@variable.6">
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ bindsTo="#//@nestedPackage.0/@rule.49/@variable.4" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.49/@variable.0"/>
+ </part>
+ </member>
+ <member xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ bindsTo="#//@nestedPackage.0/@rule.49/@variable.5" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.49/@variable.1"/>
+ </part>
+ </member>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RelationDomainToTraceClassVar.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.49/@variable.7">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"
+ bindsTo="#//@nestedPackage.0/@rule.49/@variable.7" referredClass="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable">
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.49/@variable.0"/>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.49/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_v"/>
+ </value>
+ </part>
+ <part referredProperty="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredVariable="#//@nestedPackage.0/@rule.49/@variable.2"/>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="rn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="dn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="tc" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"/>
+ <variable name="rdSeq" type="#//@nestedPackage.1/@ownedType.17"/>
+ <variable name="r" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"/>
+ <variable name="d" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"/>
+ <variable implicit="true"/>
+ <variable name="tcv" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.RealizedVariable"/>
+ <when>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.2">
+ <argument xsi:type="pivot:VariableExp" type="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.Relation"
+ referredVariable="#//@nestedPackage.0/@rule.49/@variable.4"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ referredVariable="#//@nestedPackage.0/@rule.49/@variable.2"/>
+ </conditionExpression>
+ </predicate>
+ </when>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="RExpToMExp">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RExpToMExp.relations"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.relToCore.relations"
+ rootVariable="#//@nestedPackage.0/@rule.50/@variable.0">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ bindsTo="#//@nestedPackage.0/@rule.50/@variable.0" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"/>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.relToCore.RExpToMExp.core"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.relToCore.core"
+ rootVariable="#//@nestedPackage.0/@rule.50/@variable.1">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ bindsTo="#//@nestedPackage.0/@rule.50/@variable.1" referredClass="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"/>
+ </pattern>
+ </domain>
+ <variable name="re" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"/>
+ <variable name="me" type="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"/>
+ </rule>
+ <ownedKey identifies="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Type"
+ part="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name"/>
+ <ownedKey identifies="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ part="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name"/>
+ <ownedKey identifies="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ part="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name ../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.Property.class"/>
+ <ownedKey identifies="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Package"
+ part="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name"/>
+ <ownedKey identifies="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Operation"
+ part="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name"/>
+ <ownedKey identifies="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ part="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name ../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.TypedElement.type"/>
+ <ownedKey identifies="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.TypedModel"
+ part="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name ../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.TypedModel.usedPackage ../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.TypedModel.transformation"/>
+ <ownedKey identifies="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Transformation"
+ part="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name"/>
+ <ownedKey identifies="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"
+ part="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Predicate.pattern ../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Predicate.conditionExpression"/>
+ <ownedKey identifies="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.GuardPattern"
+ part="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.GuardPattern.area"/>
+ <ownedKey identifies="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.BottomPattern"
+ part="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#p.qvtcorebase.BottomPattern.area"/>
+ <ownedKey identifies="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.CoreDomain"
+ part="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name ../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Domain.rule"/>
+ <ownedKey identifies="../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#T.qvtcore.Mapping"
+ part="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#p.pivot.NamedElement.name ../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#p.qvtbase.Rule.transformation"/>
+ </nestedPackage>
+ <nestedPackage xmi:id="P.$$" name="$$" nsPrefix="orphanage" nsURI="http://www.eclipse.org/ocl/3.1.0/orphanage">
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.30"
+ elementType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:OrderedSetType" name="OrderedSet" superClass="#//@nestedPackage.1/@ownedType.31 #//@nestedPackage.1/@ownedType.32"
+ elementType="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Domain">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedSet">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Domain"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedSetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:Metaclass" name="Metaclass" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclType"
+ instanceType="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Metaclass">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..MetaclassT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:Metaclass" name="Metaclass" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclType"
+ instanceType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Metaclass">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..MetaclassT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:Metaclass" name="Metaclass" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclType"
+ instanceType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OperationCallExp">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Metaclass">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OperationCallExp"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..MetaclassT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:Metaclass" name="Metaclass" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclType"
+ instanceType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.PropertyCallExp">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Metaclass">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.PropertyCallExp"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..MetaclassT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:Metaclass" name="Metaclass" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclType"
+ instanceType="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationCallExp">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Metaclass">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationCallExp"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..MetaclassT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:OrderedSetType" name="OrderedSet" superClass="#//@nestedPackage.1/@ownedType.33 #//@nestedPackage.1/@ownedType.34"
+ elementType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedSet">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedSetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:Metaclass" name="Metaclass" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclType"
+ instanceType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Metaclass">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..MetaclassT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.35"
+ elementType="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:BagType" name="Bag" superClass="#//@nestedPackage.1/@ownedType.36"
+ elementType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Bag">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..BagT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.37"
+ elementType="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:Metaclass" name="Metaclass" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclType"
+ instanceType="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Metaclass">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.ObjectTemplateExp"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..MetaclassT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:BagType" name="Bag" superClass="#//@nestedPackage.1/@ownedType.38"
+ elementType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Bag">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..BagT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:BagType" name="Bag" superClass="#//@nestedPackage.1/@ownedType.39"
+ elementType="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Bag">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..BagT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.40"
+ elementType="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SequenceType" name="Sequence" superClass="#//@nestedPackage.1/@ownedType.41"
+ elementType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Sequence">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SequenceT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SequenceType" name="Sequence" superClass="#//@nestedPackage.1/@ownedType.42"
+ elementType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Element">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Sequence">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Element"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SequenceT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.43"
+ elementType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Element">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Element"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SequenceType" name="Sequence" superClass="#//@nestedPackage.1/@ownedType.44"
+ elementType="#//@nestedPackage.1/@ownedType.18">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Sequence">
+ <parameterSubstitution actual="#//@nestedPackage.1/@ownedType.18" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SequenceT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SequenceType" name="Sequence" superClass="#//@nestedPackage.1/@ownedType.45"
+ elementType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.NamedElement">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Sequence">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.NamedElement"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SequenceT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.46"
+ elementType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.NamedElement">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.NamedElement"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SequenceType" name="Sequence" superClass="#//@nestedPackage.1/@ownedType.47"
+ elementType="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Sequence">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SequenceT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SequenceType" name="Sequence" superClass="#//@nestedPackage.1/@ownedType.48"
+ elementType="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Sequence">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SequenceT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SequenceType" name="Sequence" superClass="#//@nestedPackage.1/@ownedType.49"
+ elementType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Sequence">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SequenceT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:Metaclass" name="Metaclass" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclType"
+ instanceType="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Metaclass">
+ <parameterSubstitution actual="pivot:Class http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..MetaclassT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.50"
+ elementType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:Metaclass" name="Metaclass" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.Class http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclType"
+ instanceType="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.TemplateExp">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Metaclass">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.TemplateExp"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..MetaclassT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.51"
+ elementType="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:AnyType http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.52"
+ elementType="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.EnforcementOperation">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.EnforcementOperation"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.38"
+ elementType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.53"
+ elementType="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Domain">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Domain"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.53"
+ elementType="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Domain">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Domain"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.36"
+ elementType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.36"
+ elementType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.54"
+ elementType="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.OCLExpression"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.55"
+ elementType="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.DomainPattern"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.56"
+ elementType="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.38"
+ elementType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Variable"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.57"
+ elementType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Element">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Element"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.57"
+ elementType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Element">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Element"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.58"
+ elementType="#//@nestedPackage.1/@ownedType.18">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="#//@nestedPackage.1/@ownedType.18" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.59"
+ elementType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.NamedElement">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.NamedElement"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.59"
+ elementType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.NamedElement">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.NamedElement"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.54"
+ elementType="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.56"
+ elementType="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.60"
+ elementType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.61"
+ elementType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.62"
+ elementType="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:AnyType http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.63"
+ elementType="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.EnforcementOperation">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.EnforcementOperation"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Domain">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Domain"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#T.qvtbase.Predicate"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#T.qvttemplate.PropertyTemplateItem"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#T.qvtrelation.RelationDomain"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Element">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Element"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="#//@nestedPackage.1/@ownedType.18">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="#//@nestedPackage.1/@ownedType.18" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.NamedElement">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.NamedElement"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.VariableExp"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.ocl.examples.pivot/model/Pivot.ecore.oclas#T.pivot.Property"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:AnyType http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.EnforcementOperation">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class ../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#T.qvtcorebase.EnforcementOperation"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ </nestedPackage>
+ <unit name="pivotocl" usedPackage="pivot:Library http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#P.ocl"/>
+ <unit name="qvtbase" usedPackage="pivot:Package ../../../../../../../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.ecore.oclas#P.qvtbase"/>
+ <unit name="qvttemplate" usedPackage="pivot:Package ../../../../../../../../org.eclipse.qvtd.pivot.qvttemplate/model/QVTtemplate.ecore.oclas#P.qvttemplate"/>
+ <unit name="qvtrelation" usedPackage="pivot:Package ../../../../../../../../org.eclipse.qvtd.pivot.qvtrelation/model/QVTrelation.ecore.oclas#P.qvtrelation"/>
+ <unit name="qvtcorebase" usedPackage="pivot:Package ../../../../../../../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore.oclas#P.qvtcorebase"/>
+ <unit name="qvtcore" usedPackage="pivot:Package ../../../../../../../../org.eclipse.qvtd.pivot.qvtcore/model/QVTcore.ecore.oclas#P.qvtcore"/>
+</qvtr:RelationModel>
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/RelationList.txt b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/RelationList.txt
new file mode 100644
index 000000000..9f9bacba5
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/RelationList.txt
@@ -0,0 +1,50 @@
+1: DomainBottomUnSharedVarsToDbVars
+2: DomainVarsSharedWithWhenToDgVars
+3: IROppositeDomainsToMappingForEnforcement
+4: InvokedRelationToMappingForChecking
+5: InvokedRelationToMappingForEnforcement
+6: RDomainPatternExprToMappingBottomVarAssignment
+7: RDomainPatternExprToMappingDomainAssignment
+8: RDomainPatternExprToMappingDomainTemplateVarAssignment
+9: RDomainPatternExprToMappingDomainVarAssignment
+10: RDomainPatternToMDBottomPattern
+11: RDomainPatternToMDBottomPatternComposite
+12: RDomainPatternToMDBottomPatternSimpleNonVarExpr
+13: RDomainPatternToMDBottomPatternSimpleSharedVarExpr
+14: RDomainPatternToMDBottomPatternSimpleUnSharedVarExpr
+15: RDomainToMBottomPredicateForEnforcement
+16: RDomainToMComposedMappingGuard
+17: RDomainToMDBottomForEnforcement
+18: RDomainToMDBottomForEnforcementOfIdentityProp
+19: RDomainToMDBottomForEnforcementOfIdentityPropObject
+20: RDomainToMDBottomForEnforcementOfNonIdentityPropObject
+21: RDomainToMDBottomForEnforcementOfNonIdentityPropPrimitive
+22: RDomainToMDomainForChecking
+23: RDomainVarToMDBottomAssignmnetForEnforcement
+24: RDomainVarsToTraceClassProps
+25: RExpToMExp
+26: RInvokerToMGuard
+27: RInvokerToMGuardPredicate
+28: ROppositeDomainVarsToTraceClassProps
+29: RPredicateSetToMBPredicateSet
+30: RRelDomainsToMOpCallArg
+31: RRelImplToMBottomEnforcementOperation
+32: RSimplePatternToMPattern
+33: RVarSetToDGVarSet
+34: RVarSetToMBVarSet
+35: RVarSetToMVarSet
+36: RVarToMRealizedVar
+37: RVarToMVar
+38: RWhenPatternToMGuardPattern
+39: RWhenRelCallArgToMGuardPredicate
+40: RWhenRelCallToMGuard
+41: RWherePatternToMPattern
+42: RelationDomainToTraceClassVar
+43: RelationToTraceClass
+44: RelationToTraceClassVar
+45: RelationalTransformationToMappingTransformation
+46: SubTemplateToTraceClassProps
+47: TROppositeDomainsToMappingForEnforcement
+48: TopLevelRelationToMappingForChecking
+49: TopLevelRelationToMappingForEnforcement
+50: UnsharedWhenVarsToMgVars \ No newline at end of file
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/TransformationTraceData.java b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/TransformationTraceData.java
new file mode 100644
index 000000000..a5d68c8d3
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/TransformationTraceData.java
@@ -0,0 +1,16 @@
+package org.eclipse.qvtd.build.qvtrtoqvtc.utilities;
+
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.qvtd.build.qvtrtoqvtc.Rule;
+import org.eclipse.qvtd.build.qvtrtoqvtc.impl.RuleBindings;
+
+public interface TransformationTraceData {
+
+ public void addRecord(@NonNull Rule rule);
+
+ public abstract void deleteRecord(@NonNull Rule rule);
+
+ public abstract @Nullable Rule getRecord(@NonNull RuleBindings relationsBindings);
+
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/TransformationTraceDataImpl.java b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/TransformationTraceDataImpl.java
new file mode 100644
index 000000000..53cdc94fc
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.qvtrtoqvtc/src/org/eclipse/qvtd/build/qvtrtoqvtc/utilities/TransformationTraceDataImpl.java
@@ -0,0 +1,36 @@
+package org.eclipse.qvtd.build.qvtrtoqvtc.utilities;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.qvtd.build.qvtrtoqvtc.Rule;
+import org.eclipse.qvtd.build.qvtrtoqvtc.impl.RuleBindings;
+
+/* Keeps track of variable values, output model and traces needed for
+ * the transformation */
+public class TransformationTraceDataImpl implements TransformationTraceData
+{
+// private final @NonNull Map<AbstractBindings, List<TraceRecord>> bindings2traceRecords = new HashMap<AbstractBindings, List<TraceRecord>>();
+ private final @NonNull Map<RuleBindings, Rule> traceRecords = new HashMap<RuleBindings, Rule>();
+
+ public TransformationTraceDataImpl() {}
+
+ @Override
+ public void deleteRecord(@NonNull Rule rule) {
+ traceRecords.remove(rule.getRuleBindings());
+ }
+
+ @Override
+ public void addRecord(@NonNull Rule rule) {
+ traceRecords.put(rule.getRuleBindings(), rule);
+ }
+
+ @Override
+ public Rule getRecord(@NonNull RuleBindings relationsBindings) {
+ return traceRecords.get(relationsBindings);
+ }
+
+
+
+}
diff --git a/plugins/org.eclipse.qvtd.build.schedule/.classpath b/plugins/org.eclipse.qvtd.build.schedule/.classpath
new file mode 100644
index 000000000..fe9808fd4
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="emf-gen"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.qvtd.build.schedule/.gitignore b/plugins/org.eclipse.qvtd.build.schedule/.gitignore
new file mode 100644
index 000000000..ae3c17260
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/plugins/org.eclipse.qvtd.build.schedule/.project b/plugins/org.eclipse.qvtd.build.schedule/.project
new file mode 100644
index 000000000..36879bb6d
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.qvtd.build.schedule</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.qvtd.build.schedule/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.qvtd.build.schedule/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..c537b6306
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/plugins/org.eclipse.qvtd.build.schedule/META-INF/MANIFEST.MF b/plugins/org.eclipse.qvtd.build.schedule/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..ae12e31cf
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.qvtd.build.schedule;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.eclipse.qvtd.build.qvtschedule,
+ org.eclipse.qvtd.build.qvtschedule.impl,
+ org.eclipse.qvtd.build.qvtschedule.util
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.qvtd.pivot.qvtbase;visibility:=reexport,
+ org.eclipse.qvtd.pivot.qvtcorebase;visibility:=reexport,
+ org.eclipse.qvtd.pivot.qvtimperative;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.qvtd.build.schedule/build.properties b/plugins/org.eclipse.qvtd.build.schedule/build.properties
new file mode 100644
index 000000000..d8d19b45b
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/build.properties
@@ -0,0 +1,11 @@
+#
+
+bin.includes = .,\
+ model/,\
+ META-INF/,\
+ plugin.xml,\
+ plugin.properties,\
+ emf-gen/
+jars.compile.order = .
+source.. = emf-gen/
+output.. = bin/
diff --git a/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/AbstractAction.java b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/AbstractAction.java
new file mode 100644
index 000000000..0c3a5e991
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/AbstractAction.java
@@ -0,0 +1,192 @@
+/**
+ */
+package org.eclipse.qvtd.build.qvtschedule;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Abstract Action</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * An AbstractAction represents an operation that consumes (arguments) or
+ * creates (results) datums.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.AbstractAction#getResults <em>Results</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.AbstractAction#getDistinctArguments <em>Distinct Arguments</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.AbstractAction#getOrder <em>Order</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.AbstractAction#getParent <em>Parent</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.AbstractAction#getChildren <em>Children</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.AbstractAction#getArguments <em>Arguments</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.AbstractAction#getSchedule <em>Schedule</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#getAbstractAction()
+ * @model abstract="true"
+ * @generated
+ */
+public interface AbstractAction extends EObject {
+ /**
+ * Returns the value of the '<em><b>Results</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.qvtd.build.qvtschedule.AbstractDatum}.
+ * It is bidirectional and its opposite is '{@link org.eclipse.qvtd.build.qvtschedule.AbstractDatum#getSources <em>Sources</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Results</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Results</em>' reference list.
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#getAbstractAction_Results()
+ * @see org.eclipse.qvtd.build.qvtschedule.AbstractDatum#getSources
+ * @model opposite="sources"
+ * @generated
+ */
+ EList<AbstractDatum> getResults();
+
+ /**
+ * Returns the value of the '<em><b>Distinct Arguments</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.qvtd.build.qvtschedule.DistinctData}.
+ * It is bidirectional and its opposite is '{@link org.eclipse.qvtd.build.qvtschedule.DistinctData#getTarget <em>Target</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Distinct Arguments</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Distinct Arguments</em>' containment reference list.
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#getAbstractAction_DistinctArguments()
+ * @see org.eclipse.qvtd.build.qvtschedule.DistinctData#getTarget
+ * @model opposite="target" containment="true"
+ * @generated
+ */
+ EList<DistinctData> getDistinctArguments();
+
+ /**
+ * Returns the value of the '<em><b>Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Order</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Order</em>' attribute.
+ * @see #setOrder(int)
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#getAbstractAction_Order()
+ * @model
+ * @generated
+ */
+ int getOrder();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.build.qvtschedule.AbstractAction#getOrder <em>Order</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Order</em>' attribute.
+ * @see #getOrder()
+ * @generated
+ */
+ void setOrder(int value);
+
+ /**
+ * Returns the value of the '<em><b>Parent</b></em>' reference.
+ * It is bidirectional and its opposite is '{@link org.eclipse.qvtd.build.qvtschedule.AbstractAction#getChildren <em>Children</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Parent</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Parent</em>' reference.
+ * @see #setParent(AbstractAction)
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#getAbstractAction_Parent()
+ * @see org.eclipse.qvtd.build.qvtschedule.AbstractAction#getChildren
+ * @model opposite="children"
+ * @generated
+ */
+ AbstractAction getParent();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.build.qvtschedule.AbstractAction#getParent <em>Parent</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Parent</em>' reference.
+ * @see #getParent()
+ * @generated
+ */
+ void setParent(AbstractAction value);
+
+ /**
+ * Returns the value of the '<em><b>Children</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.qvtd.build.qvtschedule.AbstractAction}.
+ * It is bidirectional and its opposite is '{@link org.eclipse.qvtd.build.qvtschedule.AbstractAction#getParent <em>Parent</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Children</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Children</em>' reference list.
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#getAbstractAction_Children()
+ * @see org.eclipse.qvtd.build.qvtschedule.AbstractAction#getParent
+ * @model opposite="parent"
+ * @generated
+ */
+ EList<AbstractAction> getChildren();
+
+ /**
+ * Returns the value of the '<em><b>Arguments</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.qvtd.build.qvtschedule.AbstractDatum}.
+ * It is bidirectional and its opposite is '{@link org.eclipse.qvtd.build.qvtschedule.AbstractDatum#getTargets <em>Targets</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Arguments</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Arguments</em>' reference list.
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#getAbstractAction_Arguments()
+ * @see org.eclipse.qvtd.build.qvtschedule.AbstractDatum#getTargets
+ * @model opposite="targets" derived="true"
+ * annotation="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot derivation='\n self.distinctArguments.primaryArguments->union(self.distinctArguments.secondaryArguments)->collect(datum)'"
+ * @generated
+ */
+ EList<AbstractDatum> getArguments();
+
+ /**
+ * Returns the value of the '<em><b>Schedule</b></em>' container reference.
+ * It is bidirectional and its opposite is '{@link org.eclipse.qvtd.build.qvtschedule.Schedule#getActions <em>Actions</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Schedule</em>' container reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Schedule</em>' container reference.
+ * @see #setSchedule(Schedule)
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#getAbstractAction_Schedule()
+ * @see org.eclipse.qvtd.build.qvtschedule.Schedule#getActions
+ * @model opposite="actions" transient="false"
+ * @generated
+ */
+ Schedule getSchedule();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.build.qvtschedule.AbstractAction#getSchedule <em>Schedule</em>}' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Schedule</em>' container reference.
+ * @see #getSchedule()
+ * @generated
+ */
+ void setSchedule(Schedule value);
+
+} // AbstractAction
diff --git a/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/AbstractDatum.java b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/AbstractDatum.java
new file mode 100644
index 000000000..5a360d104
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/AbstractDatum.java
@@ -0,0 +1,191 @@
+/**
+ */
+package org.eclipse.qvtd.build.qvtschedule;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.ocl.pivot.Type;
+
+import org.eclipse.qvtd.pivot.qvtcorebase.CoreDomain;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Abstract Datum</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * An AbstractDatum represents a the types consumed (target) or created (source)
+ * by an AbstractAction.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.AbstractDatum#getSuper <em>Super</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.AbstractDatum#getType <em>Type</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.AbstractDatum#getDomain <em>Domain</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.AbstractDatum#getSources <em>Sources</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.AbstractDatum#getTargets <em>Targets</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.AbstractDatum#getSchedule <em>Schedule</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.AbstractDatum#getDataParameter <em>Data Parameter</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#getAbstractDatum()
+ * @model abstract="true"
+ * @generated
+ */
+public interface AbstractDatum extends EObject {
+ /**
+ * Returns the value of the '<em><b>Super</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.qvtd.build.qvtschedule.AbstractDatum}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Super</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Super</em>' reference list.
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#getAbstractDatum_Super()
+ * @model
+ * @generated
+ */
+ EList<AbstractDatum> getSuper();
+
+ /**
+ * Returns the value of the '<em><b>Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Type</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Type</em>' reference.
+ * @see #setType(Type)
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#getAbstractDatum_Type()
+ * @model required="true" derived="true"
+ * @generated
+ */
+ Type getType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.build.qvtschedule.AbstractDatum#getType <em>Type</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Type</em>' reference.
+ * @see #getType()
+ * @generated
+ */
+ void setType(Type value);
+
+ /**
+ * Returns the value of the '<em><b>Domain</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Domain</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Domain</em>' reference.
+ * @see #setDomain(CoreDomain)
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#getAbstractDatum_Domain()
+ * @model
+ * @generated
+ */
+ CoreDomain getDomain();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.build.qvtschedule.AbstractDatum#getDomain <em>Domain</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Domain</em>' reference.
+ * @see #getDomain()
+ * @generated
+ */
+ void setDomain(CoreDomain value);
+
+ /**
+ * Returns the value of the '<em><b>Sources</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.qvtd.build.qvtschedule.AbstractAction}.
+ * It is bidirectional and its opposite is '{@link org.eclipse.qvtd.build.qvtschedule.AbstractAction#getResults <em>Results</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Sources</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Sources</em>' reference list.
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#getAbstractDatum_Sources()
+ * @see org.eclipse.qvtd.build.qvtschedule.AbstractAction#getResults
+ * @model opposite="results"
+ * @generated
+ */
+ EList<AbstractAction> getSources();
+
+ /**
+ * Returns the value of the '<em><b>Targets</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.qvtd.build.qvtschedule.AbstractAction}.
+ * It is bidirectional and its opposite is '{@link org.eclipse.qvtd.build.qvtschedule.AbstractAction#getArguments <em>Arguments</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Targets</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Targets</em>' reference list.
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#getAbstractDatum_Targets()
+ * @see org.eclipse.qvtd.build.qvtschedule.AbstractAction#getArguments
+ * @model opposite="arguments" derived="true"
+ * @generated
+ */
+ EList<AbstractAction> getTargets();
+
+ /**
+ * Returns the value of the '<em><b>Schedule</b></em>' container reference.
+ * It is bidirectional and its opposite is '{@link org.eclipse.qvtd.build.qvtschedule.Schedule#getDatums <em>Datums</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Schedule</em>' container reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Schedule</em>' container reference.
+ * @see #setSchedule(Schedule)
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#getAbstractDatum_Schedule()
+ * @see org.eclipse.qvtd.build.qvtschedule.Schedule#getDatums
+ * @model opposite="datums" transient="false"
+ * @generated
+ */
+ Schedule getSchedule();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.build.qvtschedule.AbstractDatum#getSchedule <em>Schedule</em>}' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Schedule</em>' container reference.
+ * @see #getSchedule()
+ * @generated
+ */
+ void setSchedule(Schedule value);
+
+ /**
+ * Returns the value of the '<em><b>Data Parameter</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.qvtd.build.qvtschedule.DataParameter}.
+ * It is bidirectional and its opposite is '{@link org.eclipse.qvtd.build.qvtschedule.DataParameter#getDatum <em>Datum</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Data Parameter</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Data Parameter</em>' reference list.
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#getAbstractDatum_DataParameter()
+ * @see org.eclipse.qvtd.build.qvtschedule.DataParameter#getDatum
+ * @model opposite="datum"
+ * @generated
+ */
+ EList<DataParameter> getDataParameter();
+
+} // AbstractDatum
diff --git a/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/ClassDatum.java b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/ClassDatum.java
new file mode 100644
index 000000000..e373435cf
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/ClassDatum.java
@@ -0,0 +1,21 @@
+/**
+ */
+package org.eclipse.qvtd.build.qvtschedule;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Class Datum</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * A ClassDatum is?? NO LONGER NEEDED?.
+ * <!-- end-model-doc -->
+ *
+ *
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#getClassDatum()
+ * @model
+ * @generated
+ */
+public interface ClassDatum extends AbstractDatum {
+} // ClassDatum
diff --git a/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/DataParameter.java b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/DataParameter.java
new file mode 100644
index 000000000..1911ece80
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/DataParameter.java
@@ -0,0 +1,170 @@
+/**
+ */
+package org.eclipse.qvtd.build.qvtschedule;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.ocl.pivot.Variable;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Data Parameter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * A DataParameter represents an input parameter to an AbstractAction
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.DataParameter#isIsLoop <em>Is Loop</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.DataParameter#getVariable <em>Variable</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.DataParameter#getPrimaryDistinctData <em>Primary Distinct Data</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.DataParameter#getSecondaryDistinctData <em>Secondary Distinct Data</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.DataParameter#getDatum <em>Datum</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#getDataParameter()
+ * @model
+ * @generated
+ */
+public interface DataParameter extends EObject {
+ /**
+ * Returns the value of the '<em><b>Is Loop</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Is Loop</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Is Loop</em>' attribute.
+ * @see #setIsLoop(boolean)
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#getDataParameter_IsLoop()
+ * @model
+ * @generated
+ */
+ boolean isIsLoop();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.build.qvtschedule.DataParameter#isIsLoop <em>Is Loop</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Is Loop</em>' attribute.
+ * @see #isIsLoop()
+ * @generated
+ */
+ void setIsLoop(boolean value);
+
+ /**
+ * Returns the value of the '<em><b>Variable</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Variable</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Variable</em>' reference.
+ * @see #setVariable(Variable)
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#getDataParameter_Variable()
+ * @model required="true"
+ * @generated
+ */
+ Variable getVariable();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.build.qvtschedule.DataParameter#getVariable <em>Variable</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Variable</em>' reference.
+ * @see #getVariable()
+ * @generated
+ */
+ void setVariable(Variable value);
+
+ /**
+ * Returns the value of the '<em><b>Primary Distinct Data</b></em>' container reference.
+ * It is bidirectional and its opposite is '{@link org.eclipse.qvtd.build.qvtschedule.DistinctData#getPrimaryArguments <em>Primary Arguments</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Primary Distinct Data</em>' container reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Primary Distinct Data</em>' container reference.
+ * @see #setPrimaryDistinctData(DistinctData)
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#getDataParameter_PrimaryDistinctData()
+ * @see org.eclipse.qvtd.build.qvtschedule.DistinctData#getPrimaryArguments
+ * @model opposite="primaryArguments" transient="false"
+ * @generated
+ */
+ DistinctData getPrimaryDistinctData();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.build.qvtschedule.DataParameter#getPrimaryDistinctData <em>Primary Distinct Data</em>}' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Primary Distinct Data</em>' container reference.
+ * @see #getPrimaryDistinctData()
+ * @generated
+ */
+ void setPrimaryDistinctData(DistinctData value);
+
+ /**
+ * Returns the value of the '<em><b>Secondary Distinct Data</b></em>' container reference.
+ * It is bidirectional and its opposite is '{@link org.eclipse.qvtd.build.qvtschedule.DistinctData#getSecondaryArguments <em>Secondary Arguments</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Secondary Distinct Data</em>' container reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Secondary Distinct Data</em>' container reference.
+ * @see #setSecondaryDistinctData(DistinctData)
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#getDataParameter_SecondaryDistinctData()
+ * @see org.eclipse.qvtd.build.qvtschedule.DistinctData#getSecondaryArguments
+ * @model opposite="secondaryArguments" transient="false"
+ * @generated
+ */
+ DistinctData getSecondaryDistinctData();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.build.qvtschedule.DataParameter#getSecondaryDistinctData <em>Secondary Distinct Data</em>}' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Secondary Distinct Data</em>' container reference.
+ * @see #getSecondaryDistinctData()
+ * @generated
+ */
+ void setSecondaryDistinctData(DistinctData value);
+
+ /**
+ * Returns the value of the '<em><b>Datum</b></em>' reference.
+ * It is bidirectional and its opposite is '{@link org.eclipse.qvtd.build.qvtschedule.AbstractDatum#getDataParameter <em>Data Parameter</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Datum</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Datum</em>' reference.
+ * @see #setDatum(AbstractDatum)
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#getDataParameter_Datum()
+ * @see org.eclipse.qvtd.build.qvtschedule.AbstractDatum#getDataParameter
+ * @model opposite="dataParameter" required="true"
+ * @generated
+ */
+ AbstractDatum getDatum();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.build.qvtschedule.DataParameter#getDatum <em>Datum</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Datum</em>' reference.
+ * @see #getDatum()
+ * @generated
+ */
+ void setDatum(AbstractDatum value);
+
+} // DataParameter
diff --git a/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/DistinctData.java b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/DistinctData.java
new file mode 100644
index 000000000..5f4ecd0ab
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/DistinctData.java
@@ -0,0 +1,97 @@
+/**
+ */
+package org.eclipse.qvtd.build.qvtschedule;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Distinct Data</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * A DistinctData groups DataParameters in order to represent derivation
+ * information. The secondaryArguments can be derived from the PrimaryArguments
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.DistinctData#getTarget <em>Target</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.DistinctData#getPrimaryArguments <em>Primary Arguments</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.DistinctData#getSecondaryArguments <em>Secondary Arguments</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#getDistinctData()
+ * @model
+ * @generated
+ */
+public interface DistinctData extends EObject {
+ /**
+ * Returns the value of the '<em><b>Target</b></em>' container reference.
+ * It is bidirectional and its opposite is '{@link org.eclipse.qvtd.build.qvtschedule.AbstractAction#getDistinctArguments <em>Distinct Arguments</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Target</em>' container reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Target</em>' container reference.
+ * @see #setTarget(AbstractAction)
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#getDistinctData_Target()
+ * @see org.eclipse.qvtd.build.qvtschedule.AbstractAction#getDistinctArguments
+ * @model opposite="distinctArguments" transient="false"
+ * @generated
+ */
+ AbstractAction getTarget();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.build.qvtschedule.DistinctData#getTarget <em>Target</em>}' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Target</em>' container reference.
+ * @see #getTarget()
+ * @generated
+ */
+ void setTarget(AbstractAction value);
+
+ /**
+ * Returns the value of the '<em><b>Primary Arguments</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.qvtd.build.qvtschedule.DataParameter}.
+ * It is bidirectional and its opposite is '{@link org.eclipse.qvtd.build.qvtschedule.DataParameter#getPrimaryDistinctData <em>Primary Distinct Data</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Primary Arguments</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Primary Arguments</em>' containment reference list.
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#getDistinctData_PrimaryArguments()
+ * @see org.eclipse.qvtd.build.qvtschedule.DataParameter#getPrimaryDistinctData
+ * @model opposite="primaryDistinctData" containment="true" required="true"
+ * @generated
+ */
+ EList<DataParameter> getPrimaryArguments();
+
+ /**
+ * Returns the value of the '<em><b>Secondary Arguments</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.qvtd.build.qvtschedule.DataParameter}.
+ * It is bidirectional and its opposite is '{@link org.eclipse.qvtd.build.qvtschedule.DataParameter#getSecondaryDistinctData <em>Secondary Distinct Data</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Secondary Arguments</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Secondary Arguments</em>' containment reference list.
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#getDistinctData_SecondaryArguments()
+ * @see org.eclipse.qvtd.build.qvtschedule.DataParameter#getSecondaryDistinctData
+ * @model opposite="secondaryDistinctData" containment="true"
+ * @generated
+ */
+ EList<DataParameter> getSecondaryArguments();
+
+} // DistinctData
diff --git a/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/InputAction.java b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/InputAction.java
new file mode 100644
index 000000000..07fedd9ce
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/InputAction.java
@@ -0,0 +1,17 @@
+/**
+ */
+package org.eclipse.qvtd.build.qvtschedule;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Input Action</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#getInputAction()
+ * @model
+ * @generated
+ */
+public interface InputAction extends AbstractAction {
+} // InputAction
diff --git a/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/MappingAction.java b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/MappingAction.java
new file mode 100644
index 000000000..d5620d84d
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/MappingAction.java
@@ -0,0 +1,54 @@
+/**
+ */
+package org.eclipse.qvtd.build.qvtschedule;
+
+import org.eclipse.qvtd.pivot.qvtimperative.Mapping;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Mapping Action</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * A MappingAction is an AbstractAction for a QVTi Mapping.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.MappingAction#getMapping <em>Mapping</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#getMappingAction()
+ * @model
+ * @generated
+ */
+public interface MappingAction extends AbstractAction {
+ /**
+ * Returns the value of the '<em><b>Mapping</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Mapping</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Mapping</em>' reference.
+ * @see #setMapping(Mapping)
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#getMappingAction_Mapping()
+ * @model required="true"
+ * @generated
+ */
+ Mapping getMapping();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.build.qvtschedule.MappingAction#getMapping <em>Mapping</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Mapping</em>' reference.
+ * @see #getMapping()
+ * @generated
+ */
+ void setMapping(Mapping value);
+
+} // MappingAction
diff --git a/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/OutputAction.java b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/OutputAction.java
new file mode 100644
index 000000000..357620dfc
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/OutputAction.java
@@ -0,0 +1,17 @@
+/**
+ */
+package org.eclipse.qvtd.build.qvtschedule;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Output Action</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#getOutputAction()
+ * @model
+ * @generated
+ */
+public interface OutputAction extends AbstractAction {
+} // OutputAction
diff --git a/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/Schedule.java b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/Schedule.java
new file mode 100644
index 000000000..cadf4bcf2
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/Schedule.java
@@ -0,0 +1,63 @@
+/**
+ */
+package org.eclipse.qvtd.build.qvtschedule;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Schedule</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.Schedule#getDatums <em>Datums</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.Schedule#getActions <em>Actions</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#getSchedule()
+ * @model
+ * @generated
+ */
+public interface Schedule extends EObject {
+ /**
+ * Returns the value of the '<em><b>Datums</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.qvtd.build.qvtschedule.AbstractDatum}.
+ * It is bidirectional and its opposite is '{@link org.eclipse.qvtd.build.qvtschedule.AbstractDatum#getSchedule <em>Schedule</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Datums</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Datums</em>' containment reference list.
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#getSchedule_Datums()
+ * @see org.eclipse.qvtd.build.qvtschedule.AbstractDatum#getSchedule
+ * @model opposite="schedule" containment="true"
+ * @generated
+ */
+ EList<AbstractDatum> getDatums();
+
+ /**
+ * Returns the value of the '<em><b>Actions</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.qvtd.build.qvtschedule.AbstractAction}.
+ * It is bidirectional and its opposite is '{@link org.eclipse.qvtd.build.qvtschedule.AbstractAction#getSchedule <em>Schedule</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Actions</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Actions</em>' containment reference list.
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#getSchedule_Actions()
+ * @see org.eclipse.qvtd.build.qvtschedule.AbstractAction#getSchedule
+ * @model opposite="schedule" containment="true"
+ * @generated
+ */
+ EList<AbstractAction> getActions();
+
+} // Schedule
diff --git a/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/AbstractActionImpl.java b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/AbstractActionImpl.java
new file mode 100644
index 000000000..2a6a94821
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/AbstractActionImpl.java
@@ -0,0 +1,514 @@
+/**
+ */
+package org.eclipse.qvtd.build.qvtschedule.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
+import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.qvtd.build.qvtschedule.AbstractAction;
+import org.eclipse.qvtd.build.qvtschedule.AbstractDatum;
+import org.eclipse.qvtd.build.qvtschedule.DistinctData;
+import org.eclipse.qvtd.build.qvtschedule.Schedule;
+import org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Abstract Action</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.impl.AbstractActionImpl#getResults <em>Results</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.impl.AbstractActionImpl#getDistinctArguments <em>Distinct Arguments</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.impl.AbstractActionImpl#getOrder <em>Order</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.impl.AbstractActionImpl#getParent <em>Parent</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.impl.AbstractActionImpl#getChildren <em>Children</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.impl.AbstractActionImpl#getArguments <em>Arguments</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.impl.AbstractActionImpl#getSchedule <em>Schedule</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class AbstractActionImpl extends MinimalEObjectImpl.Container implements AbstractAction {
+ /**
+ * The cached value of the '{@link #getResults() <em>Results</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getResults()
+ * @generated
+ * @ordered
+ */
+ protected EList<AbstractDatum> results;
+
+ /**
+ * The cached value of the '{@link #getDistinctArguments() <em>Distinct Arguments</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDistinctArguments()
+ * @generated
+ * @ordered
+ */
+ protected EList<DistinctData> distinctArguments;
+
+ /**
+ * The default value of the '{@link #getOrder() <em>Order</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOrder()
+ * @generated
+ * @ordered
+ */
+ protected static final int ORDER_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getOrder() <em>Order</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOrder()
+ * @generated
+ * @ordered
+ */
+ protected int order = ORDER_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getParent() <em>Parent</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getParent()
+ * @generated
+ * @ordered
+ */
+ protected AbstractAction parent;
+
+ /**
+ * The cached value of the '{@link #getChildren() <em>Children</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getChildren()
+ * @generated
+ * @ordered
+ */
+ protected EList<AbstractAction> children;
+
+ /**
+ * The cached setting delegate for the '{@link #getArguments() <em>Arguments</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getArguments()
+ * @generated
+ * @ordered
+ */
+ protected EStructuralFeature.Internal.SettingDelegate ARGUMENTS__ESETTING_DELEGATE = ((EStructuralFeature.Internal)qvtschedulePackage.Literals.ABSTRACT_ACTION__ARGUMENTS).getSettingDelegate();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AbstractActionImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return qvtschedulePackage.Literals.ABSTRACT_ACTION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<AbstractDatum> getResults() {
+ if (results == null) {
+ results = new EObjectWithInverseResolvingEList.ManyInverse<AbstractDatum>(AbstractDatum.class, this, qvtschedulePackage.ABSTRACT_ACTION__RESULTS, qvtschedulePackage.ABSTRACT_DATUM__SOURCES);
+ }
+ return results;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<DistinctData> getDistinctArguments() {
+ if (distinctArguments == null) {
+ distinctArguments = new EObjectContainmentWithInverseEList<DistinctData>(DistinctData.class, this, qvtschedulePackage.ABSTRACT_ACTION__DISTINCT_ARGUMENTS, qvtschedulePackage.DISTINCT_DATA__TARGET);
+ }
+ return distinctArguments;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getOrder() {
+ return order;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setOrder(int newOrder) {
+ int oldOrder = order;
+ order = newOrder;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, qvtschedulePackage.ABSTRACT_ACTION__ORDER, oldOrder, order));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AbstractAction getParent() {
+ if (parent != null && parent.eIsProxy()) {
+ InternalEObject oldParent = (InternalEObject)parent;
+ parent = (AbstractAction)eResolveProxy(oldParent);
+ if (parent != oldParent) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, qvtschedulePackage.ABSTRACT_ACTION__PARENT, oldParent, parent));
+ }
+ }
+ return parent;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AbstractAction basicGetParent() {
+ return parent;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetParent(AbstractAction newParent, NotificationChain msgs) {
+ AbstractAction oldParent = parent;
+ parent = newParent;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, qvtschedulePackage.ABSTRACT_ACTION__PARENT, oldParent, newParent);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setParent(AbstractAction newParent) {
+ if (newParent != parent) {
+ NotificationChain msgs = null;
+ if (parent != null)
+ msgs = ((InternalEObject)parent).eInverseRemove(this, qvtschedulePackage.ABSTRACT_ACTION__CHILDREN, AbstractAction.class, msgs);
+ if (newParent != null)
+ msgs = ((InternalEObject)newParent).eInverseAdd(this, qvtschedulePackage.ABSTRACT_ACTION__CHILDREN, AbstractAction.class, msgs);
+ msgs = basicSetParent(newParent, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, qvtschedulePackage.ABSTRACT_ACTION__PARENT, newParent, newParent));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<AbstractAction> getChildren() {
+ if (children == null) {
+ children = new EObjectWithInverseResolvingEList<AbstractAction>(AbstractAction.class, this, qvtschedulePackage.ABSTRACT_ACTION__CHILDREN, qvtschedulePackage.ABSTRACT_ACTION__PARENT);
+ }
+ return children;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ public EList<AbstractDatum> getArguments() {
+ return (EList<AbstractDatum>)ARGUMENTS__ESETTING_DELEGATE.dynamicGet(this, null, 0, true, false);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Schedule getSchedule() {
+ if (eContainerFeatureID() != qvtschedulePackage.ABSTRACT_ACTION__SCHEDULE) return null;
+ return (Schedule)eInternalContainer();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetSchedule(Schedule newSchedule, NotificationChain msgs) {
+ msgs = eBasicSetContainer((InternalEObject)newSchedule, qvtschedulePackage.ABSTRACT_ACTION__SCHEDULE, msgs);
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSchedule(Schedule newSchedule) {
+ if (newSchedule != eInternalContainer() || (eContainerFeatureID() != qvtschedulePackage.ABSTRACT_ACTION__SCHEDULE && newSchedule != null)) {
+ if (EcoreUtil.isAncestor(this, newSchedule))
+ throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
+ NotificationChain msgs = null;
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ if (newSchedule != null)
+ msgs = ((InternalEObject)newSchedule).eInverseAdd(this, qvtschedulePackage.SCHEDULE__ACTIONS, Schedule.class, msgs);
+ msgs = basicSetSchedule(newSchedule, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, qvtschedulePackage.ABSTRACT_ACTION__SCHEDULE, newSchedule, newSchedule));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case qvtschedulePackage.ABSTRACT_ACTION__RESULTS:
+ return ((InternalEList<InternalEObject>)(InternalEList<?>)getResults()).basicAdd(otherEnd, msgs);
+ case qvtschedulePackage.ABSTRACT_ACTION__DISTINCT_ARGUMENTS:
+ return ((InternalEList<InternalEObject>)(InternalEList<?>)getDistinctArguments()).basicAdd(otherEnd, msgs);
+ case qvtschedulePackage.ABSTRACT_ACTION__PARENT:
+ if (parent != null)
+ msgs = ((InternalEObject)parent).eInverseRemove(this, qvtschedulePackage.ABSTRACT_ACTION__CHILDREN, AbstractAction.class, msgs);
+ return basicSetParent((AbstractAction)otherEnd, msgs);
+ case qvtschedulePackage.ABSTRACT_ACTION__CHILDREN:
+ return ((InternalEList<InternalEObject>)(InternalEList<?>)getChildren()).basicAdd(otherEnd, msgs);
+ case qvtschedulePackage.ABSTRACT_ACTION__ARGUMENTS:
+ return ((InternalEList<InternalEObject>)(InternalEList<?>)getArguments()).basicAdd(otherEnd, msgs);
+ case qvtschedulePackage.ABSTRACT_ACTION__SCHEDULE:
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ return basicSetSchedule((Schedule)otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case qvtschedulePackage.ABSTRACT_ACTION__RESULTS:
+ return ((InternalEList<?>)getResults()).basicRemove(otherEnd, msgs);
+ case qvtschedulePackage.ABSTRACT_ACTION__DISTINCT_ARGUMENTS:
+ return ((InternalEList<?>)getDistinctArguments()).basicRemove(otherEnd, msgs);
+ case qvtschedulePackage.ABSTRACT_ACTION__PARENT:
+ return basicSetParent(null, msgs);
+ case qvtschedulePackage.ABSTRACT_ACTION__CHILDREN:
+ return ((InternalEList<?>)getChildren()).basicRemove(otherEnd, msgs);
+ case qvtschedulePackage.ABSTRACT_ACTION__ARGUMENTS:
+ return ((InternalEList<?>)getArguments()).basicRemove(otherEnd, msgs);
+ case qvtschedulePackage.ABSTRACT_ACTION__SCHEDULE:
+ return basicSetSchedule(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+ switch (eContainerFeatureID()) {
+ case qvtschedulePackage.ABSTRACT_ACTION__SCHEDULE:
+ return eInternalContainer().eInverseRemove(this, qvtschedulePackage.SCHEDULE__ACTIONS, Schedule.class, msgs);
+ }
+ return super.eBasicRemoveFromContainerFeature(msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case qvtschedulePackage.ABSTRACT_ACTION__RESULTS:
+ return getResults();
+ case qvtschedulePackage.ABSTRACT_ACTION__DISTINCT_ARGUMENTS:
+ return getDistinctArguments();
+ case qvtschedulePackage.ABSTRACT_ACTION__ORDER:
+ return getOrder();
+ case qvtschedulePackage.ABSTRACT_ACTION__PARENT:
+ if (resolve) return getParent();
+ return basicGetParent();
+ case qvtschedulePackage.ABSTRACT_ACTION__CHILDREN:
+ return getChildren();
+ case qvtschedulePackage.ABSTRACT_ACTION__ARGUMENTS:
+ return getArguments();
+ case qvtschedulePackage.ABSTRACT_ACTION__SCHEDULE:
+ return getSchedule();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case qvtschedulePackage.ABSTRACT_ACTION__RESULTS:
+ getResults().clear();
+ getResults().addAll((Collection<? extends AbstractDatum>)newValue);
+ return;
+ case qvtschedulePackage.ABSTRACT_ACTION__DISTINCT_ARGUMENTS:
+ getDistinctArguments().clear();
+ getDistinctArguments().addAll((Collection<? extends DistinctData>)newValue);
+ return;
+ case qvtschedulePackage.ABSTRACT_ACTION__ORDER:
+ setOrder((Integer)newValue);
+ return;
+ case qvtschedulePackage.ABSTRACT_ACTION__PARENT:
+ setParent((AbstractAction)newValue);
+ return;
+ case qvtschedulePackage.ABSTRACT_ACTION__CHILDREN:
+ getChildren().clear();
+ getChildren().addAll((Collection<? extends AbstractAction>)newValue);
+ return;
+ case qvtschedulePackage.ABSTRACT_ACTION__ARGUMENTS:
+ getArguments().clear();
+ getArguments().addAll((Collection<? extends AbstractDatum>)newValue);
+ return;
+ case qvtschedulePackage.ABSTRACT_ACTION__SCHEDULE:
+ setSchedule((Schedule)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case qvtschedulePackage.ABSTRACT_ACTION__RESULTS:
+ getResults().clear();
+ return;
+ case qvtschedulePackage.ABSTRACT_ACTION__DISTINCT_ARGUMENTS:
+ getDistinctArguments().clear();
+ return;
+ case qvtschedulePackage.ABSTRACT_ACTION__ORDER:
+ setOrder(ORDER_EDEFAULT);
+ return;
+ case qvtschedulePackage.ABSTRACT_ACTION__PARENT:
+ setParent((AbstractAction)null);
+ return;
+ case qvtschedulePackage.ABSTRACT_ACTION__CHILDREN:
+ getChildren().clear();
+ return;
+ case qvtschedulePackage.ABSTRACT_ACTION__ARGUMENTS:
+ getArguments().clear();
+ return;
+ case qvtschedulePackage.ABSTRACT_ACTION__SCHEDULE:
+ setSchedule((Schedule)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case qvtschedulePackage.ABSTRACT_ACTION__RESULTS:
+ return results != null && !results.isEmpty();
+ case qvtschedulePackage.ABSTRACT_ACTION__DISTINCT_ARGUMENTS:
+ return distinctArguments != null && !distinctArguments.isEmpty();
+ case qvtschedulePackage.ABSTRACT_ACTION__ORDER:
+ return order != ORDER_EDEFAULT;
+ case qvtschedulePackage.ABSTRACT_ACTION__PARENT:
+ return parent != null;
+ case qvtschedulePackage.ABSTRACT_ACTION__CHILDREN:
+ return children != null && !children.isEmpty();
+ case qvtschedulePackage.ABSTRACT_ACTION__ARGUMENTS:
+ return ARGUMENTS__ESETTING_DELEGATE.dynamicIsSet(this, null, 0);
+ case qvtschedulePackage.ABSTRACT_ACTION__SCHEDULE:
+ return getSchedule() != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (order: ");
+ result.append(order);
+ result.append(')');
+ return result.toString();
+ }
+
+} //AbstractActionImpl
diff --git a/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/AbstractDatumImpl.java b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/AbstractDatumImpl.java
new file mode 100644
index 000000000..5a6f1b581
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/AbstractDatumImpl.java
@@ -0,0 +1,480 @@
+/**
+ */
+package org.eclipse.qvtd.build.qvtschedule.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.ocl.pivot.Type;
+
+import org.eclipse.qvtd.build.qvtschedule.AbstractAction;
+import org.eclipse.qvtd.build.qvtschedule.AbstractDatum;
+import org.eclipse.qvtd.build.qvtschedule.DataParameter;
+import org.eclipse.qvtd.build.qvtschedule.Schedule;
+import org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage;
+
+import org.eclipse.qvtd.pivot.qvtcorebase.CoreDomain;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Abstract Datum</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.impl.AbstractDatumImpl#getSuper <em>Super</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.impl.AbstractDatumImpl#getType <em>Type</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.impl.AbstractDatumImpl#getDomain <em>Domain</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.impl.AbstractDatumImpl#getSources <em>Sources</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.impl.AbstractDatumImpl#getTargets <em>Targets</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.impl.AbstractDatumImpl#getSchedule <em>Schedule</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.impl.AbstractDatumImpl#getDataParameter <em>Data Parameter</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class AbstractDatumImpl extends MinimalEObjectImpl.Container implements AbstractDatum {
+ /**
+ * The cached value of the '{@link #getSuper() <em>Super</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSuper()
+ * @generated
+ * @ordered
+ */
+ protected EList<AbstractDatum> super_;
+
+ /**
+ * The cached value of the '{@link #getType() <em>Type</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected Type type;
+
+ /**
+ * The cached value of the '{@link #getDomain() <em>Domain</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDomain()
+ * @generated
+ * @ordered
+ */
+ protected CoreDomain domain;
+
+ /**
+ * The cached value of the '{@link #getSources() <em>Sources</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSources()
+ * @generated
+ * @ordered
+ */
+ protected EList<AbstractAction> sources;
+
+ /**
+ * The cached value of the '{@link #getTargets() <em>Targets</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTargets()
+ * @generated
+ * @ordered
+ */
+ protected EList<AbstractAction> targets;
+
+ /**
+ * The cached value of the '{@link #getDataParameter() <em>Data Parameter</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDataParameter()
+ * @generated
+ * @ordered
+ */
+ protected EList<DataParameter> dataParameter;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AbstractDatumImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return qvtschedulePackage.Literals.ABSTRACT_DATUM;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<AbstractDatum> getSuper() {
+ if (super_ == null) {
+ super_ = new EObjectResolvingEList<AbstractDatum>(AbstractDatum.class, this, qvtschedulePackage.ABSTRACT_DATUM__SUPER);
+ }
+ return super_;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type getType() {
+ if (type != null && ((EObject)type).eIsProxy()) {
+ InternalEObject oldType = (InternalEObject)type;
+ type = (Type)eResolveProxy(oldType);
+ if (type != oldType) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, qvtschedulePackage.ABSTRACT_DATUM__TYPE, oldType, type));
+ }
+ }
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Type basicGetType() {
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setType(Type newType) {
+ Type oldType = type;
+ type = newType;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, qvtschedulePackage.ABSTRACT_DATUM__TYPE, oldType, type));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CoreDomain getDomain() {
+ if (domain != null && domain.eIsProxy()) {
+ InternalEObject oldDomain = (InternalEObject)domain;
+ domain = (CoreDomain)eResolveProxy(oldDomain);
+ if (domain != oldDomain) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, qvtschedulePackage.ABSTRACT_DATUM__DOMAIN, oldDomain, domain));
+ }
+ }
+ return domain;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CoreDomain basicGetDomain() {
+ return domain;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDomain(CoreDomain newDomain) {
+ CoreDomain oldDomain = domain;
+ domain = newDomain;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, qvtschedulePackage.ABSTRACT_DATUM__DOMAIN, oldDomain, domain));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<AbstractAction> getSources() {
+ if (sources == null) {
+ sources = new EObjectWithInverseResolvingEList.ManyInverse<AbstractAction>(AbstractAction.class, this, qvtschedulePackage.ABSTRACT_DATUM__SOURCES, qvtschedulePackage.ABSTRACT_ACTION__RESULTS);
+ }
+ return sources;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<AbstractAction> getTargets() {
+ if (targets == null) {
+ targets = new EObjectWithInverseResolvingEList.ManyInverse<AbstractAction>(AbstractAction.class, this, qvtschedulePackage.ABSTRACT_DATUM__TARGETS, qvtschedulePackage.ABSTRACT_ACTION__ARGUMENTS);
+ }
+ return targets;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Schedule getSchedule() {
+ if (eContainerFeatureID() != qvtschedulePackage.ABSTRACT_DATUM__SCHEDULE) return null;
+ return (Schedule)eInternalContainer();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetSchedule(Schedule newSchedule, NotificationChain msgs) {
+ msgs = eBasicSetContainer((InternalEObject)newSchedule, qvtschedulePackage.ABSTRACT_DATUM__SCHEDULE, msgs);
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSchedule(Schedule newSchedule) {
+ if (newSchedule != eInternalContainer() || (eContainerFeatureID() != qvtschedulePackage.ABSTRACT_DATUM__SCHEDULE && newSchedule != null)) {
+ if (EcoreUtil.isAncestor(this, newSchedule))
+ throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
+ NotificationChain msgs = null;
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ if (newSchedule != null)
+ msgs = ((InternalEObject)newSchedule).eInverseAdd(this, qvtschedulePackage.SCHEDULE__DATUMS, Schedule.class, msgs);
+ msgs = basicSetSchedule(newSchedule, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, qvtschedulePackage.ABSTRACT_DATUM__SCHEDULE, newSchedule, newSchedule));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<DataParameter> getDataParameter() {
+ if (dataParameter == null) {
+ dataParameter = new EObjectWithInverseResolvingEList<DataParameter>(DataParameter.class, this, qvtschedulePackage.ABSTRACT_DATUM__DATA_PARAMETER, qvtschedulePackage.DATA_PARAMETER__DATUM);
+ }
+ return dataParameter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case qvtschedulePackage.ABSTRACT_DATUM__SOURCES:
+ return ((InternalEList<InternalEObject>)(InternalEList<?>)getSources()).basicAdd(otherEnd, msgs);
+ case qvtschedulePackage.ABSTRACT_DATUM__TARGETS:
+ return ((InternalEList<InternalEObject>)(InternalEList<?>)getTargets()).basicAdd(otherEnd, msgs);
+ case qvtschedulePackage.ABSTRACT_DATUM__SCHEDULE:
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ return basicSetSchedule((Schedule)otherEnd, msgs);
+ case qvtschedulePackage.ABSTRACT_DATUM__DATA_PARAMETER:
+ return ((InternalEList<InternalEObject>)(InternalEList<?>)getDataParameter()).basicAdd(otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case qvtschedulePackage.ABSTRACT_DATUM__SOURCES:
+ return ((InternalEList<?>)getSources()).basicRemove(otherEnd, msgs);
+ case qvtschedulePackage.ABSTRACT_DATUM__TARGETS:
+ return ((InternalEList<?>)getTargets()).basicRemove(otherEnd, msgs);
+ case qvtschedulePackage.ABSTRACT_DATUM__SCHEDULE:
+ return basicSetSchedule(null, msgs);
+ case qvtschedulePackage.ABSTRACT_DATUM__DATA_PARAMETER:
+ return ((InternalEList<?>)getDataParameter()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+ switch (eContainerFeatureID()) {
+ case qvtschedulePackage.ABSTRACT_DATUM__SCHEDULE:
+ return eInternalContainer().eInverseRemove(this, qvtschedulePackage.SCHEDULE__DATUMS, Schedule.class, msgs);
+ }
+ return super.eBasicRemoveFromContainerFeature(msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case qvtschedulePackage.ABSTRACT_DATUM__SUPER:
+ return getSuper();
+ case qvtschedulePackage.ABSTRACT_DATUM__TYPE:
+ if (resolve) return getType();
+ return basicGetType();
+ case qvtschedulePackage.ABSTRACT_DATUM__DOMAIN:
+ if (resolve) return getDomain();
+ return basicGetDomain();
+ case qvtschedulePackage.ABSTRACT_DATUM__SOURCES:
+ return getSources();
+ case qvtschedulePackage.ABSTRACT_DATUM__TARGETS:
+ return getTargets();
+ case qvtschedulePackage.ABSTRACT_DATUM__SCHEDULE:
+ return getSchedule();
+ case qvtschedulePackage.ABSTRACT_DATUM__DATA_PARAMETER:
+ return getDataParameter();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case qvtschedulePackage.ABSTRACT_DATUM__SUPER:
+ getSuper().clear();
+ getSuper().addAll((Collection<? extends AbstractDatum>)newValue);
+ return;
+ case qvtschedulePackage.ABSTRACT_DATUM__TYPE:
+ setType((Type)newValue);
+ return;
+ case qvtschedulePackage.ABSTRACT_DATUM__DOMAIN:
+ setDomain((CoreDomain)newValue);
+ return;
+ case qvtschedulePackage.ABSTRACT_DATUM__SOURCES:
+ getSources().clear();
+ getSources().addAll((Collection<? extends AbstractAction>)newValue);
+ return;
+ case qvtschedulePackage.ABSTRACT_DATUM__TARGETS:
+ getTargets().clear();
+ getTargets().addAll((Collection<? extends AbstractAction>)newValue);
+ return;
+ case qvtschedulePackage.ABSTRACT_DATUM__SCHEDULE:
+ setSchedule((Schedule)newValue);
+ return;
+ case qvtschedulePackage.ABSTRACT_DATUM__DATA_PARAMETER:
+ getDataParameter().clear();
+ getDataParameter().addAll((Collection<? extends DataParameter>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case qvtschedulePackage.ABSTRACT_DATUM__SUPER:
+ getSuper().clear();
+ return;
+ case qvtschedulePackage.ABSTRACT_DATUM__TYPE:
+ setType((Type)null);
+ return;
+ case qvtschedulePackage.ABSTRACT_DATUM__DOMAIN:
+ setDomain((CoreDomain)null);
+ return;
+ case qvtschedulePackage.ABSTRACT_DATUM__SOURCES:
+ getSources().clear();
+ return;
+ case qvtschedulePackage.ABSTRACT_DATUM__TARGETS:
+ getTargets().clear();
+ return;
+ case qvtschedulePackage.ABSTRACT_DATUM__SCHEDULE:
+ setSchedule((Schedule)null);
+ return;
+ case qvtschedulePackage.ABSTRACT_DATUM__DATA_PARAMETER:
+ getDataParameter().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case qvtschedulePackage.ABSTRACT_DATUM__SUPER:
+ return super_ != null && !super_.isEmpty();
+ case qvtschedulePackage.ABSTRACT_DATUM__TYPE:
+ return type != null;
+ case qvtschedulePackage.ABSTRACT_DATUM__DOMAIN:
+ return domain != null;
+ case qvtschedulePackage.ABSTRACT_DATUM__SOURCES:
+ return sources != null && !sources.isEmpty();
+ case qvtschedulePackage.ABSTRACT_DATUM__TARGETS:
+ return targets != null && !targets.isEmpty();
+ case qvtschedulePackage.ABSTRACT_DATUM__SCHEDULE:
+ return getSchedule() != null;
+ case qvtschedulePackage.ABSTRACT_DATUM__DATA_PARAMETER:
+ return dataParameter != null && !dataParameter.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //AbstractDatumImpl
diff --git a/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/ClassDatumImpl.java b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/ClassDatumImpl.java
new file mode 100644
index 000000000..0fa77be07
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/ClassDatumImpl.java
@@ -0,0 +1,39 @@
+/**
+ */
+package org.eclipse.qvtd.build.qvtschedule.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.qvtd.build.qvtschedule.ClassDatum;
+import org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Class Datum</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class ClassDatumImpl extends AbstractDatumImpl implements ClassDatum {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ClassDatumImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return qvtschedulePackage.Literals.CLASS_DATUM;
+ }
+
+} //ClassDatumImpl
diff --git a/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/DataParameterImpl.java b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/DataParameterImpl.java
new file mode 100644
index 000000000..dad61dd41
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/DataParameterImpl.java
@@ -0,0 +1,476 @@
+/**
+ */
+package org.eclipse.qvtd.build.qvtschedule.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import org.eclipse.ocl.pivot.Variable;
+
+import org.eclipse.qvtd.build.qvtschedule.AbstractDatum;
+import org.eclipse.qvtd.build.qvtschedule.DataParameter;
+import org.eclipse.qvtd.build.qvtschedule.DistinctData;
+import org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Data Parameter</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.impl.DataParameterImpl#isIsLoop <em>Is Loop</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.impl.DataParameterImpl#getVariable <em>Variable</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.impl.DataParameterImpl#getPrimaryDistinctData <em>Primary Distinct Data</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.impl.DataParameterImpl#getSecondaryDistinctData <em>Secondary Distinct Data</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.impl.DataParameterImpl#getDatum <em>Datum</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DataParameterImpl extends MinimalEObjectImpl.Container implements DataParameter {
+ /**
+ * The default value of the '{@link #isIsLoop() <em>Is Loop</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isIsLoop()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean IS_LOOP_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isIsLoop() <em>Is Loop</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isIsLoop()
+ * @generated
+ * @ordered
+ */
+ protected boolean isLoop = IS_LOOP_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getVariable() <em>Variable</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getVariable()
+ * @generated
+ * @ordered
+ */
+ protected Variable variable;
+
+ /**
+ * The cached value of the '{@link #getDatum() <em>Datum</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDatum()
+ * @generated
+ * @ordered
+ */
+ protected AbstractDatum datum;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DataParameterImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return qvtschedulePackage.Literals.DATA_PARAMETER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isIsLoop() {
+ return isLoop;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setIsLoop(boolean newIsLoop) {
+ boolean oldIsLoop = isLoop;
+ isLoop = newIsLoop;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, qvtschedulePackage.DATA_PARAMETER__IS_LOOP, oldIsLoop, isLoop));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Variable getVariable() {
+ if (variable != null && ((EObject)variable).eIsProxy()) {
+ InternalEObject oldVariable = (InternalEObject)variable;
+ variable = (Variable)eResolveProxy(oldVariable);
+ if (variable != oldVariable) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, qvtschedulePackage.DATA_PARAMETER__VARIABLE, oldVariable, variable));
+ }
+ }
+ return variable;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Variable basicGetVariable() {
+ return variable;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setVariable(Variable newVariable) {
+ Variable oldVariable = variable;
+ variable = newVariable;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, qvtschedulePackage.DATA_PARAMETER__VARIABLE, oldVariable, variable));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DistinctData getPrimaryDistinctData() {
+ if (eContainerFeatureID() != qvtschedulePackage.DATA_PARAMETER__PRIMARY_DISTINCT_DATA) return null;
+ return (DistinctData)eInternalContainer();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetPrimaryDistinctData(DistinctData newPrimaryDistinctData, NotificationChain msgs) {
+ msgs = eBasicSetContainer((InternalEObject)newPrimaryDistinctData, qvtschedulePackage.DATA_PARAMETER__PRIMARY_DISTINCT_DATA, msgs);
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPrimaryDistinctData(DistinctData newPrimaryDistinctData) {
+ if (newPrimaryDistinctData != eInternalContainer() || (eContainerFeatureID() != qvtschedulePackage.DATA_PARAMETER__PRIMARY_DISTINCT_DATA && newPrimaryDistinctData != null)) {
+ if (EcoreUtil.isAncestor(this, newPrimaryDistinctData))
+ throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
+ NotificationChain msgs = null;
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ if (newPrimaryDistinctData != null)
+ msgs = ((InternalEObject)newPrimaryDistinctData).eInverseAdd(this, qvtschedulePackage.DISTINCT_DATA__PRIMARY_ARGUMENTS, DistinctData.class, msgs);
+ msgs = basicSetPrimaryDistinctData(newPrimaryDistinctData, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, qvtschedulePackage.DATA_PARAMETER__PRIMARY_DISTINCT_DATA, newPrimaryDistinctData, newPrimaryDistinctData));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DistinctData getSecondaryDistinctData() {
+ if (eContainerFeatureID() != qvtschedulePackage.DATA_PARAMETER__SECONDARY_DISTINCT_DATA) return null;
+ return (DistinctData)eInternalContainer();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetSecondaryDistinctData(DistinctData newSecondaryDistinctData, NotificationChain msgs) {
+ msgs = eBasicSetContainer((InternalEObject)newSecondaryDistinctData, qvtschedulePackage.DATA_PARAMETER__SECONDARY_DISTINCT_DATA, msgs);
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSecondaryDistinctData(DistinctData newSecondaryDistinctData) {
+ if (newSecondaryDistinctData != eInternalContainer() || (eContainerFeatureID() != qvtschedulePackage.DATA_PARAMETER__SECONDARY_DISTINCT_DATA && newSecondaryDistinctData != null)) {
+ if (EcoreUtil.isAncestor(this, newSecondaryDistinctData))
+ throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
+ NotificationChain msgs = null;
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ if (newSecondaryDistinctData != null)
+ msgs = ((InternalEObject)newSecondaryDistinctData).eInverseAdd(this, qvtschedulePackage.DISTINCT_DATA__SECONDARY_ARGUMENTS, DistinctData.class, msgs);
+ msgs = basicSetSecondaryDistinctData(newSecondaryDistinctData, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, qvtschedulePackage.DATA_PARAMETER__SECONDARY_DISTINCT_DATA, newSecondaryDistinctData, newSecondaryDistinctData));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AbstractDatum getDatum() {
+ if (datum != null && datum.eIsProxy()) {
+ InternalEObject oldDatum = (InternalEObject)datum;
+ datum = (AbstractDatum)eResolveProxy(oldDatum);
+ if (datum != oldDatum) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, qvtschedulePackage.DATA_PARAMETER__DATUM, oldDatum, datum));
+ }
+ }
+ return datum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AbstractDatum basicGetDatum() {
+ return datum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetDatum(AbstractDatum newDatum, NotificationChain msgs) {
+ AbstractDatum oldDatum = datum;
+ datum = newDatum;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, qvtschedulePackage.DATA_PARAMETER__DATUM, oldDatum, newDatum);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDatum(AbstractDatum newDatum) {
+ if (newDatum != datum) {
+ NotificationChain msgs = null;
+ if (datum != null)
+ msgs = ((InternalEObject)datum).eInverseRemove(this, qvtschedulePackage.ABSTRACT_DATUM__DATA_PARAMETER, AbstractDatum.class, msgs);
+ if (newDatum != null)
+ msgs = ((InternalEObject)newDatum).eInverseAdd(this, qvtschedulePackage.ABSTRACT_DATUM__DATA_PARAMETER, AbstractDatum.class, msgs);
+ msgs = basicSetDatum(newDatum, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, qvtschedulePackage.DATA_PARAMETER__DATUM, newDatum, newDatum));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case qvtschedulePackage.DATA_PARAMETER__PRIMARY_DISTINCT_DATA:
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ return basicSetPrimaryDistinctData((DistinctData)otherEnd, msgs);
+ case qvtschedulePackage.DATA_PARAMETER__SECONDARY_DISTINCT_DATA:
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ return basicSetSecondaryDistinctData((DistinctData)otherEnd, msgs);
+ case qvtschedulePackage.DATA_PARAMETER__DATUM:
+ if (datum != null)
+ msgs = ((InternalEObject)datum).eInverseRemove(this, qvtschedulePackage.ABSTRACT_DATUM__DATA_PARAMETER, AbstractDatum.class, msgs);
+ return basicSetDatum((AbstractDatum)otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case qvtschedulePackage.DATA_PARAMETER__PRIMARY_DISTINCT_DATA:
+ return basicSetPrimaryDistinctData(null, msgs);
+ case qvtschedulePackage.DATA_PARAMETER__SECONDARY_DISTINCT_DATA:
+ return basicSetSecondaryDistinctData(null, msgs);
+ case qvtschedulePackage.DATA_PARAMETER__DATUM:
+ return basicSetDatum(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+ switch (eContainerFeatureID()) {
+ case qvtschedulePackage.DATA_PARAMETER__PRIMARY_DISTINCT_DATA:
+ return eInternalContainer().eInverseRemove(this, qvtschedulePackage.DISTINCT_DATA__PRIMARY_ARGUMENTS, DistinctData.class, msgs);
+ case qvtschedulePackage.DATA_PARAMETER__SECONDARY_DISTINCT_DATA:
+ return eInternalContainer().eInverseRemove(this, qvtschedulePackage.DISTINCT_DATA__SECONDARY_ARGUMENTS, DistinctData.class, msgs);
+ }
+ return super.eBasicRemoveFromContainerFeature(msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case qvtschedulePackage.DATA_PARAMETER__IS_LOOP:
+ return isIsLoop();
+ case qvtschedulePackage.DATA_PARAMETER__VARIABLE:
+ if (resolve) return getVariable();
+ return basicGetVariable();
+ case qvtschedulePackage.DATA_PARAMETER__PRIMARY_DISTINCT_DATA:
+ return getPrimaryDistinctData();
+ case qvtschedulePackage.DATA_PARAMETER__SECONDARY_DISTINCT_DATA:
+ return getSecondaryDistinctData();
+ case qvtschedulePackage.DATA_PARAMETER__DATUM:
+ if (resolve) return getDatum();
+ return basicGetDatum();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case qvtschedulePackage.DATA_PARAMETER__IS_LOOP:
+ setIsLoop((Boolean)newValue);
+ return;
+ case qvtschedulePackage.DATA_PARAMETER__VARIABLE:
+ setVariable((Variable)newValue);
+ return;
+ case qvtschedulePackage.DATA_PARAMETER__PRIMARY_DISTINCT_DATA:
+ setPrimaryDistinctData((DistinctData)newValue);
+ return;
+ case qvtschedulePackage.DATA_PARAMETER__SECONDARY_DISTINCT_DATA:
+ setSecondaryDistinctData((DistinctData)newValue);
+ return;
+ case qvtschedulePackage.DATA_PARAMETER__DATUM:
+ setDatum((AbstractDatum)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case qvtschedulePackage.DATA_PARAMETER__IS_LOOP:
+ setIsLoop(IS_LOOP_EDEFAULT);
+ return;
+ case qvtschedulePackage.DATA_PARAMETER__VARIABLE:
+ setVariable((Variable)null);
+ return;
+ case qvtschedulePackage.DATA_PARAMETER__PRIMARY_DISTINCT_DATA:
+ setPrimaryDistinctData((DistinctData)null);
+ return;
+ case qvtschedulePackage.DATA_PARAMETER__SECONDARY_DISTINCT_DATA:
+ setSecondaryDistinctData((DistinctData)null);
+ return;
+ case qvtschedulePackage.DATA_PARAMETER__DATUM:
+ setDatum((AbstractDatum)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case qvtschedulePackage.DATA_PARAMETER__IS_LOOP:
+ return isLoop != IS_LOOP_EDEFAULT;
+ case qvtschedulePackage.DATA_PARAMETER__VARIABLE:
+ return variable != null;
+ case qvtschedulePackage.DATA_PARAMETER__PRIMARY_DISTINCT_DATA:
+ return getPrimaryDistinctData() != null;
+ case qvtschedulePackage.DATA_PARAMETER__SECONDARY_DISTINCT_DATA:
+ return getSecondaryDistinctData() != null;
+ case qvtschedulePackage.DATA_PARAMETER__DATUM:
+ return datum != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (isLoop: ");
+ result.append(isLoop);
+ result.append(')');
+ return result.toString();
+ }
+
+} //DataParameterImpl
diff --git a/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/DistinctDataImpl.java b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/DistinctDataImpl.java
new file mode 100644
index 000000000..78c467199
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/DistinctDataImpl.java
@@ -0,0 +1,281 @@
+/**
+ */
+package org.eclipse.qvtd.build.qvtschedule.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.qvtd.build.qvtschedule.AbstractAction;
+import org.eclipse.qvtd.build.qvtschedule.DataParameter;
+import org.eclipse.qvtd.build.qvtschedule.DistinctData;
+import org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Distinct Data</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.impl.DistinctDataImpl#getTarget <em>Target</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.impl.DistinctDataImpl#getPrimaryArguments <em>Primary Arguments</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.impl.DistinctDataImpl#getSecondaryArguments <em>Secondary Arguments</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DistinctDataImpl extends MinimalEObjectImpl.Container implements DistinctData {
+ /**
+ * The cached value of the '{@link #getPrimaryArguments() <em>Primary Arguments</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPrimaryArguments()
+ * @generated
+ * @ordered
+ */
+ protected EList<DataParameter> primaryArguments;
+
+ /**
+ * The cached value of the '{@link #getSecondaryArguments() <em>Secondary Arguments</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSecondaryArguments()
+ * @generated
+ * @ordered
+ */
+ protected EList<DataParameter> secondaryArguments;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DistinctDataImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return qvtschedulePackage.Literals.DISTINCT_DATA;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AbstractAction getTarget() {
+ if (eContainerFeatureID() != qvtschedulePackage.DISTINCT_DATA__TARGET) return null;
+ return (AbstractAction)eInternalContainer();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetTarget(AbstractAction newTarget, NotificationChain msgs) {
+ msgs = eBasicSetContainer((InternalEObject)newTarget, qvtschedulePackage.DISTINCT_DATA__TARGET, msgs);
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTarget(AbstractAction newTarget) {
+ if (newTarget != eInternalContainer() || (eContainerFeatureID() != qvtschedulePackage.DISTINCT_DATA__TARGET && newTarget != null)) {
+ if (EcoreUtil.isAncestor(this, newTarget))
+ throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
+ NotificationChain msgs = null;
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ if (newTarget != null)
+ msgs = ((InternalEObject)newTarget).eInverseAdd(this, qvtschedulePackage.ABSTRACT_ACTION__DISTINCT_ARGUMENTS, AbstractAction.class, msgs);
+ msgs = basicSetTarget(newTarget, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, qvtschedulePackage.DISTINCT_DATA__TARGET, newTarget, newTarget));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<DataParameter> getPrimaryArguments() {
+ if (primaryArguments == null) {
+ primaryArguments = new EObjectContainmentWithInverseEList<DataParameter>(DataParameter.class, this, qvtschedulePackage.DISTINCT_DATA__PRIMARY_ARGUMENTS, qvtschedulePackage.DATA_PARAMETER__PRIMARY_DISTINCT_DATA);
+ }
+ return primaryArguments;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<DataParameter> getSecondaryArguments() {
+ if (secondaryArguments == null) {
+ secondaryArguments = new EObjectContainmentWithInverseEList<DataParameter>(DataParameter.class, this, qvtschedulePackage.DISTINCT_DATA__SECONDARY_ARGUMENTS, qvtschedulePackage.DATA_PARAMETER__SECONDARY_DISTINCT_DATA);
+ }
+ return secondaryArguments;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case qvtschedulePackage.DISTINCT_DATA__TARGET:
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ return basicSetTarget((AbstractAction)otherEnd, msgs);
+ case qvtschedulePackage.DISTINCT_DATA__PRIMARY_ARGUMENTS:
+ return ((InternalEList<InternalEObject>)(InternalEList<?>)getPrimaryArguments()).basicAdd(otherEnd, msgs);
+ case qvtschedulePackage.DISTINCT_DATA__SECONDARY_ARGUMENTS:
+ return ((InternalEList<InternalEObject>)(InternalEList<?>)getSecondaryArguments()).basicAdd(otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case qvtschedulePackage.DISTINCT_DATA__TARGET:
+ return basicSetTarget(null, msgs);
+ case qvtschedulePackage.DISTINCT_DATA__PRIMARY_ARGUMENTS:
+ return ((InternalEList<?>)getPrimaryArguments()).basicRemove(otherEnd, msgs);
+ case qvtschedulePackage.DISTINCT_DATA__SECONDARY_ARGUMENTS:
+ return ((InternalEList<?>)getSecondaryArguments()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+ switch (eContainerFeatureID()) {
+ case qvtschedulePackage.DISTINCT_DATA__TARGET:
+ return eInternalContainer().eInverseRemove(this, qvtschedulePackage.ABSTRACT_ACTION__DISTINCT_ARGUMENTS, AbstractAction.class, msgs);
+ }
+ return super.eBasicRemoveFromContainerFeature(msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case qvtschedulePackage.DISTINCT_DATA__TARGET:
+ return getTarget();
+ case qvtschedulePackage.DISTINCT_DATA__PRIMARY_ARGUMENTS:
+ return getPrimaryArguments();
+ case qvtschedulePackage.DISTINCT_DATA__SECONDARY_ARGUMENTS:
+ return getSecondaryArguments();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case qvtschedulePackage.DISTINCT_DATA__TARGET:
+ setTarget((AbstractAction)newValue);
+ return;
+ case qvtschedulePackage.DISTINCT_DATA__PRIMARY_ARGUMENTS:
+ getPrimaryArguments().clear();
+ getPrimaryArguments().addAll((Collection<? extends DataParameter>)newValue);
+ return;
+ case qvtschedulePackage.DISTINCT_DATA__SECONDARY_ARGUMENTS:
+ getSecondaryArguments().clear();
+ getSecondaryArguments().addAll((Collection<? extends DataParameter>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case qvtschedulePackage.DISTINCT_DATA__TARGET:
+ setTarget((AbstractAction)null);
+ return;
+ case qvtschedulePackage.DISTINCT_DATA__PRIMARY_ARGUMENTS:
+ getPrimaryArguments().clear();
+ return;
+ case qvtschedulePackage.DISTINCT_DATA__SECONDARY_ARGUMENTS:
+ getSecondaryArguments().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case qvtschedulePackage.DISTINCT_DATA__TARGET:
+ return getTarget() != null;
+ case qvtschedulePackage.DISTINCT_DATA__PRIMARY_ARGUMENTS:
+ return primaryArguments != null && !primaryArguments.isEmpty();
+ case qvtschedulePackage.DISTINCT_DATA__SECONDARY_ARGUMENTS:
+ return secondaryArguments != null && !secondaryArguments.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //DistinctDataImpl
diff --git a/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/InputActionImpl.java b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/InputActionImpl.java
new file mode 100644
index 000000000..1c81d6df8
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/InputActionImpl.java
@@ -0,0 +1,39 @@
+/**
+ */
+package org.eclipse.qvtd.build.qvtschedule.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.qvtd.build.qvtschedule.InputAction;
+import org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Input Action</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class InputActionImpl extends AbstractActionImpl implements InputAction {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected InputActionImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return qvtschedulePackage.Literals.INPUT_ACTION;
+ }
+
+} //InputActionImpl
diff --git a/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/MappingActionImpl.java b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/MappingActionImpl.java
new file mode 100644
index 000000000..3f486df32
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/MappingActionImpl.java
@@ -0,0 +1,157 @@
+/**
+ */
+package org.eclipse.qvtd.build.qvtschedule.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.qvtd.build.qvtschedule.MappingAction;
+import org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage;
+
+import org.eclipse.qvtd.pivot.qvtimperative.Mapping;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Mapping Action</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.impl.MappingActionImpl#getMapping <em>Mapping</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class MappingActionImpl extends AbstractActionImpl implements MappingAction {
+ /**
+ * The cached value of the '{@link #getMapping() <em>Mapping</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMapping()
+ * @generated
+ * @ordered
+ */
+ protected Mapping mapping;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected MappingActionImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return qvtschedulePackage.Literals.MAPPING_ACTION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Mapping getMapping() {
+ if (mapping != null && mapping.eIsProxy()) {
+ InternalEObject oldMapping = (InternalEObject)mapping;
+ mapping = (Mapping)eResolveProxy(oldMapping);
+ if (mapping != oldMapping) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, qvtschedulePackage.MAPPING_ACTION__MAPPING, oldMapping, mapping));
+ }
+ }
+ return mapping;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Mapping basicGetMapping() {
+ return mapping;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setMapping(Mapping newMapping) {
+ Mapping oldMapping = mapping;
+ mapping = newMapping;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, qvtschedulePackage.MAPPING_ACTION__MAPPING, oldMapping, mapping));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case qvtschedulePackage.MAPPING_ACTION__MAPPING:
+ if (resolve) return getMapping();
+ return basicGetMapping();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case qvtschedulePackage.MAPPING_ACTION__MAPPING:
+ setMapping((Mapping)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case qvtschedulePackage.MAPPING_ACTION__MAPPING:
+ setMapping((Mapping)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case qvtschedulePackage.MAPPING_ACTION__MAPPING:
+ return mapping != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //MappingActionImpl
diff --git a/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/OutputActionImpl.java b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/OutputActionImpl.java
new file mode 100644
index 000000000..d0454a961
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/OutputActionImpl.java
@@ -0,0 +1,39 @@
+/**
+ */
+package org.eclipse.qvtd.build.qvtschedule.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.qvtd.build.qvtschedule.OutputAction;
+import org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Output Action</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class OutputActionImpl extends AbstractActionImpl implements OutputAction {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected OutputActionImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return qvtschedulePackage.Literals.OUTPUT_ACTION;
+ }
+
+} //OutputActionImpl
diff --git a/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/ScheduleImpl.java b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/ScheduleImpl.java
new file mode 100644
index 000000000..8685b2eef
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/ScheduleImpl.java
@@ -0,0 +1,206 @@
+/**
+ */
+package org.eclipse.qvtd.build.qvtschedule.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.qvtd.build.qvtschedule.AbstractAction;
+import org.eclipse.qvtd.build.qvtschedule.AbstractDatum;
+import org.eclipse.qvtd.build.qvtschedule.Schedule;
+import org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Schedule</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.impl.ScheduleImpl#getDatums <em>Datums</em>}</li>
+ * <li>{@link org.eclipse.qvtd.build.qvtschedule.impl.ScheduleImpl#getActions <em>Actions</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ScheduleImpl extends MinimalEObjectImpl.Container implements Schedule {
+ /**
+ * The cached value of the '{@link #getDatums() <em>Datums</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDatums()
+ * @generated
+ * @ordered
+ */
+ protected EList<AbstractDatum> datums;
+
+ /**
+ * The cached value of the '{@link #getActions() <em>Actions</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getActions()
+ * @generated
+ * @ordered
+ */
+ protected EList<AbstractAction> actions;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ScheduleImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return qvtschedulePackage.Literals.SCHEDULE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<AbstractDatum> getDatums() {
+ if (datums == null) {
+ datums = new EObjectContainmentWithInverseEList<AbstractDatum>(AbstractDatum.class, this, qvtschedulePackage.SCHEDULE__DATUMS, qvtschedulePackage.ABSTRACT_DATUM__SCHEDULE);
+ }
+ return datums;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<AbstractAction> getActions() {
+ if (actions == null) {
+ actions = new EObjectContainmentWithInverseEList<AbstractAction>(AbstractAction.class, this, qvtschedulePackage.SCHEDULE__ACTIONS, qvtschedulePackage.ABSTRACT_ACTION__SCHEDULE);
+ }
+ return actions;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case qvtschedulePackage.SCHEDULE__DATUMS:
+ return ((InternalEList<InternalEObject>)(InternalEList<?>)getDatums()).basicAdd(otherEnd, msgs);
+ case qvtschedulePackage.SCHEDULE__ACTIONS:
+ return ((InternalEList<InternalEObject>)(InternalEList<?>)getActions()).basicAdd(otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case qvtschedulePackage.SCHEDULE__DATUMS:
+ return ((InternalEList<?>)getDatums()).basicRemove(otherEnd, msgs);
+ case qvtschedulePackage.SCHEDULE__ACTIONS:
+ return ((InternalEList<?>)getActions()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case qvtschedulePackage.SCHEDULE__DATUMS:
+ return getDatums();
+ case qvtschedulePackage.SCHEDULE__ACTIONS:
+ return getActions();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case qvtschedulePackage.SCHEDULE__DATUMS:
+ getDatums().clear();
+ getDatums().addAll((Collection<? extends AbstractDatum>)newValue);
+ return;
+ case qvtschedulePackage.SCHEDULE__ACTIONS:
+ getActions().clear();
+ getActions().addAll((Collection<? extends AbstractAction>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case qvtschedulePackage.SCHEDULE__DATUMS:
+ getDatums().clear();
+ return;
+ case qvtschedulePackage.SCHEDULE__ACTIONS:
+ getActions().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case qvtschedulePackage.SCHEDULE__DATUMS:
+ return datums != null && !datums.isEmpty();
+ case qvtschedulePackage.SCHEDULE__ACTIONS:
+ return actions != null && !actions.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ScheduleImpl
diff --git a/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/qvtscheduleFactoryImpl.java b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/qvtscheduleFactoryImpl.java
new file mode 100644
index 000000000..1941ebb0d
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/qvtscheduleFactoryImpl.java
@@ -0,0 +1,161 @@
+/**
+ */
+package org.eclipse.qvtd.build.qvtschedule.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.qvtd.build.qvtschedule.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class qvtscheduleFactoryImpl extends EFactoryImpl implements qvtscheduleFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static qvtscheduleFactory init() {
+ try {
+ qvtscheduleFactory theqvtscheduleFactory = (qvtscheduleFactory)EPackage.Registry.INSTANCE.getEFactory(qvtschedulePackage.eNS_URI);
+ if (theqvtscheduleFactory != null) {
+ return theqvtscheduleFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new qvtscheduleFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public qvtscheduleFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case qvtschedulePackage.CLASS_DATUM: return createClassDatum();
+ case qvtschedulePackage.DATA_PARAMETER: return createDataParameter();
+ case qvtschedulePackage.DISTINCT_DATA: return createDistinctData();
+ case qvtschedulePackage.INPUT_ACTION: return createInputAction();
+ case qvtschedulePackage.MAPPING_ACTION: return createMappingAction();
+ case qvtschedulePackage.OUTPUT_ACTION: return createOutputAction();
+ case qvtschedulePackage.SCHEDULE: return createSchedule();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ClassDatum createClassDatum() {
+ ClassDatumImpl classDatum = new ClassDatumImpl();
+ return classDatum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DataParameter createDataParameter() {
+ DataParameterImpl dataParameter = new DataParameterImpl();
+ return dataParameter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DistinctData createDistinctData() {
+ DistinctDataImpl distinctData = new DistinctDataImpl();
+ return distinctData;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InputAction createInputAction() {
+ InputActionImpl inputAction = new InputActionImpl();
+ return inputAction;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public MappingAction createMappingAction() {
+ MappingActionImpl mappingAction = new MappingActionImpl();
+ return mappingAction;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public OutputAction createOutputAction() {
+ OutputActionImpl outputAction = new OutputActionImpl();
+ return outputAction;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Schedule createSchedule() {
+ ScheduleImpl schedule = new ScheduleImpl();
+ return schedule;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public qvtschedulePackage getqvtschedulePackage() {
+ return (qvtschedulePackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static qvtschedulePackage getPackage() {
+ return qvtschedulePackage.eINSTANCE;
+ }
+
+} //qvtscheduleFactoryImpl
diff --git a/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/qvtschedulePackageImpl.java b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/qvtschedulePackageImpl.java
new file mode 100644
index 000000000..13dfb2790
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/impl/qvtschedulePackageImpl.java
@@ -0,0 +1,688 @@
+/**
+ */
+package org.eclipse.qvtd.build.qvtschedule.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.ocl.pivot.PivotPackage;
+
+import org.eclipse.qvtd.build.qvtschedule.AbstractAction;
+import org.eclipse.qvtd.build.qvtschedule.AbstractDatum;
+import org.eclipse.qvtd.build.qvtschedule.ClassDatum;
+import org.eclipse.qvtd.build.qvtschedule.DataParameter;
+import org.eclipse.qvtd.build.qvtschedule.DistinctData;
+import org.eclipse.qvtd.build.qvtschedule.InputAction;
+import org.eclipse.qvtd.build.qvtschedule.MappingAction;
+import org.eclipse.qvtd.build.qvtschedule.OutputAction;
+import org.eclipse.qvtd.build.qvtschedule.Schedule;
+import org.eclipse.qvtd.build.qvtschedule.qvtscheduleFactory;
+import org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage;
+
+import org.eclipse.qvtd.pivot.qvtcorebase.QVTcoreBasePackage;
+
+import org.eclipse.qvtd.pivot.qvtimperative.QVTimperativePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class qvtschedulePackageImpl extends EPackageImpl implements qvtschedulePackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass abstractDatumEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass abstractActionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass classDatumEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass dataParameterEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass distinctDataEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass inputActionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass mappingActionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass outputActionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass scheduleEClass = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private qvtschedulePackageImpl() {
+ super(eNS_URI, qvtscheduleFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link qvtschedulePackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static qvtschedulePackage init() {
+ if (isInited) return (qvtschedulePackage)EPackage.Registry.INSTANCE.getEPackage(qvtschedulePackage.eNS_URI);
+
+ // Obtain or create and register package
+ qvtschedulePackageImpl theqvtschedulePackage = (qvtschedulePackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof qvtschedulePackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new qvtschedulePackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ QVTimperativePackage.eINSTANCE.eClass();
+
+ // Create package meta-data objects
+ theqvtschedulePackage.createPackageContents();
+
+ // Initialize created meta-data
+ theqvtschedulePackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theqvtschedulePackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(qvtschedulePackage.eNS_URI, theqvtschedulePackage);
+ return theqvtschedulePackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getAbstractDatum() {
+ return abstractDatumEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAbstractDatum_Super() {
+ return (EReference)abstractDatumEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAbstractDatum_Type() {
+ return (EReference)abstractDatumEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAbstractDatum_Domain() {
+ return (EReference)abstractDatumEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAbstractDatum_Sources() {
+ return (EReference)abstractDatumEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAbstractDatum_Targets() {
+ return (EReference)abstractDatumEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAbstractDatum_Schedule() {
+ return (EReference)abstractDatumEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAbstractDatum_DataParameter() {
+ return (EReference)abstractDatumEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getAbstractAction() {
+ return abstractActionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAbstractAction_Results() {
+ return (EReference)abstractActionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAbstractAction_DistinctArguments() {
+ return (EReference)abstractActionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getAbstractAction_Order() {
+ return (EAttribute)abstractActionEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAbstractAction_Parent() {
+ return (EReference)abstractActionEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAbstractAction_Children() {
+ return (EReference)abstractActionEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAbstractAction_Arguments() {
+ return (EReference)abstractActionEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAbstractAction_Schedule() {
+ return (EReference)abstractActionEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getClassDatum() {
+ return classDatumEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDataParameter() {
+ return dataParameterEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDataParameter_IsLoop() {
+ return (EAttribute)dataParameterEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDataParameter_Variable() {
+ return (EReference)dataParameterEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDataParameter_PrimaryDistinctData() {
+ return (EReference)dataParameterEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDataParameter_SecondaryDistinctData() {
+ return (EReference)dataParameterEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDataParameter_Datum() {
+ return (EReference)dataParameterEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDistinctData() {
+ return distinctDataEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDistinctData_Target() {
+ return (EReference)distinctDataEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDistinctData_PrimaryArguments() {
+ return (EReference)distinctDataEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDistinctData_SecondaryArguments() {
+ return (EReference)distinctDataEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getInputAction() {
+ return inputActionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getMappingAction() {
+ return mappingActionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getMappingAction_Mapping() {
+ return (EReference)mappingActionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getOutputAction() {
+ return outputActionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSchedule() {
+ return scheduleEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSchedule_Datums() {
+ return (EReference)scheduleEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSchedule_Actions() {
+ return (EReference)scheduleEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public qvtscheduleFactory getqvtscheduleFactory() {
+ return (qvtscheduleFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ abstractDatumEClass = createEClass(ABSTRACT_DATUM);
+ createEReference(abstractDatumEClass, ABSTRACT_DATUM__SUPER);
+ createEReference(abstractDatumEClass, ABSTRACT_DATUM__TYPE);
+ createEReference(abstractDatumEClass, ABSTRACT_DATUM__DOMAIN);
+ createEReference(abstractDatumEClass, ABSTRACT_DATUM__SOURCES);
+ createEReference(abstractDatumEClass, ABSTRACT_DATUM__TARGETS);
+ createEReference(abstractDatumEClass, ABSTRACT_DATUM__SCHEDULE);
+ createEReference(abstractDatumEClass, ABSTRACT_DATUM__DATA_PARAMETER);
+
+ abstractActionEClass = createEClass(ABSTRACT_ACTION);
+ createEReference(abstractActionEClass, ABSTRACT_ACTION__RESULTS);
+ createEReference(abstractActionEClass, ABSTRACT_ACTION__DISTINCT_ARGUMENTS);
+ createEAttribute(abstractActionEClass, ABSTRACT_ACTION__ORDER);
+ createEReference(abstractActionEClass, ABSTRACT_ACTION__PARENT);
+ createEReference(abstractActionEClass, ABSTRACT_ACTION__CHILDREN);
+ createEReference(abstractActionEClass, ABSTRACT_ACTION__ARGUMENTS);
+ createEReference(abstractActionEClass, ABSTRACT_ACTION__SCHEDULE);
+
+ classDatumEClass = createEClass(CLASS_DATUM);
+
+ dataParameterEClass = createEClass(DATA_PARAMETER);
+ createEAttribute(dataParameterEClass, DATA_PARAMETER__IS_LOOP);
+ createEReference(dataParameterEClass, DATA_PARAMETER__VARIABLE);
+ createEReference(dataParameterEClass, DATA_PARAMETER__PRIMARY_DISTINCT_DATA);
+ createEReference(dataParameterEClass, DATA_PARAMETER__SECONDARY_DISTINCT_DATA);
+ createEReference(dataParameterEClass, DATA_PARAMETER__DATUM);
+
+ distinctDataEClass = createEClass(DISTINCT_DATA);
+ createEReference(distinctDataEClass, DISTINCT_DATA__TARGET);
+ createEReference(distinctDataEClass, DISTINCT_DATA__PRIMARY_ARGUMENTS);
+ createEReference(distinctDataEClass, DISTINCT_DATA__SECONDARY_ARGUMENTS);
+
+ inputActionEClass = createEClass(INPUT_ACTION);
+
+ mappingActionEClass = createEClass(MAPPING_ACTION);
+ createEReference(mappingActionEClass, MAPPING_ACTION__MAPPING);
+
+ outputActionEClass = createEClass(OUTPUT_ACTION);
+
+ scheduleEClass = createEClass(SCHEDULE);
+ createEReference(scheduleEClass, SCHEDULE__DATUMS);
+ createEReference(scheduleEClass, SCHEDULE__ACTIONS);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ PivotPackage thePivotPackage = (PivotPackage)EPackage.Registry.INSTANCE.getEPackage(PivotPackage.eNS_URI);
+ QVTcoreBasePackage theQVTcoreBasePackage = (QVTcoreBasePackage)EPackage.Registry.INSTANCE.getEPackage(QVTcoreBasePackage.eNS_URI);
+ QVTimperativePackage theQVTimperativePackage = (QVTimperativePackage)EPackage.Registry.INSTANCE.getEPackage(QVTimperativePackage.eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ classDatumEClass.getESuperTypes().add(this.getAbstractDatum());
+ inputActionEClass.getESuperTypes().add(this.getAbstractAction());
+ mappingActionEClass.getESuperTypes().add(this.getAbstractAction());
+ outputActionEClass.getESuperTypes().add(this.getAbstractAction());
+
+ // Initialize classes, features, and operations; add parameters
+ initEClass(abstractDatumEClass, AbstractDatum.class, "AbstractDatum", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getAbstractDatum_Super(), this.getAbstractDatum(), null, "super", null, 0, -1, AbstractDatum.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getAbstractDatum_Type(), thePivotPackage.getType(), null, "type", null, 1, 1, AbstractDatum.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEReference(getAbstractDatum_Domain(), theQVTcoreBasePackage.getCoreDomain(), null, "domain", null, 0, 1, AbstractDatum.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getAbstractDatum_Sources(), this.getAbstractAction(), this.getAbstractAction_Results(), "sources", null, 0, -1, AbstractDatum.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getAbstractDatum_Targets(), this.getAbstractAction(), this.getAbstractAction_Arguments(), "targets", null, 0, -1, AbstractDatum.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEReference(getAbstractDatum_Schedule(), this.getSchedule(), this.getSchedule_Datums(), "schedule", null, 0, 1, AbstractDatum.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getAbstractDatum_DataParameter(), this.getDataParameter(), this.getDataParameter_Datum(), "dataParameter", null, 0, -1, AbstractDatum.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(abstractActionEClass, AbstractAction.class, "AbstractAction", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getAbstractAction_Results(), this.getAbstractDatum(), this.getAbstractDatum_Sources(), "results", null, 0, -1, AbstractAction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getAbstractAction_DistinctArguments(), this.getDistinctData(), this.getDistinctData_Target(), "distinctArguments", null, 0, -1, AbstractAction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getAbstractAction_Order(), ecorePackage.getEInt(), "order", null, 0, 1, AbstractAction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getAbstractAction_Parent(), this.getAbstractAction(), this.getAbstractAction_Children(), "parent", null, 0, 1, AbstractAction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getAbstractAction_Children(), this.getAbstractAction(), this.getAbstractAction_Parent(), "children", null, 0, -1, AbstractAction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getAbstractAction_Arguments(), this.getAbstractDatum(), this.getAbstractDatum_Targets(), "arguments", null, 0, -1, AbstractAction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEReference(getAbstractAction_Schedule(), this.getSchedule(), this.getSchedule_Actions(), "schedule", null, 0, 1, AbstractAction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(classDatumEClass, ClassDatum.class, "ClassDatum", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(dataParameterEClass, DataParameter.class, "DataParameter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getDataParameter_IsLoop(), ecorePackage.getEBoolean(), "isLoop", null, 0, 1, DataParameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDataParameter_Variable(), thePivotPackage.getVariable(), null, "variable", null, 1, 1, DataParameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDataParameter_PrimaryDistinctData(), this.getDistinctData(), this.getDistinctData_PrimaryArguments(), "primaryDistinctData", null, 0, 1, DataParameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDataParameter_SecondaryDistinctData(), this.getDistinctData(), this.getDistinctData_SecondaryArguments(), "secondaryDistinctData", null, 0, 1, DataParameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDataParameter_Datum(), this.getAbstractDatum(), this.getAbstractDatum_DataParameter(), "datum", null, 1, 1, DataParameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(distinctDataEClass, DistinctData.class, "DistinctData", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getDistinctData_Target(), this.getAbstractAction(), this.getAbstractAction_DistinctArguments(), "target", null, 0, 1, DistinctData.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDistinctData_PrimaryArguments(), this.getDataParameter(), this.getDataParameter_PrimaryDistinctData(), "primaryArguments", null, 1, -1, DistinctData.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getDistinctData_SecondaryArguments(), this.getDataParameter(), this.getDataParameter_SecondaryDistinctData(), "secondaryArguments", null, 0, -1, DistinctData.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(inputActionEClass, InputAction.class, "InputAction", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(mappingActionEClass, MappingAction.class, "MappingAction", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getMappingAction_Mapping(), theQVTimperativePackage.getMapping(), null, "mapping", null, 1, 1, MappingAction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(outputActionEClass, OutputAction.class, "OutputAction", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(scheduleEClass, Schedule.class, "Schedule", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getSchedule_Datums(), this.getAbstractDatum(), this.getAbstractDatum_Schedule(), "datums", null, 0, -1, Schedule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getSchedule_Actions(), this.getAbstractAction(), this.getAbstractAction_Schedule(), "actions", null, 0, -1, Schedule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ // Create resource
+ createResource(eNS_URI);
+
+ // Create annotations
+ // http://www.eclipse.org/OCL/Import
+ createImportAnnotations();
+ // http://www.eclipse.org/emf/2002/Ecore
+ createEcoreAnnotations();
+ // http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot
+ createPivotAnnotations();
+ }
+
+ /**
+ * Initializes the annotations for <b>http://www.eclipse.org/OCL/Import</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void createImportAnnotations() {
+ String source = "http://www.eclipse.org/OCL/Import";
+ addAnnotation
+ (this,
+ source,
+ new String[] {
+ "ecore", "http://www.eclipse.org/emf/2002/Ecore",
+ "qvtcb", "../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore#/",
+ "qvti", "../../org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.ecore#/"
+ });
+ }
+
+ /**
+ * Initializes the annotations for <b>http://www.eclipse.org/emf/2002/Ecore</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void createEcoreAnnotations() {
+ String source = "http://www.eclipse.org/emf/2002/Ecore";
+ addAnnotation
+ (this,
+ source,
+ new String[] {
+ "invocationDelegates", "http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot",
+ "settingDelegates", "http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot",
+ "validationDelegates", "http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"
+ });
+ }
+
+ /**
+ * Initializes the annotations for <b>http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void createPivotAnnotations() {
+ String source = "http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot";
+ addAnnotation
+ (getAbstractAction_Arguments(),
+ source,
+ new String[] {
+ "derivation", "\n self.distinctArguments.primaryArguments->union(self.distinctArguments.secondaryArguments)->collect(datum)"
+ });
+ }
+
+} //qvtschedulePackageImpl
diff --git a/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/qvtscheduleFactory.java b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/qvtscheduleFactory.java
new file mode 100644
index 000000000..7cdd17478
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/qvtscheduleFactory.java
@@ -0,0 +1,96 @@
+/**
+ */
+package org.eclipse.qvtd.build.qvtschedule;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage
+ * @generated
+ */
+public interface qvtscheduleFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ qvtscheduleFactory eINSTANCE = org.eclipse.qvtd.build.qvtschedule.impl.qvtscheduleFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Class Datum</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Class Datum</em>'.
+ * @generated
+ */
+ ClassDatum createClassDatum();
+
+ /**
+ * Returns a new object of class '<em>Data Parameter</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Data Parameter</em>'.
+ * @generated
+ */
+ DataParameter createDataParameter();
+
+ /**
+ * Returns a new object of class '<em>Distinct Data</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Distinct Data</em>'.
+ * @generated
+ */
+ DistinctData createDistinctData();
+
+ /**
+ * Returns a new object of class '<em>Input Action</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Input Action</em>'.
+ * @generated
+ */
+ InputAction createInputAction();
+
+ /**
+ * Returns a new object of class '<em>Mapping Action</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Mapping Action</em>'.
+ * @generated
+ */
+ MappingAction createMappingAction();
+
+ /**
+ * Returns a new object of class '<em>Output Action</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Output Action</em>'.
+ * @generated
+ */
+ OutputAction createOutputAction();
+
+ /**
+ * Returns a new object of class '<em>Schedule</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Schedule</em>'.
+ * @generated
+ */
+ Schedule createSchedule();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ qvtschedulePackage getqvtschedulePackage();
+
+} //qvtscheduleFactory
diff --git a/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/qvtschedulePackage.java b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/qvtschedulePackage.java
new file mode 100644
index 000000000..175b5f8a3
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/qvtschedulePackage.java
@@ -0,0 +1,1474 @@
+/**
+ */
+package org.eclipse.qvtd.build.qvtschedule;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * The Package for an Imperative QVT Schedule.
+ * <!-- end-model-doc -->
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtscheduleFactory
+ * @model kind="package"
+ * annotation="http://www.eclipse.org/OCL/Import ecore='http://www.eclipse.org/emf/2002/Ecore' qvtcb='../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.ecore#/' qvti='../../org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.ecore#/'"
+ * annotation="http://www.eclipse.org/emf/2002/Ecore invocationDelegates='http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot' settingDelegates='http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot' validationDelegates='http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot'"
+ * @generated
+ */
+public interface qvtschedulePackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "qvtschedule";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http://www.eclipse.org/qvt/0.1/QVTschedule/";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "qvtschedule";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ qvtschedulePackage eINSTANCE = org.eclipse.qvtd.build.qvtschedule.impl.qvtschedulePackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.qvtd.build.qvtschedule.impl.AbstractDatumImpl <em>Abstract Datum</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.AbstractDatumImpl
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.qvtschedulePackageImpl#getAbstractDatum()
+ * @generated
+ */
+ int ABSTRACT_DATUM = 0;
+
+ /**
+ * The feature id for the '<em><b>Super</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_DATUM__SUPER = 0;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_DATUM__TYPE = 1;
+
+ /**
+ * The feature id for the '<em><b>Domain</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_DATUM__DOMAIN = 2;
+
+ /**
+ * The feature id for the '<em><b>Sources</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_DATUM__SOURCES = 3;
+
+ /**
+ * The feature id for the '<em><b>Targets</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_DATUM__TARGETS = 4;
+
+ /**
+ * The feature id for the '<em><b>Schedule</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_DATUM__SCHEDULE = 5;
+
+ /**
+ * The feature id for the '<em><b>Data Parameter</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_DATUM__DATA_PARAMETER = 6;
+
+ /**
+ * The number of structural features of the '<em>Abstract Datum</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_DATUM_FEATURE_COUNT = 7;
+
+ /**
+ * The number of operations of the '<em>Abstract Datum</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_DATUM_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.qvtd.build.qvtschedule.impl.AbstractActionImpl <em>Abstract Action</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.AbstractActionImpl
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.qvtschedulePackageImpl#getAbstractAction()
+ * @generated
+ */
+ int ABSTRACT_ACTION = 1;
+
+ /**
+ * The feature id for the '<em><b>Results</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_ACTION__RESULTS = 0;
+
+ /**
+ * The feature id for the '<em><b>Distinct Arguments</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_ACTION__DISTINCT_ARGUMENTS = 1;
+
+ /**
+ * The feature id for the '<em><b>Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_ACTION__ORDER = 2;
+
+ /**
+ * The feature id for the '<em><b>Parent</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_ACTION__PARENT = 3;
+
+ /**
+ * The feature id for the '<em><b>Children</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_ACTION__CHILDREN = 4;
+
+ /**
+ * The feature id for the '<em><b>Arguments</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_ACTION__ARGUMENTS = 5;
+
+ /**
+ * The feature id for the '<em><b>Schedule</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_ACTION__SCHEDULE = 6;
+
+ /**
+ * The number of structural features of the '<em>Abstract Action</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_ACTION_FEATURE_COUNT = 7;
+
+ /**
+ * The number of operations of the '<em>Abstract Action</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ABSTRACT_ACTION_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.qvtd.build.qvtschedule.impl.ClassDatumImpl <em>Class Datum</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.ClassDatumImpl
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.qvtschedulePackageImpl#getClassDatum()
+ * @generated
+ */
+ int CLASS_DATUM = 2;
+
+ /**
+ * The feature id for the '<em><b>Super</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CLASS_DATUM__SUPER = ABSTRACT_DATUM__SUPER;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CLASS_DATUM__TYPE = ABSTRACT_DATUM__TYPE;
+
+ /**
+ * The feature id for the '<em><b>Domain</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CLASS_DATUM__DOMAIN = ABSTRACT_DATUM__DOMAIN;
+
+ /**
+ * The feature id for the '<em><b>Sources</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CLASS_DATUM__SOURCES = ABSTRACT_DATUM__SOURCES;
+
+ /**
+ * The feature id for the '<em><b>Targets</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CLASS_DATUM__TARGETS = ABSTRACT_DATUM__TARGETS;
+
+ /**
+ * The feature id for the '<em><b>Schedule</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CLASS_DATUM__SCHEDULE = ABSTRACT_DATUM__SCHEDULE;
+
+ /**
+ * The feature id for the '<em><b>Data Parameter</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CLASS_DATUM__DATA_PARAMETER = ABSTRACT_DATUM__DATA_PARAMETER;
+
+ /**
+ * The number of structural features of the '<em>Class Datum</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CLASS_DATUM_FEATURE_COUNT = ABSTRACT_DATUM_FEATURE_COUNT + 0;
+
+ /**
+ * The number of operations of the '<em>Class Datum</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CLASS_DATUM_OPERATION_COUNT = ABSTRACT_DATUM_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.qvtd.build.qvtschedule.impl.DataParameterImpl <em>Data Parameter</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.DataParameterImpl
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.qvtschedulePackageImpl#getDataParameter()
+ * @generated
+ */
+ int DATA_PARAMETER = 3;
+
+ /**
+ * The feature id for the '<em><b>Is Loop</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_PARAMETER__IS_LOOP = 0;
+
+ /**
+ * The feature id for the '<em><b>Variable</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_PARAMETER__VARIABLE = 1;
+
+ /**
+ * The feature id for the '<em><b>Primary Distinct Data</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_PARAMETER__PRIMARY_DISTINCT_DATA = 2;
+
+ /**
+ * The feature id for the '<em><b>Secondary Distinct Data</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_PARAMETER__SECONDARY_DISTINCT_DATA = 3;
+
+ /**
+ * The feature id for the '<em><b>Datum</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_PARAMETER__DATUM = 4;
+
+ /**
+ * The number of structural features of the '<em>Data Parameter</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_PARAMETER_FEATURE_COUNT = 5;
+
+ /**
+ * The number of operations of the '<em>Data Parameter</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_PARAMETER_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.qvtd.build.qvtschedule.impl.DistinctDataImpl <em>Distinct Data</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.DistinctDataImpl
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.qvtschedulePackageImpl#getDistinctData()
+ * @generated
+ */
+ int DISTINCT_DATA = 4;
+
+ /**
+ * The feature id for the '<em><b>Target</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DISTINCT_DATA__TARGET = 0;
+
+ /**
+ * The feature id for the '<em><b>Primary Arguments</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DISTINCT_DATA__PRIMARY_ARGUMENTS = 1;
+
+ /**
+ * The feature id for the '<em><b>Secondary Arguments</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DISTINCT_DATA__SECONDARY_ARGUMENTS = 2;
+
+ /**
+ * The number of structural features of the '<em>Distinct Data</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DISTINCT_DATA_FEATURE_COUNT = 3;
+
+ /**
+ * The number of operations of the '<em>Distinct Data</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DISTINCT_DATA_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.qvtd.build.qvtschedule.impl.InputActionImpl <em>Input Action</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.InputActionImpl
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.qvtschedulePackageImpl#getInputAction()
+ * @generated
+ */
+ int INPUT_ACTION = 5;
+
+ /**
+ * The feature id for the '<em><b>Results</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INPUT_ACTION__RESULTS = ABSTRACT_ACTION__RESULTS;
+
+ /**
+ * The feature id for the '<em><b>Distinct Arguments</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INPUT_ACTION__DISTINCT_ARGUMENTS = ABSTRACT_ACTION__DISTINCT_ARGUMENTS;
+
+ /**
+ * The feature id for the '<em><b>Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INPUT_ACTION__ORDER = ABSTRACT_ACTION__ORDER;
+
+ /**
+ * The feature id for the '<em><b>Parent</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INPUT_ACTION__PARENT = ABSTRACT_ACTION__PARENT;
+
+ /**
+ * The feature id for the '<em><b>Children</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INPUT_ACTION__CHILDREN = ABSTRACT_ACTION__CHILDREN;
+
+ /**
+ * The feature id for the '<em><b>Arguments</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INPUT_ACTION__ARGUMENTS = ABSTRACT_ACTION__ARGUMENTS;
+
+ /**
+ * The feature id for the '<em><b>Schedule</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INPUT_ACTION__SCHEDULE = ABSTRACT_ACTION__SCHEDULE;
+
+ /**
+ * The number of structural features of the '<em>Input Action</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INPUT_ACTION_FEATURE_COUNT = ABSTRACT_ACTION_FEATURE_COUNT + 0;
+
+ /**
+ * The number of operations of the '<em>Input Action</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INPUT_ACTION_OPERATION_COUNT = ABSTRACT_ACTION_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.qvtd.build.qvtschedule.impl.MappingActionImpl <em>Mapping Action</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.MappingActionImpl
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.qvtschedulePackageImpl#getMappingAction()
+ * @generated
+ */
+ int MAPPING_ACTION = 6;
+
+ /**
+ * The feature id for the '<em><b>Results</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MAPPING_ACTION__RESULTS = ABSTRACT_ACTION__RESULTS;
+
+ /**
+ * The feature id for the '<em><b>Distinct Arguments</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MAPPING_ACTION__DISTINCT_ARGUMENTS = ABSTRACT_ACTION__DISTINCT_ARGUMENTS;
+
+ /**
+ * The feature id for the '<em><b>Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MAPPING_ACTION__ORDER = ABSTRACT_ACTION__ORDER;
+
+ /**
+ * The feature id for the '<em><b>Parent</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MAPPING_ACTION__PARENT = ABSTRACT_ACTION__PARENT;
+
+ /**
+ * The feature id for the '<em><b>Children</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MAPPING_ACTION__CHILDREN = ABSTRACT_ACTION__CHILDREN;
+
+ /**
+ * The feature id for the '<em><b>Arguments</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MAPPING_ACTION__ARGUMENTS = ABSTRACT_ACTION__ARGUMENTS;
+
+ /**
+ * The feature id for the '<em><b>Schedule</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MAPPING_ACTION__SCHEDULE = ABSTRACT_ACTION__SCHEDULE;
+
+ /**
+ * The feature id for the '<em><b>Mapping</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MAPPING_ACTION__MAPPING = ABSTRACT_ACTION_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Mapping Action</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MAPPING_ACTION_FEATURE_COUNT = ABSTRACT_ACTION_FEATURE_COUNT + 1;
+
+ /**
+ * The number of operations of the '<em>Mapping Action</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MAPPING_ACTION_OPERATION_COUNT = ABSTRACT_ACTION_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.qvtd.build.qvtschedule.impl.OutputActionImpl <em>Output Action</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.OutputActionImpl
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.qvtschedulePackageImpl#getOutputAction()
+ * @generated
+ */
+ int OUTPUT_ACTION = 7;
+
+ /**
+ * The feature id for the '<em><b>Results</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OUTPUT_ACTION__RESULTS = ABSTRACT_ACTION__RESULTS;
+
+ /**
+ * The feature id for the '<em><b>Distinct Arguments</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OUTPUT_ACTION__DISTINCT_ARGUMENTS = ABSTRACT_ACTION__DISTINCT_ARGUMENTS;
+
+ /**
+ * The feature id for the '<em><b>Order</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OUTPUT_ACTION__ORDER = ABSTRACT_ACTION__ORDER;
+
+ /**
+ * The feature id for the '<em><b>Parent</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OUTPUT_ACTION__PARENT = ABSTRACT_ACTION__PARENT;
+
+ /**
+ * The feature id for the '<em><b>Children</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OUTPUT_ACTION__CHILDREN = ABSTRACT_ACTION__CHILDREN;
+
+ /**
+ * The feature id for the '<em><b>Arguments</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OUTPUT_ACTION__ARGUMENTS = ABSTRACT_ACTION__ARGUMENTS;
+
+ /**
+ * The feature id for the '<em><b>Schedule</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OUTPUT_ACTION__SCHEDULE = ABSTRACT_ACTION__SCHEDULE;
+
+ /**
+ * The number of structural features of the '<em>Output Action</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OUTPUT_ACTION_FEATURE_COUNT = ABSTRACT_ACTION_FEATURE_COUNT + 0;
+
+ /**
+ * The number of operations of the '<em>Output Action</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OUTPUT_ACTION_OPERATION_COUNT = ABSTRACT_ACTION_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.qvtd.build.qvtschedule.impl.ScheduleImpl <em>Schedule</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.ScheduleImpl
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.qvtschedulePackageImpl#getSchedule()
+ * @generated
+ */
+ int SCHEDULE = 8;
+
+ /**
+ * The feature id for the '<em><b>Datums</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SCHEDULE__DATUMS = 0;
+
+ /**
+ * The feature id for the '<em><b>Actions</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SCHEDULE__ACTIONS = 1;
+
+ /**
+ * The number of structural features of the '<em>Schedule</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SCHEDULE_FEATURE_COUNT = 2;
+
+ /**
+ * The number of operations of the '<em>Schedule</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SCHEDULE_OPERATION_COUNT = 0;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.qvtd.build.qvtschedule.AbstractDatum <em>Abstract Datum</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Abstract Datum</em>'.
+ * @see org.eclipse.qvtd.build.qvtschedule.AbstractDatum
+ * @generated
+ */
+ EClass getAbstractDatum();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.qvtd.build.qvtschedule.AbstractDatum#getSuper <em>Super</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Super</em>'.
+ * @see org.eclipse.qvtd.build.qvtschedule.AbstractDatum#getSuper()
+ * @see #getAbstractDatum()
+ * @generated
+ */
+ EReference getAbstractDatum_Super();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.qvtd.build.qvtschedule.AbstractDatum#getType <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Type</em>'.
+ * @see org.eclipse.qvtd.build.qvtschedule.AbstractDatum#getType()
+ * @see #getAbstractDatum()
+ * @generated
+ */
+ EReference getAbstractDatum_Type();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.qvtd.build.qvtschedule.AbstractDatum#getDomain <em>Domain</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Domain</em>'.
+ * @see org.eclipse.qvtd.build.qvtschedule.AbstractDatum#getDomain()
+ * @see #getAbstractDatum()
+ * @generated
+ */
+ EReference getAbstractDatum_Domain();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.qvtd.build.qvtschedule.AbstractDatum#getSources <em>Sources</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Sources</em>'.
+ * @see org.eclipse.qvtd.build.qvtschedule.AbstractDatum#getSources()
+ * @see #getAbstractDatum()
+ * @generated
+ */
+ EReference getAbstractDatum_Sources();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.qvtd.build.qvtschedule.AbstractDatum#getTargets <em>Targets</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Targets</em>'.
+ * @see org.eclipse.qvtd.build.qvtschedule.AbstractDatum#getTargets()
+ * @see #getAbstractDatum()
+ * @generated
+ */
+ EReference getAbstractDatum_Targets();
+
+ /**
+ * Returns the meta object for the container reference '{@link org.eclipse.qvtd.build.qvtschedule.AbstractDatum#getSchedule <em>Schedule</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the container reference '<em>Schedule</em>'.
+ * @see org.eclipse.qvtd.build.qvtschedule.AbstractDatum#getSchedule()
+ * @see #getAbstractDatum()
+ * @generated
+ */
+ EReference getAbstractDatum_Schedule();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.qvtd.build.qvtschedule.AbstractDatum#getDataParameter <em>Data Parameter</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Data Parameter</em>'.
+ * @see org.eclipse.qvtd.build.qvtschedule.AbstractDatum#getDataParameter()
+ * @see #getAbstractDatum()
+ * @generated
+ */
+ EReference getAbstractDatum_DataParameter();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.qvtd.build.qvtschedule.AbstractAction <em>Abstract Action</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Abstract Action</em>'.
+ * @see org.eclipse.qvtd.build.qvtschedule.AbstractAction
+ * @generated
+ */
+ EClass getAbstractAction();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.qvtd.build.qvtschedule.AbstractAction#getResults <em>Results</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Results</em>'.
+ * @see org.eclipse.qvtd.build.qvtschedule.AbstractAction#getResults()
+ * @see #getAbstractAction()
+ * @generated
+ */
+ EReference getAbstractAction_Results();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.qvtd.build.qvtschedule.AbstractAction#getDistinctArguments <em>Distinct Arguments</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Distinct Arguments</em>'.
+ * @see org.eclipse.qvtd.build.qvtschedule.AbstractAction#getDistinctArguments()
+ * @see #getAbstractAction()
+ * @generated
+ */
+ EReference getAbstractAction_DistinctArguments();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.qvtd.build.qvtschedule.AbstractAction#getOrder <em>Order</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Order</em>'.
+ * @see org.eclipse.qvtd.build.qvtschedule.AbstractAction#getOrder()
+ * @see #getAbstractAction()
+ * @generated
+ */
+ EAttribute getAbstractAction_Order();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.qvtd.build.qvtschedule.AbstractAction#getParent <em>Parent</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Parent</em>'.
+ * @see org.eclipse.qvtd.build.qvtschedule.AbstractAction#getParent()
+ * @see #getAbstractAction()
+ * @generated
+ */
+ EReference getAbstractAction_Parent();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.qvtd.build.qvtschedule.AbstractAction#getChildren <em>Children</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Children</em>'.
+ * @see org.eclipse.qvtd.build.qvtschedule.AbstractAction#getChildren()
+ * @see #getAbstractAction()
+ * @generated
+ */
+ EReference getAbstractAction_Children();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.qvtd.build.qvtschedule.AbstractAction#getArguments <em>Arguments</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Arguments</em>'.
+ * @see org.eclipse.qvtd.build.qvtschedule.AbstractAction#getArguments()
+ * @see #getAbstractAction()
+ * @generated
+ */
+ EReference getAbstractAction_Arguments();
+
+ /**
+ * Returns the meta object for the container reference '{@link org.eclipse.qvtd.build.qvtschedule.AbstractAction#getSchedule <em>Schedule</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the container reference '<em>Schedule</em>'.
+ * @see org.eclipse.qvtd.build.qvtschedule.AbstractAction#getSchedule()
+ * @see #getAbstractAction()
+ * @generated
+ */
+ EReference getAbstractAction_Schedule();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.qvtd.build.qvtschedule.ClassDatum <em>Class Datum</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Class Datum</em>'.
+ * @see org.eclipse.qvtd.build.qvtschedule.ClassDatum
+ * @generated
+ */
+ EClass getClassDatum();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.qvtd.build.qvtschedule.DataParameter <em>Data Parameter</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Data Parameter</em>'.
+ * @see org.eclipse.qvtd.build.qvtschedule.DataParameter
+ * @generated
+ */
+ EClass getDataParameter();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.qvtd.build.qvtschedule.DataParameter#isIsLoop <em>Is Loop</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Is Loop</em>'.
+ * @see org.eclipse.qvtd.build.qvtschedule.DataParameter#isIsLoop()
+ * @see #getDataParameter()
+ * @generated
+ */
+ EAttribute getDataParameter_IsLoop();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.qvtd.build.qvtschedule.DataParameter#getVariable <em>Variable</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Variable</em>'.
+ * @see org.eclipse.qvtd.build.qvtschedule.DataParameter#getVariable()
+ * @see #getDataParameter()
+ * @generated
+ */
+ EReference getDataParameter_Variable();
+
+ /**
+ * Returns the meta object for the container reference '{@link org.eclipse.qvtd.build.qvtschedule.DataParameter#getPrimaryDistinctData <em>Primary Distinct Data</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the container reference '<em>Primary Distinct Data</em>'.
+ * @see org.eclipse.qvtd.build.qvtschedule.DataParameter#getPrimaryDistinctData()
+ * @see #getDataParameter()
+ * @generated
+ */
+ EReference getDataParameter_PrimaryDistinctData();
+
+ /**
+ * Returns the meta object for the container reference '{@link org.eclipse.qvtd.build.qvtschedule.DataParameter#getSecondaryDistinctData <em>Secondary Distinct Data</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the container reference '<em>Secondary Distinct Data</em>'.
+ * @see org.eclipse.qvtd.build.qvtschedule.DataParameter#getSecondaryDistinctData()
+ * @see #getDataParameter()
+ * @generated
+ */
+ EReference getDataParameter_SecondaryDistinctData();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.qvtd.build.qvtschedule.DataParameter#getDatum <em>Datum</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Datum</em>'.
+ * @see org.eclipse.qvtd.build.qvtschedule.DataParameter#getDatum()
+ * @see #getDataParameter()
+ * @generated
+ */
+ EReference getDataParameter_Datum();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.qvtd.build.qvtschedule.DistinctData <em>Distinct Data</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Distinct Data</em>'.
+ * @see org.eclipse.qvtd.build.qvtschedule.DistinctData
+ * @generated
+ */
+ EClass getDistinctData();
+
+ /**
+ * Returns the meta object for the container reference '{@link org.eclipse.qvtd.build.qvtschedule.DistinctData#getTarget <em>Target</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the container reference '<em>Target</em>'.
+ * @see org.eclipse.qvtd.build.qvtschedule.DistinctData#getTarget()
+ * @see #getDistinctData()
+ * @generated
+ */
+ EReference getDistinctData_Target();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.qvtd.build.qvtschedule.DistinctData#getPrimaryArguments <em>Primary Arguments</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Primary Arguments</em>'.
+ * @see org.eclipse.qvtd.build.qvtschedule.DistinctData#getPrimaryArguments()
+ * @see #getDistinctData()
+ * @generated
+ */
+ EReference getDistinctData_PrimaryArguments();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.qvtd.build.qvtschedule.DistinctData#getSecondaryArguments <em>Secondary Arguments</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Secondary Arguments</em>'.
+ * @see org.eclipse.qvtd.build.qvtschedule.DistinctData#getSecondaryArguments()
+ * @see #getDistinctData()
+ * @generated
+ */
+ EReference getDistinctData_SecondaryArguments();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.qvtd.build.qvtschedule.InputAction <em>Input Action</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Input Action</em>'.
+ * @see org.eclipse.qvtd.build.qvtschedule.InputAction
+ * @generated
+ */
+ EClass getInputAction();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.qvtd.build.qvtschedule.MappingAction <em>Mapping Action</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Mapping Action</em>'.
+ * @see org.eclipse.qvtd.build.qvtschedule.MappingAction
+ * @generated
+ */
+ EClass getMappingAction();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.qvtd.build.qvtschedule.MappingAction#getMapping <em>Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Mapping</em>'.
+ * @see org.eclipse.qvtd.build.qvtschedule.MappingAction#getMapping()
+ * @see #getMappingAction()
+ * @generated
+ */
+ EReference getMappingAction_Mapping();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.qvtd.build.qvtschedule.OutputAction <em>Output Action</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Output Action</em>'.
+ * @see org.eclipse.qvtd.build.qvtschedule.OutputAction
+ * @generated
+ */
+ EClass getOutputAction();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.qvtd.build.qvtschedule.Schedule <em>Schedule</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Schedule</em>'.
+ * @see org.eclipse.qvtd.build.qvtschedule.Schedule
+ * @generated
+ */
+ EClass getSchedule();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.qvtd.build.qvtschedule.Schedule#getDatums <em>Datums</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Datums</em>'.
+ * @see org.eclipse.qvtd.build.qvtschedule.Schedule#getDatums()
+ * @see #getSchedule()
+ * @generated
+ */
+ EReference getSchedule_Datums();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.qvtd.build.qvtschedule.Schedule#getActions <em>Actions</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Actions</em>'.
+ * @see org.eclipse.qvtd.build.qvtschedule.Schedule#getActions()
+ * @see #getSchedule()
+ * @generated
+ */
+ EReference getSchedule_Actions();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ qvtscheduleFactory getqvtscheduleFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link org.eclipse.qvtd.build.qvtschedule.impl.AbstractDatumImpl <em>Abstract Datum</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.AbstractDatumImpl
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.qvtschedulePackageImpl#getAbstractDatum()
+ * @generated
+ */
+ EClass ABSTRACT_DATUM = eINSTANCE.getAbstractDatum();
+
+ /**
+ * The meta object literal for the '<em><b>Super</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ABSTRACT_DATUM__SUPER = eINSTANCE.getAbstractDatum_Super();
+
+ /**
+ * The meta object literal for the '<em><b>Type</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ABSTRACT_DATUM__TYPE = eINSTANCE.getAbstractDatum_Type();
+
+ /**
+ * The meta object literal for the '<em><b>Domain</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ABSTRACT_DATUM__DOMAIN = eINSTANCE.getAbstractDatum_Domain();
+
+ /**
+ * The meta object literal for the '<em><b>Sources</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ABSTRACT_DATUM__SOURCES = eINSTANCE.getAbstractDatum_Sources();
+
+ /**
+ * The meta object literal for the '<em><b>Targets</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ABSTRACT_DATUM__TARGETS = eINSTANCE.getAbstractDatum_Targets();
+
+ /**
+ * The meta object literal for the '<em><b>Schedule</b></em>' container reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ABSTRACT_DATUM__SCHEDULE = eINSTANCE.getAbstractDatum_Schedule();
+
+ /**
+ * The meta object literal for the '<em><b>Data Parameter</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ABSTRACT_DATUM__DATA_PARAMETER = eINSTANCE.getAbstractDatum_DataParameter();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.qvtd.build.qvtschedule.impl.AbstractActionImpl <em>Abstract Action</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.AbstractActionImpl
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.qvtschedulePackageImpl#getAbstractAction()
+ * @generated
+ */
+ EClass ABSTRACT_ACTION = eINSTANCE.getAbstractAction();
+
+ /**
+ * The meta object literal for the '<em><b>Results</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ABSTRACT_ACTION__RESULTS = eINSTANCE.getAbstractAction_Results();
+
+ /**
+ * The meta object literal for the '<em><b>Distinct Arguments</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ABSTRACT_ACTION__DISTINCT_ARGUMENTS = eINSTANCE.getAbstractAction_DistinctArguments();
+
+ /**
+ * The meta object literal for the '<em><b>Order</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ABSTRACT_ACTION__ORDER = eINSTANCE.getAbstractAction_Order();
+
+ /**
+ * The meta object literal for the '<em><b>Parent</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ABSTRACT_ACTION__PARENT = eINSTANCE.getAbstractAction_Parent();
+
+ /**
+ * The meta object literal for the '<em><b>Children</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ABSTRACT_ACTION__CHILDREN = eINSTANCE.getAbstractAction_Children();
+
+ /**
+ * The meta object literal for the '<em><b>Arguments</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ABSTRACT_ACTION__ARGUMENTS = eINSTANCE.getAbstractAction_Arguments();
+
+ /**
+ * The meta object literal for the '<em><b>Schedule</b></em>' container reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ABSTRACT_ACTION__SCHEDULE = eINSTANCE.getAbstractAction_Schedule();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.qvtd.build.qvtschedule.impl.ClassDatumImpl <em>Class Datum</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.ClassDatumImpl
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.qvtschedulePackageImpl#getClassDatum()
+ * @generated
+ */
+ EClass CLASS_DATUM = eINSTANCE.getClassDatum();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.qvtd.build.qvtschedule.impl.DataParameterImpl <em>Data Parameter</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.DataParameterImpl
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.qvtschedulePackageImpl#getDataParameter()
+ * @generated
+ */
+ EClass DATA_PARAMETER = eINSTANCE.getDataParameter();
+
+ /**
+ * The meta object literal for the '<em><b>Is Loop</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DATA_PARAMETER__IS_LOOP = eINSTANCE.getDataParameter_IsLoop();
+
+ /**
+ * The meta object literal for the '<em><b>Variable</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DATA_PARAMETER__VARIABLE = eINSTANCE.getDataParameter_Variable();
+
+ /**
+ * The meta object literal for the '<em><b>Primary Distinct Data</b></em>' container reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DATA_PARAMETER__PRIMARY_DISTINCT_DATA = eINSTANCE.getDataParameter_PrimaryDistinctData();
+
+ /**
+ * The meta object literal for the '<em><b>Secondary Distinct Data</b></em>' container reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DATA_PARAMETER__SECONDARY_DISTINCT_DATA = eINSTANCE.getDataParameter_SecondaryDistinctData();
+
+ /**
+ * The meta object literal for the '<em><b>Datum</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DATA_PARAMETER__DATUM = eINSTANCE.getDataParameter_Datum();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.qvtd.build.qvtschedule.impl.DistinctDataImpl <em>Distinct Data</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.DistinctDataImpl
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.qvtschedulePackageImpl#getDistinctData()
+ * @generated
+ */
+ EClass DISTINCT_DATA = eINSTANCE.getDistinctData();
+
+ /**
+ * The meta object literal for the '<em><b>Target</b></em>' container reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DISTINCT_DATA__TARGET = eINSTANCE.getDistinctData_Target();
+
+ /**
+ * The meta object literal for the '<em><b>Primary Arguments</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DISTINCT_DATA__PRIMARY_ARGUMENTS = eINSTANCE.getDistinctData_PrimaryArguments();
+
+ /**
+ * The meta object literal for the '<em><b>Secondary Arguments</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DISTINCT_DATA__SECONDARY_ARGUMENTS = eINSTANCE.getDistinctData_SecondaryArguments();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.qvtd.build.qvtschedule.impl.InputActionImpl <em>Input Action</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.InputActionImpl
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.qvtschedulePackageImpl#getInputAction()
+ * @generated
+ */
+ EClass INPUT_ACTION = eINSTANCE.getInputAction();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.qvtd.build.qvtschedule.impl.MappingActionImpl <em>Mapping Action</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.MappingActionImpl
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.qvtschedulePackageImpl#getMappingAction()
+ * @generated
+ */
+ EClass MAPPING_ACTION = eINSTANCE.getMappingAction();
+
+ /**
+ * The meta object literal for the '<em><b>Mapping</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference MAPPING_ACTION__MAPPING = eINSTANCE.getMappingAction_Mapping();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.qvtd.build.qvtschedule.impl.OutputActionImpl <em>Output Action</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.OutputActionImpl
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.qvtschedulePackageImpl#getOutputAction()
+ * @generated
+ */
+ EClass OUTPUT_ACTION = eINSTANCE.getOutputAction();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.qvtd.build.qvtschedule.impl.ScheduleImpl <em>Schedule</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.ScheduleImpl
+ * @see org.eclipse.qvtd.build.qvtschedule.impl.qvtschedulePackageImpl#getSchedule()
+ * @generated
+ */
+ EClass SCHEDULE = eINSTANCE.getSchedule();
+
+ /**
+ * The meta object literal for the '<em><b>Datums</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SCHEDULE__DATUMS = eINSTANCE.getSchedule_Datums();
+
+ /**
+ * The meta object literal for the '<em><b>Actions</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SCHEDULE__ACTIONS = eINSTANCE.getSchedule_Actions();
+
+ }
+
+} //qvtschedulePackage
diff --git a/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/util/qvtscheduleAdapterFactory.java b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/util/qvtscheduleAdapterFactory.java
new file mode 100644
index 000000000..51f484afb
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/util/qvtscheduleAdapterFactory.java
@@ -0,0 +1,264 @@
+/**
+ */
+package org.eclipse.qvtd.build.qvtschedule.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.qvtd.build.qvtschedule.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage
+ * @generated
+ */
+public class qvtscheduleAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static qvtschedulePackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public qvtscheduleAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = qvtschedulePackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected qvtscheduleSwitch<Adapter> modelSwitch =
+ new qvtscheduleSwitch<Adapter>() {
+ @Override
+ public Adapter caseAbstractDatum(AbstractDatum object) {
+ return createAbstractDatumAdapter();
+ }
+ @Override
+ public Adapter caseAbstractAction(AbstractAction object) {
+ return createAbstractActionAdapter();
+ }
+ @Override
+ public Adapter caseClassDatum(ClassDatum object) {
+ return createClassDatumAdapter();
+ }
+ @Override
+ public Adapter caseDataParameter(DataParameter object) {
+ return createDataParameterAdapter();
+ }
+ @Override
+ public Adapter caseDistinctData(DistinctData object) {
+ return createDistinctDataAdapter();
+ }
+ @Override
+ public Adapter caseInputAction(InputAction object) {
+ return createInputActionAdapter();
+ }
+ @Override
+ public Adapter caseMappingAction(MappingAction object) {
+ return createMappingActionAdapter();
+ }
+ @Override
+ public Adapter caseOutputAction(OutputAction object) {
+ return createOutputActionAdapter();
+ }
+ @Override
+ public Adapter caseSchedule(Schedule object) {
+ return createScheduleAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.qvtd.build.qvtschedule.AbstractDatum <em>Abstract Datum</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.qvtd.build.qvtschedule.AbstractDatum
+ * @generated
+ */
+ public Adapter createAbstractDatumAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.qvtd.build.qvtschedule.AbstractAction <em>Abstract Action</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.qvtd.build.qvtschedule.AbstractAction
+ * @generated
+ */
+ public Adapter createAbstractActionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.qvtd.build.qvtschedule.ClassDatum <em>Class Datum</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.qvtd.build.qvtschedule.ClassDatum
+ * @generated
+ */
+ public Adapter createClassDatumAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.qvtd.build.qvtschedule.DataParameter <em>Data Parameter</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.qvtd.build.qvtschedule.DataParameter
+ * @generated
+ */
+ public Adapter createDataParameterAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.qvtd.build.qvtschedule.DistinctData <em>Distinct Data</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.qvtd.build.qvtschedule.DistinctData
+ * @generated
+ */
+ public Adapter createDistinctDataAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.qvtd.build.qvtschedule.InputAction <em>Input Action</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.qvtd.build.qvtschedule.InputAction
+ * @generated
+ */
+ public Adapter createInputActionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.qvtd.build.qvtschedule.MappingAction <em>Mapping Action</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.qvtd.build.qvtschedule.MappingAction
+ * @generated
+ */
+ public Adapter createMappingActionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.qvtd.build.qvtschedule.OutputAction <em>Output Action</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.qvtd.build.qvtschedule.OutputAction
+ * @generated
+ */
+ public Adapter createOutputActionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.qvtd.build.qvtschedule.Schedule <em>Schedule</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.qvtd.build.qvtschedule.Schedule
+ * @generated
+ */
+ public Adapter createScheduleAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} //qvtscheduleAdapterFactory
diff --git a/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/util/qvtscheduleSwitch.java b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/util/qvtscheduleSwitch.java
new file mode 100644
index 000000000..695eb2271
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/emf-gen/org/eclipse/qvtd/build/qvtschedule/util/qvtscheduleSwitch.java
@@ -0,0 +1,282 @@
+/**
+ */
+package org.eclipse.qvtd.build.qvtschedule.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.qvtd.build.qvtschedule.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage
+ * @generated
+ */
+public class qvtscheduleSwitch<T> extends Switch<T> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static qvtschedulePackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public qvtscheduleSwitch() {
+ if (modelPackage == null) {
+ modelPackage = qvtschedulePackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Checks whether this is a switch for the given package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @parameter ePackage the package in question.
+ * @return whether this is a switch for the given package.
+ * @generated
+ */
+ @Override
+ protected boolean isSwitchFor(EPackage ePackage) {
+ return ePackage == modelPackage;
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ @Override
+ protected T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case qvtschedulePackage.ABSTRACT_DATUM: {
+ AbstractDatum abstractDatum = (AbstractDatum)theEObject;
+ T result = caseAbstractDatum(abstractDatum);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case qvtschedulePackage.ABSTRACT_ACTION: {
+ AbstractAction abstractAction = (AbstractAction)theEObject;
+ T result = caseAbstractAction(abstractAction);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case qvtschedulePackage.CLASS_DATUM: {
+ ClassDatum classDatum = (ClassDatum)theEObject;
+ T result = caseClassDatum(classDatum);
+ if (result == null) result = caseAbstractDatum(classDatum);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case qvtschedulePackage.DATA_PARAMETER: {
+ DataParameter dataParameter = (DataParameter)theEObject;
+ T result = caseDataParameter(dataParameter);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case qvtschedulePackage.DISTINCT_DATA: {
+ DistinctData distinctData = (DistinctData)theEObject;
+ T result = caseDistinctData(distinctData);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case qvtschedulePackage.INPUT_ACTION: {
+ InputAction inputAction = (InputAction)theEObject;
+ T result = caseInputAction(inputAction);
+ if (result == null) result = caseAbstractAction(inputAction);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case qvtschedulePackage.MAPPING_ACTION: {
+ MappingAction mappingAction = (MappingAction)theEObject;
+ T result = caseMappingAction(mappingAction);
+ if (result == null) result = caseAbstractAction(mappingAction);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case qvtschedulePackage.OUTPUT_ACTION: {
+ OutputAction outputAction = (OutputAction)theEObject;
+ T result = caseOutputAction(outputAction);
+ if (result == null) result = caseAbstractAction(outputAction);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case qvtschedulePackage.SCHEDULE: {
+ Schedule schedule = (Schedule)theEObject;
+ T result = caseSchedule(schedule);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Abstract Datum</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Abstract Datum</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAbstractDatum(AbstractDatum object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Abstract Action</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Abstract Action</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAbstractAction(AbstractAction object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Class Datum</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Class Datum</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseClassDatum(ClassDatum object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Data Parameter</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Data Parameter</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseDataParameter(DataParameter object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Distinct Data</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Distinct Data</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseDistinctData(DistinctData object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Input Action</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Input Action</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseInputAction(InputAction object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Mapping Action</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Mapping Action</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseMappingAction(MappingAction object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Output Action</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Output Action</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseOutputAction(OutputAction object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Schedule</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Schedule</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseSchedule(Schedule object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ @Override
+ public T defaultCase(EObject object) {
+ return null;
+ }
+
+} //qvtscheduleSwitch
diff --git a/plugins/org.eclipse.qvtd.build.schedule/model/QVTSchedule.aird b/plugins/org.eclipse.qvtd.build.schedule/model/QVTSchedule.aird
new file mode 100644
index 000000000..dbd78204c
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/model/QVTSchedule.aird
@@ -0,0 +1,1000 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<viewpoint:DAnalysis xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/style/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description/style" xmi:id="_zG1MUEfnEeSqQ48lcu28MA" selectedViews="_zKXBcEfnEeSqQ48lcu28MA _zP7d8EfnEeSqQ48lcu28MA _zQHrMEfnEeSqQ48lcu28MA _zTjZsEfnEeSqQ48lcu28MA" version="8.1.1">
+ <models xmi:type="ecore:EPackage" href="QVTSchedule.ecore#/"/>
+ <models xmi:type="ecore:EPackage" href="http://www.eclipse.org/ocl/3.1.0/Pivot#/"/>
+ <models xmi:type="ecore:EPackage" href="http://www.eclipse.org/qvt/0.9/QVTcoreBase#/"/>
+ <models xmi:type="ecore:EPackage" href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+ <models xmi:type="ecore:EPackage" href="http://www.eclipse.org/qvt/0.9/QVTimperative#/"/>
+ <ownedViews xmi:type="viewpoint:DRepresentationContainer" xmi:id="_zKXBcEfnEeSqQ48lcu28MA" initialized="true">
+ <ownedRepresentations xmi:type="diagram:DSemanticDiagram" xmi:id="_zONmsEfnEeSqQ48lcu28MA" name="qvtschedule class diagram">
+ <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_zONmtkfnEeSqQ48lcu28MA" source="GMF_DIAGRAMS">
+ <data xmi:type="notation:Diagram" xmi:id="_zONmt0fnEeSqQ48lcu28MA" type="Sirius" element="_zONmsEfnEeSqQ48lcu28MA" measurementUnit="Pixel">
+ <children xmi:type="notation:Node" xmi:id="_zONmuUfnEeSqQ48lcu28MA" type="2001" element="_zONmsUfnEeSqQ48lcu28MA">
+ <children xmi:type="notation:Node" xmi:id="_zONmvEfnEeSqQ48lcu28MA" type="5002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zONmvUfnEeSqQ48lcu28MA" y="5"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_zOTtUEfnEeSqQ48lcu28MA" type="3005" element="_zONmskfnEeSqQ48lcu28MA">
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_zOTtUUfnEeSqQ48lcu28MA" fontName="Segoe UI"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zOTtUkfnEeSqQ48lcu28MA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_zONmukfnEeSqQ48lcu28MA" fontName="Segoe UI" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zONmu0fnEeSqQ48lcu28MA" width="672" height="67"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_zONmuEfnEeSqQ48lcu28MA"/>
+ </data>
+ </ownedAnnotationEntries>
+ <ownedDiagramElements xmi:type="diagram:DNode" xmi:id="_zONmsUfnEeSqQ48lcu28MA" width="-1" height="-1">
+ <target xmi:type="ecore:EPackage" href="QVTSchedule.ecore#/"/>
+ <semanticElements xmi:type="ecore:EPackage" href="QVTSchedule.ecore#/"/>
+ <ownedStyle xmi:type="diagram:WorkspaceImage" xmi:id="_zONmskfnEeSqQ48lcu28MA" showIcon="false" labelPosition="node" workspacePath="/org.eclipse.emf.ecoretools.design/icons/full/back/empty.svg">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_zONms0fnEeSqQ48lcu28MA"/>
+ <description xmi:type="style:WorkspaceImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@nodeMappings[name='Empty%20Diagram']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_zONmtEfnEeSqQ48lcu28MA"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@nodeMappings[name='Empty%20Diagram']"/>
+ </ownedDiagramElements>
+ <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
+ <filterVariableHistory xmi:type="diagram:FilterVariableHistory" xmi:id="_zONmtUfnEeSqQ48lcu28MA"/>
+ <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
+ <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
+ <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
+ <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Archetype']/@ownedRepresentationExtensions[name='Entities%20With%20Archetypes']/@layers[name='Archetypes']"/>
+ <target xmi:type="ecore:EPackage" href="QVTSchedule.ecore#/"/>
+ </ownedRepresentations>
+ <ownedRepresentations xmi:type="diagram:DSemanticDiagram" xmi:id="_zOf6kEfnEeSqQ48lcu28MA" name="pivot class diagram">
+ <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_zOf6lkfnEeSqQ48lcu28MA" source="GMF_DIAGRAMS">
+ <data xmi:type="notation:Diagram" xmi:id="_zOf6l0fnEeSqQ48lcu28MA" type="Sirius" element="_zOf6kEfnEeSqQ48lcu28MA" measurementUnit="Pixel">
+ <children xmi:type="notation:Node" xmi:id="_zOf6mUfnEeSqQ48lcu28MA" type="2001" element="_zOf6kUfnEeSqQ48lcu28MA">
+ <children xmi:type="notation:Node" xmi:id="_zOf6nEfnEeSqQ48lcu28MA" type="5002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zOf6nUfnEeSqQ48lcu28MA" y="5"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_zOmBMEfnEeSqQ48lcu28MA" type="3005" element="_zOf6kkfnEeSqQ48lcu28MA">
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_zOmBMUfnEeSqQ48lcu28MA" fontName="Segoe UI"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zOmBMkfnEeSqQ48lcu28MA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_zOf6mkfnEeSqQ48lcu28MA" fontName="Segoe UI" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zOf6m0fnEeSqQ48lcu28MA" width="672" height="67"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_zOf6mEfnEeSqQ48lcu28MA"/>
+ </data>
+ </ownedAnnotationEntries>
+ <ownedDiagramElements xmi:type="diagram:DNode" xmi:id="_zOf6kUfnEeSqQ48lcu28MA" width="-1" height="-1">
+ <target xmi:type="ecore:EPackage" href="http://www.eclipse.org/ocl/3.1.0/Pivot#/"/>
+ <semanticElements xmi:type="ecore:EPackage" href="http://www.eclipse.org/ocl/3.1.0/Pivot#/"/>
+ <ownedStyle xmi:type="diagram:WorkspaceImage" xmi:id="_zOf6kkfnEeSqQ48lcu28MA" showIcon="false" labelPosition="node" workspacePath="/org.eclipse.emf.ecoretools.design/icons/full/back/empty.svg">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_zOf6k0fnEeSqQ48lcu28MA"/>
+ <description xmi:type="style:WorkspaceImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@nodeMappings[name='Empty%20Diagram']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_zOf6lEfnEeSqQ48lcu28MA"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@nodeMappings[name='Empty%20Diagram']"/>
+ </ownedDiagramElements>
+ <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
+ <filterVariableHistory xmi:type="diagram:FilterVariableHistory" xmi:id="_zOf6lUfnEeSqQ48lcu28MA"/>
+ <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
+ <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
+ <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
+ <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Archetype']/@ownedRepresentationExtensions[name='Entities%20With%20Archetypes']/@layers[name='Archetypes']"/>
+ <target xmi:type="ecore:EPackage" href="http://www.eclipse.org/ocl/3.1.0/Pivot#/"/>
+ </ownedRepresentations>
+ <ownedRepresentations xmi:type="diagram:DSemanticDiagram" xmi:id="_zPKo8EfnEeSqQ48lcu28MA" name="qvtcorebase class diagram">
+ <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_zPKo9kfnEeSqQ48lcu28MA" source="GMF_DIAGRAMS">
+ <data xmi:type="notation:Diagram" xmi:id="_zPKo90fnEeSqQ48lcu28MA" type="Sirius" element="_zPKo8EfnEeSqQ48lcu28MA" measurementUnit="Pixel">
+ <children xmi:type="notation:Node" xmi:id="_zPKo-UfnEeSqQ48lcu28MA" type="2001" element="_zPKo8UfnEeSqQ48lcu28MA">
+ <children xmi:type="notation:Node" xmi:id="_zPKo_EfnEeSqQ48lcu28MA" type="5002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zPKo_UfnEeSqQ48lcu28MA" y="5"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_zPKo_kfnEeSqQ48lcu28MA" type="3005" element="_zPKo8kfnEeSqQ48lcu28MA">
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_zPKo_0fnEeSqQ48lcu28MA" fontName="Segoe UI"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zPKpAEfnEeSqQ48lcu28MA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_zPKo-kfnEeSqQ48lcu28MA" fontName="Segoe UI" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zPKo-0fnEeSqQ48lcu28MA" width="672" height="67"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_zPKo-EfnEeSqQ48lcu28MA"/>
+ </data>
+ </ownedAnnotationEntries>
+ <ownedDiagramElements xmi:type="diagram:DNode" xmi:id="_zPKo8UfnEeSqQ48lcu28MA" width="-1" height="-1">
+ <target xmi:type="ecore:EPackage" href="http://www.eclipse.org/qvt/0.9/QVTcoreBase#/"/>
+ <semanticElements xmi:type="ecore:EPackage" href="http://www.eclipse.org/qvt/0.9/QVTcoreBase#/"/>
+ <ownedStyle xmi:type="diagram:WorkspaceImage" xmi:id="_zPKo8kfnEeSqQ48lcu28MA" showIcon="false" labelPosition="node" workspacePath="/org.eclipse.emf.ecoretools.design/icons/full/back/empty.svg">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_zPKo80fnEeSqQ48lcu28MA"/>
+ <description xmi:type="style:WorkspaceImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@nodeMappings[name='Empty%20Diagram']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_zPKo9EfnEeSqQ48lcu28MA"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@nodeMappings[name='Empty%20Diagram']"/>
+ </ownedDiagramElements>
+ <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
+ <filterVariableHistory xmi:type="diagram:FilterVariableHistory" xmi:id="_zPKo9UfnEeSqQ48lcu28MA"/>
+ <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
+ <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
+ <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
+ <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Archetype']/@ownedRepresentationExtensions[name='Entities%20With%20Archetypes']/@layers[name='Archetypes']"/>
+ <target xmi:type="ecore:EPackage" href="http://www.eclipse.org/qvt/0.9/QVTcoreBase#/"/>
+ </ownedRepresentations>
+ <ownedRepresentations xmi:type="diagram:DSemanticDiagram" xmi:id="_zPW2MEfnEeSqQ48lcu28MA" name="ecore class diagram">
+ <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_zPW2NkfnEeSqQ48lcu28MA" source="GMF_DIAGRAMS">
+ <data xmi:type="notation:Diagram" xmi:id="_zPW2N0fnEeSqQ48lcu28MA" type="Sirius" element="_zPW2MEfnEeSqQ48lcu28MA" measurementUnit="Pixel">
+ <children xmi:type="notation:Node" xmi:id="_zPW2OUfnEeSqQ48lcu28MA" type="2001" element="_zPW2MUfnEeSqQ48lcu28MA">
+ <children xmi:type="notation:Node" xmi:id="_zPW2PEfnEeSqQ48lcu28MA" type="5002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zPW2PUfnEeSqQ48lcu28MA" y="5"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_zPc80EfnEeSqQ48lcu28MA" type="3005" element="_zPW2MkfnEeSqQ48lcu28MA">
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_zPc80UfnEeSqQ48lcu28MA" fontName="Segoe UI"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zPc80kfnEeSqQ48lcu28MA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_zPW2OkfnEeSqQ48lcu28MA" fontName="Segoe UI" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zPW2O0fnEeSqQ48lcu28MA" width="672" height="67"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_zPW2OEfnEeSqQ48lcu28MA"/>
+ </data>
+ </ownedAnnotationEntries>
+ <ownedDiagramElements xmi:type="diagram:DNode" xmi:id="_zPW2MUfnEeSqQ48lcu28MA" width="-1" height="-1">
+ <target xmi:type="ecore:EPackage" href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+ <semanticElements xmi:type="ecore:EPackage" href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+ <ownedStyle xmi:type="diagram:WorkspaceImage" xmi:id="_zPW2MkfnEeSqQ48lcu28MA" showIcon="false" labelPosition="node" workspacePath="/org.eclipse.emf.ecoretools.design/icons/full/back/empty.svg">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_zPW2M0fnEeSqQ48lcu28MA"/>
+ <description xmi:type="style:WorkspaceImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@nodeMappings[name='Empty%20Diagram']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_zPW2NEfnEeSqQ48lcu28MA"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@nodeMappings[name='Empty%20Diagram']"/>
+ </ownedDiagramElements>
+ <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
+ <filterVariableHistory xmi:type="diagram:FilterVariableHistory" xmi:id="_zPW2NUfnEeSqQ48lcu28MA"/>
+ <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
+ <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
+ <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
+ <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Archetype']/@ownedRepresentationExtensions[name='Entities%20With%20Archetypes']/@layers[name='Archetypes']"/>
+ <target xmi:type="ecore:EPackage" href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+ </ownedRepresentations>
+ <ownedRepresentations xmi:type="diagram:DSemanticDiagram" xmi:id="_zPpKEEfnEeSqQ48lcu28MA" name="qvtimperative class diagram">
+ <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_zPpKFkfnEeSqQ48lcu28MA" source="GMF_DIAGRAMS">
+ <data xmi:type="notation:Diagram" xmi:id="_zPpKF0fnEeSqQ48lcu28MA" type="Sirius" element="_zPpKEEfnEeSqQ48lcu28MA" measurementUnit="Pixel">
+ <children xmi:type="notation:Node" xmi:id="_zPpKGUfnEeSqQ48lcu28MA" type="2001" element="_zPpKEUfnEeSqQ48lcu28MA">
+ <children xmi:type="notation:Node" xmi:id="_zPvQsEfnEeSqQ48lcu28MA" type="5002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zPvQsUfnEeSqQ48lcu28MA" y="5"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_zPvQskfnEeSqQ48lcu28MA" type="3005" element="_zPpKEkfnEeSqQ48lcu28MA">
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_zPvQs0fnEeSqQ48lcu28MA" fontName="Segoe UI"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zPvQtEfnEeSqQ48lcu28MA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_zPpKGkfnEeSqQ48lcu28MA" fontName="Segoe UI" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zPpKG0fnEeSqQ48lcu28MA" width="672" height="67"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_zPpKGEfnEeSqQ48lcu28MA"/>
+ </data>
+ </ownedAnnotationEntries>
+ <ownedDiagramElements xmi:type="diagram:DNode" xmi:id="_zPpKEUfnEeSqQ48lcu28MA" width="-1" height="-1">
+ <target xmi:type="ecore:EPackage" href="http://www.eclipse.org/qvt/0.9/QVTimperative#/"/>
+ <semanticElements xmi:type="ecore:EPackage" href="http://www.eclipse.org/qvt/0.9/QVTimperative#/"/>
+ <ownedStyle xmi:type="diagram:WorkspaceImage" xmi:id="_zPpKEkfnEeSqQ48lcu28MA" showIcon="false" labelPosition="node" workspacePath="/org.eclipse.emf.ecoretools.design/icons/full/back/empty.svg">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_zPpKE0fnEeSqQ48lcu28MA"/>
+ <description xmi:type="style:WorkspaceImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@nodeMappings[name='Empty%20Diagram']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_zPpKFEfnEeSqQ48lcu28MA"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@nodeMappings[name='Empty%20Diagram']"/>
+ </ownedDiagramElements>
+ <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
+ <filterVariableHistory xmi:type="diagram:FilterVariableHistory" xmi:id="_zPpKFUfnEeSqQ48lcu28MA"/>
+ <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
+ <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
+ <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
+ <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Archetype']/@ownedRepresentationExtensions[name='Entities%20With%20Archetypes']/@layers[name='Archetypes']"/>
+ <target xmi:type="ecore:EPackage" href="http://www.eclipse.org/qvt/0.9/QVTimperative#/"/>
+ </ownedRepresentations>
+ <ownedRepresentations xmi:type="diagram:DSemanticDiagram" xmi:id="_3UUgcEfnEeSqQ48lcu28MA" name="QVTschedule class diagram">
+ <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_3UUgdkfnEeSqQ48lcu28MA" source="GMF_DIAGRAMS">
+ <data xmi:type="notation:Diagram" xmi:id="_3UUgd0fnEeSqQ48lcu28MA" type="Sirius" element="_3UUgcEfnEeSqQ48lcu28MA" measurementUnit="Pixel">
+ <children xmi:type="notation:Node" xmi:id="_BI7OEEfoEeSqQ48lcu28MA" type="2003" element="_BEidUEfoEeSqQ48lcu28MA">
+ <children xmi:type="notation:Node" xmi:id="_BJBUsEfoEeSqQ48lcu28MA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_BJHbUEfoEeSqQ48lcu28MA" type="7004">
+ <children xmi:type="notation:Node" xmi:id="_BJf10EfoEeSqQ48lcu28MA" type="3010" element="_BGiocEfoEeSqQ48lcu28MA">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_BJf10UfoEeSqQ48lcu28MA"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_BJHbUUfoEeSqQ48lcu28MA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_BJHbUkfoEeSqQ48lcu28MA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_BI7OEUfoEeSqQ48lcu28MA" fontName="Segoe UI" fontHeight="8" italic="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BI7OEkfoEeSqQ48lcu28MA" x="415" y="160" height="83"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BJHbU0foEeSqQ48lcu28MA" type="2003" element="_BFlmMEfoEeSqQ48lcu28MA">
+ <children xmi:type="notation:Node" xmi:id="_BJHbVkfoEeSqQ48lcu28MA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_BJHbV0foEeSqQ48lcu28MA" type="7004">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_BJHbWEfoEeSqQ48lcu28MA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_BJHbWUfoEeSqQ48lcu28MA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_BJHbVEfoEeSqQ48lcu28MA" fontName="Segoe UI" fontHeight="8" italic="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BJHbVUfoEeSqQ48lcu28MA" x="90" y="170" height="63"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BJNh8EfoEeSqQ48lcu28MA" type="2003" element="_BFlmNkfoEeSqQ48lcu28MA">
+ <children xmi:type="notation:Node" xmi:id="_BJNh80foEeSqQ48lcu28MA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_BJNh9EfoEeSqQ48lcu28MA" type="7004">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_BJNh9UfoEeSqQ48lcu28MA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_BJNh9kfoEeSqQ48lcu28MA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_BJNh8UfoEeSqQ48lcu28MA" fontName="Segoe UI" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BJNh8kfoEeSqQ48lcu28MA" x="84" y="21" height="48"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BJNh90foEeSqQ48lcu28MA" type="2003" element="_BFlmPEfoEeSqQ48lcu28MA">
+ <children xmi:type="notation:Node" xmi:id="_BJNh-kfoEeSqQ48lcu28MA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_BJNh-0foEeSqQ48lcu28MA" type="7004">
+ <children xmi:type="notation:Node" xmi:id="_BJf10kfoEeSqQ48lcu28MA" type="3010" element="_BGovEEfoEeSqQ48lcu28MA">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_BJf100foEeSqQ48lcu28MA"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_BJNh_EfoEeSqQ48lcu28MA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_BJNh_UfoEeSqQ48lcu28MA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_BJNh-EfoEeSqQ48lcu28MA" fontName="Segoe UI" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BJNh-UfoEeSqQ48lcu28MA" x="120" y="330" height="63"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BJNh_kfoEeSqQ48lcu28MA" type="2003" element="_BFrs1UfoEeSqQ48lcu28MA">
+ <children xmi:type="notation:Node" xmi:id="_BJNiAUfoEeSqQ48lcu28MA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_BJTokEfoEeSqQ48lcu28MA" type="7004">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_BJTokUfoEeSqQ48lcu28MA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_BJTokkfoEeSqQ48lcu28MA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_BJNh_0foEeSqQ48lcu28MA" fontName="Segoe UI" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BJNiAEfoEeSqQ48lcu28MA" x="137" y="405" height="58"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BJTok0foEeSqQ48lcu28MA" type="2003" element="_BFrs20foEeSqQ48lcu28MA">
+ <children xmi:type="notation:Node" xmi:id="_BJTolkfoEeSqQ48lcu28MA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_BJTol0foEeSqQ48lcu28MA" type="7004">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_BJTomEfoEeSqQ48lcu28MA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_BJTomUfoEeSqQ48lcu28MA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_BJTolEfoEeSqQ48lcu28MA" fontName="Segoe UI" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BJTolUfoEeSqQ48lcu28MA" x="580" y="300" height="48"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BJTomkfoEeSqQ48lcu28MA" type="2003" element="_BFxzdUfoEeSqQ48lcu28MA">
+ <children xmi:type="notation:Node" xmi:id="_BJTonUfoEeSqQ48lcu28MA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_BJTonkfoEeSqQ48lcu28MA" type="7004">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_BJTon0foEeSqQ48lcu28MA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_BJTooEfoEeSqQ48lcu28MA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_BJTom0foEeSqQ48lcu28MA" fontName="Segoe UI" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BJTonEfoEeSqQ48lcu28MA" x="505" y="360" height="53"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BJZvMEfoEeSqQ48lcu28MA" type="2003" element="_BFxze0foEeSqQ48lcu28MA">
+ <children xmi:type="notation:Node" xmi:id="_BJZvM0foEeSqQ48lcu28MA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_BJZvNEfoEeSqQ48lcu28MA" type="7004">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_BJZvNUfoEeSqQ48lcu28MA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_BJZvNkfoEeSqQ48lcu28MA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_BJZvMUfoEeSqQ48lcu28MA" fontName="Segoe UI" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BJZvMkfoEeSqQ48lcu28MA" x="455" y="425" height="48"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BJZvN0foEeSqQ48lcu28MA" type="2003" element="_BFxzgUfoEeSqQ48lcu28MA">
+ <children xmi:type="notation:Node" xmi:id="_BJZvOkfoEeSqQ48lcu28MA" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_BJZvO0foEeSqQ48lcu28MA" type="7004">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_BJZvPEfoEeSqQ48lcu28MA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_BJZvPUfoEeSqQ48lcu28MA"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_BJZvOEfoEeSqQ48lcu28MA" fontName="Segoe UI" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BJZvOUfoEeSqQ48lcu28MA" x="255" y="20" height="50"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_3UUgeEfnEeSqQ48lcu28MA"/>
+ <edges xmi:type="notation:Edge" xmi:id="_BKc4EEfoEeSqQ48lcu28MA" type="4001" element="_BG08UEfoEeSqQ48lcu28MA" source="_BJHbU0foEeSqQ48lcu28MA" target="_BJHbU0foEeSqQ48lcu28MA">
+ <children xmi:type="notation:Node" xmi:id="_BKc4FEfoEeSqQ48lcu28MA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BKc4FUfoEeSqQ48lcu28MA" x="11" y="-27"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BKc4FkfoEeSqQ48lcu28MA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BKc4F0foEeSqQ48lcu28MA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BKc4GEfoEeSqQ48lcu28MA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BKc4GUfoEeSqQ48lcu28MA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_BKc4EUfoEeSqQ48lcu28MA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_BKc4EkfoEeSqQ48lcu28MA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_BKc4E0foEeSqQ48lcu28MA" points="[-59, -5, -59, -5]$[-84, -5, -84, -5]$[-84, 60, -84, 60]$[-24, 60, -24, 60]$[-24, 31, -24, 31]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BLBf0EfoEeSqQ48lcu28MA" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BLBf0UfoEeSqQ48lcu28MA" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_BLBf0kfoEeSqQ48lcu28MA" type="4001" element="_BHHQMEfoEeSqQ48lcu28MA" source="_BJNh8EfoEeSqQ48lcu28MA" target="_BJHbU0foEeSqQ48lcu28MA">
+ <children xmi:type="notation:Node" xmi:id="_BLBf1kfoEeSqQ48lcu28MA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLBf10foEeSqQ48lcu28MA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BLBf2EfoEeSqQ48lcu28MA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLBf2UfoEeSqQ48lcu28MA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BLBf2kfoEeSqQ48lcu28MA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLBf20foEeSqQ48lcu28MA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_BLBf00foEeSqQ48lcu28MA" routing="Tree"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_BLBf1EfoEeSqQ48lcu28MA" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_BLBf1UfoEeSqQ48lcu28MA" points="[0, 43, 7, -149]$[0, 67, 7, -125]$[-1, 67, 6, -125]$[-1, 142, 6, -50]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BLHmcEfoEeSqQ48lcu28MA" id="(0.35,0.08333333333333333)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BLHmcUfoEeSqQ48lcu28MA" id="(0.25,0.83)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_BLHmfkfoEeSqQ48lcu28MA" type="4001" element="_BHNW1kfoEeSqQ48lcu28MA" source="_BJTomkfoEeSqQ48lcu28MA" target="_BI7OEEfoEeSqQ48lcu28MA">
+ <children xmi:type="notation:Node" xmi:id="_BLHmgkfoEeSqQ48lcu28MA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLHmg0foEeSqQ48lcu28MA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BLHmhEfoEeSqQ48lcu28MA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLHmhUfoEeSqQ48lcu28MA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BLHmhkfoEeSqQ48lcu28MA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLHmh0foEeSqQ48lcu28MA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_BLHmf0foEeSqQ48lcu28MA" routing="Tree"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_BLHmgEfoEeSqQ48lcu28MA" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_BLHmgUfoEeSqQ48lcu28MA" points="[0, 0, 125, 137]$[0, -100, 125, 37]$[-124, -100, 1, 37]$[-124, -137, 1, 0]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BLNtEUfoEeSqQ48lcu28MA" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_BLNtEkfoEeSqQ48lcu28MA" type="4001" element="_BHNW3UfoEeSqQ48lcu28MA" source="_BJZvMEfoEeSqQ48lcu28MA" target="_BI7OEEfoEeSqQ48lcu28MA">
+ <children xmi:type="notation:Node" xmi:id="_BLNtFkfoEeSqQ48lcu28MA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLNtF0foEeSqQ48lcu28MA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BLNtGEfoEeSqQ48lcu28MA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLNtGUfoEeSqQ48lcu28MA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BLNtGkfoEeSqQ48lcu28MA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLNtG0foEeSqQ48lcu28MA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_BLNtE0foEeSqQ48lcu28MA" routing="Tree"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_BLNtFEfoEeSqQ48lcu28MA" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_BLNtFUfoEeSqQ48lcu28MA" points="[0, -21, -17, 184]$[0, -156, -17, 49]$[33, -156, 16, 49]$[33, -205, 16, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BLNtHEfoEeSqQ48lcu28MA" id="(0.025,0.47)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BLNtHUfoEeSqQ48lcu28MA" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_BLNtHkfoEeSqQ48lcu28MA" type="4001" element="_BHTdcEfoEeSqQ48lcu28MA" source="_BI7OEEfoEeSqQ48lcu28MA" target="_BJNh_kfoEeSqQ48lcu28MA">
+ <children xmi:type="notation:Node" xmi:id="_BLNtIkfoEeSqQ48lcu28MA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLNtI0foEeSqQ48lcu28MA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BLNtJEfoEeSqQ48lcu28MA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLNtJUfoEeSqQ48lcu28MA" x="-63" y="36"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BLNtJkfoEeSqQ48lcu28MA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLNtJ0foEeSqQ48lcu28MA" x="-21" y="14"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_BLNtH0foEeSqQ48lcu28MA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_BLNtIEfoEeSqQ48lcu28MA" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_BLNtIUfoEeSqQ48lcu28MA" points="[-44, 81, 234, -220]$[-44, 330, 234, 29]$[-290, 330, -12, 29]$[-290, 301, -12, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BLNtKEfoEeSqQ48lcu28MA" id="(0.5,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BLNtKUfoEeSqQ48lcu28MA" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_BLNtKkfoEeSqQ48lcu28MA" type="4001" element="_BHZkHUfoEeSqQ48lcu28MA" source="_BJNh90foEeSqQ48lcu28MA" target="_BJNh_kfoEeSqQ48lcu28MA">
+ <children xmi:type="notation:Node" xmi:id="_BLTzsEfoEeSqQ48lcu28MA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLTzsUfoEeSqQ48lcu28MA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BLTzskfoEeSqQ48lcu28MA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLTzs0foEeSqQ48lcu28MA" x="49" y="-14"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BLTztEfoEeSqQ48lcu28MA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLTztUfoEeSqQ48lcu28MA" x="-51" y="-11"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_BLNtK0foEeSqQ48lcu28MA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_BLNtLEfoEeSqQ48lcu28MA" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_BLNtLUfoEeSqQ48lcu28MA" points="[76, 25, 75, -106]$[110, 25, 109, -106]$[110, 85, 109, -46]$[60, 85, 59, -46]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BLTztkfoEeSqQ48lcu28MA" id="(0.49673202614379086,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BLTzt0foEeSqQ48lcu28MA" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_BLTzuEfoEeSqQ48lcu28MA" type="4001" element="_BHZkKkfoEeSqQ48lcu28MA" source="_BI7OEEfoEeSqQ48lcu28MA" target="_BJHbU0foEeSqQ48lcu28MA">
+ <children xmi:type="notation:Node" xmi:id="_BLTzvEfoEeSqQ48lcu28MA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLTzvUfoEeSqQ48lcu28MA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BLTzvkfoEeSqQ48lcu28MA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLTzv0foEeSqQ48lcu28MA" x="17" y="9"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BLTzwEfoEeSqQ48lcu28MA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLTzwUfoEeSqQ48lcu28MA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_BLTzuUfoEeSqQ48lcu28MA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_BLTzukfoEeSqQ48lcu28MA" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_BLTzu0foEeSqQ48lcu28MA" points="[-59, 60, 326, -11]$[-326, 60, 59, -11]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BLTzwkfoEeSqQ48lcu28MA" id="(0.5,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BLTzw0foEeSqQ48lcu28MA" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_BLTzxEfoEeSqQ48lcu28MA" type="4001" element="_BHfqsEfoEeSqQ48lcu28MA" source="_BJHbU0foEeSqQ48lcu28MA" target="_BJNh90foEeSqQ48lcu28MA">
+ <children xmi:type="notation:Node" xmi:id="_BLZ6UEfoEeSqQ48lcu28MA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLZ6UUfoEeSqQ48lcu28MA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BLZ6UkfoEeSqQ48lcu28MA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLZ6U0foEeSqQ48lcu28MA" x="5" y="-39"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BLZ6VEfoEeSqQ48lcu28MA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLZ6VUfoEeSqQ48lcu28MA" x="1" y="56"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_BLTzxUfoEeSqQ48lcu28MA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_BLTzxkfoEeSqQ48lcu28MA" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_BLTzx0foEeSqQ48lcu28MA" points="[1, 61, -80, -205]$[1, 90, -80, -176]$[61, 90, -20, -176]$[61, 205, -20, -61]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BLZ6VkfoEeSqQ48lcu28MA" id="(0.5,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BLZ6V0foEeSqQ48lcu28MA" id="(0.49673202614379086,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_BLZ6WEfoEeSqQ48lcu28MA" type="4001" element="_BHfqt0foEeSqQ48lcu28MA" source="_BJHbU0foEeSqQ48lcu28MA" target="_BJZvN0foEeSqQ48lcu28MA">
+ <children xmi:type="notation:Node" xmi:id="_BLZ6XEfoEeSqQ48lcu28MA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLZ6XUfoEeSqQ48lcu28MA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BLgA8EfoEeSqQ48lcu28MA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLgA8UfoEeSqQ48lcu28MA" x="-21" y="40"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BLgA8kfoEeSqQ48lcu28MA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLgA80foEeSqQ48lcu28MA" x="22" y="-45"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_BLZ6WUfoEeSqQ48lcu28MA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_BLZ6WkfoEeSqQ48lcu28MA" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_BLZ6W0foEeSqQ48lcu28MA" points="[0, 0, -170, 47]$[0, -25, -170, 22]$[131, -25, -39, 22]$[131, -47, -39, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BLgA9EfoEeSqQ48lcu28MA" id="(0.5,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BLgA9UfoEeSqQ48lcu28MA" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_BLgA9kfoEeSqQ48lcu28MA" type="4001" element="_BHfqxEfoEeSqQ48lcu28MA" source="_BI7OEEfoEeSqQ48lcu28MA" target="_BJHbU0foEeSqQ48lcu28MA">
+ <children xmi:type="notation:Node" xmi:id="_BLgA-kfoEeSqQ48lcu28MA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLgA-0foEeSqQ48lcu28MA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BLgA_EfoEeSqQ48lcu28MA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLgA_UfoEeSqQ48lcu28MA" x="26" y="9"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BLgA_kfoEeSqQ48lcu28MA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLgA_0foEeSqQ48lcu28MA" x="-14" y="9"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_BLgA90foEeSqQ48lcu28MA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_BLgA-EfoEeSqQ48lcu28MA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_BLgA-UfoEeSqQ48lcu28MA" points="[-59, 35, 326, -36]$[-326, 35, 59, -36]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BLmHkEfoEeSqQ48lcu28MA" id="(0.5,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BLmHkUfoEeSqQ48lcu28MA" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_BLmHkkfoEeSqQ48lcu28MA" type="4001" element="_BHfq0UfoEeSqQ48lcu28MA" source="_BI7OEEfoEeSqQ48lcu28MA" target="_BI7OEEfoEeSqQ48lcu28MA">
+ <children xmi:type="notation:Node" xmi:id="_BLmHlkfoEeSqQ48lcu28MA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLmHl0foEeSqQ48lcu28MA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BLmHmEfoEeSqQ48lcu28MA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLmHmUfoEeSqQ48lcu28MA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BLmHmkfoEeSqQ48lcu28MA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLmHm0foEeSqQ48lcu28MA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_BLmHk0foEeSqQ48lcu28MA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_BLmHlEfoEeSqQ48lcu28MA" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_BLmHlUfoEeSqQ48lcu28MA" points="[59, 31, 59, 31]$[126, 31, 126, 31]$[126, -89, 126, -89]$[31, -89, 31, -89]$[31, -49, 31, -49]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BLmHnEfoEeSqQ48lcu28MA" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BLmHnUfoEeSqQ48lcu28MA" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_BLmHnkfoEeSqQ48lcu28MA" type="4001" element="_BHlxVkfoEeSqQ48lcu28MA" source="_BJNh90foEeSqQ48lcu28MA" target="_BJNh_kfoEeSqQ48lcu28MA">
+ <children xmi:type="notation:Node" xmi:id="_BLsOMEfoEeSqQ48lcu28MA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLsOMUfoEeSqQ48lcu28MA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BLsOMkfoEeSqQ48lcu28MA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLsOM0foEeSqQ48lcu28MA" x="31" y="14"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BLsONEfoEeSqQ48lcu28MA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLsONUfoEeSqQ48lcu28MA" x="-41" y="16"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_BLmHn0foEeSqQ48lcu28MA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_BLmHoEfoEeSqQ48lcu28MA" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_BLmHoUfoEeSqQ48lcu28MA" points="[-75, 25, -76, -106]$[-130, 25, -131, -106]$[-130, 100, -131, -31]$[-58, 100, -59, -31]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BLsONkfoEeSqQ48lcu28MA" id="(0.49673202614379086,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BLsON0foEeSqQ48lcu28MA" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_BLsOOEfoEeSqQ48lcu28MA" type="4001" element="_BHlxY0foEeSqQ48lcu28MA" source="_BI7OEEfoEeSqQ48lcu28MA" target="_BJZvN0foEeSqQ48lcu28MA">
+ <children xmi:type="notation:Node" xmi:id="_BLsOPEfoEeSqQ48lcu28MA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLsOPUfoEeSqQ48lcu28MA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BLsOPkfoEeSqQ48lcu28MA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLsOP0foEeSqQ48lcu28MA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_BLyU0EfoEeSqQ48lcu28MA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BLyU0UfoEeSqQ48lcu28MA" x="24" y="46"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_BLsOOUfoEeSqQ48lcu28MA" routing="Rectilinear" jumpLinkStatus="Above"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_BLsOOkfoEeSqQ48lcu28MA" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_BLsOO0foEeSqQ48lcu28MA" points="[-34, 0, 186, 92]$[-34, -50, 186, 42]$[-189, -50, 31, 42]$[-189, -92, 31, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BLyU0kfoEeSqQ48lcu28MA" id="(0.5,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BLyU00foEeSqQ48lcu28MA" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_dHy3QEfpEeSqQ48lcu28MA" type="4001" element="_BHHQN0foEeSqQ48lcu28MA" source="_BJTok0foEeSqQ48lcu28MA" target="_BI7OEEfoEeSqQ48lcu28MA">
+ <children xmi:type="notation:Node" xmi:id="_dHy3REfpEeSqQ48lcu28MA" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dHy3RUfpEeSqQ48lcu28MA" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_dHy3RkfpEeSqQ48lcu28MA" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dHy3R0fpEeSqQ48lcu28MA" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_dHy3SEfpEeSqQ48lcu28MA" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dHy3SUfpEeSqQ48lcu28MA" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_dHy3QUfpEeSqQ48lcu28MA" routing="Tree" lineColor="12632256"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_dHy3QkfpEeSqQ48lcu28MA" fontName="Segoe UI" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dHy3Q0fpEeSqQ48lcu28MA" points="[0, -23, 170, 59]$[0, -38, 170, 44]$[-169, -38, 1, 44]$[-169, -82, 1, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dHy3SkfpEeSqQ48lcu28MA" id="(0.5,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dHy3S0fpEeSqQ48lcu28MA" id="(0.5,1.0)"/>
+ </edges>
+ </data>
+ </ownedAnnotationEntries>
+ <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_BHTdcUfoEeSqQ48lcu28MA" source="DANNOTATION_CUSTOMIZATION_KEY">
+ <data xmi:type="diagram:ComputedStyleDescriptionRegistry" xmi:id="_BHTdckfoEeSqQ48lcu28MA">
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_BHZkE0foEeSqQ48lcu28MA" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <beginLabelStyleDescription xmi:type="style:BeginLabelStyleDescription" xmi:id="_BHZkFEfoEeSqQ48lcu28MA" showIcon="false" labelExpression="service:renderEOpposite">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </beginLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_BHZkFUfoEeSqQ48lcu28MA" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_BHZkIEfoEeSqQ48lcu28MA" sourceArrow="InputArrow" targetArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <beginLabelStyleDescription xmi:type="style:BeginLabelStyleDescription" xmi:id="_BHZkIUfoEeSqQ48lcu28MA" showIcon="false" labelExpression="service:renderEOpposite">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </beginLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_BHZkIkfoEeSqQ48lcu28MA" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_BHfqukfoEeSqQ48lcu28MA" sourceArrow="InputArrow" targetArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <beginLabelStyleDescription xmi:type="style:BeginLabelStyleDescription" xmi:id="_BHfqu0foEeSqQ48lcu28MA" showIcon="false" labelExpression="service:renderEOpposite">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </beginLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_BHfqvEfoEeSqQ48lcu28MA" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_BHfqx0foEeSqQ48lcu28MA" sourceArrow="InputArrow" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <beginLabelStyleDescription xmi:type="style:BeginLabelStyleDescription" xmi:id="_BHfqyEfoEeSqQ48lcu28MA" showIcon="false" labelExpression="service:renderEOpposite">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ </beginLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_BHfqyUfoEeSqQ48lcu28MA" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_BHlxWUfoEeSqQ48lcu28MA" sourceArrow="InputArrow" targetArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <beginLabelStyleDescription xmi:type="style:BeginLabelStyleDescription" xmi:id="_BHlxWkfoEeSqQ48lcu28MA" showIcon="false" labelExpression="service:renderEOpposite">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </beginLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_BHlxW0foEeSqQ48lcu28MA" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_BHlxZkfoEeSqQ48lcu28MA" sourceArrow="InputArrow" targetArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+ <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <beginLabelStyleDescription xmi:type="style:BeginLabelStyleDescription" xmi:id="_BHlxZ0foEeSqQ48lcu28MA" showIcon="false" labelExpression="service:renderEOpposite">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </beginLabelStyleDescription>
+ <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_BHlxaEfoEeSqQ48lcu28MA" showIcon="false" labelExpression="service:render">
+ <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ </endLabelStyleDescription>
+ </computedStyleDescriptions>
+ <cache xmi:type="diagram:DiagramElementMapping2ModelElement" xmi:id="_BHZkEEfoEeSqQ48lcu28MA">
+ <key xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_BHZkEUfoEeSqQ48lcu28MA">
+ <key xmi:type="ecore:EReference" href="QVTSchedule.ecore#//AbstractAction/distinctArguments"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_BHZkEkfoEeSqQ48lcu28MA" key="_BHTdcEfoEeSqQ48lcu28MA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_BHZkFkfoEeSqQ48lcu28MA" value="_BHZkE0foEeSqQ48lcu28MA">
+ <key xmi:type="ecore:EPackage" href="QVTSchedule.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_BHZkHkfoEeSqQ48lcu28MA">
+ <key xmi:type="ecore:EReference" href="QVTSchedule.ecore#//DataParameter/secondaryDistinctData"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_BHZkH0foEeSqQ48lcu28MA" key="_BHZkHUfoEeSqQ48lcu28MA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_BHZkI0foEeSqQ48lcu28MA" value="_BHZkIEfoEeSqQ48lcu28MA">
+ <key xmi:type="ecore:EPackage" href="QVTSchedule.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_BHfquEfoEeSqQ48lcu28MA">
+ <key xmi:type="ecore:EReference" href="QVTSchedule.ecore#//AbstractDatum/schedule"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_BHfquUfoEeSqQ48lcu28MA" key="_BHfqt0foEeSqQ48lcu28MA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_BHfqvUfoEeSqQ48lcu28MA" value="_BHfqukfoEeSqQ48lcu28MA">
+ <key xmi:type="ecore:EPackage" href="QVTSchedule.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_BHfqxUfoEeSqQ48lcu28MA">
+ <key xmi:type="ecore:EReference" href="QVTSchedule.ecore#//AbstractAction/arguments"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_BHfqxkfoEeSqQ48lcu28MA" key="_BHfqxEfoEeSqQ48lcu28MA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_BHfqykfoEeSqQ48lcu28MA" value="_BHfqx0foEeSqQ48lcu28MA">
+ <key xmi:type="ecore:EPackage" href="QVTSchedule.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_BHlxV0foEeSqQ48lcu28MA">
+ <key xmi:type="ecore:EReference" href="QVTSchedule.ecore#//DataParameter/primaryDistinctData"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_BHlxWEfoEeSqQ48lcu28MA" key="_BHlxVkfoEeSqQ48lcu28MA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_BHlxXEfoEeSqQ48lcu28MA" value="_BHlxWUfoEeSqQ48lcu28MA">
+ <key xmi:type="ecore:EPackage" href="QVTSchedule.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_BHlxZEfoEeSqQ48lcu28MA">
+ <key xmi:type="ecore:EReference" href="QVTSchedule.ecore#//AbstractAction/schedule"/>
+ <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_BHlxZUfoEeSqQ48lcu28MA" key="_BHlxY0foEeSqQ48lcu28MA">
+ <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_BHlxaUfoEeSqQ48lcu28MA" value="_BHlxZkfoEeSqQ48lcu28MA">
+ <key xmi:type="ecore:EPackage" href="QVTSchedule.ecore#/"/>
+ </value>
+ </value>
+ </value>
+ </cache>
+ </data>
+ </ownedAnnotationEntries>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_BEidUEfoEeSqQ48lcu28MA" name="AbstractAction" tooltipText="" outgoingEdges="_BHTdcEfoEeSqQ48lcu28MA _BHZkKkfoEeSqQ48lcu28MA _BHfqxEfoEeSqQ48lcu28MA _BHfq0UfoEeSqQ48lcu28MA _BHlxY0foEeSqQ48lcu28MA" incomingEdges="_BHHQN0foEeSqQ48lcu28MA _BHNW1kfoEeSqQ48lcu28MA _BHNW3UfoEeSqQ48lcu28MA _BHfq0UfoEeSqQ48lcu28MA" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="QVTSchedule.ecore#//AbstractAction"/>
+ <semanticElements xmi:type="ecore:EClass" href="QVTSchedule.ecore#//AbstractAction"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_BFffkEfoEeSqQ48lcu28MA" labelFormat="italic" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BFffkUfoEeSqQ48lcu28MA"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_BFffkkfoEeSqQ48lcu28MA" red="125" green="125" blue="125"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_BFffk0foEeSqQ48lcu28MA" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_BFfflEfoEeSqQ48lcu28MA" red="228" green="228" blue="228"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_BGiocEfoEeSqQ48lcu28MA" name="order : EInt = 0" tooltipText="">
+ <target xmi:type="ecore:EAttribute" href="QVTSchedule.ecore#//AbstractAction/order"/>
+ <semanticElements xmi:type="ecore:EAttribute" href="QVTSchedule.ecore#//AbstractAction/order"/>
+ <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_BGiocUfoEeSqQ48lcu28MA" labelAlignment="LEFT">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BGiockfoEeSqQ48lcu28MA"/>
+ <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_BGioc0foEeSqQ48lcu28MA"/>
+ <color xmi:type="viewpoint:RGBValues" xmi:id="_BGiodEfoEeSqQ48lcu28MA"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+ </ownedElements>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_BFlmMEfoEeSqQ48lcu28MA" name="AbstractDatum" tooltipText="" outgoingEdges="_BG08UEfoEeSqQ48lcu28MA _BHfqsEfoEeSqQ48lcu28MA _BHfqt0foEeSqQ48lcu28MA" incomingEdges="_BG08UEfoEeSqQ48lcu28MA _BHHQMEfoEeSqQ48lcu28MA _BHZkKkfoEeSqQ48lcu28MA _BHfqxEfoEeSqQ48lcu28MA" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="QVTSchedule.ecore#//AbstractDatum"/>
+ <semanticElements xmi:type="ecore:EClass" href="QVTSchedule.ecore#//AbstractDatum"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_BFlmMUfoEeSqQ48lcu28MA" labelFormat="italic" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BFlmMkfoEeSqQ48lcu28MA"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_BFlmM0foEeSqQ48lcu28MA" red="125" green="125" blue="125"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_BFlmNEfoEeSqQ48lcu28MA" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_BFlmNUfoEeSqQ48lcu28MA" red="228" green="228" blue="228"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_BFlmNkfoEeSqQ48lcu28MA" name="ClassDatum" tooltipText="" outgoingEdges="_BHHQMEfoEeSqQ48lcu28MA" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="QVTSchedule.ecore#//ClassDatum"/>
+ <semanticElements xmi:type="ecore:EClass" href="QVTSchedule.ecore#//ClassDatum"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_BFlmN0foEeSqQ48lcu28MA" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BFlmOEfoEeSqQ48lcu28MA"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_BFlmOUfoEeSqQ48lcu28MA"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_BFlmOkfoEeSqQ48lcu28MA" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_BFlmO0foEeSqQ48lcu28MA" red="255" green="252" blue="216"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_BFlmPEfoEeSqQ48lcu28MA" name="DataParameter" tooltipText="" outgoingEdges="_BHZkHUfoEeSqQ48lcu28MA _BHlxVkfoEeSqQ48lcu28MA" incomingEdges="_BHfqsEfoEeSqQ48lcu28MA" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="QVTSchedule.ecore#//DataParameter"/>
+ <semanticElements xmi:type="ecore:EClass" href="QVTSchedule.ecore#//DataParameter"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_BFrs0EfoEeSqQ48lcu28MA" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BFrs0UfoEeSqQ48lcu28MA"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_BFrs0kfoEeSqQ48lcu28MA"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_BFrs00foEeSqQ48lcu28MA" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_BFrs1EfoEeSqQ48lcu28MA" red="255" green="252" blue="216"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_BGovEEfoEeSqQ48lcu28MA" name="isLoop : EBoolean = false" tooltipText="">
+ <target xmi:type="ecore:EAttribute" href="QVTSchedule.ecore#//DataParameter/isLoop"/>
+ <semanticElements xmi:type="ecore:EAttribute" href="QVTSchedule.ecore#//DataParameter/isLoop"/>
+ <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_BGovEUfoEeSqQ48lcu28MA" labelAlignment="LEFT">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BGovEkfoEeSqQ48lcu28MA"/>
+ <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_BGovE0foEeSqQ48lcu28MA"/>
+ <color xmi:type="viewpoint:RGBValues" xmi:id="_BGovFEfoEeSqQ48lcu28MA"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+ </ownedElements>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_BFrs1UfoEeSqQ48lcu28MA" name="DistinctData" tooltipText="" incomingEdges="_BHTdcEfoEeSqQ48lcu28MA _BHZkHUfoEeSqQ48lcu28MA _BHlxVkfoEeSqQ48lcu28MA" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="QVTSchedule.ecore#//DistinctData"/>
+ <semanticElements xmi:type="ecore:EClass" href="QVTSchedule.ecore#//DistinctData"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_BFrs1kfoEeSqQ48lcu28MA" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BFrs10foEeSqQ48lcu28MA"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_BFrs2EfoEeSqQ48lcu28MA"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_BFrs2UfoEeSqQ48lcu28MA" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_BFrs2kfoEeSqQ48lcu28MA" red="255" green="252" blue="216"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_BFrs20foEeSqQ48lcu28MA" name="InputAction" tooltipText="" outgoingEdges="_BHHQN0foEeSqQ48lcu28MA" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="QVTSchedule.ecore#//InputAction"/>
+ <semanticElements xmi:type="ecore:EClass" href="QVTSchedule.ecore#//InputAction"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_fEAsUEfpEeSqQ48lcu28MA" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_fEAsUUfpEeSqQ48lcu28MA"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_fEAsUkfpEeSqQ48lcu28MA"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_fEAsU0fpEeSqQ48lcu28MA" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_fEAsVEfpEeSqQ48lcu28MA" red="255" green="252" blue="216"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_BFxzdUfoEeSqQ48lcu28MA" name="MappingAction" tooltipText="" outgoingEdges="_BHNW1kfoEeSqQ48lcu28MA" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="QVTSchedule.ecore#//MappingAction"/>
+ <semanticElements xmi:type="ecore:EClass" href="QVTSchedule.ecore#//MappingAction"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_BFxzdkfoEeSqQ48lcu28MA" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BFxzd0foEeSqQ48lcu28MA"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_BFxzeEfoEeSqQ48lcu28MA"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_BFxzeUfoEeSqQ48lcu28MA" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_BFxzekfoEeSqQ48lcu28MA" red="255" green="252" blue="216"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_BFxze0foEeSqQ48lcu28MA" name="OutputAction" tooltipText="" outgoingEdges="_BHNW3UfoEeSqQ48lcu28MA" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="QVTSchedule.ecore#//OutputAction"/>
+ <semanticElements xmi:type="ecore:EClass" href="QVTSchedule.ecore#//OutputAction"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_BFxzfEfoEeSqQ48lcu28MA" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BFxzfUfoEeSqQ48lcu28MA"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_BFxzfkfoEeSqQ48lcu28MA"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_BFxzf0foEeSqQ48lcu28MA" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_BFxzgEfoEeSqQ48lcu28MA" red="255" green="252" blue="216"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_BFxzgUfoEeSqQ48lcu28MA" name="Schedule" tooltipText="" incomingEdges="_BHfqt0foEeSqQ48lcu28MA _BHlxY0foEeSqQ48lcu28MA" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="QVTSchedule.ecore#//Schedule"/>
+ <semanticElements xmi:type="ecore:EClass" href="QVTSchedule.ecore#//Schedule"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_BF36EEfoEeSqQ48lcu28MA" backgroundStyle="Liquid">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BF36EUfoEeSqQ48lcu28MA"/>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+ <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_BF36EkfoEeSqQ48lcu28MA"/>
+ <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_BF36E0foEeSqQ48lcu28MA" red="255" green="255" blue="255"/>
+ <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_BF36FEfoEeSqQ48lcu28MA" red="255" green="252" blue="216"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_BG08UEfoEeSqQ48lcu28MA" name="[0..*] super" sourceNode="_BFlmMEfoEeSqQ48lcu28MA" targetNode="_BFlmMEfoEeSqQ48lcu28MA">
+ <target xmi:type="ecore:EReference" href="QVTSchedule.ecore#//AbstractDatum/super"/>
+ <semanticElements xmi:type="ecore:EReference" href="QVTSchedule.ecore#//AbstractDatum/super"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_BHBJkEfoEeSqQ48lcu28MA" routingStyle="manhattan">
+ <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_BHBJkUfoEeSqQ48lcu28MA"/>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_BHBJkkfoEeSqQ48lcu28MA" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BHBJk0foEeSqQ48lcu28MA"/>
+ </centerLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_BHBJlEfoEeSqQ48lcu28MA" showIcon="false">
+ <customFeatures>labelSize</customFeatures>
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BHBJlUfoEeSqQ48lcu28MA" red="39" green="76" blue="114"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_BHHQMEfoEeSqQ48lcu28MA" sourceNode="_BFlmNkfoEeSqQ48lcu28MA" targetNode="_BFlmMEfoEeSqQ48lcu28MA">
+ <target xmi:type="ecore:EClass" href="QVTSchedule.ecore#//ClassDatum"/>
+ <semanticElements xmi:type="ecore:EGenericType" href="QVTSchedule.ecore#//ClassDatum/@eGenericSuperTypes.0"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_BHHQMUfoEeSqQ48lcu28MA" targetArrow="InputClosedArrow" routingStyle="tree">
+ <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_BHHQMkfoEeSqQ48lcu28MA" red="136" green="136" blue="136"/>
+ <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_BHHQM0foEeSqQ48lcu28MA" labelFormat="italic" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BHHQNEfoEeSqQ48lcu28MA"/>
+ </beginLabelStyle>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_BHHQNUfoEeSqQ48lcu28MA" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BHHQNkfoEeSqQ48lcu28MA"/>
+ </centerLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_BHHQN0foEeSqQ48lcu28MA" sourceNode="_BFrs20foEeSqQ48lcu28MA" targetNode="_BEidUEfoEeSqQ48lcu28MA">
+ <target xmi:type="ecore:EClass" href="QVTSchedule.ecore#//InputAction"/>
+ <semanticElements xmi:type="ecore:EGenericType" href="QVTSchedule.ecore#//InputAction/@eGenericSuperTypes.0"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_fETAMEfpEeSqQ48lcu28MA" targetArrow="InputClosedArrow" routingStyle="tree">
+ <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_fETAMUfpEeSqQ48lcu28MA" red="136" green="136" blue="136"/>
+ <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_fETAMkfpEeSqQ48lcu28MA" labelFormat="italic" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_fETAM0fpEeSqQ48lcu28MA"/>
+ </beginLabelStyle>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_fETANEfpEeSqQ48lcu28MA" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_fETANUfpEeSqQ48lcu28MA"/>
+ </centerLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_BHNW1kfoEeSqQ48lcu28MA" sourceNode="_BFxzdUfoEeSqQ48lcu28MA" targetNode="_BEidUEfoEeSqQ48lcu28MA">
+ <target xmi:type="ecore:EClass" href="QVTSchedule.ecore#//MappingAction"/>
+ <semanticElements xmi:type="ecore:EGenericType" href="QVTSchedule.ecore#//MappingAction/@eGenericSuperTypes.0"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_BHNW10foEeSqQ48lcu28MA" targetArrow="InputClosedArrow" routingStyle="tree">
+ <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_BHNW2EfoEeSqQ48lcu28MA" red="136" green="136" blue="136"/>
+ <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_BHNW2UfoEeSqQ48lcu28MA" labelFormat="italic" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BHNW2kfoEeSqQ48lcu28MA"/>
+ </beginLabelStyle>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_BHNW20foEeSqQ48lcu28MA" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BHNW3EfoEeSqQ48lcu28MA"/>
+ </centerLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_BHNW3UfoEeSqQ48lcu28MA" sourceNode="_BFxze0foEeSqQ48lcu28MA" targetNode="_BEidUEfoEeSqQ48lcu28MA">
+ <target xmi:type="ecore:EClass" href="QVTSchedule.ecore#//OutputAction"/>
+ <semanticElements xmi:type="ecore:EGenericType" href="QVTSchedule.ecore#//OutputAction/@eGenericSuperTypes.0"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_BHNW3kfoEeSqQ48lcu28MA" targetArrow="InputClosedArrow" routingStyle="tree">
+ <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_BHNW30foEeSqQ48lcu28MA" red="136" green="136" blue="136"/>
+ <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_BHNW4EfoEeSqQ48lcu28MA" labelFormat="italic" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BHNW4UfoEeSqQ48lcu28MA"/>
+ </beginLabelStyle>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_BHNW4kfoEeSqQ48lcu28MA" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BHNW40foEeSqQ48lcu28MA"/>
+ </centerLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_BHTdcEfoEeSqQ48lcu28MA" sourceNode="_BEidUEfoEeSqQ48lcu28MA" targetNode="_BFrs1UfoEeSqQ48lcu28MA" beginLabel="[0..1] target" endLabel="[0..*] distinctArguments">
+ <target xmi:type="ecore:EReference" href="QVTSchedule.ecore#//AbstractAction/distinctArguments"/>
+ <semanticElements xmi:type="ecore:EReference" href="QVTSchedule.ecore#//AbstractAction/distinctArguments"/>
+ <semanticElements xmi:type="ecore:EReference" href="QVTSchedule.ecore#//DistinctData/target"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_BHZkF0foEeSqQ48lcu28MA" description="_BHZkE0foEeSqQ48lcu28MA" sourceArrow="FillDiamond" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_BHZkGEfoEeSqQ48lcu28MA"/>
+ <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_BHZkGUfoEeSqQ48lcu28MA" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BHZkGkfoEeSqQ48lcu28MA"/>
+ </beginLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_BHZkG0foEeSqQ48lcu28MA" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BHZkHEfoEeSqQ48lcu28MA"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_BHZkHUfoEeSqQ48lcu28MA" sourceNode="_BFlmPEfoEeSqQ48lcu28MA" targetNode="_BFrs1UfoEeSqQ48lcu28MA" beginLabel="[0..*] secondaryArguments" endLabel="[0..1] secondaryDistinctData">
+ <target xmi:type="ecore:EReference" href="QVTSchedule.ecore#//DataParameter/secondaryDistinctData"/>
+ <semanticElements xmi:type="ecore:EReference" href="QVTSchedule.ecore#//DistinctData/secondaryArguments"/>
+ <semanticElements xmi:type="ecore:EReference" href="QVTSchedule.ecore#//DataParameter/secondaryDistinctData"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_BHZkJEfoEeSqQ48lcu28MA" description="_BHZkIEfoEeSqQ48lcu28MA" sourceArrow="InputArrow" targetArrow="FillDiamond" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_BHZkJUfoEeSqQ48lcu28MA"/>
+ <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_BHZkJkfoEeSqQ48lcu28MA" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BHZkJ0foEeSqQ48lcu28MA"/>
+ </beginLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_BHZkKEfoEeSqQ48lcu28MA" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BHZkKUfoEeSqQ48lcu28MA"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_BHZkKkfoEeSqQ48lcu28MA" sourceNode="_BEidUEfoEeSqQ48lcu28MA" targetNode="_BFlmMEfoEeSqQ48lcu28MA" beginLabel="[0..*] sources" endLabel="[0..*] results">
+ <target xmi:type="ecore:EReference" href="QVTSchedule.ecore#//AbstractAction/results"/>
+ <semanticElements xmi:type="ecore:EReference" href="QVTSchedule.ecore#//AbstractAction/results"/>
+ <semanticElements xmi:type="ecore:EReference" href="QVTSchedule.ecore#//AbstractDatum/sources"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_BHZkK0foEeSqQ48lcu28MA" sourceArrow="InputArrow" routingStyle="manhattan">
+ <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']/@style"/>
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_BHZkLEfoEeSqQ48lcu28MA"/>
+ <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_BHZkLUfoEeSqQ48lcu28MA" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BHZkLkfoEeSqQ48lcu28MA"/>
+ </beginLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_BHZkL0foEeSqQ48lcu28MA" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BHZkMEfoEeSqQ48lcu28MA"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_BHfqsEfoEeSqQ48lcu28MA" sourceNode="_BFlmMEfoEeSqQ48lcu28MA" targetNode="_BFlmPEfoEeSqQ48lcu28MA" beginLabel="[1..1] datum" endLabel="[0..*] dataParameter">
+ <target xmi:type="ecore:EReference" href="QVTSchedule.ecore#//AbstractDatum/dataParameter"/>
+ <semanticElements xmi:type="ecore:EReference" href="QVTSchedule.ecore#//AbstractDatum/dataParameter"/>
+ <semanticElements xmi:type="ecore:EReference" href="QVTSchedule.ecore#//DataParameter/datum"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_BHfqsUfoEeSqQ48lcu28MA" sourceArrow="InputArrow" routingStyle="manhattan">
+ <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']/@style"/>
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_BHfqskfoEeSqQ48lcu28MA"/>
+ <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_BHfqs0foEeSqQ48lcu28MA" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BHfqtEfoEeSqQ48lcu28MA"/>
+ </beginLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_BHfqtUfoEeSqQ48lcu28MA" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BHfqtkfoEeSqQ48lcu28MA"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_BHfqt0foEeSqQ48lcu28MA" sourceNode="_BFlmMEfoEeSqQ48lcu28MA" targetNode="_BFxzgUfoEeSqQ48lcu28MA" beginLabel="[0..*] datums" endLabel="[0..1] schedule">
+ <target xmi:type="ecore:EReference" href="QVTSchedule.ecore#//AbstractDatum/schedule"/>
+ <semanticElements xmi:type="ecore:EReference" href="QVTSchedule.ecore#//Schedule/datums"/>
+ <semanticElements xmi:type="ecore:EReference" href="QVTSchedule.ecore#//AbstractDatum/schedule"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_BHfqvkfoEeSqQ48lcu28MA" description="_BHfqukfoEeSqQ48lcu28MA" sourceArrow="InputArrow" targetArrow="FillDiamond" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_BHfqv0foEeSqQ48lcu28MA"/>
+ <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_BHfqwEfoEeSqQ48lcu28MA" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BHfqwUfoEeSqQ48lcu28MA"/>
+ </beginLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_BHfqwkfoEeSqQ48lcu28MA" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BHfqw0foEeSqQ48lcu28MA"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_BHfqxEfoEeSqQ48lcu28MA" sourceNode="_BEidUEfoEeSqQ48lcu28MA" targetNode="_BFlmMEfoEeSqQ48lcu28MA" beginLabel="[0..*] /targets" endLabel="[0..*] /arguments">
+ <target xmi:type="ecore:EReference" href="QVTSchedule.ecore#//AbstractAction/arguments"/>
+ <semanticElements xmi:type="ecore:EReference" href="QVTSchedule.ecore#//AbstractAction/arguments"/>
+ <semanticElements xmi:type="ecore:EReference" href="QVTSchedule.ecore#//AbstractDatum/targets"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_BHfqy0foEeSqQ48lcu28MA" description="_BHfqx0foEeSqQ48lcu28MA" sourceArrow="InputArrow" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_BHfqzEfoEeSqQ48lcu28MA" red="114" green="159" blue="207"/>
+ <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_BHfqzUfoEeSqQ48lcu28MA" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BHfqzkfoEeSqQ48lcu28MA" red="39" green="76" blue="114"/>
+ </beginLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_BHfqz0foEeSqQ48lcu28MA" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BHfq0EfoEeSqQ48lcu28MA" red="39" green="76" blue="114"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_BHfq0UfoEeSqQ48lcu28MA" sourceNode="_BEidUEfoEeSqQ48lcu28MA" targetNode="_BEidUEfoEeSqQ48lcu28MA" beginLabel="[0..*] children" endLabel="[0..1] parent">
+ <target xmi:type="ecore:EReference" href="QVTSchedule.ecore#//AbstractAction/parent"/>
+ <semanticElements xmi:type="ecore:EReference" href="QVTSchedule.ecore#//AbstractAction/children"/>
+ <semanticElements xmi:type="ecore:EReference" href="QVTSchedule.ecore#//AbstractAction/parent"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_BHlxUEfoEeSqQ48lcu28MA" sourceArrow="InputArrow" routingStyle="manhattan">
+ <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']/@style"/>
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_BHlxUUfoEeSqQ48lcu28MA"/>
+ <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_BHlxUkfoEeSqQ48lcu28MA" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BHlxU0foEeSqQ48lcu28MA"/>
+ </beginLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_BHlxVEfoEeSqQ48lcu28MA" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BHlxVUfoEeSqQ48lcu28MA"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_BHlxVkfoEeSqQ48lcu28MA" sourceNode="_BFlmPEfoEeSqQ48lcu28MA" targetNode="_BFrs1UfoEeSqQ48lcu28MA" beginLabel="[1..*] primaryArguments" endLabel="[0..1] primaryDistinctData">
+ <target xmi:type="ecore:EReference" href="QVTSchedule.ecore#//DataParameter/primaryDistinctData"/>
+ <semanticElements xmi:type="ecore:EReference" href="QVTSchedule.ecore#//DistinctData/primaryArguments"/>
+ <semanticElements xmi:type="ecore:EReference" href="QVTSchedule.ecore#//DataParameter/primaryDistinctData"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_BHlxXUfoEeSqQ48lcu28MA" description="_BHlxWUfoEeSqQ48lcu28MA" sourceArrow="InputArrow" targetArrow="FillDiamond" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_BHlxXkfoEeSqQ48lcu28MA"/>
+ <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_BHlxX0foEeSqQ48lcu28MA" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BHlxYEfoEeSqQ48lcu28MA"/>
+ </beginLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_BHlxYUfoEeSqQ48lcu28MA" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BHlxYkfoEeSqQ48lcu28MA"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_BHlxY0foEeSqQ48lcu28MA" sourceNode="_BEidUEfoEeSqQ48lcu28MA" targetNode="_BFxzgUfoEeSqQ48lcu28MA" beginLabel="[0..*] actions" endLabel="[0..1] schedule">
+ <target xmi:type="ecore:EReference" href="QVTSchedule.ecore#//AbstractAction/schedule"/>
+ <semanticElements xmi:type="ecore:EReference" href="QVTSchedule.ecore#//Schedule/actions"/>
+ <semanticElements xmi:type="ecore:EReference" href="QVTSchedule.ecore#//AbstractAction/schedule"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_BHlxakfoEeSqQ48lcu28MA" description="_BHlxZkfoEeSqQ48lcu28MA" sourceArrow="InputArrow" targetArrow="FillDiamond" routingStyle="manhattan">
+ <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_BHlxa0foEeSqQ48lcu28MA"/>
+ <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_BHlxbEfoEeSqQ48lcu28MA" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BHlxbUfoEeSqQ48lcu28MA"/>
+ </beginLabelStyle>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_BHlxbkfoEeSqQ48lcu28MA" showIcon="false">
+ <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_BHlxb0foEeSqQ48lcu28MA"/>
+ </endLabelStyle>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
+ </ownedDiagramElements>
+ <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
+ <filterVariableHistory xmi:type="diagram:FilterVariableHistory" xmi:id="_3UUgdUfnEeSqQ48lcu28MA"/>
+ <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
+ <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
+ <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
+ <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Archetype']/@ownedRepresentationExtensions[name='Entities%20With%20Archetypes']/@layers[name='Archetypes']"/>
+ <target xmi:type="ecore:EPackage" href="QVTSchedule.ecore#/"/>
+ </ownedRepresentations>
+ <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/>
+ </ownedViews>
+ <ownedViews xmi:type="viewpoint:DRepresentationContainer" xmi:id="_zP7d8EfnEeSqQ48lcu28MA" initialized="true">
+ <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Review']"/>
+ </ownedViews>
+ <ownedViews xmi:type="viewpoint:DRepresentationContainer" xmi:id="_zQHrMEfnEeSqQ48lcu28MA" initialized="true">
+ <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Archetype']"/>
+ </ownedViews>
+ <ownedViews xmi:type="viewpoint:DRepresentationContainer" xmi:id="_zTjZsEfnEeSqQ48lcu28MA" initialized="true">
+ <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Generation']"/>
+ </ownedViews>
+</viewpoint:DAnalysis>
diff --git a/plugins/org.eclipse.qvtd.build.schedule/model/QVTSchedule.ecore b/plugins/org.eclipse.qvtd.build.schedule/model/QVTSchedule.ecore
new file mode 100644
index 000000000..8c549ab82
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/model/QVTSchedule.ecore
@@ -0,0 +1,67 @@
+<?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="qvtschedule" nsURI="http://www.eclipse.org/qvt/0.1/QVTschedule/"
+ nsPrefix="qvtschedule">
+ <eClassifiers xsi:type="ecore:EClass" name="AbstractDatum" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="super" upperBound="-1"
+ eType="#//AbstractDatum"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" lowerBound="1" eType="ecore:EClass http://www.eclipse.org/ocl/3.1.0/Pivot#//Type"
+ derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="domain" eType="ecore:EClass http://www.eclipse.org/qvt/0.9/QVTcoreBase#//CoreDomain"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="sources" upperBound="-1"
+ eType="#//AbstractAction" eOpposite="#//AbstractAction/results"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="targets" upperBound="-1"
+ eType="#//AbstractAction" derived="true" eOpposite="#//AbstractAction/arguments"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="schedule" eType="#//Schedule"
+ eOpposite="#//Schedule/datums"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="dataParameter" upperBound="-1"
+ eType="#//DataParameter" eOpposite="#//DataParameter/datum"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AbstractAction" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="results" upperBound="-1"
+ eType="#//AbstractDatum" eOpposite="#//AbstractDatum/sources"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="distinctArguments" upperBound="-1"
+ eType="#//DistinctData" containment="true" eOpposite="#//DistinctData/target"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="order" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eType="#//AbstractAction"
+ eOpposite="#//AbstractAction/children"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="children" upperBound="-1"
+ eType="#//AbstractAction" eOpposite="#//AbstractAction/parent"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="arguments" upperBound="-1"
+ eType="#//AbstractDatum" derived="true" eOpposite="#//AbstractDatum/targets"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="schedule" eType="#//Schedule"
+ eOpposite="#//Schedule/actions"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ClassDatum" eSuperTypes="#//AbstractDatum"/>
+ <eClassifiers xsi:type="ecore:EClass" name="DataParameter">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isLoop" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="variable" lowerBound="1"
+ eType="ecore:EClass http://www.eclipse.org/ocl/3.1.0/Pivot#//Variable"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="primaryDistinctData" eType="#//DistinctData"
+ eOpposite="#//DistinctData/primaryArguments"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="secondaryDistinctData"
+ eType="#//DistinctData" eOpposite="#//DistinctData/secondaryArguments"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="datum" lowerBound="1" eType="#//AbstractDatum"
+ eOpposite="#//AbstractDatum/dataParameter"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DistinctData">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="target" eType="#//AbstractAction"
+ eOpposite="#//AbstractAction/distinctArguments"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="primaryArguments" lowerBound="1"
+ upperBound="-1" eType="#//DataParameter" containment="true" eOpposite="#//DataParameter/primaryDistinctData"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="secondaryArguments" upperBound="-1"
+ eType="#//DataParameter" containment="true" eOpposite="#//DataParameter/secondaryDistinctData"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InputAction" eSuperTypes="#//AbstractAction"/>
+ <eClassifiers xsi:type="ecore:EClass" name="MappingAction" eSuperTypes="#//AbstractAction">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="mapping" lowerBound="1"
+ eType="ecore:EClass http://www.eclipse.org/qvt/0.9/QVTimperative#//Mapping"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="OutputAction" eSuperTypes="#//AbstractAction"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Schedule">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="datums" upperBound="-1"
+ eType="#//AbstractDatum" containment="true" eOpposite="#//AbstractDatum/schedule"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="actions" upperBound="-1"
+ eType="#//AbstractAction" containment="true" eOpposite="#//AbstractAction/schedule"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.qvtd.build.schedule/model/QVTSchedule.genmodel b/plugins/org.eclipse.qvtd.build.schedule/model/QVTSchedule.genmodel
new file mode 100644
index 000000000..6bec14ce6
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/model/QVTSchedule.genmodel
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.qvtd.build.schedule/emf-gen" modelPluginID="org.eclipse.qvtd.build.schedule"
+ modelName="QVTSchedule" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+ importerID="org.eclipse.emf.importer.ecore" complianceLevel="7.0" copyrightFields="false"
+ usedGenPackages="../../org.eclipse.ocl.examples.pivot/model/Pivot.merged.genmodel#//pivot ../../org.eclipse.qvtd.pivot.qvtbase/model/QVTbase.genmodel#//qvtbase ../../org.eclipse.qvtd.pivot.qvtcorebase/model/QVTcoreBase.genmodel#//qvtcorebase ../../org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.genmodel#//qvtimperative"
+ operationReflection="true" importOrganizing="true">
+ <foreignModel>QVTSchedule.ecore</foreignModel>
+ <genPackages prefix="qvtschedule" basePackage="org.eclipse.qvtd.build" disposableProviderFactory="true"
+ fileExtensions="qvts" ecorePackage="QVTSchedule.ecore#/">
+ <genClasses image="false" ecoreClass="QVTSchedule.ecore#//AbstractDatum">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTSchedule.ecore#//AbstractDatum/super"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTSchedule.ecore#//AbstractDatum/type"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTSchedule.ecore#//AbstractDatum/domain"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTSchedule.ecore#//AbstractDatum/sources"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTSchedule.ecore#//AbstractDatum/targets"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference QVTSchedule.ecore#//AbstractDatum/schedule"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTSchedule.ecore#//AbstractDatum/dataParameter"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="QVTSchedule.ecore#//AbstractAction">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTSchedule.ecore#//AbstractAction/results"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTSchedule.ecore#//AbstractAction/distinctArguments"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute QVTSchedule.ecore#//AbstractAction/order"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTSchedule.ecore#//AbstractAction/parent"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTSchedule.ecore#//AbstractAction/children"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTSchedule.ecore#//AbstractAction/arguments"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference QVTSchedule.ecore#//AbstractAction/schedule"/>
+ </genClasses>
+ <genClasses ecoreClass="QVTSchedule.ecore#//ClassDatum"/>
+ <genClasses ecoreClass="QVTSchedule.ecore#//DataParameter">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute QVTSchedule.ecore#//DataParameter/isLoop"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTSchedule.ecore#//DataParameter/variable"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference QVTSchedule.ecore#//DataParameter/primaryDistinctData"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference QVTSchedule.ecore#//DataParameter/secondaryDistinctData"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTSchedule.ecore#//DataParameter/datum"/>
+ </genClasses>
+ <genClasses ecoreClass="QVTSchedule.ecore#//DistinctData">
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference QVTSchedule.ecore#//DistinctData/target"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTSchedule.ecore#//DistinctData/primaryArguments"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTSchedule.ecore#//DistinctData/secondaryArguments"/>
+ </genClasses>
+ <genClasses ecoreClass="QVTSchedule.ecore#//InputAction"/>
+ <genClasses ecoreClass="QVTSchedule.ecore#//MappingAction">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference QVTSchedule.ecore#//MappingAction/mapping"/>
+ </genClasses>
+ <genClasses ecoreClass="QVTSchedule.ecore#//OutputAction"/>
+ <genClasses ecoreClass="QVTSchedule.ecore#//Schedule">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTSchedule.ecore#//Schedule/datums"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTSchedule.ecore#//Schedule/actions"/>
+ </genClasses>
+ </genPackages>
+</genmodel:GenModel> \ No newline at end of file
diff --git a/plugins/org.eclipse.qvtd.build.schedule/model/Schedule.di b/plugins/org.eclipse.qvtd.build.schedule/model/Schedule.di
new file mode 100644
index 000000000..8634d4c00
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/model/Schedule.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/plugins/org.eclipse.qvtd.build.schedule/model/Schedule.notation b/plugins/org.eclipse.qvtd.build.schedule/model/Schedule.notation
new file mode 100644
index 000000000..75c3381b2
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/model/Schedule.notation
@@ -0,0 +1,591 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:css="http://www.eclipse.org/papyrus/infra/gmfdiag/css" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+ <notation:Diagram xmi:id="__5H2sCLSEeSZzIjuVvvPYA" type="PapyrusUMLClassDiagram" name="NewDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_BdvEECLTEeSZzIjuVvvPYA" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_BdvrICLTEeSZzIjuVvvPYA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_BdvrISLTEeSZzIjuVvvPYA" type="7017">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eFmm8CLUEeSZzIjuVvvPYA" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eFnOACLUEeSZzIjuVvvPYA" key="collapsed" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:Shape" xmi:id="_daPVwCLUEeSZzIjuVvvPYA" type="3012">
+ <element xmi:type="uml:Property" href="Schedule.uml#_daIBACLUEeSZzIjuVvvPYA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_daPVwSLUEeSZzIjuVvvPYA"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_BdwSMCLTEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_BdwSMSLTEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_BdwSMiLTEeSZzIjuVvvPYA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BdwSMyLTEeSZzIjuVvvPYA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_BdwSNCLTEeSZzIjuVvvPYA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_BdwSNSLTEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_BdwSNiLTEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_BdwSNyLTEeSZzIjuVvvPYA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BdwSOCLTEeSZzIjuVvvPYA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_BdwSOSLTEeSZzIjuVvvPYA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_BdwSOiLTEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_BdwSOyLTEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_BdwSPCLTEeSZzIjuVvvPYA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BdwSPSLTEeSZzIjuVvvPYA"/>
+ </children>
+ <element xmi:type="uml:Class" href="Schedule.uml#_BdnIQCLTEeSZzIjuVvvPYA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BdvEESLTEeSZzIjuVvvPYA" x="980" y="40" width="120" height="121"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GAxKYCLTEeSZzIjuVvvPYA" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_GAxxcCLTEeSZzIjuVvvPYA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GAxxcSLTEeSZzIjuVvvPYA" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_k5T58CLVEeSZzIjuVvvPYA" type="3012">
+ <element xmi:type="uml:Property" href="Schedule.uml#_k5NMQCLVEeSZzIjuVvvPYA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_k5T58SLVEeSZzIjuVvvPYA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_4qQU4CLVEeSZzIjuVvvPYA" type="3012">
+ <element xmi:type="uml:Property" href="Schedule.uml#_4qOfsCLVEeSZzIjuVvvPYA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4qQU4SLVEeSZzIjuVvvPYA"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GAxxciLTEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GAxxcyLTEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GAxxdCLTEeSZzIjuVvvPYA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GAxxdSLTEeSZzIjuVvvPYA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GAxxdiLTEeSZzIjuVvvPYA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GAxxdyLTEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GAxxeCLTEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GAxxeSLTEeSZzIjuVvvPYA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GAxxeiLTEeSZzIjuVvvPYA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GAyYgCLTEeSZzIjuVvvPYA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GAyYgSLTEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GAyYgiLTEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GAyYgyLTEeSZzIjuVvvPYA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GAyYhCLTEeSZzIjuVvvPYA"/>
+ </children>
+ <element xmi:type="uml:Class" href="Schedule.uml#_GAv8QCLTEeSZzIjuVvvPYA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GAxKYSLTEeSZzIjuVvvPYA" x="60" y="40" width="181" height="181"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Z4WY0CLTEeSZzIjuVvvPYA" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Z4W_4CLTEeSZzIjuVvvPYA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Z4W_4SLTEeSZzIjuVvvPYA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Z4W_4iLTEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Z4W_4yLTEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Z4W_5CLTEeSZzIjuVvvPYA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Z4W_5SLTEeSZzIjuVvvPYA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Z4W_5iLTEeSZzIjuVvvPYA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Z4W_5yLTEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Z4W_6CLTEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Z4W_6SLTEeSZzIjuVvvPYA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Z4W_6iLTEeSZzIjuVvvPYA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Z4Xm8CLTEeSZzIjuVvvPYA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Z4Xm8SLTEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Z4Xm8iLTEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Z4Xm8yLTEeSZzIjuVvvPYA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Z4Xm9CLTEeSZzIjuVvvPYA"/>
+ </children>
+ <element xmi:type="uml:Class" href="Schedule.uml#_Z4VKsCLTEeSZzIjuVvvPYA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Z4WY0SLTEeSZzIjuVvvPYA" x="440" y="-140"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_zLl-sCLTEeSZzIjuVvvPYA" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_zLmlwCLTEeSZzIjuVvvPYA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_zLmlwSLTEeSZzIjuVvvPYA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_zLmlwiLTEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zLmlwyLTEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zLmlxCLTEeSZzIjuVvvPYA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zLmlxSLTEeSZzIjuVvvPYA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_zLmlxiLTEeSZzIjuVvvPYA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_zLmlxyLTEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zLmlyCLTEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zLmlySLTEeSZzIjuVvvPYA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zLmlyiLTEeSZzIjuVvvPYA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_zLnM0CLTEeSZzIjuVvvPYA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_zLnM0SLTEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zLnM0iLTEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zLnM0yLTEeSZzIjuVvvPYA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zLnM1CLTEeSZzIjuVvvPYA"/>
+ </children>
+ <element xmi:type="uml:Class" href="Schedule.uml#_zLkwkCLTEeSZzIjuVvvPYA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zLl-sSLTEeSZzIjuVvvPYA" x="740" y="120"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_CfNAwCLWEeSZzIjuVvvPYA" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_CfNn0CLWEeSZzIjuVvvPYA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CfNn0SLWEeSZzIjuVvvPYA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CfNn0iLWEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CfNn0yLWEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CfNn1CLWEeSZzIjuVvvPYA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CfNn1SLWEeSZzIjuVvvPYA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CfNn1iLWEeSZzIjuVvvPYA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CfNn1yLWEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CfNn2CLWEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CfNn2SLWEeSZzIjuVvvPYA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CfNn2iLWEeSZzIjuVvvPYA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CfOO4CLWEeSZzIjuVvvPYA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_CfOO4SLWEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CfOO4iLWEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CfOO4yLWEeSZzIjuVvvPYA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CfOO5CLWEeSZzIjuVvvPYA"/>
+ </children>
+ <element xmi:type="uml:Class" href="Schedule.uml#_CfLyoCLWEeSZzIjuVvvPYA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CfNAwSLWEeSZzIjuVvvPYA" x="980" y="240" width="121" height="61"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_vual0CLWEeSZzIjuVvvPYA" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_vubM4CLWEeSZzIjuVvvPYA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_vubM4SLWEeSZzIjuVvvPYA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_vubM4iLWEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_vubM4yLWEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_vubM5CLWEeSZzIjuVvvPYA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vubM5SLWEeSZzIjuVvvPYA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_vubM5iLWEeSZzIjuVvvPYA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_vubM5yLWEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_vubM6CLWEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_vubM6SLWEeSZzIjuVvvPYA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vubM6iLWEeSZzIjuVvvPYA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_vubM6yLWEeSZzIjuVvvPYA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_vubM7CLWEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_vubM7SLWEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_vubM7iLWEeSZzIjuVvvPYA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vubM7yLWEeSZzIjuVvvPYA"/>
+ </children>
+ <element xmi:type="uml:Class" href="platform:/resource/org.eclipse.qvt/model/uml/QVTCore.uml#Mapping"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vual0SLWEeSZzIjuVvvPYA" x="-300" y="460" height="60"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_hMkQgCLXEeSZzIjuVvvPYA" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_hMk3kCLXEeSZzIjuVvvPYA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_hMk3kSLXEeSZzIjuVvvPYA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_hMk3kiLXEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_hMk3kyLXEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_hMk3lCLXEeSZzIjuVvvPYA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hMk3lSLXEeSZzIjuVvvPYA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_hMk3liLXEeSZzIjuVvvPYA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_hMk3lyLXEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_hMk3mCLXEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_hMk3mSLXEeSZzIjuVvvPYA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hMk3miLXEeSZzIjuVvvPYA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_hMk3myLXEeSZzIjuVvvPYA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_hMk3nCLXEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_hMk3nSLXEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_hMk3niLXEeSZzIjuVvvPYA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hMk3nyLXEeSZzIjuVvvPYA"/>
+ </children>
+ <element xmi:type="uml:Class" href="Schedule.uml#_hMjCYCLXEeSZzIjuVvvPYA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hMkQgSLXEeSZzIjuVvvPYA" x="120" y="280" height="60"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3SbUYCLXEeSZzIjuVvvPYA" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Sb7cCLXEeSZzIjuVvvPYA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Sb7cSLXEeSZzIjuVvvPYA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_3Sb7ciLXEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Sb7cyLXEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Sb7dCLXEeSZzIjuVvvPYA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Sb7dSLXEeSZzIjuVvvPYA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Sb7diLXEeSZzIjuVvvPYA" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_3Sb7dyLXEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Sb7eCLXEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Sb7eSLXEeSZzIjuVvvPYA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Sb7eiLXEeSZzIjuVvvPYA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Sb7eyLXEeSZzIjuVvvPYA" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_3Sb7fCLXEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Sb7fSLXEeSZzIjuVvvPYA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Sb7fiLXEeSZzIjuVvvPYA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Sb7fyLXEeSZzIjuVvvPYA"/>
+ </children>
+ <element xmi:type="uml:Class" href="platform:/resource/org.eclipse.qvt/model/uml/EssentialOCL.uml#Variable"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3SbUYSLXEeSZzIjuVvvPYA" x="-300" y="380" height="61"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_bQOOwCRUEeSbBI9cw7MTBw" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_bQbqICRUEeSbBI9cw7MTBw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bQcRMCRUEeSbBI9cw7MTBw" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_fhfPoCRUEeSbBI9cw7MTBw" type="3012">
+ <element xmi:type="uml:Property" href="Schedule.uml#_fhLGkCRUEeSbBI9cw7MTBw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fhfPoSRUEeSbBI9cw7MTBw"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bQcRMSRUEeSbBI9cw7MTBw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bQcRMiRUEeSbBI9cw7MTBw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bQcRMyRUEeSbBI9cw7MTBw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bQcRNCRUEeSbBI9cw7MTBw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bQcRNSRUEeSbBI9cw7MTBw" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bQcRNiRUEeSbBI9cw7MTBw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bQcRNyRUEeSbBI9cw7MTBw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bQcROCRUEeSbBI9cw7MTBw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bQcROSRUEeSbBI9cw7MTBw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bQcROiRUEeSbBI9cw7MTBw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bQcROyRUEeSbBI9cw7MTBw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bQcRPCRUEeSbBI9cw7MTBw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bQcRPSRUEeSbBI9cw7MTBw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bQcRPiRUEeSbBI9cw7MTBw"/>
+ </children>
+ <element xmi:type="uml:Class" href="Schedule.uml#_bOtL0CRUEeSbBI9cw7MTBw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bQOOwSRUEeSbBI9cw7MTBw" x="280" y="120"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_shPswCeYEeSEspNP6LpR-w" type="2008">
+ <children xmi:type="notation:DecorationNode" xmi:id="_shQT0CeYEeSEspNP6LpR-w" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_shQT0SeYEeSEspNP6LpR-w" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_shQT0ieYEeSEspNP6LpR-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_shQT0yeYEeSEspNP6LpR-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_shQT1CeYEeSEspNP6LpR-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_shQT1SeYEeSEspNP6LpR-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_shQ64CeYEeSEspNP6LpR-w" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_shQ64SeYEeSEspNP6LpR-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_shQ64ieYEeSEspNP6LpR-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_shQ64yeYEeSEspNP6LpR-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_shQ65CeYEeSEspNP6LpR-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_shQ65SeYEeSEspNP6LpR-w" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_shQ65ieYEeSEspNP6LpR-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_shQ65yeYEeSEspNP6LpR-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_shQ66CeYEeSEspNP6LpR-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_shQ66SeYEeSEspNP6LpR-w"/>
+ </children>
+ <element xmi:type="uml:Class" href="Schedule.uml#_shN3kCeYEeSEspNP6LpR-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_shPswSeYEeSEspNP6LpR-w" x="600" y="120"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="__5H2sSLSEeSZzIjuVvvPYA" name="diagram_compatibility_version" stringValue="1.0.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="__5H2siLSEeSZzIjuVvvPYA"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="__5H2syLSEeSZzIjuVvvPYA">
+ <owner xmi:type="uml:Model" href="Schedule.uml#__4_T0CLSEeSZzIjuVvvPYA"/>
+ </styles>
+ <element xmi:type="uml:Model" href="Schedule.uml#__4_T0CLSEeSZzIjuVvvPYA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_JggAoCLTEeSZzIjuVvvPYA" type="4001" source="_BdvEECLTEeSZzIjuVvvPYA" target="_GAxKYCLTEeSZzIjuVvvPYA">
+ <children xmi:type="notation:DecorationNode" xmi:id="_JggnsCLTEeSZzIjuVvvPYA" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JggnsSLTEeSZzIjuVvvPYA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JghOwCLTEeSZzIjuVvvPYA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JghOwSLTEeSZzIjuVvvPYA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JghOwiLTEeSZzIjuVvvPYA" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Jgh10CLTEeSZzIjuVvvPYA" x="-45" y="-7"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Jgh10SLTEeSZzIjuVvvPYA" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Jgh10iLTEeSZzIjuVvvPYA" x="35" y="13"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Jgic4CLTEeSZzIjuVvvPYA" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Jgic4SLTEeSZzIjuVvvPYA" x="-47" y="13"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JgjD8CLTEeSZzIjuVvvPYA" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JgjD8SLTEeSZzIjuVvvPYA" x="50" y="-7"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_JggAoSLTEeSZzIjuVvvPYA"/>
+ <element xmi:type="uml:Association" href="Schedule.uml#_JgdkYCLTEeSZzIjuVvvPYA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_JggAoiLTEeSZzIjuVvvPYA" points="[-60, -3, 566, 23]$[-614, -50, 12, -24]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KGb_QCLTEeSZzIjuVvvPYA" id="(0.0,0.1652892561983471)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Jg1-4CLTEeSZzIjuVvvPYA" id="(1.0,0.11049723756906077)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_4VTqgCLTEeSZzIjuVvvPYA" type="4001" source="_Z4WY0CLTEeSZzIjuVvvPYA" target="_BdvEECLTEeSZzIjuVvvPYA">
+ <children xmi:type="notation:DecorationNode" xmi:id="_4VURkCLTEeSZzIjuVvvPYA" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4VURkSLTEeSZzIjuVvvPYA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4VU4oCLTEeSZzIjuVvvPYA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4VU4oSLTEeSZzIjuVvvPYA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4VVfsCLTEeSZzIjuVvvPYA" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4VVfsSLTEeSZzIjuVvvPYA" x="-23" y="-13"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4VVfsiLTEeSZzIjuVvvPYA" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4VWGwCLTEeSZzIjuVvvPYA" x="74" y="34"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4VWGwSLTEeSZzIjuVvvPYA" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4VWGwiLTEeSZzIjuVvvPYA" x="-44" y="27"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4VWt0CLTEeSZzIjuVvvPYA" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4VWt0SLTEeSZzIjuVvvPYA" x="75" y="-12"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_4VTqgSLTEeSZzIjuVvvPYA"/>
+ <element xmi:type="uml:Association" href="Schedule.uml#_4VROQCLTEeSZzIjuVvvPYA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4VTqgiLTEeSZzIjuVvvPYA" points="[0, 0, -460, -120]$[460, 0, 0, -120]$[460, 120, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_6NfUICLTEeSZzIjuVvvPYA" id="(1.0,0.6)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HnyEICLWEeSZzIjuVvvPYA" id="(0.16666666666666666,0.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_8KInACLTEeSZzIjuVvvPYA" type="4001" source="_Z4WY0CLTEeSZzIjuVvvPYA" target="_GAxKYCLTEeSZzIjuVvvPYA">
+ <children xmi:type="notation:DecorationNode" xmi:id="_8KJOECLTEeSZzIjuVvvPYA" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_8KJ1ICLTEeSZzIjuVvvPYA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_8KJ1ISLTEeSZzIjuVvvPYA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_8KJ1IiLTEeSZzIjuVvvPYA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_8KKcMCLTEeSZzIjuVvvPYA" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_8KKcMSLTEeSZzIjuVvvPYA" x="-6" y="-7"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_8KLDQCLTEeSZzIjuVvvPYA" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_8KLDQSLTEeSZzIjuVvvPYA" x="44" y="35"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_8KLDQiLTEeSZzIjuVvvPYA" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_8KLqUCLTEeSZzIjuVvvPYA" x="-25" y="13"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_8KLqUSLTEeSZzIjuVvvPYA" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_8KLqUiLTEeSZzIjuVvvPYA" x="42" y="-18"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_8KInASLTEeSZzIjuVvvPYA"/>
+ <element xmi:type="uml:Association" href="Schedule.uml#_8KGKwCLTEeSZzIjuVvvPYA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8KInAiLTEeSZzIjuVvvPYA" points="[0, 0, 233, -136]$[-240, 0, -7, -136]$[-240, 120, -7, -16]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9Nb3ECLTEeSZzIjuVvvPYA" id="(0.0,0.6)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8KelQCLTEeSZzIjuVvvPYA" id="(0.71900826446281,0.08839779005524862)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_JlMd8CLUEeSZzIjuVvvPYA" type="4001" source="_shPswCeYEeSEspNP6LpR-w" target="_bQOOwCRUEeSbBI9cw7MTBw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_JlNFACLUEeSZzIjuVvvPYA" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JlNFASLUEeSZzIjuVvvPYA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JlNsECLUEeSZzIjuVvvPYA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JlNsESLUEeSZzIjuVvvPYA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JlOTICLUEeSZzIjuVvvPYA" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JlOTISLUEeSZzIjuVvvPYA" x="39" y="-13"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JlOTIiLUEeSZzIjuVvvPYA" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JlO6MCLUEeSZzIjuVvvPYA" x="-28" y="13"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JlO6MSLUEeSZzIjuVvvPYA" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JlO6MiLUEeSZzIjuVvvPYA" x="-2" y="10"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JlPhQCLUEeSZzIjuVvvPYA" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JlPhQSLUEeSZzIjuVvvPYA" x="7" y="-15"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_JlMd8SLUEeSZzIjuVvvPYA"/>
+ <element xmi:type="uml:Association" href="Schedule.uml#_JlKBsCLUEeSZzIjuVvvPYA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_JlMd8iLUEeSZzIjuVvvPYA" points="[-50, 1, 300, 1]$[-410, 39, -60, 39]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vOvSICLUEeSZzIjuVvvPYA" id="(0.0,0.2)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vOvSISLUEeSZzIjuVvvPYA" id="(1.0,0.2)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_MTmk8CLUEeSZzIjuVvvPYA" type="4001" source="_shPswCeYEeSEspNP6LpR-w" target="_bQOOwCRUEeSbBI9cw7MTBw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_MTnMACLUEeSZzIjuVvvPYA" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_MTnMASLUEeSZzIjuVvvPYA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_MTnzECLUEeSZzIjuVvvPYA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_MTnzESLUEeSZzIjuVvvPYA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_MTnzEiLUEeSZzIjuVvvPYA" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_MToaICLUEeSZzIjuVvvPYA" x="43" y="-13"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_MToaISLUEeSZzIjuVvvPYA" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_MToaIiLUEeSZzIjuVvvPYA" x="-39" y="16"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_MTpBMCLUEeSZzIjuVvvPYA" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_MTpBMSLUEeSZzIjuVvvPYA" x="2" y="9"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_MTpBMiLUEeSZzIjuVvvPYA" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_MTpoQCLUEeSZzIjuVvvPYA" x="12" y="-13"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_MTmk8SLUEeSZzIjuVvvPYA"/>
+ <element xmi:type="uml:Association" href="Schedule.uml#_MTkIsCLUEeSZzIjuVvvPYA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_MTmk8iLUEeSZzIjuVvvPYA" points="[-52, 1, 300, 41]$[-291, 46, 61, 86]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MT-YYCLUEeSZzIjuVvvPYA" id="(0.0,0.8)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_M2yxkCLUEeSZzIjuVvvPYA" id="(1.0,0.8)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_PzEVcCLUEeSZzIjuVvvPYA" type="4001" source="_BdvEECLTEeSZzIjuVvvPYA" target="_zLl-sCLTEeSZzIjuVvvPYA">
+ <children xmi:type="notation:DecorationNode" xmi:id="_PzE8gCLUEeSZzIjuVvvPYA" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PzE8gSLUEeSZzIjuVvvPYA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_PzFjkCLUEeSZzIjuVvvPYA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PzFjkSLUEeSZzIjuVvvPYA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_PzGKoCLUEeSZzIjuVvvPYA" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PzGKoSLUEeSZzIjuVvvPYA" x="10" y="-7"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_PzGKoiLUEeSZzIjuVvvPYA" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PzGxsCLUEeSZzIjuVvvPYA" x="-29" y="13"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_PzGxsSLUEeSZzIjuVvvPYA" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PzGxsiLUEeSZzIjuVvvPYA" x="3" y="13"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_PzHYwCLUEeSZzIjuVvvPYA" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PzHYwSLUEeSZzIjuVvvPYA" x="-2" y="-7"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_PzEVcSLUEeSZzIjuVvvPYA"/>
+ <element xmi:type="uml:Association" href="Schedule.uml#_PzB5MCLUEeSZzIjuVvvPYA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_PzEVciLUEeSZzIjuVvvPYA" points="[-21, 1, 230, -23]$[-201, 17, 50, -7]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Pzd-ECLUEeSZzIjuVvvPYA" id="(0.0,0.8264462809917356)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QXZxkCLUEeSZzIjuVvvPYA" id="(1.0,0.2)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_pkY-cCLUEeSZzIjuVvvPYA" type="4001" source="_BdvEECLTEeSZzIjuVvvPYA" target="_BdvEECLTEeSZzIjuVvvPYA">
+ <children xmi:type="notation:DecorationNode" xmi:id="_pkZlgCLUEeSZzIjuVvvPYA" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pkZlgSLUEeSZzIjuVvvPYA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_pkaMkCLUEeSZzIjuVvvPYA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pkaMkSLUEeSZzIjuVvvPYA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_pkaMkiLUEeSZzIjuVvvPYA" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pkazoCLUEeSZzIjuVvvPYA" x="-21" y="-14"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_pkazoSLUEeSZzIjuVvvPYA" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pkazoiLUEeSZzIjuVvvPYA" x="41" y="-30"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_pkbasCLUEeSZzIjuVvvPYA" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pkbasSLUEeSZzIjuVvvPYA" x="-25" y="8"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_pkbasiLUEeSZzIjuVvvPYA" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pkcBwCLUEeSZzIjuVvvPYA" x="-6" y="-31"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_pkY-cSLUEeSZzIjuVvvPYA"/>
+ <element xmi:type="uml:Association" href="Schedule.uml#_pkWiMCLUEeSZzIjuVvvPYA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_pkY-ciLUEeSZzIjuVvvPYA" points="[0, 0, 20, 80]$[80, 0, 100, 80]$[80, -120, 100, -40]$[-20, -120, 0, -40]$[-20, -80, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pku8sCLUEeSZzIjuVvvPYA" id="(1.0,0.6611570247933884)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FzlioCLWEeSZzIjuVvvPYA" id="(0.8333333333333334,0.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_17ZXYCLUEeSZzIjuVvvPYA" type="4001" source="_BdvEECLTEeSZzIjuVvvPYA" target="_GAxKYCLTEeSZzIjuVvvPYA">
+ <children xmi:type="notation:DecorationNode" xmi:id="_17Z-cCLUEeSZzIjuVvvPYA" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_17Z-cSLUEeSZzIjuVvvPYA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_17algCLUEeSZzIjuVvvPYA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_17algSLUEeSZzIjuVvvPYA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_17algiLUEeSZzIjuVvvPYA" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_17algyLUEeSZzIjuVvvPYA" x="-23" y="-7"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_17bMkCLUEeSZzIjuVvvPYA" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_17bMkSLUEeSZzIjuVvvPYA" x="23" y="13"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_17bMkiLUEeSZzIjuVvvPYA" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_17bzoCLUEeSZzIjuVvvPYA" x="-47" y="13"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_17bzoSLUEeSZzIjuVvvPYA" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_17bzoiLUEeSZzIjuVvvPYA" x="50" y="-7"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_17ZXYSLUEeSZzIjuVvvPYA"/>
+ <element xmi:type="uml:Association" href="Schedule.uml#_17XiMCLUEeSZzIjuVvvPYA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_17ZXYiLUEeSZzIjuVvvPYA" points="[-22, -1, 547, 12]$[-541, -54, 28, -41]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_17tgcCLUEeSZzIjuVvvPYA" id="(0.0,0.49586776859504134)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_17uHgCLUEeSZzIjuVvvPYA" id="(1.0,0.3314917127071823)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_VDjswCLWEeSZzIjuVvvPYA" type="4002" source="_CfNAwCLWEeSZzIjuVvvPYA" target="_BdvEECLTEeSZzIjuVvvPYA">
+ <children xmi:type="notation:DecorationNode" xmi:id="_VDjswyLWEeSZzIjuVvvPYA" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_VDkT0CLWEeSZzIjuVvvPYA" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_VDjswSLWEeSZzIjuVvvPYA"/>
+ <element xmi:type="uml:Generalization" href="Schedule.uml#_VDZUsCLWEeSZzIjuVvvPYA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_VDjswiLWEeSZzIjuVvvPYA" points="[8, -50, 0, 142]$[12, -169, 4, 23]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_XMk1YCOfEeSi0_hC2x_gdQ" id="(0.5619834710743802,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VDqacCLWEeSZzIjuVvvPYA" id="(0.5666666666666667,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_bgTGsCLWEeSZzIjuVvvPYA" type="4001" source="_GAxKYCLTEeSZzIjuVvvPYA" target="_GAxKYCLTEeSZzIjuVvvPYA">
+ <children xmi:type="notation:DecorationNode" xmi:id="_bgTtwCLWEeSZzIjuVvvPYA" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bgTtwSLWEeSZzIjuVvvPYA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bgTtwiLWEeSZzIjuVvvPYA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bgTtwyLWEeSZzIjuVvvPYA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bgUU0CLWEeSZzIjuVvvPYA" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bgUU0SLWEeSZzIjuVvvPYA" x="26" y="-29"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bgUU0iLWEeSZzIjuVvvPYA" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bgUU0yLWEeSZzIjuVvvPYA" x="24" y="9"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bgU74CLWEeSZzIjuVvvPYA" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bgU74SLWEeSZzIjuVvvPYA" x="-21" y="-29"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bgVi8CLWEeSZzIjuVvvPYA" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bgVi8SLWEeSZzIjuVvvPYA" x="19" y="-10"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_bgTGsSLWEeSZzIjuVvvPYA"/>
+ <element xmi:type="uml:Association" href="Schedule.uml#_bgQDYCLWEeSZzIjuVvvPYA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bgTGsiLWEeSZzIjuVvvPYA" points="[0, 0, 25, -78]$[0, -40, 25, -118]$[-100, -40, -75, -118]$[-100, 78, -75, 0]$[-40, 78, -15, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jsfsECLWEeSZzIjuVvvPYA" id="(0.22099447513812154,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bgsvUCLWEeSZzIjuVvvPYA" id="(0.08287292817679558,0.430939226519337)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_w5G3UCLWEeSZzIjuVvvPYA" type="4001" source="_CfNAwCLWEeSZzIjuVvvPYA" target="_vual0CLWEeSZzIjuVvvPYA">
+ <children xmi:type="notation:DecorationNode" xmi:id="_w5HeYCLWEeSZzIjuVvvPYA" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_w5HeYSLWEeSZzIjuVvvPYA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_w5IFcCLWEeSZzIjuVvvPYA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_w5IFcSLWEeSZzIjuVvvPYA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_w5IFciLWEeSZzIjuVvvPYA" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_w5IFcyLWEeSZzIjuVvvPYA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_w5IsgCLWEeSZzIjuVvvPYA" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_w5IsgSLWEeSZzIjuVvvPYA" x="-17" y="17"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_w5IsgiLWEeSZzIjuVvvPYA" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_w5IsgyLWEeSZzIjuVvvPYA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_w5JTkCLWEeSZzIjuVvvPYA" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_w5JTkSLWEeSZzIjuVvvPYA" x="-18" y="-23"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_w5G3USLWEeSZzIjuVvvPYA"/>
+ <element xmi:type="uml:Association" href="Schedule.uml#_w5FCICLWEeSZzIjuVvvPYA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_w5G3UiLWEeSZzIjuVvvPYA" points="[0, 1, 1260, -179]$[0, 180, 1260, 0]$[-1260, 180, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w5ZLMCLWEeSZzIjuVvvPYA" id="(0.6611570247933884,0.9836065573770492)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Pmi4ICOfEeSi0_hC2x_gdQ" id="(1.0,0.3333333333333333)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_i-C1MCLXEeSZzIjuVvvPYA" type="4002" source="_hMkQgCLXEeSZzIjuVvvPYA" target="_GAxKYCLTEeSZzIjuVvvPYA">
+ <children xmi:type="notation:DecorationNode" xmi:id="_i-DcQCLXEeSZzIjuVvvPYA" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_i-DcQSLXEeSZzIjuVvvPYA" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_i-C1MSLXEeSZzIjuVvvPYA"/>
+ <element xmi:type="uml:Generalization" href="Schedule.uml#_i-BAACLXEeSZzIjuVvvPYA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_i-C1MiLXEeSZzIjuVvvPYA" points="[-2, 0, 0, 59]$[-2, -59, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_oSM2cCLXEeSZzIjuVvvPYA" id="(0.6,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_i-MmMCLXEeSZzIjuVvvPYA" id="(0.6629834254143646,0.994475138121547)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_7PYSICLXEeSZzIjuVvvPYA" type="4001" source="_bQOOwCRUEeSbBI9cw7MTBw" target="_3SbUYCLXEeSZzIjuVvvPYA">
+ <children xmi:type="notation:DecorationNode" xmi:id="_7PY5MCLXEeSZzIjuVvvPYA" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_7PY5MSLXEeSZzIjuVvvPYA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7PY5MiLXEeSZzIjuVvvPYA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_7PY5MyLXEeSZzIjuVvvPYA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7PZgQCLXEeSZzIjuVvvPYA" visible="false" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_7PZgQSLXEeSZzIjuVvvPYA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7PZgQiLXEeSZzIjuVvvPYA" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_7PZgQyLXEeSZzIjuVvvPYA" x="96" y="15"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7PaHUCLXEeSZzIjuVvvPYA" visible="false" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_7PaHUSLXEeSZzIjuVvvPYA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7PaHUiLXEeSZzIjuVvvPYA" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_7PaHUyLXEeSZzIjuVvvPYA" x="96" y="-7"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_7PYSISLXEeSZzIjuVvvPYA"/>
+ <element xmi:type="uml:Association" href="Schedule.uml#_7PWc8CLXEeSZzIjuVvvPYA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7PYSIiLXEeSZzIjuVvvPYA" points="[0, 0, 600, -180]$[0, 180, 600, 0]$[-600, 180, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yurdQCRUEeSbBI9cw7MTBw" id="(0.8333333333333334,1.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-ORFICLXEeSZzIjuVvvPYA" id="(1.0,0.32786885245901637)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_lrAyoCRUEeSbBI9cw7MTBw" type="4001" source="_bQOOwCRUEeSbBI9cw7MTBw" target="_hMkQgCLXEeSZzIjuVvvPYA">
+ <children xmi:type="notation:DecorationNode" xmi:id="_lrBZsCRUEeSbBI9cw7MTBw" visible="false" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lrBZsSRUEeSbBI9cw7MTBw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_lrCAwCRUEeSbBI9cw7MTBw" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lrCAwSRUEeSbBI9cw7MTBw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_lrCn0CRUEeSbBI9cw7MTBw" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lrCn0SRUEeSbBI9cw7MTBw" x="30" y="-10"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_lrCn0iRUEeSbBI9cw7MTBw" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lrCn0yRUEeSbBI9cw7MTBw" x="-27" y="16"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_lrDO4CRUEeSbBI9cw7MTBw" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lrDO4SRUEeSbBI9cw7MTBw" x="6" y="10"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_lrD18CRUEeSbBI9cw7MTBw" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lrD18SRUEeSbBI9cw7MTBw" x="-10" y="-10"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_lrAyoSRUEeSbBI9cw7MTBw"/>
+ <element xmi:type="uml:Association" href="Schedule.uml#_lq9vUCRUEeSbBI9cw7MTBw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_lrAyoiRUEeSbBI9cw7MTBw" points="[0, 0, 120, -100]$[0, 100, 120, 0]$[-120, 100, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lrbpYCRUEeSbBI9cw7MTBw" id="(0.4166666666666667,1.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0bSLICeYEeSEspNP6LpR-w" id="(1.0,0.6666666666666666)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_xLbj8CeYEeSEspNP6LpR-w" type="4002" source="_shPswCeYEeSEspNP6LpR-w" target="_zLl-sCLTEeSZzIjuVvvPYA">
+ <children xmi:type="notation:DecorationNode" xmi:id="_xLcyECeYEeSEspNP6LpR-w" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_xLdZICeYEeSEspNP6LpR-w" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_xLbj8SeYEeSEspNP6LpR-w"/>
+ <element xmi:type="uml:Generalization" href="Schedule.uml#_xKyDsCeYEeSEspNP6LpR-w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_xLbj8ieYEeSEspNP6LpR-w" points="[16, -62, -34, 163]$[52, -162, 2, 63]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_6PBrYSeYEeSEspNP6LpR-w" id="(0.8,0.4)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_6PCScCeYEeSEspNP6LpR-w" id="(0.2,0.4)"/>
+ </edges>
+ </notation:Diagram>
+ <css:ModelStyleSheets xmi:id="_XpCFoCRUEeSbBI9cw7MTBw"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.qvtd.build.schedule/model/Schedule.uml b/plugins/org.eclipse.qvtd.build.schedule/model/Schedule.uml
new file mode 100644
index 000000000..c5f6bb1ff
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/model/Schedule.uml
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="__4_T0CLSEeSZzIjuVvvPYA" name="model">
+ <packagedElement xmi:type="uml:Class" xmi:id="_BdnIQCLTEeSZzIjuVvvPYA" name="AbstractAction" isAbstract="true">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_Jgc9UCLTEeSZzIjuVvvPYA" name="results" type="_GAv8QCLTEeSZzIjuVvvPYA" association="_JgdkYCLTEeSZzIjuVvvPYA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Jgc9USLTEeSZzIjuVvvPYA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Jgc9UiLTEeSZzIjuVvvPYA" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_PzBSICLUEeSZzIjuVvvPYA" name="distinctArguments" type="_zLkwkCLTEeSZzIjuVvvPYA" association="_PzB5MCLUEeSZzIjuVvvPYA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PzBSISLUEeSZzIjuVvvPYA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PzBSIiLUEeSZzIjuVvvPYA" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_daIBACLUEeSZzIjuVvvPYA" name="count">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_pkVUECLUEeSZzIjuVvvPYA" name="parent" type="_BdnIQCLTEeSZzIjuVvvPYA" association="_pkWiMCLUEeSZzIjuVvvPYA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pkVUESLUEeSZzIjuVvvPYA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pkVUEiLUEeSZzIjuVvvPYA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_17WUECLUEeSZzIjuVvvPYA" name="arguments" type="_GAv8QCLTEeSZzIjuVvvPYA" association="_17XiMCLUEeSZzIjuVvvPYA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_17WUESLUEeSZzIjuVvvPYA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_17WUEiLUEeSZzIjuVvvPYA" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_GAv8QCLTEeSZzIjuVvvPYA" name="AbstractDatum" isAbstract="true">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_k5NMQCLVEeSZzIjuVvvPYA" name="type" isDerived="true">
+ <type xmi:type="uml:Class" href="../../org.eclipse.qvt/model/uml/EMOF.uml#Type"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_4qOfsCLVEeSZzIjuVvvPYA" name="domain">
+ <type xmi:type="uml:Class" href="../../org.eclipse.qvt/model/uml/QVTCore.uml#CoreDomain"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_bgPcUCLWEeSZzIjuVvvPYA" name="parent" type="_GAv8QCLTEeSZzIjuVvvPYA" association="_bgQDYCLWEeSZzIjuVvvPYA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bgPcUSLWEeSZzIjuVvvPYA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bgPcUiLWEeSZzIjuVvvPYA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_JgdkYCLTEeSZzIjuVvvPYA" name="A_abstractAction_abstractDatum_1" memberEnd="_JgeLcCLTEeSZzIjuVvvPYA _Jgc9UCLTEeSZzIjuVvvPYA" navigableOwnedEnd="_JgeLcCLTEeSZzIjuVvvPYA">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_JgeLcCLTEeSZzIjuVvvPYA" name="sources" type="_BdnIQCLTEeSZzIjuVvvPYA" association="_JgdkYCLTEeSZzIjuVvvPYA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JgeLcSLTEeSZzIjuVvvPYA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JgeLciLTEeSZzIjuVvvPYA" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Z4VKsCLTEeSZzIjuVvvPYA" name="Schedule">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_4VQnMCLTEeSZzIjuVvvPYA" name="actions" type="_BdnIQCLTEeSZzIjuVvvPYA" aggregation="composite" association="_4VROQCLTEeSZzIjuVvvPYA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4VQnMSLTEeSZzIjuVvvPYA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4VQnMiLTEeSZzIjuVvvPYA" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_8KArMCLTEeSZzIjuVvvPYA" name="datums" type="_GAv8QCLTEeSZzIjuVvvPYA" aggregation="composite" association="_8KGKwCLTEeSZzIjuVvvPYA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8KArMSLTEeSZzIjuVvvPYA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8KArMiLTEeSZzIjuVvvPYA" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_zLkwkCLTEeSZzIjuVvvPYA" name="DistinctData">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_JlJaoCLUEeSZzIjuVvvPYA" name="primaryArgument" type="_bOtL0CRUEeSbBI9cw7MTBw" association="_JlKBsCLUEeSZzIjuVvvPYA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JlJaoSLUEeSZzIjuVvvPYA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JlJaoiLUEeSZzIjuVvvPYA" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_MTepICLUEeSZzIjuVvvPYA" name="secondaryArguments" type="_bOtL0CRUEeSbBI9cw7MTBw" association="_MTkIsCLUEeSZzIjuVvvPYA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MTepISLUEeSZzIjuVvvPYA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MTepIiLUEeSZzIjuVvvPYA" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_4VROQCLTEeSZzIjuVvvPYA" name="A_schedule_abstractAction_1" memberEnd="_4VROQSLTEeSZzIjuVvvPYA _4VQnMCLTEeSZzIjuVvvPYA">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_4VROQSLTEeSZzIjuVvvPYA" name="schedule" type="_Z4VKsCLTEeSZzIjuVvvPYA" association="_4VROQCLTEeSZzIjuVvvPYA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4VROQiLTEeSZzIjuVvvPYA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4VROQyLTEeSZzIjuVvvPYA" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_8KGKwCLTEeSZzIjuVvvPYA" name="A_schedule_abstractDatum_1" memberEnd="_8KGKwSLTEeSZzIjuVvvPYA _8KArMCLTEeSZzIjuVvvPYA">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_8KGKwSLTEeSZzIjuVvvPYA" name="schedule" type="_Z4VKsCLTEeSZzIjuVvvPYA" association="_8KGKwCLTEeSZzIjuVvvPYA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8KGKwiLTEeSZzIjuVvvPYA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8KGKwyLTEeSZzIjuVvvPYA" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_JlKBsCLUEeSZzIjuVvvPYA" name="A_distinctData_abstractDatum_1" memberEnd="_JlKBsSLUEeSZzIjuVvvPYA _JlJaoCLUEeSZzIjuVvvPYA" navigableOwnedEnd="_JlKBsSLUEeSZzIjuVvvPYA">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_JlKBsSLUEeSZzIjuVvvPYA" name="primaryDistinctData" type="_shN3kCeYEeSEspNP6LpR-w" association="_JlKBsCLUEeSZzIjuVvvPYA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JlKBsiLUEeSZzIjuVvvPYA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JlKBsyLUEeSZzIjuVvvPYA" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_MTkIsCLUEeSZzIjuVvvPYA" name="A_distinctData_abstractDatum_2" memberEnd="_MTkIsSLUEeSZzIjuVvvPYA _MTepICLUEeSZzIjuVvvPYA" navigableOwnedEnd="_MTkIsSLUEeSZzIjuVvvPYA">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_MTkIsSLUEeSZzIjuVvvPYA" name="secondaryDistinctData" type="_shN3kCeYEeSEspNP6LpR-w" association="_MTkIsCLUEeSZzIjuVvvPYA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MTkIsiLUEeSZzIjuVvvPYA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MTkIsyLUEeSZzIjuVvvPYA" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_PzB5MCLUEeSZzIjuVvvPYA" name="A_abstractAction_distinctData_1" memberEnd="_PzB5MSLUEeSZzIjuVvvPYA _PzBSICLUEeSZzIjuVvvPYA" navigableOwnedEnd="_PzB5MSLUEeSZzIjuVvvPYA">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_PzB5MSLUEeSZzIjuVvvPYA" name="target" type="_BdnIQCLTEeSZzIjuVvvPYA" association="_PzB5MCLUEeSZzIjuVvvPYA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PzB5MiLUEeSZzIjuVvvPYA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PzB5MyLUEeSZzIjuVvvPYA" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_pkWiMCLUEeSZzIjuVvvPYA" name="A_abstractAction_abstractAction_1" memberEnd="_pkWiMSLUEeSZzIjuVvvPYA _pkVUECLUEeSZzIjuVvvPYA" navigableOwnedEnd="_pkWiMSLUEeSZzIjuVvvPYA">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_pkWiMSLUEeSZzIjuVvvPYA" name="children" type="_BdnIQCLTEeSZzIjuVvvPYA" association="_pkWiMCLUEeSZzIjuVvvPYA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pkWiMiLUEeSZzIjuVvvPYA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pkWiMyLUEeSZzIjuVvvPYA" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_17XiMCLUEeSZzIjuVvvPYA" name="A_abstractAction_abstractDatum_2" isDerived="true" memberEnd="_17XiMSLUEeSZzIjuVvvPYA _17WUECLUEeSZzIjuVvvPYA" navigableOwnedEnd="_17XiMSLUEeSZzIjuVvvPYA">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_17XiMSLUEeSZzIjuVvvPYA" name="targets" type="_BdnIQCLTEeSZzIjuVvvPYA" association="_17XiMCLUEeSZzIjuVvvPYA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_17XiMiLUEeSZzIjuVvvPYA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_17XiMyLUEeSZzIjuVvvPYA" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_CfLyoCLWEeSZzIjuVvvPYA" name="MappingAction">
+ <generalization xmi:type="uml:Generalization" xmi:id="_VDZUsCLWEeSZzIjuVvvPYA" general="_BdnIQCLTEeSZzIjuVvvPYA"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_w5EbECLWEeSZzIjuVvvPYA" name="mapping" association="_w5FCICLWEeSZzIjuVvvPYA">
+ <type xmi:type="uml:Class" href="../../org.eclipse.qvt/model/uml/QVTCore.uml#Mapping"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_w5EbESLWEeSZzIjuVvvPYA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_w5EbEiLWEeSZzIjuVvvPYA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_IoxKkCLXEeSZzIjuVvvPYA" name="mappingBindings">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IoxKkSLXEeSZzIjuVvvPYA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IoxKkiLXEeSZzIjuVvvPYA" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_bgQDYCLWEeSZzIjuVvvPYA" name="A_abstractDatum_abstractDatum_1" memberEnd="_bgQDYSLWEeSZzIjuVvvPYA _bgPcUCLWEeSZzIjuVvvPYA" navigableOwnedEnd="_bgQDYSLWEeSZzIjuVvvPYA">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_bgQDYSLWEeSZzIjuVvvPYA" name="children" type="_GAv8QCLTEeSZzIjuVvvPYA" association="_bgQDYCLWEeSZzIjuVvvPYA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bgQDYiLWEeSZzIjuVvvPYA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bgQDYyLWEeSZzIjuVvvPYA" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_w5FCICLWEeSZzIjuVvvPYA" name="A_mappingAction_mapping_1" memberEnd="_w5FCISLWEeSZzIjuVvvPYA _w5EbECLWEeSZzIjuVvvPYA">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_w5FCISLWEeSZzIjuVvvPYA" name="mappingAction" type="_CfLyoCLWEeSZzIjuVvvPYA" association="_w5FCICLWEeSZzIjuVvvPYA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_w5FCIiLWEeSZzIjuVvvPYA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_w5FCIyLWEeSZzIjuVvvPYA" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_hMjCYCLXEeSZzIjuVvvPYA" name="ClassDatum">
+ <generalization xmi:type="uml:Generalization" xmi:id="_i-BAACLXEeSZzIjuVvvPYA" general="_GAv8QCLTEeSZzIjuVvvPYA"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_6u6pYCLXEeSZzIjuVvvPYA" name="realizedVariable" association="_6u7QcCLXEeSZzIjuVvvPYA">
+ <type xmi:type="uml:Class" href="../../org.eclipse.qvt/model/uml/QVTCore.uml#RealizedVariable"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6u6pYSLXEeSZzIjuVvvPYA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6u6pYiLXEeSZzIjuVvvPYA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_SMY14CLXEeSZzIjuVvvPYA" name="isLoop">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_7PV14CLXEeSZzIjuVvvPYA" name="variable" association="_7PWc8CLXEeSZzIjuVvvPYA">
+ <type xmi:type="uml:Class" href="../../org.eclipse.qvt/model/uml/EssentialOCL.uml#Variable"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7PV14SLXEeSZzIjuVvvPYA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7PV14iLXEeSZzIjuVvvPYA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_6u7QcCLXEeSZzIjuVvvPYA" name="A_classDatum_realizedVariable_1" memberEnd="_6u7QcSLXEeSZzIjuVvvPYA _6u6pYCLXEeSZzIjuVvvPYA">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_6u7QcSLXEeSZzIjuVvvPYA" name="classDatum" type="_hMjCYCLXEeSZzIjuVvvPYA" association="_6u7QcCLXEeSZzIjuVvvPYA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6u7QciLXEeSZzIjuVvvPYA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6u7QcyLXEeSZzIjuVvvPYA" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_7PWc8CLXEeSZzIjuVvvPYA" name="A_classDatum_variable_1" memberEnd="_7PWc8SLXEeSZzIjuVvvPYA _7PV14CLXEeSZzIjuVvvPYA">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_7PWc8SLXEeSZzIjuVvvPYA" name="classDatum" type="_bOtL0CRUEeSbBI9cw7MTBw" association="_7PWc8CLXEeSZzIjuVvvPYA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7PWc8iLXEeSZzIjuVvvPYA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7PWc8yLXEeSZzIjuVvvPYA" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_bOtL0CRUEeSbBI9cw7MTBw" name="DataParameter">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_fhLGkCRUEeSbBI9cw7MTBw" name="isLoop">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_lq8hMCRUEeSbBI9cw7MTBw" name="abstractDatum" type="_hMjCYCLXEeSZzIjuVvvPYA" association="_lq9vUCRUEeSbBI9cw7MTBw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lq8hMSRUEeSbBI9cw7MTBw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lq8hMiRUEeSbBI9cw7MTBw" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_lq9vUCRUEeSbBI9cw7MTBw" name="A_dataParameter_abstractDatum_1" memberEnd="_lq9vUSRUEeSbBI9cw7MTBw _lq8hMCRUEeSbBI9cw7MTBw" navigableOwnedEnd="_lq9vUSRUEeSbBI9cw7MTBw">
+ <ownedEnd xmi:type="uml:Property" xmi:id="_lq9vUSRUEeSbBI9cw7MTBw" name="dataParameter" type="_bOtL0CRUEeSbBI9cw7MTBw" association="_lq9vUCRUEeSbBI9cw7MTBw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lq9vUiRUEeSbBI9cw7MTBw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lq9vUyRUEeSbBI9cw7MTBw" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_shN3kCeYEeSEspNP6LpR-w" name="ClassData">
+ <generalization xmi:type="uml:Generalization" xmi:id="_xKyDsCeYEeSEspNP6LpR-w" general="_zLkwkCLTEeSZzIjuVvvPYA"/>
+ </packagedElement>
+</uml:Model>
diff --git a/plugins/org.eclipse.qvtd.build.schedule/plugin.properties b/plugins/org.eclipse.qvtd.build.schedule/plugin.properties
new file mode 100644
index 000000000..8302a759a
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/plugin.properties
@@ -0,0 +1,12 @@
+###############################################################################
+# Copyright (c) 2014 Eclipse Modeling Project and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# Horacio Hoyos - initial API and implementation
+###############################################################################
+pluginName = QVTSchedule Model (Incubation)
+providerName = Eclipse Modeling Project
diff --git a/plugins/org.eclipse.qvtd.build.schedule/plugin.xml b/plugins/org.eclipse.qvtd.build.schedule/plugin.xml
new file mode 100644
index 000000000..29bbad853
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.build.schedule/plugin.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <!-- @generated QVTSchedule -->
+ <package
+ uri="http://www.eclipse.org/qvt/0.1/QVTschedule/"
+ class="org.eclipse.qvtd.build.qvtschedule.qvtschedulePackage"
+ genModel="model/QVTSchedule.genmodel"/>
+ </extension>
+
+</plugin>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/.classpath b/tests/org.eclipse.qvtd.build.etl.tests/.classpath
index ad32c83a7..2a06e263d 100644
--- a/tests/org.eclipse.qvtd.build.etl.tests/.classpath
+++ b/tests/org.eclipse.qvtd.build.etl.tests/.classpath
@@ -3,5 +3,6 @@
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/org.eclipse.qvtd.build.etl"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/.settings/org.eclipse.jdt.core.prefs b/tests/org.eclipse.qvtd.build.etl.tests/.settings/org.eclipse.jdt.core.prefs
index c537b6306..ef8a789ca 100644
--- a/tests/org.eclipse.qvtd.build.etl.tests/.settings/org.eclipse.jdt.core.prefs
+++ b/tests/org.eclipse.qvtd.build.etl.tests/.settings/org.eclipse.jdt.core.prefs
@@ -1,7 +1,12 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.6
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.qvtd.build.etl.tests/META-INF/MANIFEST.MF
index d8e22f8bb..23b86f020 100644
--- a/tests/org.eclipse.qvtd.build.etl.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.qvtd.build.etl.tests/META-INF/MANIFEST.MF
@@ -1,12 +1,21 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Tests
-Bundle-SymbolicName: org.eclipse.qvtd.build.etl.tests
+Bundle-SymbolicName: org.eclipse.qvtd.build.etl.tests;singleton:=true
Bundle-Version: 1.0.0.qualifier
-Bundle-Activator: org.eclipse.qvtd.etl.tests.Activator
+Bundle-Activator: org.eclipse.qvtd.build.etl.tests.Activator
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.eclipse.epsilon.common.dt,
- org.eclipse.ocl.pivot;bundle-version="[1.0.0,2.0.0)"
+ org.eclipse.ocl.pivot;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.epsilon.common.dt,
+ org.eclipse.qvtd.xtext.qvtbase.tests;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.qvtd.xtext.qvtimperative,
+ org.eclipse.qvtd.build.etl;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.qvtd.xtext.qvtcore,
+ org.eclipse.ocl.xtext.oclstdlib;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.ocl.xtext.completeocl;bundle-version="[1.0.0,2.0.0)"
+Bundle-ClassPath: .
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.qvtd.build.etl.tests
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/QVTTrace.log b/tests/org.eclipse.qvtd.build.etl.tests/QVTTrace.log
new file mode 100644
index 000000000..fdc543212
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/QVTTrace.log
@@ -0,0 +1,17 @@
+---- Transformation umlRdbms ----
+Mapping __root__
+ Visiting Mapping GuardPattern
+ GuardPattern has no predicates.
+ Visiting Mapping BottomPattern
+==============================
+Output Model
+==============================
+ Visiting MappingSequence
+Visiting MappingLoop, calling: p
+ Visiting MappingSequence
+Visiting MappingCall, calling: packageToSchema_LM
+ Mapping packageToSchema_LM
+ CoreDomain middle
+ Visiting CoreDomain GuardPattern
+ GuardPattern has no predicates.
+ Visiting CoreDomain BottomPattern
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/build.properties b/tests/org.eclipse.qvtd.build.etl.tests/build.properties
index 7eeb5fab8..f35a7dcaf 100644
--- a/tests/org.eclipse.qvtd.build.etl.tests/build.properties
+++ b/tests/org.eclipse.qvtd.build.etl.tests/build.properties
@@ -2,4 +2,7 @@ source.. = src/
output.. = bin/
bin.includes = META-INF/,\
.,\
-additional.bundles = org.eclipse.jdt.annotation \ No newline at end of file
+ ,\
+ build.properties
+additional.bundles = org.eclipse.ocl.jdt.annotation7
+
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/Activator.java b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/Activator.java
index 7cfcbed6a..89cdb30ca 100644
--- a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/Activator.java
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/Activator.java
@@ -1,4 +1,4 @@
-package org.eclipse.qvtd.etl.tests;
+package org.eclipse.qvtd.build.etl.tests;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HLSNode.xmi b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HLSNode.xmi
new file mode 100644
index 000000000..c5a71284c
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HLSNode.xmi
@@ -0,0 +1,296 @@
+<?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:hls="http://www.eclipse.org/qvt/examples/0.1/HLSTree" xsi:schemaLocation="http://www.eclipse.org/qvt/examples/0.1/HLSTree HLSTree.ecore">
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1.3">
+ <children name="n1.3.1"/>
+ </hls:HLSNode>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1.2">
+ <children name="n1.2.1"/>
+ <children name="n1.2.2"/>
+ </hls:HLSNode>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1.3.1.1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1.1">
+ <children name="n1.1.1"/>
+ </hls:HLSNode>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+ <hls:HLSNode name="n1"/>
+</xmi:XMI>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HLSNodeValidate.xmi b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HLSNodeValidate.xmi
new file mode 100644
index 000000000..b1cad6db2
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HLSNodeValidate.xmi
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="ASCII"?>
+<pfx:HLSNode
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:pfx="http://www.eclipse.org/qvt/examples/0.1/HLSTree"
+ xsi:schemaLocation="http://www.eclipse.org/qvt/examples/0.1/HLSTree HLSTree.ecore"
+ name="n1">
+ <children
+ name="n1.1">
+ <children
+ name="n1.1.1"/>
+ </children>
+ <children
+ name="n1.2">
+ <children
+ name="n1.2.1"/>
+ <children
+ name="n1.2.2"/>
+ </children>
+ <children
+ name="n1.3">
+ <children
+ name="n1.3.1">
+ <children
+ name="n1.3.1.1"/>
+ </children>
+ </children>
+</pfx:HLSNode>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HLSTree.ecore b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HLSTree.ecore
new file mode 100644
index 000000000..102386755
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HLSTree.ecore
@@ -0,0 +1,15 @@
+<?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="HLSTree" nsURI="http://www.eclipse.org/qvt/examples/0.1/HLSTree"
+ nsPrefix="hls">
+ <eClassifiers xsi:type="ecore:EDataType" name="HLS" instanceClassName="java.lang.String"/>
+ <eClassifiers xsi:type="ecore:EClass" name="HLSNode">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eType="#//HLSNode"
+ eOpposite="#//HLSNode/children"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="children" upperBound="-1"
+ eType="#//HLSNode" containment="true" eOpposite="#//HLSNode/parent"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="hls" lowerBound="1" eType="#//HLS"
+ defaultValueLiteral="1"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HLSTreeContainmentTree.xmi b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HLSTreeContainmentTree.xmi
new file mode 100644
index 000000000..5c713607f
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HLSTreeContainmentTree.xmi
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:eCoreContainemntTree="http://www.eclipse.org/qvt/examples/0.1/ECoreContainemntTree">
+ <eCoreContainemntTree:Node EClassName="HLSTree"/>
+ <eCoreContainemntTree:Node EClassName="HLSTree"/>
+ <eCoreContainemntTree:Node EClassName="HLSTree"/>
+</xmi:XMI>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS-QVTcToQVTu.launch b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS-QVTcToQVTu.launch
new file mode 100644
index 000000000..bc9ff5238
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS-QVTcToQVTu.launch
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.epsilon.migration.eclipse.dt.launching.MigrationLaunchConfigurationDelegate">
+<intAttribute key="migratedModel" value="1"/>
+<listAttribute key="models">
+<listEntry value="#&#13;&#10;#Wed Aug 06 11:15:39 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=QVTc&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=QVT&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/0.9/QVTbase,http\://www.eclipse.org/ocl/3.1.0/Pivot,http\://www.eclipse.org/qvt/0.9/QVTcoreBase,http\://www.eclipse.org/qvt/0.9/QVTcore&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtcas&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtcas&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Wed Aug 06 11:16:05 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=QVTu&#13;&#10;readOnLoad=false&#13;&#10;storeOnDisposal=true&#13;&#10;aliases=QVT&#13;&#10;cached=false&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/0.9/QVTbase,http\://www.eclipse.org/ocl/3.1.0/Pivot,http\://www.eclipse.org/qvt/0.9/QVTcoreBase,http\://www.eclipse.org/qvt/0.9/QVTcore&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtu.qvtcas&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtu.qvtcas&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Wed Aug 06 11:20:13 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=config&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/examples/0.1/QVTcConfig&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLSConfig.xmi&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLSConfig.xmi&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Wed Aug 06 11:32:40 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=oclStdLib&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/ocl/3.1.0/Pivot&#13;&#10;modelUri=http\://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas&#13;&#10;type=EMF&#13;&#10;modelFile=http\://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+</listAttribute>
+<intAttribute key="originalModel" value="0"/>
+<stringAttribute key="source" value="/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/QVTcToQVTu.mig"/>
+</launchConfiguration> \ No newline at end of file
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS-QVTuToQVTm.launch b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS-QVTuToQVTm.launch
new file mode 100644
index 000000000..56a8470f9
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS-QVTuToQVTm.launch
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.epsilon.migration.eclipse.dt.launching.MigrationLaunchConfigurationDelegate">
+<intAttribute key="migratedModel" value="1"/>
+<listAttribute key="models">
+<listEntry value="#&#13;&#10;#Thu Sep 04 11:26:30 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=QVTu&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=QVT&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/ocl/3.1.0/Pivot,http\://www.eclipse.org/qvt/0.9/QVTbase,http\://www.eclipse.org/qvt/0.9/QVTcoreBase,http\://www.eclipse.org/qvt/0.9/QVTcore&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtu.qvtcas&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtu.qvtcas&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Thu Sep 04 11:27:05 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=QVTm&#13;&#10;readOnLoad=false&#13;&#10;storeOnDisposal=true&#13;&#10;aliases=QVT&#13;&#10;cached=false&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/ocl/3.1.0/Pivot,http\://www.eclipse.org/qvt/0.9/QVTbase,http\://www.eclipse.org/qvt/0.9/QVTcoreBase,http\://www.eclipse.org/qvt/0.9/QVTcore&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtm.qvtcas&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtm.qvtcas&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Thu Sep 04 11:27:21 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=config&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/examples/0.1/QVTcConfig&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLSConfig.xmi&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLSConfig.xmi&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Thu Sep 04 11:27:43 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=oclStdLib&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/ocl/3.1.0/Pivot&#13;&#10;modelUri=platform\:/resource/org.eclipse.ocl.examples.library/model-gen/OCL-2.5.oclas&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.ocl.examples.library/model-gen/OCL-2.5.oclas&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+</listAttribute>
+<intAttribute key="originalModel" value="0"/>
+<stringAttribute key="source" value="/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/QVTuToQVTm.mig"/>
+</launchConfiguration>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.ecore b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.ecore
new file mode 100644
index 000000000..f12a6a9eb
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.ecore
@@ -0,0 +1,16 @@
+<?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="HSV2HLS" nsURI="http://http://www.eclipse.org/qvt/examples/0.1/HSVtoHLS"
+ nsPrefix="hsv2hls">
+ <eClassifiers xsi:type="ecore:EDataType" name="RGB" instanceClassName="java.lang.String"/>
+ <eClassifiers xsi:type="ecore:EClass" name="HSVNode2HLSNode">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eType="#//HSVNode2HLSNode"
+ eOpposite="#//HSVNode2HLSNode/children"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="children" upperBound="-1"
+ eType="#//HSVNode2HLSNode" containment="true" eOpposite="#//HSVNode2HLSNode/parent"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="hsv" lowerBound="1" eType="ecore:EClass HSVTree.ecore#//HSVNode"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="hls" lowerBound="1" eType="ecore:EClass HLSTree.ecore#//HLSNode"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="rgb" lowerBound="1" eType="#//RGB"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtc b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtc
new file mode 100644
index 000000000..c826b26c2
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtc
@@ -0,0 +1,66 @@
+import 'HSVTree.ecore'::HSVTree;
+import 'HLSTree.ecore'::HLSTree;
+import 'HSV2HLS.ecore'::HSV2HLS;
+
+transformation hsv2hls {
+ hsv imports HSVTree; -- Should specify the correct package
+ hls imports HLSTree; --
+ imports HSV2HLS;
+}
+
+query hsv2hls::hls2rgb(color : HLSTree::HLS) : HSV2HLS::RGB;
+query hsv2hls::hsv2rgb(color : HSVTree::HSV) : HSV2HLS::RGB;
+query hsv2hls::rgb2hls(color : HSV2HLS::RGB) : HLSTree::HLS;
+query hsv2hls::rgb2hsv(color : HSV2HLS::RGB) : HSVTree::HSV;
+
+
+map HSV2HLSRoot in hsv2hls {
+ check hsv(hsvRoot : HSVNode |
+ hsvRoot.parent = null;) { }
+ check enforce hls() {
+ realize hlsNode : HLSNode |
+ hlsNode.parent := null;
+ }
+ where( ) {
+ realize middleRoot : HSVNode2HLSNode |
+ middleRoot.hsv := hsvRoot;
+ middleRoot.hls := hlsNode;
+
+ }
+ map {
+ where() {
+ middleRoot.name := hsvRoot.name;
+ middleRoot.name := hlsNode.name;
+ hsvRoot.name := middleRoot.name;
+ hlsNode.name := middleRoot.name;
+ }
+ }
+}
+
+map HSV2HLSRecursion in hsv2hls {
+ check enforce hsv(hsvParent : HSVNode | ) {
+ realize hsvNode : HSVNode |
+ hsvNode.parent := hsvParent;
+ }
+ check enforce hls(hlsParent : HLSNode |) {
+ realize hlsNode : HLSNode |
+ hlsNode.parent := hlsParent;
+ }
+ where(middleParent : HSVNode2HLSNode |
+ middleParent.hsv = hsvParent;
+ middleParent.hls = hlsParent;
+ ) {
+ realize middleNode : HSVNode2HLSNode |
+ middleNode.parent := middleParent;
+ middleNode.hsv := hsvNode;
+ middleNode.hls := hlsNode;
+ }
+ map {
+ where () {
+ middleNode.name := hsvNode.name;
+ middleNode.name := hlsNode.name;
+ hlsNode.name := middleNode.name;
+ hsvNode.name := middleNode.name;
+ }
+ }
+} \ No newline at end of file
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtcas b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtcas
new file mode 100644
index 000000000..2db057500
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtcas
@@ -0,0 +1,252 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<qvtc:CoreModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:pivot="http://www.eclipse.org/ocl/3.1.0/Pivot" xmlns:qvtb="http://www.eclipse.org/qvt/0.9/QVTbase"
+ xmlns:qvtc="http://www.eclipse.org/qvt/0.9/QVTcore" xmlns:qvtcb="http://www.eclipse.org/qvt/0.9/QVTcoreBase"
+ xsi:schemaLocation="http://www.eclipse.org/ocl/3.1.0/Pivot java://org.eclipse.ocl.examples.pivot.PivotPackage http://www.eclipse.org/qvt/0.9/QVTbase java://org.eclipse.qvtd.pivot.qvtbase.QVTbasePackage http://www.eclipse.org/qvt/0.9/QVTcore java://org.eclipse.qvtd.pivot.qvtcore.QVTcorePackage http://www.eclipse.org/qvt/0.9/QVTcoreBase java://org.eclipse.qvtd.pivot.qvtcorebase.QVTcoreBasePackage"
+ name="HSV2HLS.qvtc" externalURI="platform:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtc">
+ <nestedPackage xsi:type="qvtb:Transformation" xmi:id="T.hsv2hls" name="hsv2hls"
+ superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclElement">
+ <ownedOperation xsi:type="qvtb:Function" xmi:id="o.hsv2hls.hls2rgb..HLSTree.HLS"
+ isStatic="true" name="hls2rgb" type="HSV2HLS.ecore.oclas#T.HSV2HLS.RGB">
+ <ownedParameter xsi:type="qvtb:FunctionParameter" xmi:id="p0o.hsv2hls.hls2rgb..HLSTree.HLS"
+ name="color" type="HLSTree.ecore.oclas#T.HLSTree.HLS"/>
+ </ownedOperation>
+ <ownedOperation xsi:type="qvtb:Function" xmi:id="o.hsv2hls.hsv2rgb..HSVTree.HSV"
+ isStatic="true" name="hsv2rgb" type="HSV2HLS.ecore.oclas#T.HSV2HLS.RGB">
+ <ownedParameter xsi:type="qvtb:FunctionParameter" xmi:id="p0o.hsv2hls.hsv2rgb..HSVTree.HSV"
+ name="color" type="HSVTree.ecore.oclas#T.HSVTree.HSV"/>
+ </ownedOperation>
+ <ownedOperation xsi:type="qvtb:Function" xmi:id="o.hsv2hls.rgb2hls..HSV2HLS.RGB"
+ isStatic="true" name="rgb2hls" type="HLSTree.ecore.oclas#T.HLSTree.HLS">
+ <ownedParameter xsi:type="qvtb:FunctionParameter" xmi:id="p0o.hsv2hls.rgb2hls..HSV2HLS.RGB"
+ name="color" type="HSV2HLS.ecore.oclas#T.HSV2HLS.RGB"/>
+ </ownedOperation>
+ <ownedOperation xsi:type="qvtb:Function" xmi:id="o.hsv2hls.rgb2hsv..HSV2HLS.RGB"
+ isStatic="true" name="rgb2hsv" type="HSVTree.ecore.oclas#T.HSVTree.HSV">
+ <ownedParameter xsi:type="qvtb:FunctionParameter" xmi:id="p0o.hsv2hls.rgb2hsv..HSV2HLS.RGB"
+ name="color" type="HSV2HLS.ecore.oclas#T.HSV2HLS.RGB"/>
+ </ownedOperation>
+ <modelParameter xmi:id="qT.hsv2hls.hsv" name="hsv" usedPackage="HSVTree.ecore.oclas#P.HSVTree"/>
+ <modelParameter xmi:id="qT.hsv2hls.hls" name="hls" usedPackage="HLSTree.ecore.oclas#P.HLSTree"/>
+ <modelParameter usedPackage="HSV2HLS.ecore.oclas#P.HSV2HLS"/>
+ <rule xsi:type="qvtc:Mapping" name="HSV2HLSRoot">
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.hsv2hls.hsv">
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredProperty="HSVTree.ecore.oclas#p.HSVTree.HSVNode.parent">
+ <source xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot.hsv.guard.hsvRoot"/>
+ </source>
+ <argument xsi:type="pivot:NullLiteralExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclVoid"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.hsv2hls.HSV2HLSRoot.hsv.guard.hsvRoot" name="hsvRoot"
+ type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="true" isEnforceable="true"
+ typedModel="#qT.hsv2hls.hls">
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HLSTree.ecore.oclas#p.HLSTree.HLSNode.parent">
+ <value xsi:type="pivot:NullLiteralExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclVoid"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot.hls.bottom.hlsNode"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.hsv2hls.HSV2HLSRoot.hls.bottom.hlsNode" name="hlsNode"
+ type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.hsv">
+ <value xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot.hsv.guard.hsvRoot"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot.bottom.middleRoot"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.hls">
+ <value xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot.hls.bottom.hlsNode"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot.bottom.middleRoot"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.hsv2hls.HSV2HLSRoot.bottom.middleRoot" name="middleRoot"
+ type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"/>
+ </bottomPattern>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="HSVTree.ecore.oclas#p.HSVTree.HSVNode.name">
+ <source xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot.hsv.guard.hsvRoot"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot.bottom.middleRoot"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="HLSTree.ecore.oclas#p.HLSTree.HLSNode.name">
+ <source xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot.hls.bottom.hlsNode"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot.bottom.middleRoot"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSVTree.ecore.oclas#p.HSVTree.HSVNode.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.name">
+ <source xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot.bottom.middleRoot"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot.hsv.guard.hsvRoot"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HLSTree.ecore.oclas#p.HLSTree.HLSNode.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.name">
+ <source xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot.bottom.middleRoot"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot.hls.bottom.hlsNode"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="HSV2HLSRecursion">
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="true" isEnforceable="true"
+ typedModel="#qT.hsv2hls.hsv">
+ <guardPattern>
+ <variable xmi:id="qV.hsv2hls.HSV2HLSRecursion.hsv.guard.hsvParent" name="hsvParent"
+ type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSVTree.ecore.oclas#p.HSVTree.HSVNode.parent">
+ <value xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.hsv.guard.hsvParent"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.hsv.bottom.hsvNode"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.hsv2hls.HSV2HLSRecursion.hsv.bottom.hsvNode"
+ name="hsvNode" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="true" isEnforceable="true"
+ typedModel="#qT.hsv2hls.hls">
+ <guardPattern>
+ <variable xmi:id="qV.hsv2hls.HSV2HLSRecursion.hls.guard.hlsParent" name="hlsParent"
+ type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HLSTree.ecore.oclas#p.HLSTree.HLSNode.parent">
+ <value xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.hls.guard.hlsParent"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.hls.bottom.hlsNode"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.hsv2hls.HSV2HLSRecursion.hls.bottom.hlsNode"
+ name="hlsNode" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.hsv">
+ <source xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.guard.middleParent"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.hsv.guard.hsvParent"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.hls">
+ <source xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.guard.middleParent"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.hls.guard.hlsParent"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.hsv2hls.HSV2HLSRecursion.guard.middleParent" name="middleParent"
+ type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.parent">
+ <value xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.guard.middleParent"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.bottom.middleNode"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.hsv">
+ <value xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.hsv.bottom.hsvNode"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.bottom.middleNode"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.hls">
+ <value xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.hls.bottom.hlsNode"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.bottom.middleNode"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.hsv2hls.HSV2HLSRecursion.bottom.middleNode" name="middleNode"
+ type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"/>
+ </bottomPattern>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="HSVTree.ecore.oclas#p.HSVTree.HSVNode.name">
+ <source xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.hsv.bottom.hsvNode"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.bottom.middleNode"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="HLSTree.ecore.oclas#p.HLSTree.HLSNode.name">
+ <source xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.hls.bottom.hlsNode"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.bottom.middleNode"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HLSTree.ecore.oclas#p.HLSTree.HLSNode.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.name">
+ <source xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.bottom.middleNode"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.hls.bottom.hlsNode"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSVTree.ecore.oclas#p.HSVTree.HSVNode.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.name">
+ <source xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.bottom.middleNode"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.hsv.bottom.hsvNode"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ </rule>
+ </nestedPackage>
+</qvtc:CoreModel>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtias b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtias
new file mode 100644
index 000000000..8cd86061e
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtias
@@ -0,0 +1,377 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<qvti:ImperativeModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:pivot="http://www.eclipse.org/ocl/3.1.0/Pivot" xmlns:qvtb="http://www.eclipse.org/qvt/0.9/QVTbase"
+ xmlns:qvtcb="http://www.eclipse.org/qvt/0.9/QVTcoreBase" xmlns:qvti="http://www.eclipse.org/qvt/0.9/QVTimperative"
+ xsi:schemaLocation="http://www.eclipse.org/ocl/3.1.0/Pivot java://org.eclipse.ocl.examples.pivot.PivotPackage http://www.eclipse.org/qvt/0.9/QVTbase java://org.eclipse.qvtd.pivot.qvtbase.QVTbasePackage http://www.eclipse.org/qvt/0.9/QVTcoreBase java://org.eclipse.qvtd.pivot.qvtcorebase.QVTcoreBasePackage http://www.eclipse.org/qvt/0.9/QVTimperative java://org.eclipse.qvtd.pivot.qvtimperative.QVTimperativePackage"
+ name="HSV2HLS.qvti" externalURI="platform:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvti">
+ <nestedPackage xsi:type="qvtb:Transformation" xmi:id="T.hsv2hls" name="hsv2hls">
+ <modelParameter xmi:id="qT.hsv2hls.hsv" name="hsv" usedPackage="HSVTree.ecore.oclas#P.HSVTree"/>
+ <modelParameter xmi:id="qT.hsv2hls.hls" name="hls" usedPackage="HLSTree.ecore.oclas#P.HLSTree"/>
+ <modelParameter xmi:id="qT.hsv2hls.middle" name="middle" usedPackage="HSV2HLS.ecore.oclas#P.HSV2HLS"/>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.hsv2hls.HSV2HLSRoot_MR" name="HSV2HLSRoot_MR">
+ <domain xsi:type="qvtcb:CoreDomain" name="hls" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.hsv2hls.hls">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.hsv2hls.HSV2HLSRoot_MR.hls.bottom.hlsNode"
+ name="hlsNode" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.hsv2hls.middle">
+ <guardPattern>
+ <variable xmi:id="qV.hsv2hls.HSV2HLSRoot_MR.middle.guard.middleRoot" name="middleRoot"
+ type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.hls">
+ <value xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot_MR.hls.bottom.hlsNode"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot_MR.middle.guard.middleRoot"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HLSTree.ecore.oclas#p.HLSTree.HLSNode.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.name">
+ <source xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot_MR.middle.guard.middleRoot"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot_MR.hls.bottom.hlsNode"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HLSTree.ecore.oclas#p.HLSTree.HLSNode.parent">
+ <value xsi:type="pivot:NullLiteralExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclVoid"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot_MR.hls.bottom.hlsNode"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.hsv2hls.HSV2HLSRoot_LM" name="HSV2HLSRoot_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="hsv" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.hsv2hls.hsv">
+ <guardPattern>
+ <variable xmi:id="qV.hsv2hls.HSV2HLSRoot_LM.hsv.guard.hsvRoot" name="hsvRoot"
+ type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.hsv2hls.middle">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.hsv2hls.HSV2HLSRoot_LM.middle.bottom.middleRoot"
+ name="middleRoot" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredProperty="HSVTree.ecore.oclas#p.HSVTree.HSVNode.parent">
+ <source xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot_LM.hsv.guard.hsvRoot"/>
+ </source>
+ <argument xsi:type="pivot:NullLiteralExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclVoid"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="HSVTree.ecore.oclas#p.HSVTree.HSVNode.name">
+ <source xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot_LM.hsv.guard.hsvRoot"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot_LM.middle.bottom.middleRoot"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.hsv">
+ <value xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot_LM.hsv.guard.hsvRoot"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot_LM.middle.bottom.middleRoot"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.hsv2hls.HSV2HLSRecursion_LM" name="HSV2HLSRecursion_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="hsv" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.hsv2hls.hsv">
+ <guardPattern>
+ <variable xmi:id="qV.hsv2hls.HSV2HLSRecursion_LM.hsv.guard.hsvParent" name="hsvParent"
+ type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"/>
+ <variable xmi:id="qV.hsv2hls.HSV2HLSRecursion_LM.hsv.guard.hsvNode" name="hsvNode"
+ type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.hsv2hls.middle">
+ <guardPattern>
+ <variable xmi:id="qV.hsv2hls.HSV2HLSRecursion_LM.middle.guard.middleParent"
+ name="middleParent" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.hsv2hls.HSV2HLSRecursion_LM.middle.bottom.middleNode"
+ name="middleNode" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.hsv">
+ <source xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_LM.middle.guard.middleParent"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_LM.hsv.guard.hsvParent"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredProperty="HSVTree.ecore.oclas#p.HSVTree.HSVNode.parent">
+ <source xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_LM.hsv.guard.hsvNode"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_LM.hsv.guard.hsvParent"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.parent">
+ <value xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_LM.middle.guard.middleParent"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_LM.middle.bottom.middleNode"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.hsv">
+ <value xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_LM.hsv.guard.hsvNode"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_LM.middle.bottom.middleNode"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="HSVTree.ecore.oclas#p.HSVTree.HSVNode.name">
+ <source xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_LM.hsv.guard.hsvNode"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_LM.middle.bottom.middleNode"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.hsv2hls.HSV2HLSRecursion_MR" name="HSV2HLSRecursion_MR">
+ <domain xsi:type="qvtcb:CoreDomain" name="hls" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.hsv2hls.hls">
+ <guardPattern>
+ <variable xmi:id="qV.hsv2hls.HSV2HLSRecursion_MR.hls.guard.hlsParent" name="hlsParent"
+ type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.hsv2hls.HSV2HLSRecursion_MR.hls.bottom.hlsNode"
+ name="hlsNode" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.hsv2hls.middle">
+ <guardPattern>
+ <variable xmi:id="qV.hsv2hls.HSV2HLSRecursion_MR.middle.guard.middleParent"
+ name="middleParent" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"/>
+ <variable xmi:id="qV.hsv2hls.HSV2HLSRecursion_MR.middle.guard.middleNode"
+ name="middleNode" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.hls">
+ <source xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_MR.middle.guard.middleParent"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_MR.hls.guard.hlsParent"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.parent">
+ <source xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_MR.middle.guard.middleNode"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_MR.middle.guard.middleParent"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.hls">
+ <value xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_MR.hls.bottom.hlsNode"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_MR.middle.guard.middleNode"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HLSTree.ecore.oclas#p.HLSTree.HLSNode.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.name">
+ <source xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_MR.middle.guard.middleNode"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_MR.hls.bottom.hlsNode"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HLSTree.ecore.oclas#p.HLSTree.HLSNode.parent">
+ <value xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_MR.hls.guard.hlsParent"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_MR.hls.bottom.hlsNode"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.hsv2hls.__root__" name="__root__">
+ <guardPattern/>
+ <bottomPattern/>
+ <mappingStatement xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingLoop">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclElement.allInstances">
+ <source xsi:type="pivot:TypeExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredType="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"/>
+ </source>
+ <body xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m.hsv2hls.HSV2HLSRoot_MR">
+ <binding boundVariable="#qV.hsv2hls.HSV2HLSRoot_MR.middle.guard.middleRoot">
+ <value xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#i.hsv2hls.__root__.0.0.middleRoot"/>
+ </binding>
+ </mappingStatements>
+ </body>
+ <iterator xmi:id="i.hsv2hls.__root__.0.0.middleRoot" name="middleRoot" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"/>
+ </mappingStatements>
+ <mappingStatements xsi:type="qvti:MappingLoop">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclElement.allInstances">
+ <source xsi:type="pivot:TypeExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredType="HSVTree.ecore.oclas#T.HSVTree.HSVNode"/>
+ </source>
+ <body xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m.hsv2hls.HSV2HLSRoot_LM">
+ <binding boundVariable="#qV.hsv2hls.HSV2HLSRoot_LM.hsv.guard.hsvRoot">
+ <value xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#i.hsv2hls.__root__.0.1.hsvRoot"/>
+ </binding>
+ </mappingStatements>
+ </body>
+ <iterator xmi:id="i.hsv2hls.__root__.0.1.hsvRoot" name="hsvRoot" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"/>
+ </mappingStatements>
+ <mappingStatements xsi:type="qvti:MappingLoop">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclElement.allInstances">
+ <source xsi:type="pivot:TypeExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredType="HSVTree.ecore.oclas#T.HSVTree.HSVNode"/>
+ </source>
+ <body xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingLoop">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclElement.allInstances">
+ <source xsi:type="pivot:TypeExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredType="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"/>
+ </source>
+ <body xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m.hsv2hls.HSV2HLSRecursion_LM">
+ <binding boundVariable="#qV.hsv2hls.HSV2HLSRecursion_LM.middle.guard.middleParent">
+ <value xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#i.hsv2hls.__root__.0.2.0.0.middleParent"/>
+ </binding>
+ <binding boundVariable="#qV.hsv2hls.HSV2HLSRecursion_LM.hsv.guard.hsvNode">
+ <value xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#i.hsv2hls.__root__.0.2.hsvNode"/>
+ </binding>
+ <binding boundVariable="#qV.hsv2hls.HSV2HLSRecursion_LM.hsv.guard.hsvParent">
+ <value xsi:type="pivot:PropertyCallExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredProperty="HSVTree.ecore.oclas#p.HSVTree.HSVNode.parent">
+ <source xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_LM.hsv.guard.hsvNode"/>
+ </value>
+ </binding>
+ </mappingStatements>
+ </body>
+ <iterator xmi:id="i.hsv2hls.__root__.0.2.0.0.middleParent" name="middleParent"
+ type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"/>
+ </mappingStatements>
+ </body>
+ <iterator xmi:id="i.hsv2hls.__root__.0.2.hsvNode" name="hsvNode" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"/>
+ </mappingStatements>
+ <mappingStatements xsi:type="qvti:MappingLoop">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclElement.allInstances">
+ <source xsi:type="pivot:TypeExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredType="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"/>
+ </source>
+ <body xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m.hsv2hls.HSV2HLSRecursion_MR">
+ <binding boundVariable="#qV.hsv2hls.HSV2HLSRecursion_MR.middle.guard.middleNode">
+ <value xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#i.hsv2hls.__root__.0.3.middleNode"/>
+ </binding>
+ <binding boundVariable="#qV.hsv2hls.HSV2HLSRecursion_MR.middle.guard.middleParent">
+ <value xsi:type="pivot:PropertyCallExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.parent">
+ <source xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_MR.middle.guard.middleNode"/>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.hsv2hls.HSV2HLSRecursion_MR.hls.guard.hlsParent">
+ <value xsi:type="pivot:PropertyCallExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.hls">
+ <source xsi:type="pivot:PropertyCallExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.parent">
+ <source xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_MR.middle.guard.middleNode"/>
+ </source>
+ </value>
+ </binding>
+ </mappingStatements>
+ </body>
+ <iterator xmi:id="i.hsv2hls.__root__.0.3.middleNode" name="middleNode" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"/>
+ </mappingStatements>
+ </mappingStatement>
+ </rule>
+ </nestedPackage>
+ <nestedPackage xmi:id="P.$$" name="$$" nsPrefix="orphanage" nsURI="http://www.eclipse.org/ocl/3.1.0/orphanage">
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.1"
+ elementType="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#OclSelf">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:SelfType http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#OclSelf"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.2"
+ elementType="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#OclSelf">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:SelfType http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#OclSelf"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#OclSelf">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:SelfType http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#OclSelf"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ </nestedPackage>
+</qvti:ImperativeModel>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtm.qvtcas b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtm.qvtcas
new file mode 100644
index 000000000..e22208ce4
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtm.qvtcas
@@ -0,0 +1,213 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<qvtc:CoreModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:pivot="http://www.eclipse.org/ocl/3.1.0/Pivot" xmlns:qvtb="http://www.eclipse.org/qvt/0.9/QVTbase"
+ xmlns:qvtc="http://www.eclipse.org/qvt/0.9/QVTcore" xmlns:qvtcb="http://www.eclipse.org/qvt/0.9/QVTcoreBase"
+ xsi:schemaLocation="http://www.eclipse.org/ocl/3.1.0/Pivot java://org.eclipse.ocl.examples.pivot.PivotPackage http://www.eclipse.org/qvt/0.9/QVTbase java://org.eclipse.qvtd.pivot.qvtbase.QVTbasePackage http://www.eclipse.org/qvt/0.9/QVTcore java://org.eclipse.qvtd.pivot.qvtcore.QVTcorePackage http://www.eclipse.org/qvt/0.9/QVTcoreBase java://org.eclipse.qvtd.pivot.qvtcorebase.QVTcoreBasePackage"
+ name="HSV2HLS.qvtm.qvtc" externalURI="platform:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtm.qvtc">
+ <nestedPackage xsi:type="qvtb:Transformation" xmi:id="T.hsv2hls" name="hsv2hls"
+ superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclElement">
+ <ownedComment body="/* Enforce hsv to hls */"/>
+ <ownedOperation xsi:type="qvtb:Function" xmi:id="o.hsv2hls.hls2rgb..HLSTree.HLS"
+ isStatic="true" name="hls2rgb" type="HSV2HLS.ecore.oclas#T.HSV2HLS.RGB">
+ <ownedParameter xsi:type="qvtb:FunctionParameter" xmi:id="p0o.hsv2hls.hls2rgb..HLSTree.HLS"
+ name="color" type="HLSTree.ecore.oclas#T.HLSTree.HLS"/>
+ </ownedOperation>
+ <ownedOperation xsi:type="qvtb:Function" xmi:id="o.hsv2hls.hsv2rgb..HSVTree.HSV"
+ isStatic="true" name="hsv2rgb" type="HSV2HLS.ecore.oclas#T.HSV2HLS.RGB">
+ <ownedParameter xsi:type="qvtb:FunctionParameter" xmi:id="p0o.hsv2hls.hsv2rgb..HSVTree.HSV"
+ name="color" type="HSVTree.ecore.oclas#T.HSVTree.HSV"/>
+ </ownedOperation>
+ <ownedOperation xsi:type="qvtb:Function" xmi:id="o.hsv2hls.rgb2hls..HSV2HLS.RGB"
+ isStatic="true" name="rgb2hls" type="HLSTree.ecore.oclas#T.HLSTree.HLS">
+ <ownedParameter xsi:type="qvtb:FunctionParameter" xmi:id="p0o.hsv2hls.rgb2hls..HSV2HLS.RGB"
+ name="color" type="HSV2HLS.ecore.oclas#T.HSV2HLS.RGB"/>
+ </ownedOperation>
+ <ownedOperation xsi:type="qvtb:Function" xmi:id="o.hsv2hls.rgb2hsv..HSV2HLS.RGB"
+ isStatic="true" name="rgb2hsv" type="HSVTree.ecore.oclas#T.HSVTree.HSV">
+ <ownedParameter xsi:type="qvtb:FunctionParameter" xmi:id="p0o.hsv2hls.rgb2hsv..HSV2HLS.RGB"
+ name="color" type="HSV2HLS.ecore.oclas#T.HSV2HLS.RGB"/>
+ </ownedOperation>
+ <modelParameter xmi:id="qT.hsv2hls.hsv" name="hsv" usedPackage="HSVTree.ecore.oclas#P.HSVTree"/>
+ <modelParameter xmi:id="qT.hsv2hls.hls" name="hls" usedPackage="HLSTree.ecore.oclas#P.HLSTree"/>
+ <modelParameter usedPackage="HSV2HLS.ecore.oclas#P.HSV2HLS"/>
+ <rule xsi:type="qvtc:Mapping" name="HSV2HLSRoot">
+ <domain xsi:type="qvtcb:CoreDomain" name="hsv" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.hsv2hls.hsv">
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredProperty="HSVTree.ecore.oclas#p.HSVTree.HSVNode.parent">
+ <source xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot.hsv.guard.hsvRoot"/>
+ </source>
+ <argument xsi:type="pivot:NullLiteralExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclVoid"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.hsv2hls.HSV2HLSRoot.hsv.guard.hsvRoot" name="hsvRoot"
+ type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="hls" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.hsv2hls.hls">
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HLSTree.ecore.oclas#p.HLSTree.HLSNode.parent">
+ <value xsi:type="pivot:NullLiteralExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclVoid"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot.hls.bottom.hlsNode"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.hsv2hls.HSV2HLSRoot.hls.bottom.hlsNode" name="hlsNode"
+ type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.hsv">
+ <value xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot.hsv.guard.hsvRoot"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot.bottom.middleRoot"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.hls">
+ <value xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot.hls.bottom.hlsNode"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot.bottom.middleRoot"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="HSVTree.ecore.oclas#p.HSVTree.HSVNode.name">
+ <source xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot.hsv.guard.hsvRoot"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot.bottom.middleRoot"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HLSTree.ecore.oclas#p.HLSTree.HLSNode.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.name">
+ <source xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot.bottom.middleRoot"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot.hls.bottom.hlsNode"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.hsv2hls.HSV2HLSRoot.bottom.middleRoot" name="middleRoot"
+ type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="HSV2HLSRecursion">
+ <domain xsi:type="qvtcb:CoreDomain" name="hsv" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.hsv2hls.hsv">
+ <guardPattern>
+ <variable xmi:id="qV.hsv2hls.HSV2HLSRecursion.hsv.guard.hsvParent" name="hsvParent"
+ type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredProperty="HSVTree.ecore.oclas#p.HSVTree.HSVNode.parent">
+ <source xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.hsv.bottom.hsvNode"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.hsv.guard.hsvParent"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.hsv2hls.HSV2HLSRecursion.hsv.bottom.hsvNode" name="hsvNode"
+ type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="hls" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.hsv2hls.hls">
+ <guardPattern>
+ <variable xmi:id="qV.hsv2hls.HSV2HLSRecursion.hls.guard.hlsParent" name="hlsParent"
+ type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HLSTree.ecore.oclas#p.HLSTree.HLSNode.parent">
+ <value xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.hls.guard.hlsParent"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.hls.bottom.hlsNode"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.hsv2hls.HSV2HLSRecursion.hls.bottom.hlsNode"
+ name="hlsNode" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.hsv">
+ <source xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.guard.middleParent"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.hsv.guard.hsvParent"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.hls">
+ <source xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.guard.middleParent"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.hls.guard.hlsParent"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.hsv2hls.HSV2HLSRecursion.guard.middleParent" name="middleParent"
+ type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.parent">
+ <value xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.guard.middleParent"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.bottom.middleNode"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.hsv">
+ <value xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.hsv.bottom.hsvNode"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.bottom.middleNode"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.hls">
+ <value xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.hls.bottom.hlsNode"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.bottom.middleNode"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="HSVTree.ecore.oclas#p.HSVTree.HSVNode.name">
+ <source xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.hsv.bottom.hsvNode"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.bottom.middleNode"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HLSTree.ecore.oclas#p.HLSTree.HLSNode.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.name">
+ <source xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.bottom.middleNode"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.hls.bottom.hlsNode"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.hsv2hls.HSV2HLSRecursion.bottom.middleNode" name="middleNode"
+ type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"/>
+ </bottomPattern>
+ </rule>
+ </nestedPackage>
+</qvtc:CoreModel>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtp.qvtias b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtp.qvtias
new file mode 100644
index 000000000..428de30aa
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtp.qvtias
@@ -0,0 +1,249 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<qvti:ImperativeModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:pivot="http://www.eclipse.org/ocl/3.1.0/Pivot" xmlns:qvtb="http://www.eclipse.org/qvt/0.9/QVTbase"
+ xmlns:qvtcb="http://www.eclipse.org/qvt/0.9/QVTcoreBase" xmlns:qvti="http://www.eclipse.org/qvt/0.9/QVTimperative"
+ xsi:schemaLocation="http://www.eclipse.org/ocl/3.1.0/Pivot java://org.eclipse.ocl.examples.pivot.PivotPackage http://www.eclipse.org/qvt/0.9/QVTbase java://org.eclipse.qvtd.pivot.qvtbase.QVTbasePackage http://www.eclipse.org/qvt/0.9/QVTcoreBase java://org.eclipse.qvtd.pivot.qvtcorebase.QVTcoreBasePackage http://www.eclipse.org/qvt/0.9/QVTimperative java://org.eclipse.qvtd.pivot.qvtimperative.QVTimperativePackage"
+ name="HSV2HLS.qvtp.qvti" externalURI="platform:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtp.qvti">
+ <nestedPackage xsi:type="qvtb:Transformation" xmi:id="T.hsv2hls" name="hsv2hls">
+ <modelParameter xmi:id="qT.hsv2hls.hsv" name="hsv" usedPackage="HSVTree.ecore.oclas#P.HSVTree"/>
+ <modelParameter xmi:id="qT.hsv2hls.hls" name="hls" usedPackage="HLSTree.ecore.oclas#P.HLSTree"/>
+ <modelParameter xmi:id="qT.hsv2hls.middle" name="middle" usedPackage="HSV2HLS.ecore.oclas#P.HSV2HLS"/>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.hsv2hls.HSV2HLSRoot_MR" name="HSV2HLSRoot_MR">
+ <domain xsi:type="qvtcb:CoreDomain" name="hls" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.hsv2hls.hls">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.hsv2hls.HSV2HLSRoot_MR.hls.bottom.hlsNode"
+ name="hlsNode" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.hsv2hls.middle">
+ <guardPattern>
+ <variable xmi:id="qV.hsv2hls.HSV2HLSRoot_MR.middle.guard.middleRoot" name="middleRoot"
+ type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.hls">
+ <value xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot_MR.hls.bottom.hlsNode"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot_MR.middle.guard.middleRoot"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HLSTree.ecore.oclas#p.HLSTree.HLSNode.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.name">
+ <source xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot_MR.middle.guard.middleRoot"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot_MR.hls.bottom.hlsNode"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HLSTree.ecore.oclas#p.HLSTree.HLSNode.parent">
+ <value xsi:type="pivot:NullLiteralExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclVoid"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot_MR.hls.bottom.hlsNode"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.hsv2hls.HSV2HLSRoot_LM" name="HSV2HLSRoot_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="hsv" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.hsv2hls.hsv">
+ <guardPattern>
+ <variable xmi:id="qV.hsv2hls.HSV2HLSRoot_LM.hsv.guard.hsvRoot" name="hsvRoot"
+ type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.hsv2hls.middle">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.hsv2hls.HSV2HLSRoot_LM.middle.bottom.middleRoot"
+ name="middleRoot" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredProperty="HSVTree.ecore.oclas#p.HSVTree.HSVNode.parent">
+ <source xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot_LM.hsv.guard.hsvRoot"/>
+ </source>
+ <argument xsi:type="pivot:NullLiteralExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclVoid"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="HSVTree.ecore.oclas#p.HSVTree.HSVNode.name">
+ <source xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot_LM.hsv.guard.hsvRoot"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot_LM.middle.bottom.middleRoot"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.hsv">
+ <value xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot_LM.hsv.guard.hsvRoot"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot_LM.middle.bottom.middleRoot"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.hsv2hls.HSV2HLSRecursion_LM" name="HSV2HLSRecursion_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="hsv" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.hsv2hls.hsv">
+ <guardPattern>
+ <variable xmi:id="qV.hsv2hls.HSV2HLSRecursion_LM.hsv.guard.hsvParent" name="hsvParent"
+ type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"/>
+ <variable xmi:id="qV.hsv2hls.HSV2HLSRecursion_LM.hsv.guard.hsvNode" name="hsvNode"
+ type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.hsv2hls.middle">
+ <guardPattern>
+ <variable xmi:id="qV.hsv2hls.HSV2HLSRecursion_LM.middle.guard.middleParent"
+ name="middleParent" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.hsv2hls.HSV2HLSRecursion_LM.middle.bottom.middleNode"
+ name="middleNode" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.hsv">
+ <source xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_LM.middle.guard.middleParent"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_LM.hsv.guard.hsvParent"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredProperty="HSVTree.ecore.oclas#p.HSVTree.HSVNode.parent">
+ <source xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_LM.hsv.guard.hsvNode"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_LM.hsv.guard.hsvParent"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.parent">
+ <value xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_LM.middle.guard.middleParent"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_LM.middle.bottom.middleNode"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.hsv">
+ <value xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_LM.hsv.guard.hsvNode"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_LM.middle.bottom.middleNode"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="HSVTree.ecore.oclas#p.HSVTree.HSVNode.name">
+ <source xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_LM.hsv.guard.hsvNode"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_LM.middle.bottom.middleNode"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.hsv2hls.HSV2HLSRecursion_MR" name="HSV2HLSRecursion_MR">
+ <domain xsi:type="qvtcb:CoreDomain" name="hls" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.hsv2hls.hls">
+ <guardPattern>
+ <variable xmi:id="qV.hsv2hls.HSV2HLSRecursion_MR.hls.guard.hlsParent" name="hlsParent"
+ type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.hsv2hls.HSV2HLSRecursion_MR.hls.bottom.hlsNode"
+ name="hlsNode" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.hsv2hls.middle">
+ <guardPattern>
+ <variable xmi:id="qV.hsv2hls.HSV2HLSRecursion_MR.middle.guard.middleParent"
+ name="middleParent" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"/>
+ <variable xmi:id="qV.hsv2hls.HSV2HLSRecursion_MR.middle.guard.middleNode"
+ name="middleNode" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.hls">
+ <source xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_MR.middle.guard.middleParent"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_MR.hls.guard.hlsParent"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.parent">
+ <source xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_MR.middle.guard.middleNode"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_MR.middle.guard.middleParent"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.hls">
+ <value xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_MR.hls.bottom.hlsNode"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_MR.middle.guard.middleNode"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HLSTree.ecore.oclas#p.HLSTree.HLSNode.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.name">
+ <source xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_MR.middle.guard.middleNode"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_MR.hls.bottom.hlsNode"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HLSTree.ecore.oclas#p.HLSTree.HLSNode.parent">
+ <value xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_MR.hls.guard.hlsParent"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion_MR.hls.bottom.hlsNode"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.hsv2hls.__root__" name="__root__">
+ <guardPattern/>
+ <bottomPattern/>
+ </rule>
+ </nestedPackage>
+</qvti:ImperativeModel>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtu.qvtcas b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtu.qvtcas
new file mode 100644
index 000000000..b729bac0e
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtu.qvtcas
@@ -0,0 +1,223 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<qvtc:CoreModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:pivot="http://www.eclipse.org/ocl/3.1.0/Pivot" xmlns:qvtb="http://www.eclipse.org/qvt/0.9/QVTbase"
+ xmlns:qvtc="http://www.eclipse.org/qvt/0.9/QVTcore" xmlns:qvtcb="http://www.eclipse.org/qvt/0.9/QVTcoreBase"
+ xsi:schemaLocation="http://www.eclipse.org/ocl/3.1.0/Pivot java://org.eclipse.ocl.examples.pivot.PivotPackage http://www.eclipse.org/qvt/0.9/QVTbase java://org.eclipse.qvtd.pivot.qvtbase.QVTbasePackage http://www.eclipse.org/qvt/0.9/QVTcore java://org.eclipse.qvtd.pivot.qvtcore.QVTcorePackage http://www.eclipse.org/qvt/0.9/QVTcoreBase java://org.eclipse.qvtd.pivot.qvtcorebase.QVTcoreBasePackage"
+ name="HSV2HLS.qvtu.qvtc" externalURI="platform:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.qvtu.qvtc">
+ <nestedPackage xsi:type="qvtb:Transformation" xmi:id="T.hsv2hls" name="hsv2hls"
+ superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclElement">
+ <ownedComment body="/* Enforce hsv to hls */"/>
+ <ownedOperation xsi:type="qvtb:Function" xmi:id="o.hsv2hls.hls2rgb..HLSTree.HLS"
+ isStatic="true" name="hls2rgb" type="HSV2HLS.ecore.oclas#T.HSV2HLS.RGB">
+ <ownedParameter xsi:type="qvtb:FunctionParameter" xmi:id="p0o.hsv2hls.hls2rgb..HLSTree.HLS"
+ name="color" type="HLSTree.ecore.oclas#T.HLSTree.HLS"/>
+ </ownedOperation>
+ <ownedOperation xsi:type="qvtb:Function" xmi:id="o.hsv2hls.hsv2rgb..HSVTree.HSV"
+ isStatic="true" name="hsv2rgb" type="HSV2HLS.ecore.oclas#T.HSV2HLS.RGB">
+ <ownedParameter xsi:type="qvtb:FunctionParameter" xmi:id="p0o.hsv2hls.hsv2rgb..HSVTree.HSV"
+ name="color" type="HSVTree.ecore.oclas#T.HSVTree.HSV"/>
+ </ownedOperation>
+ <ownedOperation xsi:type="qvtb:Function" xmi:id="o.hsv2hls.rgb2hls..HSV2HLS.RGB"
+ isStatic="true" name="rgb2hls" type="HLSTree.ecore.oclas#T.HLSTree.HLS">
+ <ownedParameter xsi:type="qvtb:FunctionParameter" xmi:id="p0o.hsv2hls.rgb2hls..HSV2HLS.RGB"
+ name="color" type="HSV2HLS.ecore.oclas#T.HSV2HLS.RGB"/>
+ </ownedOperation>
+ <ownedOperation xsi:type="qvtb:Function" xmi:id="o.hsv2hls.rgb2hsv..HSV2HLS.RGB"
+ isStatic="true" name="rgb2hsv" type="HSVTree.ecore.oclas#T.HSVTree.HSV">
+ <ownedParameter xsi:type="qvtb:FunctionParameter" xmi:id="p0o.hsv2hls.rgb2hsv..HSV2HLS.RGB"
+ name="color" type="HSV2HLS.ecore.oclas#T.HSV2HLS.RGB"/>
+ </ownedOperation>
+ <modelParameter xmi:id="qT.hsv2hls.hsv" name="hsv" usedPackage="HSVTree.ecore.oclas#P.HSVTree"/>
+ <modelParameter xmi:id="qT.hsv2hls.hls" name="hls" usedPackage="HLSTree.ecore.oclas#P.HLSTree"/>
+ <modelParameter usedPackage="HSV2HLS.ecore.oclas#P.HSV2HLS"/>
+ <rule xsi:type="qvtc:Mapping" name="HSV2HLSRoot">
+ <domain xsi:type="qvtcb:CoreDomain" name="hsv" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.hsv2hls.hsv">
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredProperty="HSVTree.ecore.oclas#p.HSVTree.HSVNode.parent">
+ <source xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot.hsv.guard.hsvRoot"/>
+ </source>
+ <argument xsi:type="pivot:NullLiteralExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclVoid"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.hsv2hls.HSV2HLSRoot.hsv.guard.hsvRoot" name="hsvRoot"
+ type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="hls" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.hsv2hls.hls">
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HLSTree.ecore.oclas#p.HLSTree.HLSNode.parent">
+ <value xsi:type="pivot:NullLiteralExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclVoid"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot.hls.bottom.hlsNode"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.hsv2hls.HSV2HLSRoot.hls.bottom.hlsNode" name="hlsNode"
+ type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.hsv">
+ <value xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot.hsv.guard.hsvRoot"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot.bottom.middleRoot"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.hls">
+ <value xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot.hls.bottom.hlsNode"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot.bottom.middleRoot"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.hsv2hls.HSV2HLSRoot.bottom.middleRoot" name="middleRoot"
+ type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"/>
+ </bottomPattern>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="HSVTree.ecore.oclas#p.HSVTree.HSVNode.name">
+ <source xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot.hsv.guard.hsvRoot"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot.bottom.middleRoot"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HLSTree.ecore.oclas#p.HLSTree.HLSNode.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.name">
+ <source xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot.bottom.middleRoot"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRoot.hls.bottom.hlsNode"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="HSV2HLSRecursion">
+ <domain xsi:type="qvtcb:CoreDomain" name="hsv" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.hsv2hls.hsv">
+ <guardPattern>
+ <variable xmi:id="qV.hsv2hls.HSV2HLSRecursion.hsv.guard.hsvParent" name="hsvParent"
+ type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredProperty="HSVTree.ecore.oclas#p.HSVTree.HSVNode.parent">
+ <source xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.hsv.bottom.hsvNode"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.hsv.guard.hsvParent"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.hsv2hls.HSV2HLSRecursion.hsv.bottom.hsvNode" name="hsvNode"
+ type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="hls" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.hsv2hls.hls">
+ <guardPattern>
+ <variable xmi:id="qV.hsv2hls.HSV2HLSRecursion.hls.guard.hlsParent" name="hlsParent"
+ type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HLSTree.ecore.oclas#p.HLSTree.HLSNode.parent">
+ <value xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.hls.guard.hlsParent"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.hls.bottom.hlsNode"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.hsv2hls.HSV2HLSRecursion.hls.bottom.hlsNode"
+ name="hlsNode" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.hsv">
+ <source xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.guard.middleParent"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.hsv.guard.hsvParent"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.hls">
+ <source xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.guard.middleParent"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.hls.guard.hlsParent"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.hsv2hls.HSV2HLSRecursion.guard.middleParent" name="middleParent"
+ type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.parent">
+ <value xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.guard.middleParent"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.bottom.middleNode"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.hsv">
+ <value xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.hsv.bottom.hsvNode"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.bottom.middleNode"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.hls">
+ <value xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.hls.bottom.hlsNode"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.bottom.middleNode"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.hsv2hls.HSV2HLSRecursion.bottom.middleNode" name="middleNode"
+ type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"/>
+ </bottomPattern>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="HSVTree.ecore.oclas#p.HSVTree.HSVNode.name">
+ <source xsi:type="pivot:VariableExp" type="HSVTree.ecore.oclas#T.HSVTree.HSVNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.hsv.bottom.hsvNode"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.bottom.middleNode"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="HLSTree.ecore.oclas#p.HLSTree.HLSNode.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="HSV2HLS.ecore.oclas#p.HSV2HLS.HSVNode2HLSNode.name">
+ <source xsi:type="pivot:VariableExp" type="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.bottom.middleNode"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="HLSTree.ecore.oclas#T.HLSTree.HLSNode"
+ referredVariable="#qV.hsv2hls.HSV2HLSRecursion.hls.bottom.hlsNode"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ </rule>
+ </nestedPackage>
+</qvtc:CoreModel>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.xmi b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.xmi
new file mode 100644
index 000000000..f03b47bfc
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLS.xmi
@@ -0,0 +1,5765 @@
+<?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:hsv2hls="http://http://www.eclipse.org/qvt/examples/0.1/HSVtoHLS" xsi:schemaLocation="http://http://www.eclipse.org/qvt/examples/0.1/HSVtoHLS HSV2HLS.ecore">
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/144"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/262"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/270"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/57"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/95"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode name="n1">
+ <children name="n1.3">
+ <children name="n1.3.1">
+ <children name="n1.3.1.1">
+ <hsv href="HSVNode.xmi#//@children.2/@children.0/@children.0"/>
+ <hls href="HLSNode.xmi#/97"/>
+ </children>
+ <hsv href="HSVNode.xmi#//@children.2/@children.0"/>
+ <hls href="HLSNode.xmi#/4/@children.0"/>
+ </children>
+ <hsv href="HSVNode.xmi#//@children.2"/>
+ <hls href="HLSNode.xmi#/4"/>
+ </children>
+ <children name="n1.2">
+ <children name="n1.2.2">
+ <hsv href="HSVNode.xmi#//@children.1/@children.1"/>
+ <hls href="HLSNode.xmi#/80/@children.1"/>
+ </children>
+ <children name="n1.2.1">
+ <hsv href="HSVNode.xmi#//@children.1/@children.0"/>
+ <hls href="HLSNode.xmi#/80/@children.0"/>
+ </children>
+ <hsv href="HSVNode.xmi#//@children.1"/>
+ <hls href="HLSNode.xmi#/80"/>
+ </children>
+ <children name="n1.1">
+ <children name="n1.1.1">
+ <hsv href="HSVNode.xmi#//@children.0/@children.0"/>
+ <hls href="HLSNode.xmi#/166/@children.0"/>
+ </children>
+ <hsv href="HSVNode.xmi#//@children.0"/>
+ <hls href="HLSNode.xmi#/166"/>
+ </children>
+ <hsv href="HSVNode.xmi#/"/>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/213"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/272"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/223"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/92"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/234"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/193"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/84"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/285"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/263"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/277"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/6"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/214"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/254"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/19"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/48"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/110"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/37"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/72"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/217"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/280"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/101"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/50"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/16"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/125"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/131"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/38"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/181"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/102"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/180"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/284"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/205"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/121"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/70"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/275"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/250"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/139"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/2"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/103"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/47"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/265"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/145"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/123"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/256"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/30"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/99"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/13"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/245"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/61"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/132"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/153"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/68"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/182"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/237"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/76"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/143"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/200"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/242"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/122"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/252"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/111"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/251"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/146"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/100"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/27"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/163"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/120"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/130"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/107"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/221"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/207"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/230"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/14"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/77"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/42"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/156"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/179"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/247"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/208"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/269"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/129"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/89"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/74"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/267"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/281"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/199"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/218"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/65"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/157"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/118"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/43"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/39"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/58"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/141"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/147"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/56"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/239"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/198"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/17"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/119"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/169"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/25"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/116"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/140"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/268"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/124"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/105"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/241"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/55"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/253"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/204"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/183"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/12"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/60"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/15"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/86"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/160"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/41"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/246"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/261"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/24"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/127"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/1"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/108"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/126"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/196"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/117"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/112"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/66"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/195"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/137"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/51"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/150"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/273"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/187"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/209"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/238"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/232"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/283"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/20"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/158"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/201"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/189"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/211"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/53"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/88"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/113"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/184"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/151"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/258"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/248"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/271"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/191"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/34"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/115"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/173"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/194"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/224"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/93"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/114"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/235"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/222"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/11"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/135"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/87"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/40"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/176"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/136"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/33"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/79"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/94"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/45"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/175"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/0"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/96"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/90"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/28"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/171"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/259"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/159"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/276"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/219"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/178"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/216"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/202"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/133"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/106"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/35"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/240"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/148"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/10"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/81"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/282"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/142"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/44"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/203"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/161"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/69"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/162"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/164"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/78"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/233"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/85"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/186"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/168"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/185"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/154"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/255"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/257"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/29"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/206"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/266"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/249"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/83"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/167"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/71"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/149"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/220"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/21"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/197"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/231"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/192"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/228"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/134"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/22"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/62"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/32"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/177"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/274"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/264"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/278"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/174"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/227"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/212"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/82"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/215"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/9"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/225"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/229"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/243"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/170"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/64"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/18"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/104"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/91"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/172"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/128"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/73"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/244"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/8"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/26"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/63"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/138"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/46"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/36"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/226"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/23"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/3"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/31"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/210"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/7"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/279"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/165"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/98"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/152"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/5"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/67"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/52"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/188"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/190"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/236"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/59"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/155"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/49"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/75"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/260"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/54"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode>
+ <children name="n1">
+ <hsv href="HSVNode.xmi#/"/>
+ <hls href="HLSNode.xmi#/109"/>
+ </children>
+ </hsv2hls:HSVNode2HLSNode>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+ <hsv2hls:HSVNode2HLSNode/>
+</xmi:XMI>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLSConfig.xmi b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLSConfig.xmi
new file mode 100644
index 000000000..f90dda383
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLSConfig.xmi
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="ASCII"?>
+<qvtcconfig:Configuration xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:qvtcconfig="http://www.eclipse.org/qvt/examples/0.1/QVTcConfig" inputDirection="//@transformation/@direction.0" outputDirection="//@transformation/@direction.1" mode="enforce" middle="//@transformation/@direction.2">
+ <transformation name="hsv2hls">
+ <direction name="hsv" imports="//@transformation/@import.0"/>
+ <direction name="hls" imports="//@transformation/@import.2"/>
+ <direction imports="//@transformation/@import.1"/>
+ <import name="HSVTree" metamodelFile="HSV2HLS/HSVTree.ecore" package="HSVTree"/>
+ <import name="HSV2HLS" metamodelFile="HSV2HLS/HSV2HLS.ecore" package="HSV2HLS"/>
+ <import name="HLSTree" metamodelFile="HSV2HLS/HLSTree.ecore" package="HLSTree"/>
+ </transformation>
+</qvtcconfig:Configuration>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLSContainmentTree.xmi b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLSContainmentTree.xmi
new file mode 100644
index 000000000..a1702cb58
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLSContainmentTree.xmi
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLSSchdule.xmi b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLSSchdule.xmi
new file mode 100644
index 000000000..c2ff84d88
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLSSchdule.xmi
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="ASCII"?>
+<qvtschedule:Schedule xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:qvtschedule="http://www.eclipse.org/qvt/0.1/QVTschedule/">
+ <actions xsi:type="qvtschedule:MappingAction" parent="//@actions.4">
+ <distinctArguments>
+ <primaryArguments>
+ <variable href="HSV2HLS.qvtp.qvtias#qV.hsv2hls.HSV2HLSRoot_MR.middle.guard.middleRoot"/>
+ </primaryArguments>
+ </distinctArguments>
+ <mapping href="HSV2HLS.qvtp.qvtias#m.hsv2hls.HSV2HLSRoot_MR"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" parent="//@actions.4">
+ <distinctArguments>
+ <primaryArguments>
+ <variable href="HSV2HLS.qvtp.qvtias#qV.hsv2hls.HSV2HLSRoot_LM.hsv.guard.hsvRoot"/>
+ </primaryArguments>
+ </distinctArguments>
+ <mapping href="HSV2HLS.qvtp.qvtias#m.hsv2hls.HSV2HLSRoot_LM"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" parent="//@actions.4">
+ <distinctArguments>
+ <primaryArguments>
+ <variable href="HSV2HLS.qvtp.qvtias#qV.hsv2hls.HSV2HLSRecursion_MR.middle.guard.middleNode"/>
+ </primaryArguments>
+ <secondaryArguments>
+ <variable href="HSV2HLS.qvtp.qvtias#qV.hsv2hls.HSV2HLSRecursion_MR.middle.guard.middleParent"/>
+ </secondaryArguments>
+ <secondaryArguments>
+ <variable href="HSV2HLS.qvtp.qvtias#qV.hsv2hls.HSV2HLSRecursion_MR.hls.guard.hlsParent"/>
+ </secondaryArguments>
+ </distinctArguments>
+ <mapping href="HSV2HLS.qvtp.qvtias#m.hsv2hls.HSV2HLSRecursion_MR"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" parent="//@actions.4">
+ <distinctArguments>
+ <primaryArguments>
+ <variable href="HSV2HLS.qvtp.qvtias#qV.hsv2hls.HSV2HLSRecursion_LM.middle.guard.middleParent"/>
+ </primaryArguments>
+ </distinctArguments>
+ <distinctArguments>
+ <primaryArguments>
+ <variable href="HSV2HLS.qvtp.qvtias#qV.hsv2hls.HSV2HLSRecursion_LM.hsv.guard.hsvNode"/>
+ </primaryArguments>
+ <secondaryArguments>
+ <variable href="HSV2HLS.qvtp.qvtias#qV.hsv2hls.HSV2HLSRecursion_LM.hsv.guard.hsvParent"/>
+ </secondaryArguments>
+ </distinctArguments>
+ <mapping href="HSV2HLS.qvtp.qvtias#m.hsv2hls.HSV2HLSRecursion_LM"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" children="//@actions.0 //@actions.1 //@actions.2 //@actions.3">
+ <mapping href="HSV2HLS.qvtp.qvtias#m.hsv2hls.__root__"/>
+ </actions>
+</qvtschedule:Schedule>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLSSchedule.xmi b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLSSchedule.xmi
new file mode 100644
index 000000000..b207205dc
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSV2HLSSchedule.xmi
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="ASCII"?>
+<qvtschedule:Schedule xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:qvtschedule="http://www.eclipse.org/qvt/0.1/QVTschedule/">
+ <datums xsi:type="qvtschedule:ClassDatum" sources="//@actions.0 //@actions.3" dataParameter="//@actions.3/@distinctArguments.0/@secondaryArguments.1">
+ <type href="HLSTree.ecore.oclas#T.HLSTree.HLSNode"/>
+ <domain href="HSV2HLS.qvtp.qvtias#//@nestedPackage.0/@rule.0/@domain.0"/>
+ </datums>
+ <datums xsi:type="qvtschedule:ClassDatum" sources="//@actions.1 //@actions.2" dataParameter="//@actions.0/@distinctArguments.0/@primaryArguments.0 //@actions.2/@distinctArguments.0/@primaryArguments.0 //@actions.3/@distinctArguments.0/@primaryArguments.0 //@actions.3/@distinctArguments.0/@secondaryArguments.0">
+ <type href="HSV2HLS.ecore.oclas#T.HSV2HLS.HSVNode2HLSNode"/>
+ <domain href="HSV2HLS.qvtp.qvtias#//@nestedPackage.0/@rule.0/@domain.1"/>
+ </datums>
+ <datums xsi:type="qvtschedule:ClassDatum" dataParameter="//@actions.1/@distinctArguments.0/@primaryArguments.0 //@actions.2/@distinctArguments.1/@primaryArguments.0 //@actions.2/@distinctArguments.1/@secondaryArguments.0">
+ <type href="HSVTree.ecore.oclas#T.HSVTree.HSVNode"/>
+ <domain href="HSV2HLS.qvtp.qvtias#//@nestedPackage.0/@rule.1/@domain.0"/>
+ </datums>
+ <actions xsi:type="qvtschedule:MappingAction" results="//@datums.0" parent="//@actions.4">
+ <distinctArguments>
+ <primaryArguments datum="//@datums.1">
+ <variable href="HSV2HLS.qvtp.qvtias#qV.hsv2hls.HSV2HLSRoot_MR.middle.guard.middleRoot"/>
+ </primaryArguments>
+ </distinctArguments>
+ <mapping href="HSV2HLS.qvtp.qvtias#m.hsv2hls.HSV2HLSRoot_MR"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" results="//@datums.1" parent="//@actions.4">
+ <distinctArguments>
+ <primaryArguments datum="//@datums.2">
+ <variable href="HSV2HLS.qvtp.qvtias#qV.hsv2hls.HSV2HLSRoot_LM.hsv.guard.hsvRoot"/>
+ </primaryArguments>
+ </distinctArguments>
+ <mapping href="HSV2HLS.qvtp.qvtias#m.hsv2hls.HSV2HLSRoot_LM"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" results="//@datums.1" parent="//@actions.4">
+ <distinctArguments>
+ <primaryArguments datum="//@datums.1">
+ <variable href="HSV2HLS.qvtp.qvtias#qV.hsv2hls.HSV2HLSRecursion_LM.middle.guard.middleParent"/>
+ </primaryArguments>
+ </distinctArguments>
+ <distinctArguments>
+ <primaryArguments datum="//@datums.2">
+ <variable href="HSV2HLS.qvtp.qvtias#qV.hsv2hls.HSV2HLSRecursion_LM.hsv.guard.hsvNode"/>
+ </primaryArguments>
+ <secondaryArguments datum="//@datums.2">
+ <variable href="HSV2HLS.qvtp.qvtias#qV.hsv2hls.HSV2HLSRecursion_LM.hsv.guard.hsvParent"/>
+ </secondaryArguments>
+ </distinctArguments>
+ <mapping href="HSV2HLS.qvtp.qvtias#m.hsv2hls.HSV2HLSRecursion_LM"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" results="//@datums.0" parent="//@actions.4">
+ <distinctArguments>
+ <primaryArguments datum="//@datums.1">
+ <variable href="HSV2HLS.qvtp.qvtias#qV.hsv2hls.HSV2HLSRecursion_MR.middle.guard.middleNode"/>
+ </primaryArguments>
+ <secondaryArguments datum="//@datums.1">
+ <variable href="HSV2HLS.qvtp.qvtias#qV.hsv2hls.HSV2HLSRecursion_MR.middle.guard.middleParent"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.0">
+ <variable href="HSV2HLS.qvtp.qvtias#qV.hsv2hls.HSV2HLSRecursion_MR.hls.guard.hlsParent"/>
+ </secondaryArguments>
+ </distinctArguments>
+ <mapping href="HSV2HLS.qvtp.qvtias#m.hsv2hls.HSV2HLSRecursion_MR"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" children="//@actions.0 //@actions.1 //@actions.2 //@actions.3">
+ <mapping href="HSV2HLS.qvtp.qvtias#m.hsv2hls.__root__"/>
+ </actions>
+</qvtschedule:Schedule>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSVNode.xmi b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSVNode.xmi
new file mode 100644
index 000000000..3b7ff9461
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSVNode.xmi
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="ASCII"?>
+<pfx:HSVNode
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:pfx="http://www.eclipse.org/qvt/examples/0.1/HSVTree"
+ xsi:schemaLocation="http://www.eclipse.org/qvt/examples/0.1/HSVTree HSVTree.ecore"
+ hsv="90,0.2,0.5"
+ name="n1">
+ <children
+ hsv="90,0.21,0.5"
+ name="n1.1">
+ <children
+ hsv="90,0.21,0.51"
+ name="n1.1.1"/>
+ </children>
+ <children
+ hsv="90,0.22,0.5"
+ name="n1.2">
+ <children
+ hsv="90,0.22,0.51"
+ name="n1.2.1"/>
+ <children
+ hsv="90,0.22,0.52"
+ name="n1.2.2"/>
+ </children>
+ <children
+ hsv="90,0.23,0.5"
+ name="n1.3">
+ <children
+ hsv="90,0.23.1,0.5"
+ name="n1.3.1">
+ <children
+ name="n1.3.1.1"/>
+ </children>
+ </children>
+</pfx:HSVNode>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSVTree.ecore b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSVTree.ecore
new file mode 100644
index 000000000..b94270f6b
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSVTree.ecore
@@ -0,0 +1,15 @@
+<?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="HSVTree" nsURI="http://www.eclipse.org/qvt/examples/0.1/HSVTree"
+ nsPrefix="hsv">
+ <eClassifiers xsi:type="ecore:EDataType" name="HSV" instanceClassName="java.lang.String"/>
+ <eClassifiers xsi:type="ecore:EClass" name="HSVNode">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eType="#//HSVNode"
+ eOpposite="#//HSVNode/children"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="children" upperBound="-1"
+ eType="#//HSVNode" containment="true" eOpposite="#//HSVNode/parent"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="hsv" lowerBound="1" eType="#//HSV"
+ defaultValueLiteral=""/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSVTreeContainmentTree.xmi b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSVTreeContainmentTree.xmi
new file mode 100644
index 000000000..a1702cb58
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/HSV2HLS/HSVTreeContainmentTree.xmi
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/QVTdMtcTests.java b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/QVTdMtcTests.java
new file mode 100644
index 000000000..a38e67e41
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/QVTdMtcTests.java
@@ -0,0 +1,279 @@
+package org.eclipse.qvtd.build.etl.tests;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.util.Diagnostician;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.ocl.pivot.manager.MetaModelManager;
+import org.eclipse.ocl.pivot.manager.MetaModelManagerResourceSetAdapter;
+import org.eclipse.ocl.pivot.model.OCLstdlib;
+import org.eclipse.ocl.pivot.utilities.ClassUtil;
+import org.eclipse.ocl.xtext.base.services.BaseLinkingService;
+import org.eclipse.qvtd.build.etl.MtcBroker;
+import org.eclipse.qvtd.pivot.qvtbase.Transformation;
+import org.eclipse.qvtd.pivot.qvtbase.TypedModel;
+import org.eclipse.qvtd.pivot.qvtcore.QVTcorePivotStandaloneSetup;
+import org.eclipse.qvtd.pivot.qvtimperative.QVTimperativePivotStandaloneSetup;
+import org.eclipse.qvtd.pivot.qvtimperative.evaluation.QVTiEnvironmentFactory;
+import org.eclipse.qvtd.pivot.qvtimperative.evaluation.QVTiPivotEvaluator;
+import org.eclipse.qvtd.xtext.qvtbase.tests.LoadTestCase;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class QVTdMtcTests extends LoadTestCase {
+
+ private final class MyQVTiEnvironmentFactory extends QVTiEnvironmentFactory
+ {
+ public MyQVTiEnvironmentFactory(@Nullable EPackage.Registry reg, @NonNull MetaModelManager metaModelManager) {
+ super(reg, metaModelManager);
+ setEvaluationTracingEnabled(true);
+ }
+ }
+
+ /**
+ * The Class MyQvtiEvaluator provides helper methods for loading and creating models used in the test
+ */
+ private final class MyQvtiEvaluator extends QVTiPivotEvaluator
+ {
+
+ /** The typed model validation resource map. */
+ protected final @NonNull Map<TypedModel, Resource> typedModelValidationResourceMap = new HashMap<TypedModel, Resource>();
+
+ /** The file name prefix. */
+ private final @NonNull String fileNamePrefix;
+
+ /**
+ * Instantiates a new my Qvti evaluator.
+ *
+ * @param metaModelManager the meta model manager
+ * @param fileNamePrefix the file name prefix
+ * @param transformationFileName the transformation file name
+ * @throws IOException Signals that an I/O exception has occurred.
+ */
+ public MyQvtiEvaluator(@NonNull MetaModelManager metaModelManager, @NonNull String fileNamePrefix, @NonNull Transformation transformation) throws IOException {
+ super(new MyQVTiEnvironmentFactory(null, metaModelManager), transformation);
+ this.fileNamePrefix = fileNamePrefix + "/";
+ }
+
+ /**
+ * Associates a typed model, identified by typedModelName, with a new resource with
+ * name modelFileName, in the current project.
+ *
+ * @param typedModelName the name of the typed model
+ * @param modelFileName the model file name
+ *
+ * @see #loadModel(String, String)
+ */
+ public void createModel(@NonNull String typedModelName, @NonNull String modelFileName) {
+ URI modelREsource = getProjectFileURI(fileNamePrefix + modelFileName);
+ if (modelREsource.segmentsList().contains("bin")) {
+ modelREsource = URI.createURI(modelREsource.toString().replaceAll("/bin/", "/src/"));
+ }
+ createModel(typedModelName, modelREsource, null);
+ }
+
+ /**
+ * Associates a typed model, identified by typedModelName, with an existing resource
+ * with name modelFileName, in the current project.
+ *
+ * @param name the name
+ * @param modelFileName the model file name
+ *
+ * @see #createModel(String, String)
+ */
+ public void loadModel(@NonNull String name, @NonNull String modelFileName) {
+ URI modelREsource = getProjectFileURI(fileNamePrefix + modelFileName);
+ if (modelREsource.segmentsList().contains("bin")) {
+ modelREsource = URI.createURI(modelREsource.toString().replaceAll("/bin/", "/src/"));
+ }
+ loadModel(name, modelREsource);
+ }
+
+ /**
+ * Loads a reference model, identified by modelFileName, as a resource. The reference
+ * model is used to validate if the generated model is correct, i.e. the output
+ * and reference model must be equal.
+ *
+ * @param name the name
+ * @param modelFileName the model file name
+ *
+ public void loadReference(@NonNull String name, @NonNull String modelFileName) {
+ TypedModel typedModel = ClassUtil.getNamedElement(transformation.getModelParameter(), name);
+ if (typedModel == null) {
+ throw new IllegalStateException("Unknown TypedModel '" + name + "'");
+ }
+ URI modelURI = getProjectFileURI(fileNamePrefix + modelFileName);
+ Resource resource = metaModelManager.getExternalResourceSet().getResource(modelURI, true);
+ typedModelValidationResourceMap.put(typedModel, resource);
+ }*/
+
+ /**
+ * Test.
+ *
+ * @throws Exception the exception
+ */
+ public void test() throws Exception {
+ boolean result = execute();
+ assertTrue(getClass().getSimpleName() + " should not return null.", result);
+ saveModels(getProjectFileURI(fileNamePrefix + "middle.xmi"));
+ for (Entry<TypedModel, Resource> entry : typedModelValidationResourceMap.entrySet()) { // Validate against reference models
+ TypedModel typedModel = ClassUtil.nonNullState(entry.getKey());
+ Resource expectedModel = entry.getValue();
+ Resource actualModel = modelManager.getModel(typedModel);
+ assertSameModel(expectedModel, actualModel);
+ }
+ }
+ }
+
+ protected static void assertLoadable(@NonNull URI asURI) {
+ ResourceSet asResourceSet = new ResourceSetImpl();
+ if (!EMFPlugin.IS_ECLIPSE_RUNNING) {
+ OCLstdlib.install();
+ MetaModelManager.initializeASResourceSet(asResourceSet);
+ }
+ Resource resource = asResourceSet.getResource(asURI, true);
+ EcoreUtil.resolveAll(resource);
+ assertNoUnresolvedProxies("Loading", resource);
+ assertNoResourceErrors("Loading", resource);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.qvtd.xtext.qvtbase.tests.LoadTestCase#setUp()
+ */
+ @Before
+ public void setUp() throws Exception {
+
+ BaseLinkingService.DEBUG_RETRY = true;
+ super.setUp();
+ QVTcorePivotStandaloneSetup.doSetup();
+ QVTimperativePivotStandaloneSetup.doSetup();
+ OCLstdlib.install();
+ metaModelManager = new MetaModelManager();
+ MetaModelManagerResourceSetAdapter.getAdapter(ClassUtil.nonNullState(resourceSet), metaModelManager);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.qvtd.xtext.qvtbase.tests.LoadTestCase#tearDown()
+ */
+ @After
+ public void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+
+ @Test
+ public void testUmlToRdbms() throws Exception {
+
+ URL r = this.getClass().getResource("UmlToRdbms/UmlToRdbms.qvtcas");
+ String qvtcasUri = MtcBroker.changeResourceToSource(r.toURI().toString());
+ MtcBroker mtc = new MtcBroker(qvtcasUri, this.getClass(), metaModelManager);
+ mtc.execute();
+ Diagnostic diagnostic = Diagnostician.INSTANCE.validate(mtc.getuModel().getRooteObject());
+ // TODO do we want perfect or can we tolerate info and warnings?
+ //assertEquals(Diagnostic.OK, diagnostic.getSeverity());
+ assertTrue(diagnostic.getSeverity() < Diagnostic.ERROR);
+ diagnostic = Diagnostician.INSTANCE.validate(mtc.getmModel().getRooteObject());
+ assertTrue(diagnostic.getSeverity() < Diagnostic.ERROR);
+ diagnostic = Diagnostician.INSTANCE.validate(mtc.getpModel().getRooteObject());
+ assertTrue(diagnostic.getSeverity() < Diagnostic.ERROR);
+ diagnostic = Diagnostician.INSTANCE.validate(mtc.getsModel().getRooteObject());
+ assertTrue(diagnostic.getSeverity() < Diagnostic.ERROR);
+ diagnostic = Diagnostician.INSTANCE.validate(mtc.getiModel().getRooteObject());
+ assertTrue(diagnostic.getSeverity() < Diagnostic.ERROR);
+
+ MyQvtiEvaluator testEvaluator = new MyQvtiEvaluator(metaModelManager, "UmlToRdbms",mtc.getiModel().getTransformation());
+ testEvaluator.saveTransformation(null);
+ testEvaluator.loadModel("uml", "SimpleUMLPeople.xmi");
+ testEvaluator.createModel("middle", "UML2RDBMS.xmi");
+ testEvaluator.createModel("rdbms", "SimpleRDBMSPeople.xmi");
+ //testEvaluator.loadReference("hls", "HLSNodeValidate.xmi");
+ System.out.println("Executing QVTi transformation on test models.");
+ testEvaluator.test();
+ testEvaluator.dispose();
+
+ URI txURI = ClassUtil.nonNullState(testEvaluator.getTransformation().eResource().getURI());
+ assertLoadable(txURI);
+ mtc.disposeModels();
+ }
+ /*
+ @Test
+ public void testUpperToLower() throws Exception {
+
+ URL r = this.getClass().getResource("UpperToLower/UpperToLower.qvtcas");
+ String qvtcasUri = MtcBroker.changeResourceToSource(r.toURI().toString());
+ MtcBroker mtc = new MtcBroker(qvtcasUri, this.getClass(), metaModelManager);
+ mtc.execute();
+ Diagnostic diagnostic = Diagnostician.INSTANCE.validate(mtc.getuModel().getRooteObject());
+ assertTrue(diagnostic.getSeverity() < Diagnostic.ERROR);
+ diagnostic = Diagnostician.INSTANCE.validate(mtc.getmModel().getRooteObject());
+ assertTrue(diagnostic.getSeverity() < Diagnostic.ERROR);
+ diagnostic = Diagnostician.INSTANCE.validate(mtc.getpModel().getRooteObject());
+ assertTrue(diagnostic.getSeverity() < Diagnostic.ERROR);
+ diagnostic = Diagnostician.INSTANCE.validate(mtc.getsModel().getRooteObject());
+ assertTrue(diagnostic.getSeverity() < Diagnostic.ERROR);
+ diagnostic = Diagnostician.INSTANCE.validate(mtc.getiModel().getRooteObject());
+ assertTrue(diagnostic.getSeverity() < Diagnostic.ERROR);
+ MyQvtiEvaluator testEvaluator = new MyQvtiEvaluator(metaModelManager, "UpperToLower",mtc.getiModel().getTransformation());
+ testEvaluator.saveTransformation(null);
+ testEvaluator.loadModel("upperGraph", "SimpleGraph.xmi");
+ testEvaluator.createModel("middle", "Graph2Graph.xmi");
+ testEvaluator.createModel("lowerGraph", "SimpleGraphLower.xmi");
+ testEvaluator.loadReference("lowerGraph", "SimpleGraphLowerValidate.xmi");
+ System.out.println("Executing QVTi transformation on test models.");
+ testEvaluator.test();
+ testEvaluator.dispose();
+
+ URI txURI = DomainUtil.nonNullState(testEvaluator.getTransformation().eResource().getURI());
+ assertLoadable(txURI);
+ mtc.disposeModels();
+ }
+
+ @Test
+ public void testHSVToHLS() throws Exception {
+
+ URL r = this.getClass().getResource("HSV2HLS/HSV2HLS.qvtcas");
+ String qvtcasUri = MtcBroker.changeResourceToSource(r.toURI().toString());
+ MtcBroker mtc = new MtcBroker(qvtcasUri, this.getClass(), metaModelManager);
+ mtc.execute();
+ Diagnostic diagnostic = Diagnostician.INSTANCE.validate(mtc.getuModel().getRooteObject());
+ assertTrue(diagnostic.getSeverity() < Diagnostic.ERROR);
+ diagnostic = Diagnostician.INSTANCE.validate(mtc.getmModel().getRooteObject());
+ assertTrue(diagnostic.getSeverity() < Diagnostic.ERROR);
+ diagnostic = Diagnostician.INSTANCE.validate(mtc.getpModel().getRooteObject());
+ assertTrue(diagnostic.getSeverity() < Diagnostic.ERROR);
+ diagnostic = Diagnostician.INSTANCE.validate(mtc.getsModel().getRooteObject());
+ assertTrue(diagnostic.getSeverity() < Diagnostic.ERROR);
+ diagnostic = Diagnostician.INSTANCE.validate(mtc.getiModel().getRooteObject());
+ assertTrue(diagnostic.getSeverity() < Diagnostic.ERROR);
+ MyQvtiEvaluator testEvaluator = new MyQvtiEvaluator(metaModelManager, "HSV2HLS",mtc.getiModel().getTransformation());
+ testEvaluator.saveTransformation(null);
+ testEvaluator.loadModel("hsv", "HSVNode.xmi");
+ testEvaluator.createModel("middle", "HSV2HLS.xmi");
+ testEvaluator.createModel("hls", "HLSNode.xmi");
+ testEvaluator.loadReference("hls", "HLSNodeValidate.xmi");
+ System.out.println("Executing QVTi transformation on test models.");
+ testEvaluator.test();
+ testEvaluator.dispose();
+
+ URI txURI = DomainUtil.nonNullState(testEvaluator.getTransformation().eResource().getURI());
+ assertLoadable(txURI);
+ mtc.disposeModels();
+
+ }
+ */
+
+}
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/QVTdMtcTests.launch b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/QVTdMtcTests.launch
new file mode 100644
index 000000000..4396f7ff2
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/QVTdMtcTests.launch
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/QVTdMtcTests.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
+<listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry containerPath=&quot;org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6&quot; javaProject=&quot;org.eclipse.qvtd.build.etl.tests&quot; path=&quot;1&quot; type=&quot;4&quot;/&gt;&#13;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry id=&quot;org.eclipse.jdt.launching.classpathentry.defaultClasspath&quot;&gt;&#13;&#10;&lt;memento exportedEntriesOnly=&quot;false&quot; project=&quot;org.eclipse.qvtd.build.etl.tests&quot;/&gt;&#13;&#10;&lt;/runtimeClasspathEntry&gt;&#13;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry path=&quot;3&quot; projectName=&quot;org.eclipse.qvtd.build.etl&quot; type=&quot;1&quot;/&gt;&#13;&#10;"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.qvtd.build.etl.tests.QVTdMtcTests"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.qvtd.build.etl.tests"/>
+</launchConfiguration>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/MapOrdering.launch b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/MapOrdering.launch
new file mode 100644
index 000000000..326feb515
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/MapOrdering.launch
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.epsilon.eol.eclipse.dt.launching.EolLaunchConfigurationDelegate">
+<stringAttribute key="bad_container_name" value="\org.eclipse.qvtd.build.etl.tests\s\org\eclipse\qvtd\etl\tests\UmlToRdbms"/>
+<booleanAttribute key="fine_grained_profiling" value="false"/>
+<listAttribute key="models">
+<listEntry value="#&#13;&#10;#Thu May 08 09:51:25 BST 2014&#13;&#10;isMetamodelFileBased=true&#13;&#10;name=rTree&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=tree&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=platform\:/resource/org.eclipse.qvtd.build.etl/model/ECoreContainmentTree.ecore&#13;&#10;metamodelUri=&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRdbmsContainmentTree.xmi&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRdbmsContainmentTree.xmi&#13;&#10;expand=true&#13;&#10;metamodelFile=/org.eclipse.qvtd.build.etl/model/ECoreContainmentTree.ecore&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Thu Jun 05 18:35:50 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=qvti&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=QVT&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/0.9/QVTimperative,http\://www.eclipse.org/ocl/3.1.0/Pivot,http\://www.eclipse.org/qvt/0.9/QVTbase,http\://www.eclipse.org/qvt/0.9/QVTcoreBase&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtias&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtias&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Thu May 08 10:18:13 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=rdGraph&#13;&#10;readOnLoad=false&#13;&#10;storeOnDisposal=true&#13;&#10;aliases=ddg&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/examples/0.2/QVTcDataDependencyGraph&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsReducedDataDep.xmi&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsReducedDataDep.xmi&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.debug.ui.ATTR_CAPTURE_IN_FILE" value="E:\Users\Horace.Horace-Laptop\Desktop\eclipse.txt"/>
+<booleanAttribute key="profile_model_loading" value="false"/>
+<booleanAttribute key="profiling_enabled" value="false"/>
+<booleanAttribute key="reset_profiler" value="false"/>
+<stringAttribute key="source" value="/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/scheduling/MapOrdering.eol"/>
+</launchConfiguration>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/QVTcToQVTu.launch b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/QVTcToQVTu.launch
new file mode 100644
index 000000000..465cf2133
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/QVTcToQVTu.launch
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.epsilon.migration.eclipse.dt.launching.MigrationLaunchConfigurationDelegate">
+<intAttribute key="migratedModel" value="1"/>
+<listAttribute key="models">
+<listEntry value="#&#13;&#10;#Wed Aug 06 11:15:39 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=QVTc&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=QVT&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/0.9/QVTbase,http\://www.eclipse.org/ocl/3.1.0/Pivot,http\://www.eclipse.org/qvt/0.9/QVTcoreBase,http\://www.eclipse.org/qvt/0.9/QVTcore&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtcas&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtcas&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Wed Aug 06 11:16:05 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=QVTu&#13;&#10;readOnLoad=false&#13;&#10;storeOnDisposal=true&#13;&#10;aliases=QVT&#13;&#10;cached=false&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/0.9/QVTbase,http\://www.eclipse.org/ocl/3.1.0/Pivot,http\://www.eclipse.org/qvt/0.9/QVTcoreBase,http\://www.eclipse.org/qvt/0.9/QVTcore&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtu.qvtcas&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtu.qvtcas&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Wed Aug 06 11:20:13 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=config&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/examples/0.1/QVTcConfig&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsConfig.xmi&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsConfig.xmi&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Wed Aug 06 11:32:40 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=oclStdLib&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/ocl/3.1.0/Pivot&#13;&#10;modelUri=http\://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas&#13;&#10;type=EMF&#13;&#10;modelFile=http\://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+</listAttribute>
+<intAttribute key="originalModel" value="0"/>
+<stringAttribute key="source" value="/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/QVTcToQVTu.mig"/>
+</launchConfiguration> \ No newline at end of file
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/QVTiDependenceAnalysis.launch b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/QVTiDependenceAnalysis.launch
new file mode 100644
index 000000000..dc00e75c9
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/QVTiDependenceAnalysis.launch
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.epsilon.eol.eclipse.dt.launching.EolLaunchConfigurationDelegate">
+<stringAttribute key="bad_container_name" value="\org.eclipse.qvtd.build.etl.tests\s\org\eclipse\qvtd\etl\tests\UmlToRdbms"/>
+<booleanAttribute key="fine_grained_profiling" value="false"/>
+<listAttribute key="models">
+<listEntry value="#&#13;&#10;#Tue Jun 17 13:42:23 BST 2014&#13;&#10;isMetamodelFileBased=true&#13;&#10;name=mTree&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=tree&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=platform\:/resource/org.eclipse.qvtd.build.etl/model/ECoreContainmentTree.ecore&#13;&#10;metamodelUri=&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsContainmentTree.xmi&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsContainmentTree.xmi&#13;&#10;expand=true&#13;&#10;metamodelFile=/org.eclipse.qvtd.build.etl/model/ECoreContainmentTree.ecore&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Tue Jun 17 13:42:29 BST 2014&#13;&#10;isMetamodelFileBased=true&#13;&#10;name=rTree&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=tree&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=platform\:/resource/org.eclipse.qvtd.build.etl/model/ECoreContainmentTree.ecore&#13;&#10;metamodelUri=&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRdbmsContainmentTree.xmi&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRdbmsContainmentTree.xmi&#13;&#10;expand=true&#13;&#10;metamodelFile=/org.eclipse.qvtd.build.etl/model/ECoreContainmentTree.ecore&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Thu May 08 09:51:30 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=lTree&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=tree&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/examples/0.1/ECoreContainemntTree&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleUmlContainmentTree.xmi&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleUmlContainmentTree.xmi&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Thu May 08 09:51:40 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=config&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/examples/0.1/QVTcConfig&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsConfig.xmi&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsConfig.xmi&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Tue Jun 17 13:43:23 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=qvti&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=QVT&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/0.9/QVTimperative,http\://www.eclipse.org/ocl/3.1.0/Pivot,http\://www.eclipse.org/qvt/0.9/QVTbase,http\://www.eclipse.org/qvt/0.9/QVTcoreBase&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtias&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtias&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Thu May 08 10:17:37 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=ddGraph&#13;&#10;readOnLoad=false&#13;&#10;storeOnDisposal=true&#13;&#10;aliases=ddg&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/examples/0.2/QVTcDataDependencyGraph&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsDataDep.xmi&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsDataDep.xmi&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Thu May 08 10:17:58 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=mdGraph&#13;&#10;readOnLoad=false&#13;&#10;storeOnDisposal=true&#13;&#10;aliases=ddg&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/examples/0.2/QVTcDataDependencyGraph&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsMergeDataDep.xmi&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsMergeDataDep.xmi&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Thu May 08 10:18:13 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=rdGraph&#13;&#10;readOnLoad=false&#13;&#10;storeOnDisposal=true&#13;&#10;aliases=ddg&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/examples/0.2/QVTcDataDependencyGraph&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsReducedDataDep.xmi&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsReducedDataDep.xmi&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Thu May 08 10:18:35 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=imGraph&#13;&#10;readOnLoad=false&#13;&#10;storeOnDisposal=true&#13;&#10;aliases=ddg&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/examples/0.2/QVTcDataDependencyGraph&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsInterMap.xmi&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsInterMap.xmi&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Thu May 08 09:52:21 BST 2014&#13;&#10;isMetamodelFileBased=true&#13;&#10;name=oclStdLib&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=&#13;&#10;modelUri=http\://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas&#13;&#10;type=EMF&#13;&#10;modelFile=http\://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.debug.ui.ATTR_CAPTURE_IN_FILE" value="E:\Users\Horace.Horace-Laptop\Desktop\eclipse.txt"/>
+<booleanAttribute key="profile_model_loading" value="false"/>
+<booleanAttribute key="profiling_enabled" value="false"/>
+<booleanAttribute key="reset_profiler" value="false"/>
+<stringAttribute key="source" value="/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/dependence/QVTiDependenceAnalysis.eol"/>
+</launchConfiguration>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/QVTiToText.launch b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/QVTiToText.launch
new file mode 100644
index 000000000..686a76893
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/QVTiToText.launch
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.epsilon.egl.eclipse.dt.launching.EglLaunchConfigurationDelegate">
+<booleanAttribute key="appendToFile" value="false"/>
+<listAttribute key="defaultFormatters"/>
+<booleanAttribute key="fine_grained_profiling" value="false"/>
+<intAttribute key="generateTo" value="1"/>
+<listAttribute key="models">
+<listEntry value="#&#13;&#10;#Wed Sep 24 10:25:17 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=QVTi&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=QVT&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/0.9/QVTimperative,http\://www.eclipse.org/ocl/3.1.0/Pivot,http\://www.eclipse.org/qvt/0.9/QVTbase,http\://www.eclipse.org/qvt/0.9/QVTcoreBase&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtias&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtias&#13;&#10;expand=false&#13;&#10;metamodelFile=&#13;&#10;"/>
+</listAttribute>
+<stringAttribute key="outputFilePath" value="/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/UmlToRdbms/UmlToRdbmsPartition.qvtm.qvtc"/>
+<booleanAttribute key="produceTrace" value="false"/>
+<booleanAttribute key="profile_model_loading" value="false"/>
+<booleanAttribute key="profiling_enabled" value="false"/>
+<booleanAttribute key="reset_profiler" value="false"/>
+<stringAttribute key="source" value="/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/extras/QVTiToText.egl"/>
+<stringAttribute key="templateFactoryType" value="org.eclipse.epsilon.egl.EglFileGeneratingTemplateFactory"/>
+<stringAttribute key="traceDestination" value=""/>
+</launchConfiguration>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/QVTmToQVTiPartition.launch b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/QVTmToQVTiPartition.launch
new file mode 100644
index 000000000..ec129371b
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/QVTmToQVTiPartition.launch
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.epsilon.etl.eclipse.dt.launching.EtlLaunchConfigurationDelegate">
+<booleanAttribute key="fine_grained_profiling" value="false"/>
+<listAttribute key="models">
+<listEntry value="#&#13;&#10;#Thu Jul 31 09:49:32 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=config&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/examples/0.1/QVTcConfig&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsConfig.xmi&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsConfig.xmi&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Mon Aug 11 15:23:37 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=QVTm&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=QVT&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/0.9/QVTcore&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtm.qvtcas&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtm.qvtcas&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Tue Sep 09 12:50:36 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=QVTp&#13;&#10;readOnLoad=false&#13;&#10;storeOnDisposal=true&#13;&#10;aliases=QVT&#13;&#10;cached=false&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/0.9/QVTimperative&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtp.qvtias&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtp.qvtias&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Thu Jul 31 11:11:08 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=oclStdLib&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/ocl/3.1.0/Pivot&#13;&#10;modelUri=http\://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas&#13;&#10;type=EMF&#13;&#10;modelFile=http\://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+</listAttribute>
+<booleanAttribute key="profile_model_loading" value="false"/>
+<booleanAttribute key="profiling_enabled" value="false"/>
+<booleanAttribute key="reset_profiler" value="false"/>
+<stringAttribute key="source" value="/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/QVTmToQVTiPartition.etl"/>
+</launchConfiguration>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/QVTmToText.launch b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/QVTmToText.launch
new file mode 100644
index 000000000..9341feede
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/QVTmToText.launch
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.epsilon.egl.eclipse.dt.launching.EglLaunchConfigurationDelegate">
+<booleanAttribute key="appendToFile" value="false"/>
+<listAttribute key="defaultFormatters"/>
+<booleanAttribute key="fine_grained_profiling" value="false"/>
+<intAttribute key="generateTo" value="1"/>
+<listAttribute key="models">
+<listEntry value="#&#13;&#10;#Mon Aug 11 13:33:31 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=qvtm&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/0.9/QVTcore,http\://www.eclipse.org/qvt/0.9/QVTbase,http\://www.eclipse.org/qvt/0.9/QVTcoreBase,http\://www.eclipse.org/ocl/3.1.0/Pivot&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtm.qvtcas&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtm.qvtcas&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+</listAttribute>
+<stringAttribute key="outputFilePath" value="/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/UmlToRdbms/UmlToRdbmsPartition.qvtm.qvtc"/>
+<booleanAttribute key="produceTrace" value="false"/>
+<booleanAttribute key="profile_model_loading" value="false"/>
+<booleanAttribute key="profiling_enabled" value="false"/>
+<booleanAttribute key="reset_profiler" value="false"/>
+<stringAttribute key="source" value="/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/extras/QVTcToText.egl"/>
+<stringAttribute key="templateFactoryType" value="org.eclipse.epsilon.egl.EglFileGeneratingTemplateFactory"/>
+<stringAttribute key="traceDestination" value=""/>
+</launchConfiguration>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/QVTpToSchedule.launch b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/QVTpToSchedule.launch
new file mode 100644
index 000000000..189a45728
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/QVTpToSchedule.launch
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.epsilon.etl.eclipse.dt.launching.EtlLaunchConfigurationDelegate">
+<booleanAttribute key="fine_grained_profiling" value="false"/>
+<listAttribute key="models">
+<listEntry value="#&#13;&#10;#Thu Jul 31 09:49:32 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=config&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/examples/0.1/QVTcConfig&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsConfig.xmi&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsConfig.xmi&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Tue Aug 26 10:49:56 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=QVTp&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=QVT&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/ocl/3.1.0/Pivot,http\://www.eclipse.org/qvt/0.9/QVTcoreBase,http\://www.eclipse.org/qvt/0.9/QVTimperative,http\://www.eclipse.org/qvt/0.9/QVTbase&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtp.qvtias&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtp.qvtias&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Thu Aug 28 10:16:26 BST 2014&#13;&#10;isMetamodelFileBased=true&#13;&#10;name=QVTs&#13;&#10;readOnLoad=false&#13;&#10;storeOnDisposal=true&#13;&#10;aliases=&#13;&#10;cached=false&#13;&#10;fileBasedMetamodelUri=platform\:/resource/org.eclipse.qvtd.build.schedule/model/QVTSchedule.ecore&#13;&#10;metamodelUri=&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsSchedule.xmi&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsSchedule.xmi&#13;&#10;expand=true&#13;&#10;metamodelFile=/org.eclipse.qvtd.build.schedule/model/QVTSchedule.ecore&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Thu Jul 31 11:11:08 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=oclStdLib&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/ocl/3.1.0/Pivot&#13;&#10;modelUri=http\://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas&#13;&#10;type=EMF&#13;&#10;modelFile=http\://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+</listAttribute>
+<booleanAttribute key="profile_model_loading" value="false"/>
+<booleanAttribute key="profiling_enabled" value="false"/>
+<booleanAttribute key="reset_profiler" value="false"/>
+<stringAttribute key="source" value="/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/scheduling/QVTpToSchedule.etl"/>
+</launchConfiguration>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/QVTs-pToQVTi.launch b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/QVTs-pToQVTi.launch
new file mode 100644
index 000000000..dc0697507
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/QVTs-pToQVTi.launch
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.epsilon.etl.eclipse.dt.launching.EtlLaunchConfigurationDelegate">
+<booleanAttribute key="fine_grained_profiling" value="false"/>
+<listAttribute key="models">
+<listEntry value="#&#13;&#10;#Tue Sep 09 12:54:11 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=QVTp&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=QVT&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/0.9/QVTimperative,http\://www.eclipse.org/qvt/0.9/QVTcoreBase,http\://www.eclipse.org/ocl/3.1.0/Pivot,http\://www.eclipse.org/qvt/0.9/QVTbase&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtp.qvtias&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtp.qvtias&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Tue Sep 09 12:54:31 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=QVTi&#13;&#10;readOnLoad=false&#13;&#10;storeOnDisposal=true&#13;&#10;aliases=QVT&#13;&#10;cached=false&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/0.9/QVTimperative&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtias&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtias&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Tue Sep 09 12:54:15 BST 2014&#13;&#10;isMetamodelFileBased=true&#13;&#10;name=QVTs&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=QVT&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=platform\:/resource/org.eclipse.qvtd.build.schedule/model/QVTSchedule.ecore&#13;&#10;metamodelUri=&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsSchedule.xmi&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsSchedule.xmi&#13;&#10;expand=true&#13;&#10;metamodelFile=/org.eclipse.qvtd.build.schedule/model/QVTSchedule.ecore&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Tue Aug 26 13:35:26 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=oclStdLib&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/ocl/3.1.0/Pivot&#13;&#10;modelUri=platform\:/resource/org.eclipse.ocl.examples.library/model-gen/OCL-2.5.oclas&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.ocl.examples.library/model-gen/OCL-2.5.oclas&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+</listAttribute>
+<booleanAttribute key="profile_model_loading" value="false"/>
+<booleanAttribute key="profiling_enabled" value="false"/>
+<booleanAttribute key="reset_profiler" value="false"/>
+<stringAttribute key="source" value="/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/scheduling/QVTs-pToQVTi.etl"/>
+</launchConfiguration>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/QVTuToQVTm.launch b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/QVTuToQVTm.launch
new file mode 100644
index 000000000..2e63aed69
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/QVTuToQVTm.launch
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.epsilon.migration.eclipse.dt.launching.MigrationLaunchConfigurationDelegate">
+<intAttribute key="migratedModel" value="1"/>
+<listAttribute key="models">
+<listEntry value="#&#13;&#10;#Wed Aug 06 17:10:41 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=QVTu&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=QVT&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/0.9/QVTbase,http\://www.eclipse.org/ocl/3.1.0/Pivot,http\://www.eclipse.org/qvt/0.9/QVTcoreBase,http\://www.eclipse.org/qvt/0.9/QVTcore&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtu.qvtcas&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtu.qvtcas&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Wed Aug 06 11:16:05 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=QVTm&#13;&#10;readOnLoad=false&#13;&#10;storeOnDisposal=true&#13;&#10;aliases=QVT&#13;&#10;cached=false&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/0.9/QVTbase,http\://www.eclipse.org/ocl/3.1.0/Pivot,http\://www.eclipse.org/qvt/0.9/QVTcoreBase,http\://www.eclipse.org/qvt/0.9/QVTcore&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtm.qvtcas&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtm.qvtcas&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Wed Aug 06 11:20:13 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=config&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/examples/0.1/QVTcConfig&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsConfig.xmi&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsConfig.xmi&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Wed Aug 06 11:32:40 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=oclStdLib&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/ocl/3.1.0/Pivot&#13;&#10;modelUri=http\://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas&#13;&#10;type=EMF&#13;&#10;modelFile=http\://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+</listAttribute>
+<intAttribute key="originalModel" value="0"/>
+<stringAttribute key="source" value="/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/QVTuToQVTm.mig"/>
+</launchConfiguration>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/Scheduling.launch b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/Scheduling.launch
new file mode 100644
index 000000000..ebc445d9b
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/Scheduling.launch
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.epsilon.eol.eclipse.dt.launching.EolLaunchConfigurationDelegate">
+<stringAttribute key="bad_container_name" value="\org.eclipse.qvtd.build.etl.tests\s\org\eclipse\qvtd\etl\tests\UmlToRdbms"/>
+<booleanAttribute key="fine_grained_profiling" value="false"/>
+<listAttribute key="models">
+<listEntry value="#&#13;&#10;#Thu May 08 09:51:40 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=config&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/examples/0.1/QVTcConfig&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsConfig.xmi&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsConfig.xmi&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Wed Jun 18 19:42:20 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=rTree&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=tree&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/examples/0.1/ECoreContainemntTree&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRdbmsContainmentTree.xmi&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRdbmsContainmentTree.xmi&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Thu Aug 28 09:36:27 BST 2014&#13;&#10;isMetamodelFileBased=true&#13;&#10;name=QVTs&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=true&#13;&#10;aliases=QVT&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=platform\:/resource/org.eclipse.qvtd.build.schedule/model/QVTSchedule.ecore&#13;&#10;metamodelUri=&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsSchedule.xmi&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsSchedule.xmi&#13;&#10;expand=true&#13;&#10;metamodelFile=/org.eclipse.qvtd.build.schedule/model/QVTSchedule.ecore&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Fri Jul 04 11:25:55 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=oclStdLib&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/ocl/3.1.0/Pivot&#13;&#10;modelUri=platform\:/plugin/org.eclipse.ocl.examples.library/model-gen/OCL-2.5.oclas&#13;&#10;type=EMF&#13;&#10;modelFile=platform\:/plugin/org.eclipse.ocl.examples.library/model-gen/OCL-2.5.oclas&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Tue Aug 26 14:38:15 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=QVTp&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=true&#13;&#10;aliases=QVT&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/0.9/QVTimperative,http\://www.eclipse.org/qvt/0.9/QVTcoreBase,http\://www.eclipse.org/ocl/3.1.0/Pivot,http\://www.eclipse.org/qvt/0.9/QVTbase&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtp.qvtias&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtp.qvtias&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.debug.ui.ATTR_CAPTURE_IN_FILE" value="C:\Users\hhoyos\Desktop\playGround.txt"/>
+<booleanAttribute key="profile_model_loading" value="false"/>
+<booleanAttribute key="profiling_enabled" value="false"/>
+<booleanAttribute key="reset_profiler" value="false"/>
+<stringAttribute key="source" value="/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/scheduling/Scheduler.eol"/>
+</launchConfiguration>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/UmlToRdbms/SimpleRDBMS.ecore b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRDBMS.ecore
index f86eb943d..a0adac6ad 100644
--- a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/UmlToRdbms/SimpleRDBMS.ecore
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRDBMS.ecore
@@ -1,45 +1,47 @@
-<?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="simplerdbms" nsURI="http://www.eclipse.org/qvt/examples/0.1/SimpleRDBMS"
- nsPrefix="simplerdbms">
- <eClassifiers xsi:type="ecore:EClass" name="Column" eSuperTypes="#//RModelElement">
- <eStructuralFeatures xsi:type="ecore:EReference" name="owner" lowerBound="1" eType="#//Table"
- eOpposite="#//Table/column"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="foreignKeys" upperBound="-1"
- eType="#//ForeignKey" eOpposite="#//ForeignKey/column"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="key" upperBound="-1" eType="#//Key"
- eOpposite="#//Key/column"/>
- <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- </eClassifiers>
- <eClassifiers xsi:type="ecore:EClass" name="ForeignKey" eSuperTypes="#//RModelElement">
- <eStructuralFeatures xsi:type="ecore:EReference" name="refersTo" lowerBound="1"
- eType="#//Key"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="column" upperBound="-1"
- eType="#//Column" eOpposite="#//Column/foreignKeys"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="owner" lowerBound="1" eType="#//Table"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="schema" lowerBound="1"
- eType="#//Schema"/>
- </eClassifiers>
- <eClassifiers xsi:type="ecore:EClass" name="Key" eSuperTypes="#//RModelElement">
- <eStructuralFeatures xsi:type="ecore:EReference" name="owner" lowerBound="1" eType="#//Table"
- eOpposite="#//Table/theKey"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="column" upperBound="-1"
- eType="#//Column" eOpposite="#//Column/key"/>
- </eClassifiers>
- <eClassifiers xsi:type="ecore:EClass" name="RModelElement" abstract="true">
- <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- </eClassifiers>
- <eClassifiers xsi:type="ecore:EClass" name="Schema" eSuperTypes="#//RModelElement">
- <eStructuralFeatures xsi:type="ecore:EReference" name="tables" upperBound="-1"
- eType="#//Table" eOpposite="#//Table/schema"/>
- </eClassifiers>
- <eClassifiers xsi:type="ecore:EClass" name="Table" eSuperTypes="#//RModelElement">
- <eStructuralFeatures xsi:type="ecore:EReference" name="column" upperBound="-1"
- eType="#//Column" eOpposite="#//Column/owner"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="schema" lowerBound="1"
- eType="#//Schema" eOpposite="#//Schema/tables"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="theKey" upperBound="-1"
- eType="#//Key" eOpposite="#//Key/owner"/>
- </eClassifiers>
-</ecore:EPackage>
+<?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="simplerdbms" nsURI="http://www.eclipse.org/qvt/examples/0.1/SimpleRDBMS"
+ nsPrefix="simplerdbms">
+ <eClassifiers xsi:type="ecore:EClass" name="Column" eSuperTypes="#//RModelElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="owner" lowerBound="1" eType="#//Table"
+ eOpposite="#//Table/columns"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="foreignKeys" upperBound="-1"
+ eType="#//ForeignKey" eOpposite="#//ForeignKey/columns"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="keys" upperBound="-1" eType="#//Key"
+ eOpposite="#//Key/column"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ForeignKey" eSuperTypes="#//RModelElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="refersTo" lowerBound="1"
+ eType="#//Key"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="columns" upperBound="-1"
+ eType="#//Column" eOpposite="#//Column/foreignKeys"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="owner" lowerBound="1" eType="#//Table"
+ eOpposite="#//Table/foreignKeys"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Key" eSuperTypes="#//RModelElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="owner" lowerBound="1" eType="#//Table"
+ eOpposite="#//Table/keys"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="column" upperBound="-1"
+ eType="#//Column" eOpposite="#//Column/keys"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="RModelElement" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Schema" eSuperTypes="#//RModelElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="tables" upperBound="-1"
+ eType="#//Table" containment="true" eOpposite="#//Table/schema"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Table" eSuperTypes="#//RModelElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="columns" upperBound="-1"
+ eType="#//Column" containment="true" eOpposite="#//Column/owner"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="schema" lowerBound="1"
+ eType="#//Schema" eOpposite="#//Schema/tables"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="keys" upperBound="-1" eType="#//Key"
+ containment="true" eOpposite="#//Key/owner"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="foreignKeys" upperBound="-1"
+ eType="#//ForeignKey" containment="true" eOpposite="#//ForeignKey/owner"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="String" instanceTypeName="EString"/>
+</ecore:EPackage>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRDBMS.ecore.oclas b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRDBMS.ecore.oclas
new file mode 100644
index 000000000..9e5113bb5
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRDBMS.ecore.oclas
@@ -0,0 +1,165 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<pivot:Root xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:pivot="http://www.eclipse.org/ocl/3.1.0/Pivot" xsi:schemaLocation="http://www.eclipse.org/ocl/3.1.0/Pivot java://org.eclipse.ocl.examples.pivot.PivotPackage"
+ name="SimpleRDBMS.ecore.oclas" externalURI="platform:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRDBMS.ecore.oclas">
+ <nestedPackage xmi:id="P.simplerdbms" name="simplerdbms" nsPrefix="simplerdbms"
+ nsURI="http://www.eclipse.org/qvt/examples/0.1/SimpleRDBMS">
+ <ownedType xsi:type="pivot:Class" xmi:id="T.simplerdbms.Column" name="Column"
+ superClass="#T.simplerdbms.RModelElement">
+ <ownedAttribute xmi:id="p.simplerdbms.Column.type" name="type" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <ownedAttribute xmi:id="p.simplerdbms.Column.owner" name="owner" type="#T.simplerdbms.Table"
+ opposite="#p.simplerdbms.Table.columns"/>
+ <ownedAttribute xmi:id="p.simplerdbms.Column.foreignKeys" name="foreignKeys"
+ type="#//@nestedPackage.1/@ownedType.0" opposite="#p.simplerdbms.ForeignKey.columns"/>
+ <ownedAttribute xmi:id="p.simplerdbms.Column.keys" name="keys" type="#//@nestedPackage.1/@ownedType.1"
+ opposite="#p.simplerdbms.Key.column"/>
+ </ownedType>
+ <ownedType xsi:type="pivot:Class" xmi:id="T.simplerdbms.ForeignKey" name="ForeignKey"
+ superClass="#T.simplerdbms.RModelElement">
+ <ownedAttribute xmi:id="p.simplerdbms.ForeignKey.refersTo" name="refersTo" type="#T.simplerdbms.Key"
+ opposite="#p.simplerdbms.Key.ForeignKey"/>
+ <ownedAttribute xmi:id="p.simplerdbms.ForeignKey.columns" name="columns" type="#//@nestedPackage.1/@ownedType.2"
+ opposite="#p.simplerdbms.Column.foreignKeys"/>
+ <ownedAttribute xmi:id="p.simplerdbms.ForeignKey.owner" name="owner" type="#T.simplerdbms.Table"
+ opposite="#p.simplerdbms.Table.foreignKeys"/>
+ </ownedType>
+ <ownedType xsi:type="pivot:Class" xmi:id="T.simplerdbms.Key" name="Key" superClass="#T.simplerdbms.RModelElement">
+ <ownedAttribute xmi:id="p.simplerdbms.Key.owner" name="owner" type="#T.simplerdbms.Table"
+ opposite="#p.simplerdbms.Table.keys"/>
+ <ownedAttribute xmi:id="p.simplerdbms.Key.column" name="column" type="#//@nestedPackage.1/@ownedType.2"
+ opposite="#p.simplerdbms.Column.keys"/>
+ <ownedAttribute xmi:id="p.simplerdbms.Key.ForeignKey" name="ForeignKey" type="#//@nestedPackage.1/@ownedType.3"
+ implicit="true" opposite="#p.simplerdbms.ForeignKey.refersTo"/>
+ </ownedType>
+ <ownedType xsi:type="pivot:Class" xmi:id="T.simplerdbms.RModelElement" name="RModelElement"
+ superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclElement"
+ isAbstract="true">
+ <ownedAttribute xmi:id="p.simplerdbms.RModelElement.name" name="name" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <ownedAttribute xmi:id="p.simplerdbms.RModelElement.kind" name="kind" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ </ownedType>
+ <ownedType xsi:type="pivot:Class" xmi:id="T.simplerdbms.Schema" name="Schema"
+ superClass="#T.simplerdbms.RModelElement">
+ <ownedAttribute xmi:id="p.simplerdbms.Schema.tables" name="tables" type="#//@nestedPackage.1/@ownedType.4"
+ isComposite="true" opposite="#p.simplerdbms.Table.schema"/>
+ </ownedType>
+ <ownedType xsi:type="pivot:Class" xmi:id="T.simplerdbms.Table" name="Table" superClass="#T.simplerdbms.RModelElement">
+ <ownedAttribute xmi:id="p.simplerdbms.Table.columns" name="columns" type="#//@nestedPackage.1/@ownedType.2"
+ isComposite="true" opposite="#p.simplerdbms.Column.owner"/>
+ <ownedAttribute xmi:id="p.simplerdbms.Table.schema" name="schema" type="#T.simplerdbms.Schema"
+ opposite="#p.simplerdbms.Schema.tables"/>
+ <ownedAttribute xmi:id="p.simplerdbms.Table.keys" name="keys" type="#//@nestedPackage.1/@ownedType.1"
+ isComposite="true" opposite="#p.simplerdbms.Key.owner"/>
+ <ownedAttribute xmi:id="p.simplerdbms.Table.foreignKeys" name="foreignKeys"
+ type="#//@nestedPackage.1/@ownedType.0" isComposite="true" opposite="#p.simplerdbms.ForeignKey.owner"/>
+ </ownedType>
+ <ownedType xsi:type="pivot:DataType" xmi:id="T.simplerdbms.String" name="String"
+ superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"/>
+ </nestedPackage>
+ <nestedPackage xmi:id="P.$$" name="$$" nsPrefix="orphanage" nsURI="http://www.eclipse.org/ocl/3.1.0/orphanage">
+ <ownedType xsi:type="pivot:OrderedSetType" name="OrderedSet" superClass="#//@nestedPackage.1/@ownedType.5 #//@nestedPackage.1/@ownedType.6"
+ elementType="#T.simplerdbms.ForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedSet">
+ <parameterSubstitution actual="#T.simplerdbms.ForeignKey" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedSetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:OrderedSetType" name="OrderedSet" superClass="#//@nestedPackage.1/@ownedType.7 #//@nestedPackage.1/@ownedType.8"
+ elementType="#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedSet">
+ <parameterSubstitution actual="#T.simplerdbms.Key" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedSetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:OrderedSetType" name="OrderedSet" superClass="#//@nestedPackage.1/@ownedType.9 #//@nestedPackage.1/@ownedType.10"
+ elementType="#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedSet">
+ <parameterSubstitution actual="#T.simplerdbms.Column" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedSetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:BagType" name="Bag" superClass="#//@nestedPackage.1/@ownedType.11"
+ elementType="#T.simplerdbms.ForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Bag">
+ <parameterSubstitution actual="#T.simplerdbms.ForeignKey" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..BagT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:OrderedSetType" name="OrderedSet" superClass="#//@nestedPackage.1/@ownedType.12 #//@nestedPackage.1/@ownedType.13"
+ elementType="#T.simplerdbms.Table">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedSet">
+ <parameterSubstitution actual="#T.simplerdbms.Table" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedSetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.11"
+ elementType="#T.simplerdbms.ForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="#T.simplerdbms.ForeignKey" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.11"
+ elementType="#T.simplerdbms.ForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="#T.simplerdbms.ForeignKey" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.14"
+ elementType="#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="#T.simplerdbms.Key" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.14"
+ elementType="#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="#T.simplerdbms.Key" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.15"
+ elementType="#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="#T.simplerdbms.Column" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.15"
+ elementType="#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="#T.simplerdbms.Column" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="#T.simplerdbms.ForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="#T.simplerdbms.ForeignKey" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.16"
+ elementType="#T.simplerdbms.Table">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="#T.simplerdbms.Table" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.16"
+ elementType="#T.simplerdbms.Table">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="#T.simplerdbms.Table" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="#T.simplerdbms.Key" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="#T.simplerdbms.Column" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="#T.simplerdbms.Table">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="#T.simplerdbms.Table" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ </nestedPackage>
+</pivot:Root>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRdbmsContainment.xmi b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRdbmsContainment.xmi
new file mode 100644
index 000000000..be7848e56
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRdbmsContainment.xmi
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:qVTcDataDependencyGraph="http://www.eclipse.org/qvt/examples/0.2/QVTcDataDependencyGraph">
+ <qVTcDataDependencyGraph:ClassNode outgoing="/2" label="Schema" model="input">
+ <superTypes>RModelElement</superTypes>
+ </qVTcDataDependencyGraph:ClassNode>
+ <qVTcDataDependencyGraph:ClassNode incoming="/2" outgoing="/4 /6 /8" label="Table" model="input">
+ <superTypes>RModelElement</superTypes>
+ </qVTcDataDependencyGraph:ClassNode>
+ <qVTcDataDependencyGraph:ContainmentEdge target="/1" source="/0" model="input">
+ <referredProperty href="SimpleRDBMS.ecore#//Schema/tables"/>
+ </qVTcDataDependencyGraph:ContainmentEdge>
+ <qVTcDataDependencyGraph:ClassNode incoming="/4" label="Column" model="input">
+ <superTypes>RModelElement</superTypes>
+ </qVTcDataDependencyGraph:ClassNode>
+ <qVTcDataDependencyGraph:ContainmentEdge target="/3" source="/1" model="input">
+ <referredProperty href="SimpleRDBMS.ecore#//Table/columns"/>
+ </qVTcDataDependencyGraph:ContainmentEdge>
+ <qVTcDataDependencyGraph:ClassNode incoming="/6" label="Key" model="input">
+ <superTypes>RModelElement</superTypes>
+ </qVTcDataDependencyGraph:ClassNode>
+ <qVTcDataDependencyGraph:ContainmentEdge target="/5" source="/1" model="input">
+ <referredProperty href="SimpleRDBMS.ecore#//Table/keys"/>
+ </qVTcDataDependencyGraph:ContainmentEdge>
+ <qVTcDataDependencyGraph:ClassNode incoming="/8" label="ForeignKey" model="input">
+ <superTypes>RModelElement</superTypes>
+ </qVTcDataDependencyGraph:ClassNode>
+ <qVTcDataDependencyGraph:ContainmentEdge target="/7" source="/1" model="input">
+ <referredProperty href="SimpleRDBMS.ecore#//Table/foreignKeys"/>
+ </qVTcDataDependencyGraph:ContainmentEdge>
+</xmi:XMI>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRdbmsContainmentTree.xmi b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRdbmsContainmentTree.xmi
new file mode 100644
index 000000000..15b8889a4
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRdbmsContainmentTree.xmi
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:eCoreContainemntTree="http://www.eclipse.org/qvt/examples/0.1/ECoreContainemntTree">
+ <eCoreContainemntTree:Node EClassName="simplerdbms" children="/1"/>
+ <eCoreContainemntTree:Node EClassName="Schema" parent="/0" children="/2">
+ <superTypes>RModelElement</superTypes>
+ </eCoreContainemntTree:Node>
+ <eCoreContainemntTree:Node EClassName="Table" parent="/1" children="/3 /4 /5">
+ <superTypes>RModelElement</superTypes>
+ </eCoreContainemntTree:Node>
+ <eCoreContainemntTree:Node EClassName="Column" parent="/2">
+ <superTypes>RModelElement</superTypes>
+ </eCoreContainemntTree:Node>
+ <eCoreContainemntTree:Node EClassName="Key" parent="/2">
+ <superTypes>RModelElement</superTypes>
+ </eCoreContainemntTree:Node>
+ <eCoreContainemntTree:Node EClassName="ForeignKey" parent="/2">
+ <superTypes>RModelElement</superTypes>
+ </eCoreContainemntTree:Node>
+ <eCoreContainemntTree:Node EClassName="simplerdbms" children="/7"/>
+ <eCoreContainemntTree:Node EClassName="Schema" parent="/6" children="/8">
+ <superTypes>RModelElement</superTypes>
+ </eCoreContainemntTree:Node>
+ <eCoreContainemntTree:Node EClassName="Table" parent="/7" children="/9 /10 /11">
+ <superTypes>RModelElement</superTypes>
+ </eCoreContainemntTree:Node>
+ <eCoreContainemntTree:Node EClassName="Column" parent="/8">
+ <superTypes>RModelElement</superTypes>
+ </eCoreContainemntTree:Node>
+ <eCoreContainemntTree:Node EClassName="Key" parent="/8">
+ <superTypes>RModelElement</superTypes>
+ </eCoreContainemntTree:Node>
+ <eCoreContainemntTree:Node EClassName="ForeignKey" parent="/8">
+ <superTypes>RModelElement</superTypes>
+ </eCoreContainemntTree:Node>
+ <eCoreContainemntTree:Node EClassName="simplerdbms" children="/13"/>
+ <eCoreContainemntTree:Node EClassName="Schema" parent="/12" children="/14">
+ <superTypes>RModelElement</superTypes>
+ </eCoreContainemntTree:Node>
+ <eCoreContainemntTree:Node EClassName="Table" parent="/13" children="/15 /16 /17">
+ <superTypes>RModelElement</superTypes>
+ </eCoreContainemntTree:Node>
+ <eCoreContainemntTree:Node EClassName="Column" parent="/14">
+ <superTypes>RModelElement</superTypes>
+ </eCoreContainemntTree:Node>
+ <eCoreContainemntTree:Node EClassName="Key" parent="/14">
+ <superTypes>RModelElement</superTypes>
+ </eCoreContainemntTree:Node>
+ <eCoreContainemntTree:Node EClassName="ForeignKey" parent="/14">
+ <superTypes>RModelElement</superTypes>
+ </eCoreContainemntTree:Node>
+</xmi:XMI>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRdbmsEcoreToContainmentGraph.launch b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRdbmsEcoreToContainmentGraph.launch
new file mode 100644
index 000000000..4cdf894a4
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRdbmsEcoreToContainmentGraph.launch
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.epsilon.eol.eclipse.dt.launching.EolLaunchConfigurationDelegate">
+<booleanAttribute key="fine_grained_profiling" value="false"/>
+<listAttribute key="models">
+<listEntry value="#&#13;&#10;#Tue Jun 17 09:54:55 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=mm&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/emf/2002/Ecore&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRDBMS.ecore&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRDBMS.ecore&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Tue Jun 17 09:55:20 BST 2014&#13;&#10;isMetamodelFileBased=true&#13;&#10;name=cGraph&#13;&#10;readOnLoad=false&#13;&#10;storeOnDisposal=true&#13;&#10;aliases=cg&#13;&#10;cached=false&#13;&#10;fileBasedMetamodelUri=platform\:/resource/org.eclipse.qvtd.build.etl/model/ECoreContainmentTree.ecore&#13;&#10;metamodelUri=&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRdbmsContainment.xmi&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRdbmsContainment.xmi&#13;&#10;expand=true&#13;&#10;metamodelFile=/org.eclipse.qvtd.build.etl/model/ECoreContainmentTree.ecore&#13;&#10;"/>
+</listAttribute>
+<booleanAttribute key="profile_model_loading" value="false"/>
+<booleanAttribute key="profiling_enabled" value="false"/>
+<booleanAttribute key="reset_profiler" value="false"/>
+<stringAttribute key="source" value="/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/scheduling/EcoreToContainmentGraph.eol"/>
+</launchConfiguration>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRdbmsEcoreToContainmentTree.launch b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRdbmsEcoreToContainmentTree.launch
new file mode 100644
index 000000000..aa2997410
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRdbmsEcoreToContainmentTree.launch
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.epsilon.eol.eclipse.dt.launching.EolLaunchConfigurationDelegate">
+<booleanAttribute key="fine_grained_profiling" value="false"/>
+<listAttribute key="models">
+<listEntry value="#&#13;&#10;#Thu May 08 12:53:26 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=mm&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/emf/2002/Ecore&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRDBMS.ecore&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRDBMS.ecore&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Thu May 08 12:53:56 BST 2014&#13;&#10;isMetamodelFileBased=true&#13;&#10;name=tree&#13;&#10;readOnLoad=false&#13;&#10;storeOnDisposal=true&#13;&#10;aliases=&#13;&#10;cached=false&#13;&#10;fileBasedMetamodelUri=platform\:/resource/org.eclipse.qvtd.build.etl/model/ECoreContainmentTree.ecore&#13;&#10;metamodelUri=&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRdbmsContainmentTree.xmi&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleRdbmsContainmentTree.xmi&#13;&#10;expand=true&#13;&#10;metamodelFile=/org.eclipse.qvtd.build.etl/model/ECoreContainmentTree.ecore&#13;&#10;"/>
+</listAttribute>
+<booleanAttribute key="profile_model_loading" value="false"/>
+<booleanAttribute key="profiling_enabled" value="false"/>
+<booleanAttribute key="reset_profiler" value="false"/>
+<stringAttribute key="source" value="/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/utils/EcoreToContainmentTree.eol"/>
+</launchConfiguration>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/UmlToRdbms/SimpleUML.ecore b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleUML.ecore
index 2ee0c5396..661b7e6c7 100644
--- a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/UmlToRdbms/SimpleUML.ecore
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleUML.ecore
@@ -1,46 +1,46 @@
-<?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="simpleuml" nsURI="http://www.eclipse.org/qvt/examples/0.1/simpleUML"
- nsPrefix="simpleuml">
- <eClassifiers xsi:type="ecore:EClass" name="Attribute" eSuperTypes="#//UMLModelElement">
- <eStructuralFeatures xsi:type="ecore:EReference" name="type" lowerBound="1" eType="#//Classifier"
- eOpposite="#//Classifier/typeOpposite"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="owner" lowerBound="1" eType="#//Class"
- eOpposite="#//Class/attributes"/>
- </eClassifiers>
- <eClassifiers xsi:type="ecore:EClass" name="Association" eSuperTypes="#//PackageElement">
- <eStructuralFeatures xsi:type="ecore:EReference" name="source" lowerBound="1"
- eType="#//Class" eOpposite="#//Class/forward"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="destination" lowerBound="1"
- eType="#//Class" eOpposite="#//Class/reverse"/>
- </eClassifiers>
- <eClassifiers xsi:type="ecore:EClass" name="Class" eSuperTypes="#//Classifier">
- <eStructuralFeatures xsi:type="ecore:EReference" name="general" upperBound="-1"
- eType="#//Class" eOpposite="#//Class/generalOpposite"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="forward" upperBound="-1"
- eType="#//Association" eOpposite="#//Association/source"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="attributes" upperBound="-1"
- eType="#//Attribute" containment="true" eOpposite="#//Attribute/owner"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="reverse" upperBound="-1"
- eType="#//Association" derived="true" eOpposite="#//Association/destination"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="generalOpposite" upperBound="-1"
- eType="#//Class" eOpposite="#//Class/general"/>
- </eClassifiers>
- <eClassifiers xsi:type="ecore:EClass" name="Classifier" abstract="true" eSuperTypes="#//PackageElement">
- <eStructuralFeatures xsi:type="ecore:EReference" name="typeOpposite" upperBound="-1"
- eType="#//Attribute" eOpposite="#//Attribute/type"/>
- </eClassifiers>
- <eClassifiers xsi:type="ecore:EClass" name="Package" eSuperTypes="#//UMLModelElement">
- <eStructuralFeatures xsi:type="ecore:EReference" name="elements" upperBound="-1"
- eType="#//PackageElement" containment="true" eOpposite="#//PackageElement/namespace"/>
- </eClassifiers>
- <eClassifiers xsi:type="ecore:EClass" name="PackageElement" abstract="true" eSuperTypes="#//UMLModelElement">
- <eStructuralFeatures xsi:type="ecore:EReference" name="namespace" eType="#//Package"
- eOpposite="#//Package/elements"/>
- </eClassifiers>
- <eClassifiers xsi:type="ecore:EClass" name="PrimitiveDataType" eSuperTypes="#//Classifier"/>
- <eClassifiers xsi:type="ecore:EClass" name="UMLModelElement" abstract="true">
- <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- </eClassifiers>
-</ecore:EPackage>
+<?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="simpleuml" nsURI="http://www.eclipse.org/qvt/examples/0.1/simpleUML"
+ nsPrefix="simpleuml">
+ <eClassifiers xsi:type="ecore:EClass" name="Attribute" eSuperTypes="#//UMLModelElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="owner" lowerBound="1" eType="#//Class"
+ eOpposite="#//Class/attributes"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" lowerBound="1" eType="#//Classifier"
+ eOpposite="#//Classifier/typeOpposite"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Association" eSuperTypes="#//PackageElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="destination" lowerBound="1"
+ eType="#//Class" eOpposite="#//Class/reverse"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="source" lowerBound="1"
+ eType="#//Class" eOpposite="#//Class/forward"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Class" eSuperTypes="#//Classifier">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="attributes" upperBound="-1"
+ eType="#//Attribute" containment="true" eOpposite="#//Attribute/owner"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="forward" upperBound="-1"
+ eType="#//Association" eOpposite="#//Association/source"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="general" upperBound="-1"
+ eType="#//Class" eOpposite="#//Class/generalOpposite"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="generalOpposite" upperBound="-1"
+ eType="#//Class" eOpposite="#//Class/general"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="reverse" upperBound="-1"
+ eType="#//Association" derived="true" eOpposite="#//Association/destination"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Classifier" abstract="true" eSuperTypes="#//PackageElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="typeOpposite" upperBound="-1"
+ eType="#//Attribute" eOpposite="#//Attribute/type"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Package" eSuperTypes="#//UMLModelElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="elements" upperBound="-1"
+ eType="#//PackageElement" containment="true" eOpposite="#//PackageElement/namespace"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PackageElement" abstract="true" eSuperTypes="#//UMLModelElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="namespace" lowerBound="1"
+ eType="#//Package" eOpposite="#//Package/elements"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PrimitiveDataType" eSuperTypes="#//Classifier"/>
+ <eClassifiers xsi:type="ecore:EClass" name="UMLModelElement" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleUML.ecore.oclas b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleUML.ecore.oclas
new file mode 100644
index 000000000..fe1cdf2a8
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleUML.ecore.oclas
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<pivot:Root xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:pivot="http://www.eclipse.org/ocl/3.1.0/Pivot" xsi:schemaLocation="http://www.eclipse.org/ocl/3.1.0/Pivot java://org.eclipse.ocl.examples.pivot.PivotPackage"
+ name="SimpleUML.ecore.oclas" externalURI="platform:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleUML.ecore.oclas">
+ <nestedPackage xmi:id="P.simpleuml" name="simpleuml" nsPrefix="simpleuml" nsURI="http://www.eclipse.org/qvt/examples/0.1/simpleUML">
+ <ownedType xsi:type="pivot:Class" xmi:id="T.simpleuml.Attribute" name="Attribute"
+ superClass="#T.simpleuml.UMLModelElement">
+ <ownedAttribute xmi:id="p.simpleuml.Attribute.owner" name="owner" type="#T.simpleuml.Class"
+ opposite="#p.simpleuml.Class.attributes"/>
+ <ownedAttribute xmi:id="p.simpleuml.Attribute.type" name="type" type="#T.simpleuml.Classifier"
+ opposite="#p.simpleuml.Classifier.typeOpposite"/>
+ <ownedAttribute xmi:id="p.simpleuml.Attribute.middle" name="middle" isRequired="false"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute" implicit="true"
+ opposite="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute"/>
+ </ownedType>
+ <ownedType xsi:type="pivot:Class" xmi:id="T.simpleuml.Association" name="Association"
+ superClass="#T.simpleuml.PackageElement">
+ <ownedAttribute xmi:id="p.simpleuml.Association.destination" name="destination"
+ type="#T.simpleuml.Class" opposite="#p.simpleuml.Class.reverse"/>
+ <ownedAttribute xmi:id="p.simpleuml.Association.source" name="source" type="#T.simpleuml.Class"
+ opposite="#p.simpleuml.Class.forward"/>
+ <ownedAttribute xmi:id="p.simpleuml.Association.middle" name="middle" isRequired="false"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey" implicit="true"
+ opposite="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.association"/>
+ </ownedType>
+ <ownedType xsi:type="pivot:Class" xmi:id="T.simpleuml.Class" name="Class" superClass="#T.simpleuml.Classifier">
+ <ownedAttribute xmi:id="p.simpleuml.Class.attributes" name="attributes" type="#//@nestedPackage.1/@ownedType.0"
+ isComposite="true" opposite="#p.simpleuml.Attribute.owner"/>
+ <ownedAttribute xmi:id="p.simpleuml.Class.forward" name="forward" type="#//@nestedPackage.1/@ownedType.1"
+ opposite="#p.simpleuml.Association.source"/>
+ <ownedAttribute xmi:id="p.simpleuml.Class.general" name="general" type="#//@nestedPackage.1/@ownedType.2"
+ opposite="#p.simpleuml.Class.generalOpposite"/>
+ <ownedAttribute xmi:id="p.simpleuml.Class.generalOpposite" name="generalOpposite"
+ type="#//@nestedPackage.1/@ownedType.2" opposite="#p.simpleuml.Class.general"/>
+ <ownedAttribute xmi:id="p.simpleuml.Class.reverse" name="reverse" type="#//@nestedPackage.1/@ownedType.1"
+ isDerived="true" opposite="#p.simpleuml.Association.destination"/>
+ <ownedAttribute xmi:id="p.simpleuml.Class.middle" name="middle" isRequired="false"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable" implicit="true"
+ opposite="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass"/>
+ </ownedType>
+ <ownedType xsi:type="pivot:Class" xmi:id="T.simpleuml.Classifier" name="Classifier"
+ superClass="#T.simpleuml.PackageElement" isAbstract="true">
+ <ownedAttribute xmi:id="p.simpleuml.Classifier.typeOpposite" name="typeOpposite"
+ type="#//@nestedPackage.1/@ownedType.0" opposite="#p.simpleuml.Attribute.type"/>
+ </ownedType>
+ <ownedType xsi:type="pivot:Class" xmi:id="T.simpleuml.Package" name="Package"
+ superClass="#T.simpleuml.UMLModelElement">
+ <ownedAttribute xmi:id="p.simpleuml.Package.elements" name="elements" type="#//@nestedPackage.1/@ownedType.3"
+ isComposite="true" opposite="#p.simpleuml.PackageElement.namespace"/>
+ <ownedAttribute xmi:id="p.simpleuml.Package.middle" name="middle" isRequired="false"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema" implicit="true"
+ opposite="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage"/>
+ </ownedType>
+ <ownedType xsi:type="pivot:Class" xmi:id="T.simpleuml.PackageElement" name="PackageElement"
+ superClass="#T.simpleuml.UMLModelElement" isAbstract="true">
+ <ownedAttribute xmi:id="p.simpleuml.PackageElement.namespace" name="namespace"
+ type="#T.simpleuml.Package" opposite="#p.simpleuml.Package.elements"/>
+ </ownedType>
+ <ownedType xsi:type="pivot:Class" xmi:id="T.simpleuml.PrimitiveDataType" name="PrimitiveDataType"
+ superClass="#T.simpleuml.Classifier">
+ <ownedAttribute xmi:id="p.simpleuml.PrimitiveDataType.middle" name="middle"
+ isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ implicit="true" opposite="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.primitive"/>
+ </ownedType>
+ <ownedType xsi:type="pivot:Class" xmi:id="T.simpleuml.UMLModelElement" name="UMLModelElement"
+ superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclElement"
+ isAbstract="true">
+ <ownedAttribute xmi:id="p.simpleuml.UMLModelElement.kind" name="kind" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <ownedAttribute xmi:id="p.simpleuml.UMLModelElement.name" name="name" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ </ownedType>
+ </nestedPackage>
+ <nestedPackage xmi:id="P.$$" name="$$" nsPrefix="orphanage" nsURI="http://www.eclipse.org/ocl/3.1.0/orphanage">
+ <ownedType xsi:type="pivot:OrderedSetType" name="OrderedSet" superClass="#//@nestedPackage.1/@ownedType.4 #//@nestedPackage.1/@ownedType.5"
+ elementType="#T.simpleuml.Attribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedSet">
+ <parameterSubstitution actual="#T.simpleuml.Attribute" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedSetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:OrderedSetType" name="OrderedSet" superClass="#//@nestedPackage.1/@ownedType.6 #//@nestedPackage.1/@ownedType.7"
+ elementType="#T.simpleuml.Association">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedSet">
+ <parameterSubstitution actual="#T.simpleuml.Association" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedSetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:OrderedSetType" name="OrderedSet" superClass="#//@nestedPackage.1/@ownedType.8 #//@nestedPackage.1/@ownedType.9"
+ elementType="#T.simpleuml.Class">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedSet">
+ <parameterSubstitution actual="#T.simpleuml.Class" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedSetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:OrderedSetType" name="OrderedSet" superClass="#//@nestedPackage.1/@ownedType.10 #//@nestedPackage.1/@ownedType.11"
+ elementType="#T.simpleuml.PackageElement">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedSet">
+ <parameterSubstitution actual="#T.simpleuml.PackageElement" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedSetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.12"
+ elementType="#T.simpleuml.Attribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="#T.simpleuml.Attribute" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.12"
+ elementType="#T.simpleuml.Attribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="#T.simpleuml.Attribute" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.13"
+ elementType="#T.simpleuml.Association">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="#T.simpleuml.Association" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.13"
+ elementType="#T.simpleuml.Association">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="#T.simpleuml.Association" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.14"
+ elementType="#T.simpleuml.Class">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="#T.simpleuml.Class" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.14"
+ elementType="#T.simpleuml.Class">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="#T.simpleuml.Class" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.15"
+ elementType="#T.simpleuml.PackageElement">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="#T.simpleuml.PackageElement" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.15"
+ elementType="#T.simpleuml.PackageElement">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="#T.simpleuml.PackageElement" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="#T.simpleuml.Attribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="#T.simpleuml.Attribute" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="#T.simpleuml.Association">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="#T.simpleuml.Association" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="#T.simpleuml.Class">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="#T.simpleuml.Class" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="#T.simpleuml.PackageElement">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="#T.simpleuml.PackageElement" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ </nestedPackage>
+</pivot:Root>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleUMLPeople.xmi b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleUMLPeople.xmi
new file mode 100644
index 000000000..40fb5b9f2
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleUMLPeople.xmi
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="ASCII"?>
+<simpleuml:Package
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:simpleuml="http://www.eclipse.org/qvt/examples/0.1/simpleUML"
+ xsi:schemaLocation="http://www.eclipse.org/qvt/examples/0.1/simpleUML SimpleUML.ecore"
+ kind=""
+ name="People">
+ <elements
+ xsi:type="simpleuml:Class"
+ kind="persistent"
+ name="Student">
+ <attributes
+ name="guardian"
+ type="//@elements.7"/>
+ <attributes
+ name="name"
+ type="//@elements.7"/>
+ <attributes
+ name="studentNumber"
+ type="//@elements.8"/>
+ <attributes
+ name="timeTable"
+ type="//@elements.3"/>
+ </elements>
+ <elements
+ xsi:type="simpleuml:Class"
+ kind="persistent"
+ name="Professor"
+ forward="//@elements.6">
+ <attributes
+ name="employed"
+ type="//@elements.9"/>
+ <attributes
+ name="name"
+ type="//@elements.7"/>
+ <attributes
+ name="group"
+ type="//@elements.4"/>
+ </elements>
+ <elements
+ xsi:type="simpleuml:Class"
+ kind="persistent"
+ name="Address"
+ reverse="//@elements.6"/>
+ <elements
+ xsi:type="simpleuml:Class"
+ kind="persistent"
+ name="Timetable"
+ typeOpposite="//@elements.0/@attributes.3">
+ <attributes
+ name="year"
+ type="//@elements.7"/>
+ </elements>
+ <elements
+ xsi:type="simpleuml:Class"
+ kind="persistent"
+ name="ResearchGroup"
+ typeOpposite="//@elements.1/@attributes.2">
+ <attributes
+ name="name"
+ type="//@elements.7"/>
+ <attributes
+ name="budget"
+ type="//@elements.5"/>
+ </elements>
+ <elements
+ xsi:type="simpleuml:Class"
+ kind="persistent"
+ name="Budget"
+ typeOpposite="//@elements.4/@attributes.1">
+ <attributes
+ name="year"
+ type="//@elements.7"/>
+ </elements>
+ <elements
+ xsi:type="simpleuml:Association"
+ kind=""
+ name="proffesorLivesAt"
+ source="//@elements.1"
+ destination="//@elements.2"/>
+ <elements
+ xsi:type="simpleuml:PrimitiveDataType"
+ name="String"
+ typeOpposite="//@elements.0/@attributes.1 //@elements.0/@attributes.0 //@elements.1/@attributes.1 //@elements.3/@attributes.0 //@elements.4/@attributes.0 //@elements.5/@attributes.0"/>
+ <elements
+ xsi:type="simpleuml:PrimitiveDataType"
+ name="Integer"
+ typeOpposite="//@elements.0/@attributes.2"/>
+ <elements
+ xsi:type="simpleuml:PrimitiveDataType"
+ name="Boolean"
+ typeOpposite="//@elements.1/@attributes.0"/>
+</simpleuml:Package>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleUmlContainment.xmi b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleUmlContainment.xmi
new file mode 100644
index 000000000..2b83996a5
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleUmlContainment.xmi
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:qVTcDataDependencyGraph="http://www.eclipse.org/qvt/examples/0.2/QVTcDataDependencyGraph">
+ <qVTcDataDependencyGraph:ClassNode outgoing="/2 /4 /6" label="Package" model="input">
+ <superTypes>UMLModelElement</superTypes>
+ </qVTcDataDependencyGraph:ClassNode>
+ <qVTcDataDependencyGraph:ClassNode incoming="/2" label="Association" model="input">
+ <superTypes>PackageElement</superTypes>
+ </qVTcDataDependencyGraph:ClassNode>
+ <qVTcDataDependencyGraph:ContainmentEdge target="/1" source="/0" model="input">
+ <referredProperty href="SimpleUML.ecore#//Package/elements"/>
+ </qVTcDataDependencyGraph:ContainmentEdge>
+ <qVTcDataDependencyGraph:ClassNode incoming="/4" outgoing="/8" label="Class" model="input">
+ <superTypes>Classifier</superTypes>
+ </qVTcDataDependencyGraph:ClassNode>
+ <qVTcDataDependencyGraph:ContainmentEdge target="/3" source="/0" model="input">
+ <referredProperty href="SimpleUML.ecore#//Package/elements"/>
+ </qVTcDataDependencyGraph:ContainmentEdge>
+ <qVTcDataDependencyGraph:ClassNode incoming="/6" label="PrimitiveDataType" model="input">
+ <superTypes>Classifier</superTypes>
+ </qVTcDataDependencyGraph:ClassNode>
+ <qVTcDataDependencyGraph:ContainmentEdge target="/5" source="/0" model="input">
+ <referredProperty href="SimpleUML.ecore#//Package/elements"/>
+ </qVTcDataDependencyGraph:ContainmentEdge>
+ <qVTcDataDependencyGraph:ClassNode incoming="/8" label="Attribute" model="input">
+ <superTypes>UMLModelElement</superTypes>
+ </qVTcDataDependencyGraph:ClassNode>
+ <qVTcDataDependencyGraph:ContainmentEdge target="/7" source="/3" model="input">
+ <referredProperty href="SimpleUML.ecore#//Class/attributes"/>
+ </qVTcDataDependencyGraph:ContainmentEdge>
+</xmi:XMI>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleUmlContainmentTree.xmi b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleUmlContainmentTree.xmi
new file mode 100644
index 000000000..a1702cb58
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleUmlContainmentTree.xmi
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleUmlEcoreToContainmentTree.launch b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleUmlEcoreToContainmentTree.launch
new file mode 100644
index 000000000..6549d7d86
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleUmlEcoreToContainmentTree.launch
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.epsilon.eol.eclipse.dt.launching.EolLaunchConfigurationDelegate">
+<booleanAttribute key="fine_grained_profiling" value="false"/>
+<listAttribute key="models">
+<listEntry value="#&#13;&#10;#Thu May 08 12:54:54 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=mm&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/emf/2002/Ecore&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleUML.ecore&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleUML.ecore&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Thu May 08 12:55:12 BST 2014&#13;&#10;isMetamodelFileBased=true&#13;&#10;name=tree&#13;&#10;readOnLoad=false&#13;&#10;storeOnDisposal=true&#13;&#10;aliases=&#13;&#10;cached=false&#13;&#10;fileBasedMetamodelUri=platform\:/resource/org.eclipse.qvtd.build.etl/model/ECoreContainmentTree.ecore&#13;&#10;metamodelUri=&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleUmlContainmentTree.xmi&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/SimpleUmlContainmentTree.xmi&#13;&#10;expand=true&#13;&#10;metamodelFile=/org.eclipse.qvtd.build.etl/model/ECoreContainmentTree.ecore&#13;&#10;"/>
+</listAttribute>
+<booleanAttribute key="profile_model_loading" value="false"/>
+<booleanAttribute key="profiling_enabled" value="false"/>
+<booleanAttribute key="reset_profiler" value="false"/>
+<stringAttribute key="source" value="/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/utils/EcoreToContainmentTree.eol"/>
+</launchConfiguration>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UMLtoRDBMS.ecore b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UMLtoRDBMS.ecore
new file mode 100644
index 000000000..45f46969a
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UMLtoRDBMS.ecore
@@ -0,0 +1,136 @@
+<?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="umltordbms" nsURI="http://www.eclipse.org/qvt/examples/0.1/UMLtoRDBMS"
+ nsPrefix="umltordbms">
+ <eClassifiers xsi:type="ecore:EClass" name="AttributeToColumn" eSuperTypes="#//FromAttribute #//ToColumn">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//PrimitiveToName"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AssociationToForeignKey" eSuperTypes="#//ToColumn #//UmlToRdbmsModelElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="association" eType="ecore:EClass SimpleUML.ecore#//Association">
+ <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeUpper">
+ <details key="body" value="1"/>
+ </eAnnotations>
+ <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
+ <details key="body" value="middle"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="foreignKey" eType="ecore:EClass SimpleRDBMS.ecore#//ForeignKey">
+ <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeUpper">
+ <details key="body" value="1"/>
+ </eAnnotations>
+ <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
+ <details key="body" value="middle"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="owner" lowerBound="1" eType="#//ClassToTable"
+ eOpposite="#//ClassToTable/associationsToForeignKeys"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="referenced" eType="#//ClassToTable"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BooleanToBoolean" eSuperTypes="#//PrimitiveToName"/>
+ <eClassifiers xsi:type="ecore:EClass" name="ClassToTable" eSuperTypes="#//FromAttributeOwner #//ToColumn #//UmlToRdbmsModelElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="associationsToForeignKeys"
+ upperBound="-1" eType="#//AssociationToForeignKey" containment="true" eOpposite="#//AssociationToForeignKey/owner"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="owner" lowerBound="1" eType="#//PackageToSchema"
+ eOpposite="#//PackageToSchema/classesToTables"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="primaryKey" eType="ecore:EClass SimpleRDBMS.ecore#//Key">
+ <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeUpper">
+ <details key="body" value="1"/>
+ </eAnnotations>
+ <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
+ <details key="body" value="middle"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="table" eType="ecore:EClass SimpleRDBMS.ecore#//Table">
+ <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeUpper">
+ <details key="body" value="1"/>
+ </eAnnotations>
+ <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
+ <details key="body" value="middle"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="umlClass" eType="ecore:EClass SimpleUML.ecore#//Class">
+ <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeUpper">
+ <details key="body" value="1"/>
+ </eAnnotations>
+ <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
+ <details key="body" value="middle"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FromAttribute" abstract="true" eSuperTypes="#//UmlToRdbmsModelElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="attribute" eType="ecore:EClass SimpleUML.ecore#//Attribute">
+ <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeUpper">
+ <details key="body" value="1"/>
+ </eAnnotations>
+ <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
+ <details key="body" value="middle"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="leafs" ordered="false"
+ upperBound="-1" eType="#//AttributeToColumn"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="owner" lowerBound="1" eType="#//FromAttributeOwner"
+ eOpposite="#//FromAttributeOwner/fromAttributes"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FromAttributeOwner" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="fromAttributes" ordered="false"
+ upperBound="-1" eType="#//FromAttribute" containment="true" eOpposite="#//FromAttribute/owner"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IntegerToNumber" eSuperTypes="#//PrimitiveToName"/>
+ <eClassifiers xsi:type="ecore:EClass" name="NonLeafAttribute" eSuperTypes="#//FromAttributeOwner #//FromAttribute"/>
+ <eClassifiers xsi:type="ecore:EClass" name="PackageToSchema" eSuperTypes="#//UmlToRdbmsModelElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="classesToTables" ordered="false"
+ lowerBound="1" upperBound="-1" eType="#//ClassToTable" containment="true"
+ eOpposite="#//ClassToTable/owner"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="primitivesToNames" ordered="false"
+ upperBound="-1" eType="#//PrimitiveToName" containment="true" eOpposite="#//PrimitiveToName/owner"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="schema" lowerBound="1"
+ eType="ecore:EClass SimpleRDBMS.ecore#//Schema">
+ <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeUpper">
+ <details key="body" value="1"/>
+ </eAnnotations>
+ <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
+ <details key="body" value="middle"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="umlPackage" lowerBound="1"
+ eType="ecore:EClass SimpleUML.ecore#//Package">
+ <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeUpper">
+ <details key="body" value="1"/>
+ </eAnnotations>
+ <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
+ <details key="body" value="middle"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PrimitiveToName" abstract="true" eSuperTypes="#//UmlToRdbmsModelElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="typeName" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="owner" lowerBound="1" eType="#//PackageToSchema"
+ eOpposite="#//PackageToSchema/primitivesToNames"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="primitive" lowerBound="1"
+ eType="ecore:EClass SimpleUML.ecore#//PrimitiveDataType">
+ <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeUpper">
+ <details key="body" value="1"/>
+ </eAnnotations>
+ <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
+ <details key="body" value="middle"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StringToVarchar" eSuperTypes="#//PrimitiveToName"/>
+ <eClassifiers xsi:type="ecore:EClass" name="ToColumn" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="column" lowerBound="1"
+ eType="ecore:EClass SimpleRDBMS.ecore#//Column">
+ <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeUpper">
+ <details key="body" value="1"/>
+ </eAnnotations>
+ <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
+ <details key="body" value="middle"/>
+ </eAnnotations>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="UmlToRdbmsModelElement" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UMLtoRDBMS.ecore.oclas b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UMLtoRDBMS.ecore.oclas
new file mode 100644
index 000000000..7d86e95b3
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UMLtoRDBMS.ecore.oclas
@@ -0,0 +1,278 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<pivot:Root xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:pivot="http://www.eclipse.org/ocl/3.1.0/Pivot" xsi:schemaLocation="http://www.eclipse.org/ocl/3.1.0/Pivot java://org.eclipse.ocl.examples.pivot.PivotPackage"
+ name="UMLtoRDBMS.ecore.oclas" externalURI="platform:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UMLtoRDBMS.ecore.oclas">
+ <nestedPackage xmi:id="P.umltordbms" name="umltordbms" nsPrefix="umltordbms" nsURI="http://www.eclipse.org/qvt/examples/0.1/UMLtoRDBMS">
+ <ownedType xsi:type="pivot:Class" xmi:id="T.umltordbms.AttributeToColumn" name="AttributeToColumn"
+ superClass="#T.umltordbms.FromAttribute #T.umltordbms.ToColumn">
+ <ownedAttribute xmi:id="p.umltordbms.AttributeToColumn.type" name="type" isRequired="false"
+ type="#T.umltordbms.PrimitiveToName" opposite="#p.umltordbms.PrimitiveToName.AttributeToColumn"/>
+ <ownedAttribute xmi:id="p.umltordbms.AttributeToColumn.FromAttribute" name="FromAttribute"
+ type="#//@nestedPackage.1/@ownedType.0" implicit="true" opposite="#p.umltordbms.FromAttribute.leafs"/>
+ </ownedType>
+ <ownedType xsi:type="pivot:Class" xmi:id="T.umltordbms.AssociationToForeignKey"
+ name="AssociationToForeignKey" superClass="#T.umltordbms.ToColumn #T.umltordbms.UmlToRdbmsModelElement">
+ <ownedAttribute xmi:id="p.umltordbms.AssociationToForeignKey.association" name="association"
+ isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ opposite="SimpleUML.ecore.oclas#p.simpleuml.Association.middle">
+ <ownedAnnotation xsi:type="pivot:Annotation" name="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeUpper">
+ <ownedDetail name="body">
+ <value>1</value>
+ </ownedDetail>
+ </ownedAnnotation>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="p.umltordbms.AssociationToForeignKey.foreignKey" name="foreignKey"
+ isRequired="false" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ opposite="SimpleRDBMS.ecore.oclas#//@nestedPackage.0/@ownedType.1/@ownedAttribute.3">
+ <ownedAnnotation xsi:type="pivot:Annotation" name="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeUpper">
+ <ownedDetail name="body">
+ <value>1</value>
+ </ownedDetail>
+ </ownedAnnotation>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="p.umltordbms.AssociationToForeignKey.owner" name="owner"
+ type="#T.umltordbms.ClassToTable" opposite="#p.umltordbms.ClassToTable.associationsToForeignKeys"/>
+ <ownedAttribute xmi:id="p.umltordbms.AssociationToForeignKey.referenced" name="referenced"
+ isRequired="false" type="#T.umltordbms.ClassToTable" opposite="#p.umltordbms.ClassToTable.AssociationToForeignKey"/>
+ </ownedType>
+ <ownedType xsi:type="pivot:Class" xmi:id="T.umltordbms.BooleanToBoolean" name="BooleanToBoolean"
+ superClass="#T.umltordbms.PrimitiveToName"/>
+ <ownedType xsi:type="pivot:Class" xmi:id="T.umltordbms.ClassToTable" name="ClassToTable"
+ superClass="#T.umltordbms.FromAttributeOwner #T.umltordbms.ToColumn #T.umltordbms.UmlToRdbmsModelElement">
+ <ownedAttribute xmi:id="p.umltordbms.ClassToTable.associationsToForeignKeys"
+ name="associationsToForeignKeys" type="#//@nestedPackage.1/@ownedType.1"
+ isComposite="true" opposite="#p.umltordbms.AssociationToForeignKey.owner"/>
+ <ownedAttribute xmi:id="p.umltordbms.ClassToTable.owner" name="owner" type="#T.umltordbms.PackageToSchema"
+ opposite="#p.umltordbms.PackageToSchema.classesToTables"/>
+ <ownedAttribute xmi:id="p.umltordbms.ClassToTable.primaryKey" name="primaryKey"
+ isRequired="false" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key" opposite="SimpleRDBMS.ecore.oclas#//@nestedPackage.0/@ownedType.2/@ownedAttribute.3">
+ <ownedAnnotation xsi:type="pivot:Annotation" name="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeUpper">
+ <ownedDetail name="body">
+ <value>1</value>
+ </ownedDetail>
+ </ownedAnnotation>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="p.umltordbms.ClassToTable.table" name="table" isRequired="false"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table" opposite="SimpleRDBMS.ecore.oclas#//@nestedPackage.0/@ownedType.5/@ownedAttribute.4">
+ <ownedAnnotation xsi:type="pivot:Annotation" name="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeUpper">
+ <ownedDetail name="body">
+ <value>1</value>
+ </ownedDetail>
+ </ownedAnnotation>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="p.umltordbms.ClassToTable.umlClass" name="umlClass"
+ isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Class" opposite="SimpleUML.ecore.oclas#p.simpleuml.Class.middle">
+ <ownedAnnotation xsi:type="pivot:Annotation" name="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeUpper">
+ <ownedDetail name="body">
+ <value>1</value>
+ </ownedDetail>
+ </ownedAnnotation>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="p.umltordbms.ClassToTable.AssociationToForeignKey" name="AssociationToForeignKey"
+ type="#//@nestedPackage.1/@ownedType.2" implicit="true" opposite="#p.umltordbms.AssociationToForeignKey.referenced"/>
+ </ownedType>
+ <ownedType xsi:type="pivot:Class" xmi:id="T.umltordbms.FromAttribute" name="FromAttribute"
+ superClass="#T.umltordbms.UmlToRdbmsModelElement" isAbstract="true">
+ <ownedAttribute xmi:id="p.umltordbms.FromAttribute.kind" name="kind" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <ownedAttribute xmi:id="p.umltordbms.FromAttribute.attribute" name="attribute"
+ isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute" opposite="SimpleUML.ecore.oclas#p.simpleuml.Attribute.middle">
+ <ownedAnnotation xsi:type="pivot:Annotation" name="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeUpper">
+ <ownedDetail name="body">
+ <value>1</value>
+ </ownedDetail>
+ </ownedAnnotation>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="p.umltordbms.FromAttribute.leafs" name="leafs" type="#//@nestedPackage.1/@ownedType.3"
+ opposite="#p.umltordbms.AttributeToColumn.FromAttribute"/>
+ <ownedAttribute xmi:id="p.umltordbms.FromAttribute.owner" name="owner" type="#T.umltordbms.FromAttributeOwner"
+ opposite="#p.umltordbms.FromAttributeOwner.fromAttributes"/>
+ </ownedType>
+ <ownedType xsi:type="pivot:Class" xmi:id="T.umltordbms.FromAttributeOwner" name="FromAttributeOwner"
+ superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclElement"
+ isAbstract="true">
+ <ownedAttribute xmi:id="p.umltordbms.FromAttributeOwner.fromAttributes" name="fromAttributes"
+ type="#//@nestedPackage.1/@ownedType.4" isComposite="true" opposite="#p.umltordbms.FromAttribute.owner"/>
+ </ownedType>
+ <ownedType xsi:type="pivot:Class" xmi:id="T.umltordbms.IntegerToNumber" name="IntegerToNumber"
+ superClass="#T.umltordbms.PrimitiveToName"/>
+ <ownedType xsi:type="pivot:Class" xmi:id="T.umltordbms.NonLeafAttribute" name="NonLeafAttribute"
+ superClass="#T.umltordbms.FromAttributeOwner #T.umltordbms.FromAttribute"/>
+ <ownedType xsi:type="pivot:Class" xmi:id="T.umltordbms.PackageToSchema" name="PackageToSchema"
+ superClass="#T.umltordbms.UmlToRdbmsModelElement">
+ <ownedAttribute xmi:id="p.umltordbms.PackageToSchema.classesToTables" name="classesToTables"
+ type="#//@nestedPackage.1/@ownedType.5" isComposite="true" opposite="#p.umltordbms.ClassToTable.owner"/>
+ <ownedAttribute xmi:id="p.umltordbms.PackageToSchema.primitivesToNames" name="primitivesToNames"
+ type="#//@nestedPackage.1/@ownedType.6" isComposite="true" opposite="#p.umltordbms.PrimitiveToName.owner"/>
+ <ownedAttribute xmi:id="p.umltordbms.PackageToSchema.schema" name="schema" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ opposite="SimpleRDBMS.ecore.oclas#//@nestedPackage.0/@ownedType.4/@ownedAttribute.1">
+ <ownedAnnotation xsi:type="pivot:Annotation" name="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeUpper">
+ <ownedDetail name="body">
+ <value>1</value>
+ </ownedDetail>
+ </ownedAnnotation>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="p.umltordbms.PackageToSchema.umlPackage" name="umlPackage"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Package" opposite="SimpleUML.ecore.oclas#p.simpleuml.Package.middle">
+ <ownedAnnotation xsi:type="pivot:Annotation" name="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeUpper">
+ <ownedDetail name="body">
+ <value>1</value>
+ </ownedDetail>
+ </ownedAnnotation>
+ </ownedAttribute>
+ </ownedType>
+ <ownedType xsi:type="pivot:Class" xmi:id="T.umltordbms.PrimitiveToName" name="PrimitiveToName"
+ superClass="#T.umltordbms.UmlToRdbmsModelElement" isAbstract="true">
+ <ownedAttribute xmi:id="p.umltordbms.PrimitiveToName.typeName" name="typeName"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <ownedAttribute xmi:id="p.umltordbms.PrimitiveToName.owner" name="owner" type="#T.umltordbms.PackageToSchema"
+ opposite="#p.umltordbms.PackageToSchema.primitivesToNames"/>
+ <ownedAttribute xmi:id="p.umltordbms.PrimitiveToName.primitive" name="primitive"
+ type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType" opposite="SimpleUML.ecore.oclas#p.simpleuml.PrimitiveDataType.middle">
+ <ownedAnnotation xsi:type="pivot:Annotation" name="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeUpper">
+ <ownedDetail name="body">
+ <value>1</value>
+ </ownedDetail>
+ </ownedAnnotation>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="p.umltordbms.PrimitiveToName.AttributeToColumn" name="AttributeToColumn"
+ type="#//@nestedPackage.1/@ownedType.7" implicit="true" opposite="#p.umltordbms.AttributeToColumn.type"/>
+ </ownedType>
+ <ownedType xsi:type="pivot:Class" xmi:id="T.umltordbms.StringToVarchar" name="StringToVarchar"
+ superClass="#T.umltordbms.PrimitiveToName"/>
+ <ownedType xsi:type="pivot:Class" xmi:id="T.umltordbms.ToColumn" name="ToColumn"
+ superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclElement"
+ isAbstract="true">
+ <ownedAttribute xmi:id="p.umltordbms.ToColumn.column" name="column" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ opposite="SimpleRDBMS.ecore.oclas#//@nestedPackage.0/@ownedType.0/@ownedAttribute.4">
+ <ownedAnnotation xsi:type="pivot:Annotation" name="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeUpper">
+ <ownedDetail name="body">
+ <value>1</value>
+ </ownedDetail>
+ </ownedAnnotation>
+ </ownedAttribute>
+ </ownedType>
+ <ownedType xsi:type="pivot:Class" xmi:id="T.umltordbms.UmlToRdbmsModelElement"
+ name="UmlToRdbmsModelElement" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclElement"
+ isAbstract="true">
+ <ownedAttribute xmi:id="p.umltordbms.UmlToRdbmsModelElement.name" name="name"
+ isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ </ownedType>
+ </nestedPackage>
+ <nestedPackage xmi:id="P.$$" name="$$" nsPrefix="orphanage" nsURI="http://www.eclipse.org/ocl/3.1.0/orphanage">
+ <ownedType xsi:type="pivot:BagType" name="Bag" superClass="#//@nestedPackage.1/@ownedType.8"
+ elementType="#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Bag">
+ <parameterSubstitution actual="#T.umltordbms.FromAttribute" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..BagT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:OrderedSetType" name="OrderedSet" superClass="#//@nestedPackage.1/@ownedType.9 #//@nestedPackage.1/@ownedType.10"
+ elementType="#T.umltordbms.AssociationToForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedSet">
+ <parameterSubstitution actual="#T.umltordbms.AssociationToForeignKey" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedSetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:BagType" name="Bag" superClass="#//@nestedPackage.1/@ownedType.11"
+ elementType="#T.umltordbms.AssociationToForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Bag">
+ <parameterSubstitution actual="#T.umltordbms.AssociationToForeignKey" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..BagT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.12"
+ elementType="#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="#T.umltordbms.AttributeToColumn" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.13"
+ elementType="#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="#T.umltordbms.FromAttribute" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.14"
+ elementType="#T.umltordbms.ClassToTable" lower="1">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="#T.umltordbms.ClassToTable" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.15"
+ elementType="#T.umltordbms.PrimitiveToName">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="#T.umltordbms.PrimitiveToName" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:BagType" name="Bag" superClass="#//@nestedPackage.1/@ownedType.16"
+ elementType="#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Bag">
+ <parameterSubstitution actual="#T.umltordbms.AttributeToColumn" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..BagT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="#T.umltordbms.FromAttribute" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.11"
+ elementType="#T.umltordbms.AssociationToForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="#T.umltordbms.AssociationToForeignKey" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.11"
+ elementType="#T.umltordbms.AssociationToForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="#T.umltordbms.AssociationToForeignKey" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="#T.umltordbms.AssociationToForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="#T.umltordbms.AssociationToForeignKey" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.16"
+ elementType="#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="#T.umltordbms.AttributeToColumn" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.8"
+ elementType="#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="#T.umltordbms.FromAttribute" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.17"
+ elementType="#T.umltordbms.ClassToTable">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="#T.umltordbms.ClassToTable" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.18"
+ elementType="#T.umltordbms.PrimitiveToName">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="#T.umltordbms.PrimitiveToName" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="#T.umltordbms.AttributeToColumn" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="#T.umltordbms.ClassToTable">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="#T.umltordbms.ClassToTable" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="#T.umltordbms.PrimitiveToName">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="#T.umltordbms.PrimitiveToName" formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ </nestedPackage>
+</pivot:Root>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/UmlToRdbms/UmlToRdbms QvtuToQvti.launch b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms QvtuToQvti.launch
index e28e11bda..37c0c50c7 100644
--- a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/UmlToRdbms/UmlToRdbms QvtuToQvti.launch
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms QvtuToQvti.launch
@@ -18,16 +18,12 @@
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.qvtd.build.etl"/>
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
<mapAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTIES">
-<mapEntry key="configuration" value="UmlToRdbmsConfig.xmi"/>
<mapEntry key="eclipse.pdebuild.home" value="/C:/Eclipse Kepler QVT/plugins/org.eclipse.pde.build_3.8.100.v20130514-1028/./"/>
<mapEntry key="eclipse.pdebuild.scripts" value="/C:/Eclipse Kepler QVT/plugins/org.eclipse.pde.build_3.8.100.v20130514-1028/scripts/"/>
<mapEntry key="eclipse.pdebuild.templates" value="/C:/Eclipse Kepler QVT/plugins/org.eclipse.pde.build_3.8.100.v20130514-1028/templates/"/>
-<mapEntry key="qvtcas" value="UmlToRdbms.qvtcas"/>
-<mapEntry key="qvtmas" value="UmlToRdbms.qvtm.qvtcas"/>
-<mapEntry key="qvtmpartitionas" value="UmlToRdbmsPartition.qvtm.qvtcas"/>
-<mapEntry key="qvtuas" value="UmlToRdbms.qvtu.qvtcas"/>
+<mapEntry key="name" value="UmlToRdbms"/>
</mapAttribute>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/QvtuToQvtiMtc.xml}"/>
-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/UmlToRdbms}"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms}"/>
<stringAttribute key="process_factory_id" value="org.eclipse.ant.ui.remoteAntProcessFactory"/>
</launchConfiguration>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/UmlToRdbms/UmlToRdbms.qvtc b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtc
index aaedd95eb..d83f248ec 100644
--- a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/UmlToRdbms/UmlToRdbms.qvtc
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtc
@@ -1,393 +1,413 @@
-import SimpleUML: 'SimpleUML.ecore'::simpleuml;
-import SimpleRDBMS: 'SimpleRDBMS.ecore'::simplerdbms;
-import UMLtoRDBMS: 'UMLtoRDBMS.ecore'::umltordbms;
-
-/* Enforce uml to rdbms */
-transformation umlRdbms {
- uml imports SimpleUML;
- rdbms imports SimpleRDBMS;
- imports UMLtoRDBMS;
-}
-
-/* -- Package and Schema mapping
- class PackageToSchema {
- composite classesToTables : Set(ClassToTable) opposites owner;
- composite primitivesToNames : Set(PrimitiveToName) opposites owner;
- name : String;
- -- uml
- umlPackage : Package;
- -- rdbms
- schema : Schema;
- }
-*/
-map packageToSchema in umlRdbms {
- uml () {
- p:Package |
- }
- enforce rdbms () {
- realize s:Schema |
- }
- where () {
- realize p2s:PackageToSchema |
- p2s.umlPackage := p;
- p2s.schema := s;
- }
- map {
- where () {
- p2s.name := p.name;
- p2s.name := s.name;
- p.name := p2s.name;
- s.name := p2s.name;
- }
- }
-}
-
-/* -- Primitive data type marshaling
- class PrimitiveToName {
- owner : PackageToSchema opposites primitivesToNames;
- name : String;
- -- uml
- primitive : PrimitiveDataType;
- -- rdbms
- typeName : String;
- }
-*/
-map primitiveToName in umlRdbms {
- uml (p:Package |) {
- prim:PrimitiveDataType |
- prim.namespace = p;
- }
- check enforce rdbms () {
- sqlType:String |
- }
- where (p2s:PackageToSchema | p2s.umlPackage = p;) {
- realize p2n:PrimitiveToName |
- p2n.owner := p2s;
- p2n.primitive := prim;
- p2n.typeName := sqlType;
- }
- map {
- where () {
- p2n.name := prim.name + '2' + sqlType;
- }
- }
-}
-
-map integerToNumber in umlRdbms refines primitiveToName {
- uml () {
- prim.name = 'Integer';
- }
- check enforce rdbms () {
- sqlType := 'NUMBER';
- }
-}
-
-map booleanToBoolean in umlRdbms refines primitiveToName {
- uml () {
- prim.name = 'Boolean';
- }
- check enforce rdbms () {
- sqlType := 'BOOLEAN';
- }
-}
-
-map stringToVarchar in umlRdbms refines primitiveToName {
- uml () {
- prim.name = 'String';
- }
- check enforce rdbms () {
- sqlType := 'VARCHAR';
- }
-}
-
--- utility functions for flattening
-map flattening in umlRdbms {
-}
-
-query umlRdbms::getAllSupers(cls : SimpleUML::Class) : Set(SimpleUML::Class) {
- cls.general->collect(gen | getAllSupers(gen))->including(cls)->asSet()
-}
-
-query umlRdbms::getAllAttributes(cls : SimpleUML::Class) : Set( SimpleUML::Attribute) {
- getAllSupers(cls)->collect(c | c.attributes)
-}
-
-query umlRdbms::getAllForwards(cls : SimpleUML::Class) : Set( SimpleUML::Association) {
- getAllSupers(cls)->collect(c | true)
-}
-
-/* -- Class and Table mapping
- class ClassToTable extends FromAttributeOwner, ToColumn {
- owner : PackageToSchema opposites classesToTables;
- composite associationToForeignKeys :
- OrderedSet(AssociationToForeignKey) opposites owner;
- name : String;
- -- uml
- umlClass : Class;
- -- rdbms
- table : Table;
- primaryKey : Key;
- }
-*/
-map classToTable in umlRdbms {
- check enforce uml (p:Package |) {
- realize c:Class |
- c.kind := 'persistent';
- c.namespace := p;
- }
- check enforce rdbms (s:Schema |) {
- realize t:Table |
- t.kind <> 'meta';
- default t.kind := 'base';
- t.schema := s;
- }
- where (p2s:PackageToSchema |
- p2s.umlPackage = p; p2s.schema = s;) {
- realize c2t:ClassToTable |
- c2t.owner := p2s;
- c2t.umlClass := c;
- c2t.table := t;
- }
- map {
- where () {
- c2t.name := c.name;
- c2t.name := t.name;
- c.name := c2t.name;
- t.name := c2t.name;
- }
- }
- map {
- check enforce rdbms () {
- realize pk:Key,
- realize pc:Column |
- pk.owner := t;
- pk.kind := 'primary';
- pc.owner := t;
- pc.key->includes(pk);
- default pc.key := Set(Key){pk};
- default pc.type := 'NUMBER';
- }
- where () {
- c2t.primaryKey := pk;
- c2t.column := pc;
- }
- map {
- check enforce rdbms () {
- pc.name := t.name+'_tid';
- pk.name := t.name+'_pk';
- }
- }
- }
-}
-
-/* -- Association and ForeignKey mapping
- class AssociationToForeignKey extends ToColumn {
- referenced : ClassToTable;
- owner : ClassToTable opposites associationToForeignKeys;
- name : String;
- -- uml
- association : Association;
- -- rdbms
- foreignKey : ForeignKey;
- }
-*/
-map associationToForeignKey in umlRdbms refines flattening {
- check enforce uml (p:Package, sc:Class, dc:Class |
- sc.namespace = p;) {
- realize a:Association |
- -- getAllForwards(sc)->includes(a);
- default a.source := sc;
- -- getAllSupers(dc)->includes(a.destination);
- default a.destination := dc;
- default a.namespace := p;
- }
- check enforce rdbms (s:Schema, st:Table, dt:Table, rk:Key |
- st.schema = s;
- rk.owner = dt;
- rk.kind = 'primary';
- ) {
- realize fk:ForeignKey,
- realize fc:Column |
- fk.owner := st;
- fc.owner := st;
- fk.refersTo := rk;
- fc.foreignKeys->includes(fk);
- default fc.foreignKeys := Set(ForeignKey){fk};
- }
- where (p2s:PackageToSchema, sc2t:ClassToTable, dc2t:ClassToTable |
- sc2t.owner = p2s;
- p2s.umlPackage = p;
- p2s.schema = s;
- sc2t.table = st;
- dc2t.table = dt;
- sc2t.umlClass = sc;
- dc2t.umlClass = dc;
- ) {
- realize a2f:AssociationToForeignKey |
- a2f.owner := sc2t;
- a2f.referenced := dc2t;
- a2f.association := a;
- a2f.foreignKey := fk;
- a2f.column := fc;
- }
- map {
- where () {
- a2f.name := if a.destination=dc and a.source=sc
- then a.name
- else if a.destination<>dc and a.source=sc
- then dc.name+'_'+a.name
- else if a.destination=dc and a.source<>sc
- then a.name+'_'+sc.name
- else dc.name+'_'+a.name+'_'+sc.name
- endif endif endif;
- a.name := if a.destination=dc and a.source=sc
- then a2f.name
- else a.name
- endif;
- fk.name := a2f.name;
- a2f.name := fk.name;
- fc.name := a2f.name +'_tid';
- }
- }
- map {
- where () {
- fc.type := rk.column->first().type;
- }
- }
-}
-
-/* -- attribute mapping
- abstract class FromAttributeOwner {
- composite fromAttributes : Set(FromAttribute) opposites owner;
- }
- abstract class FromAttribute {
- name : String;
- kind : String;
- owner : FromAttributeOwner opposites fromAttributes;
- leafs : Set(AttributeToColumn);
- -- uml
- attribute : Attribute;
- }
- abstract class ToColumn {
- -- rdbms
- column : Column;
- }
- class NonLeafAttribute extends FromAttributeOwner, FromAttribute {
- leafs := fromAttributes.leafs;
- }
- class AttributeToColumn extends FromAttribute, ToColumn {
- type : PrimitiveToName;
- }
-*/
-map attributes in umlRdbms refines flattening {
- check enforce uml (c:Class |) {
- realize a:Attribute |
- default a.owner := c;
- -- getAllAttributes(c)->includes(a);
- }
- where (fao:FromAttributeOwner |) {
- realize fa : FromAttribute |
- fa.attribute := a;
- fa.owner := fao;
- }
- map {
- where () {
- fa.kind := a.kind;
- a.kind := fa.kind;
- }
- }
-}
-
-map classAttributes in umlRdbms refines attributes {
- where (fao:ClassToTable | fao.umlClass = c;) {}
- map {
- where () {
- fa.name := a.name;
- a.name := fa.name;
- }
- }
-}
-
-map primitiveAttribute in umlRdbms refines attributes {
- check enforce uml (t:PrimitiveDataType |) {
- a.type := t;
- }
- where (p2n:PrimitiveToName | p2n.primitive = t;) {
- realize fa:AttributeToColumn |
- fa.type := p2n;
- }
- map {
- where () {
- fa.leafs := Set(AttributeToColumn) {fa};
- }
- }
-}
-
-map complexAttributeAttributes in umlRdbms refines attributes {
- check uml (ca:Attribute |
- ca.type = c; ) {}
- where (fao:NonLeafAttribute |
- fao.attribute = ca; ) {}
- map {
- where () {
- fa.name := fao.name + '_' + a.name;
- }
- }
-}
-
-map complexAttribute in umlRdbms refines attributes {
- check uml (t:Class |) {
- a.type = t;
- }
- where () {
- realize fa:NonLeafAttribute |
- }
- map {
- where () {
- fa.leafs := fao.fromAttributes.leafs;
- }
- }
-}
-
-map classPrimitiveAttributes in umlRdbms refines classAttributes, primitiveAttribute {}
-map classComplexAttributes in umlRdbms refines classAttributes, complexAttribute {}
-map complexAttributePrimitiveAttributes in umlRdbms refines complexAttributeAttributes, primitiveAttribute {}
-map complexAttributeComplexAttributes in umlRdbms refines complexAttributeAttributes, complexAttribute {}
-
-/* -- column mapping
-*/
-map attributeColumns in umlRdbms {
- check enforce rdbms (t:Table |) {
- realize c:Column |
- c.owner := t;
- c.key->size()=0;
- c.foreignKeys->size()=0;
- }
- where (c2t:ClassToTable | c2t.table = t;) {
- realize a2c:AttributeToColumn |
- a2c.column := c;
- c2t.fromAttributes.leafs->includes(a2c);
- default a2c.owner := c2t; -- Check, not always a2c are owned by c2t, it maybe a nla!
- }
- map {
- check enforce rdbms (ct:String |) {
- c.type := ct;
- }
- where (p2n:PrimitiveToName |) {
- a2c.type := p2n;
- p2n.typeName := ct;
- }
- }
- map {
- where () {
- c.name := a2c.name;
- a2c.name := c.name;
- }
- }
- map {
- where () {
- c.kind := a2c.kind;
- a2c.kind := c.kind;
- }
- }
-}
+import SimpleUML: 'SimpleUML.ecore'::simpleuml;
+import SimpleRDBMS: 'SimpleRDBMS.ecore'::simplerdbms;
+import UMLtoRDBMS: 'UMLtoRDBMS.ecore'::umltordbms;
+
+transformation umlRdbms {
+ uml imports SimpleUML;
+ rdbms imports SimpleRDBMS;
+ imports UMLtoRDBMS;
+}
+
+/* -- Package and Schema mapping
+ class PackageToSchema {
+ composite classesToTables : Set(ClassToTable) opposites owner;
+ composite primitivesToNames : Set(PrimitiveToName) opposites owner;
+ name : String;
+ -- uml
+ umlPackage : Package;
+ -- rdbms
+ schema : Schema;
+ }
+*/
+map packageToSchema in umlRdbms {
+ uml () {
+ p:Package |
+ }
+ enforce rdbms () {
+ realize s:Schema |
+ }
+ where () {
+ realize p2s:PackageToSchema |
+ p2s.umlPackage := p;
+ p2s.schema := s;
+ }
+ map {
+ where () {
+ p2s.name := p.name;
+ p2s.name := s.name;
+ p.name := p2s.name;
+ s.name := p2s.name;
+ }
+ }
+}
+
+/* -- Primitive data type marshaling
+ class PrimitiveToName {
+ owner : PackageToSchema opposites primitivesToNames;
+ name : String;
+ -- uml
+ primitive : PrimitiveDataType;
+ -- rdbms
+ typeName : String;
+ }
+*/
+map primitiveToName in umlRdbms {
+ uml (p:Package |) {
+ prim:PrimitiveDataType |
+ prim.namespace = p;
+ }
+ check enforce rdbms () {
+ realize sqlType:String |
+ }
+ where (p2s:PackageToSchema | p2s.umlPackage = p;) {
+ realize p2n:PrimitiveToName |
+ p2n.owner := p2s;
+ p2n.primitive := prim;
+ p2n.typeName := sqlType;
+ }
+}
+
+map integerToNumber in umlRdbms refines primitiveToName {
+ uml () {
+ prim.name = 'Integer';
+ }
+ check enforce rdbms () {
+ sqlType := 'NUMBER';
+ }
+ where () {
+ realize p2n:IntegerToNumber |
+ }
+ map {
+ where () {
+ p2n.name := prim.name + '2' + 'NUMBER';
+ }
+ }
+}
+
+map booleanToBoolean in umlRdbms refines primitiveToName {
+ uml () {
+ prim.name = 'Boolean';
+ }
+ check enforce rdbms () {
+ sqlType := 'BOOLEAN';
+ }
+ where () {
+ realize p2n:BooleanToBoolean |
+ }
+ map {
+ where () {
+ p2n.name := prim.name + '2' + 'BOOLEAN';
+ }
+ }
+}
+
+map stringToVarchar in umlRdbms refines primitiveToName {
+ uml () {
+ prim.name = 'String';
+ }
+ check enforce rdbms () {
+ sqlType := 'VARCHAR';
+ }
+ where () {
+ realize p2n:StringToVarchar |
+ }
+ map {
+ where () {
+ p2n.name := prim.name + '2' + 'VARCHAR';
+ }
+ }
+}
+
+-- utility functions for flattening
+map flattening in umlRdbms {
+}
+/*
+query umlRdbms::getAllSupers(cls : SimpleUML::Class) : Set(SimpleUML::Class) {
+ cls.general->collect(gen | getAllSupers(gen))->including(cls)->asSet()
+}
+
+query umlRdbms::getAllAttributes(cls : SimpleUML::Class) : Set( SimpleUML::Attribute) {
+ getAllSupers(cls)->collect(c | c.attributes)
+}
+
+query umlRdbms::getAllForwards(cls : SimpleUML::Class) : Set( SimpleUML::Association) {
+ getAllSupers(cls)->collect(c | true)
+}
+ */
+
+/* -- Class and Table mapping
+ class ClassToTable extends FromAttributeOwner, ToColumn {
+ owner : PackageToSchema opposites classesToTables;
+ composite associationToForeignKeys :
+ OrderedSet(AssociationToForeignKey) opposites owner;
+ name : String;
+ -- uml
+ umlClass : Class;
+ -- rdbms
+ table : Table;
+ primaryKey : Key;
+ }
+*/
+map classToTable in umlRdbms {
+ check enforce uml (p:Package |) {
+ realize c:Class |
+ c.kind := 'persistent';
+ c.namespace := p;
+ }
+ check enforce rdbms (s:Schema |) {
+ realize t:Table |
+ t.kind <> 'meta';
+ default t.kind := 'base';
+ t.schema := s;
+ }
+ where (p2s:PackageToSchema |
+ p2s.umlPackage = p; p2s.schema = s;) {
+ realize c2t:ClassToTable |
+ c2t.owner := p2s;
+ c2t.umlClass := c;
+ c2t.table := t;
+ }
+ map {
+ where () {
+ c2t.name := c.name;
+ c2t.name := t.name;
+ c.name := c2t.name;
+ t.name := c2t.name;
+ }
+ }
+ map {
+ check enforce rdbms () {
+ realize pk:Key,
+ realize pc:Column |
+ pk.owner := t;
+ pk.kind := 'primary';
+ pc.owner := t;
+ pc.keys->includes(pk);
+ default pc.keys := Set(Key){pk};
+ default pc.type := 'NUMBER';
+ }
+ where () {
+ c2t.primaryKey := pk;
+ c2t.column := pc;
+ }
+ map {
+ check enforce rdbms () {
+ pc.name := t.name+'_tid';
+ pk.name := t.name+'_pk';
+ }
+ }
+ }
+}
+
+/* -- Association and ForeignKey mapping
+ class AssociationToForeignKey extends ToColumn {
+ referenced : ClassToTable;
+ owner : ClassToTable opposites associationToForeignKeys;
+ name : String;
+ -- uml
+ association : Association;
+ -- rdbms
+ foreignKey : ForeignKey;
+ }
+*/
+map associationToForeignKey in umlRdbms refines flattening {
+ check enforce uml (p:Package, sc:Class, dc:Class |
+ sc.namespace = p;) {
+ realize a:Association |
+ -- getAllForwards(sc)->includes(a);
+ default a.source := sc;
+ -- getAllSupers(dc)->includes(a.destination);
+ default a.destination := dc;
+ default a.namespace := p;
+ }
+ check enforce rdbms (s:Schema, st:Table, dt:Table, rk:Key |
+ st.schema = s;
+ rk.owner = dt;
+ rk.kind = 'primary';
+ ) {
+ realize fk:ForeignKey,
+ realize fc:Column |
+ fk.owner := st;
+ fc.owner := st;
+ fk.refersTo := rk;
+ fc.foreignKeys->includes(fk);
+ default fc.foreignKeys := Set(ForeignKey){fk};
+ }
+ where (p2s:PackageToSchema, sc2t:ClassToTable, dc2t:ClassToTable |
+ sc2t.owner = p2s;
+ p2s.umlPackage = p;
+ p2s.schema = s;
+ sc2t.table = st;
+ dc2t.table = dt;
+ sc2t.umlClass = sc;
+ dc2t.umlClass = dc;
+ ) {
+ realize a2f:AssociationToForeignKey |
+ a2f.owner := sc2t;
+ a2f.referenced := dc2t;
+ a2f.association := a;
+ a2f.foreignKey := fk;
+ a2f.column := fc;
+ }
+ map {
+ where () {
+ a2f.name := if a.destination=dc and a.source=sc
+ then a.name
+ else if a.destination<>dc and a.source=sc
+ then dc.name+'_'+a.name
+ else if a.destination=dc and a.source<>sc
+ then a.name+'_'+sc.name
+ else dc.name+'_'+a.name+'_'+sc.name
+ endif endif endif;
+ a.name := if a.destination=dc and a.source=sc
+ then a2f.name
+ else a.name
+ endif;
+ fk.name := a2f.name;
+ a2f.name := fk.name;
+ fc.name := a2f.name +'_tid';
+ }
+ }
+ map {
+ where () {
+ fc.type := rk.column->first().type;
+ }
+ }
+}
+
+/* -- attribute mapping
+ abstract class FromAttributeOwner {
+ composite fromAttributes : Set(FromAttribute) opposites owner;
+ }
+ abstract class FromAttribute {
+ name : String;
+ kind : String;
+ owner : FromAttributeOwner opposites fromAttributes;
+ leafs : Set(AttributeToColumn);
+ -- uml
+ attribute : Attribute;
+ }
+ abstract class ToColumn {
+ -- rdbms
+ column : Column;
+ }
+ class NonLeafAttribute extends FromAttributeOwner, FromAttribute {
+ leafs := fromAttributes.leafs;
+ }
+ class AttributeToColumn extends FromAttribute, ToColumn {
+ type : PrimitiveToName;
+ }
+*/
+map attributes in umlRdbms refines flattening {
+ check enforce uml (c:Class |) {
+ realize a:Attribute |
+ default a.owner := c;
+ -- getAllAttributes(c)->includes(a);
+ }
+ where (fao:FromAttributeOwner |) {
+ realize fa : FromAttribute |
+ fa.attribute := a;
+ fa.owner := fao;
+ }
+ map {
+ where () {
+ fa.kind := a.kind;
+ a.kind := fa.kind;
+ }
+ }
+}
+
+map classAttributes in umlRdbms refines attributes {
+ where (fao:ClassToTable | fao.umlClass = c;) {}
+ map {
+ where () {
+ fa.name := a.name;
+ a.name := fa.name;
+ }
+ }
+}
+
+map primitiveAttribute in umlRdbms refines attributes {
+ check enforce uml (t:PrimitiveDataType |) {
+ a.type := t;
+ }
+ where (p2n:PrimitiveToName | p2n.primitive = t;) {
+ realize fa:AttributeToColumn |
+ fa.type := p2n;
+ }
+ map {
+ where () {
+ fa.leafs := Set(AttributeToColumn) {fa};
+ }
+ }
+}
+
+map complexAttributeAttributes in umlRdbms refines attributes {
+ check uml (ca:Attribute |
+ ca.type = c; ) {}
+ where (fao:NonLeafAttribute |
+ fao.attribute = ca; ) {}
+ map {
+ where () {
+ fa.name := fao.name + '_' + a.name;
+ }
+ }
+}
+
+map complexAttribute in umlRdbms refines attributes {
+ check uml (t:Class |) {
+ a.type = t;
+ }
+ where () {
+ realize fa:NonLeafAttribute |
+ }
+ map {
+ where () {
+ fa.leafs := fao.fromAttributes.leafs;
+ }
+ }
+}
+
+map classPrimitiveAttributes in umlRdbms refines classAttributes, primitiveAttribute {}
+map classComplexAttributes in umlRdbms refines classAttributes, complexAttribute {}
+map complexAttributePrimitiveAttributes in umlRdbms refines complexAttributeAttributes, primitiveAttribute {}
+map complexAttributeComplexAttributes in umlRdbms refines complexAttributeAttributes, complexAttribute {}
+
+/* -- column mapping
+*/
+map attributeColumns in umlRdbms {
+ check enforce rdbms (t:Table |) {
+ realize c:Column |
+ c.owner := t;
+ c.keys->size()=0;
+ c.foreignKeys->size()=0;
+ }
+ where (c2t:ClassToTable | c2t.table = t;) {
+ realize a2c:AttributeToColumn |
+ a2c.column := c;
+ c2t.fromAttributes.leafs->includes(a2c);
+ default a2c.owner := c2t; -- Check, not always a2c are owned by c2t, it maybe a nla!
+ }
+ map {
+ check enforce rdbms (ct:String |) {
+ c.type := ct;
+ }
+ where (p2n:PrimitiveToName |
+ p2n.typeName = ct;) {
+ a2c.type := p2n;
+
+ }
+ }
+ map {
+ where () {
+ c.name := a2c.name;
+ a2c.name := c.name;
+ }
+ }
+ map {
+ where () {
+ c.kind := a2c.kind;
+ a2c.kind := c.kind;
+ }
+ }
+}
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtcas b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtcas
new file mode 100644
index 000000000..a31b5b7b2
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtcas
@@ -0,0 +1,1761 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<qvtc:CoreModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:pivot="http://www.eclipse.org/ocl/3.1.0/Pivot" xmlns:qvtb="http://www.eclipse.org/qvt/0.9/QVTbase"
+ xmlns:qvtc="http://www.eclipse.org/qvt/0.9/QVTcore" xmlns:qvtcb="http://www.eclipse.org/qvt/0.9/QVTcoreBase"
+ xsi:schemaLocation="http://www.eclipse.org/ocl/3.1.0/Pivot java://org.eclipse.ocl.examples.pivot.PivotPackage http://www.eclipse.org/qvt/0.9/QVTbase java://org.eclipse.qvtd.pivot.qvtbase.QVTbasePackage http://www.eclipse.org/qvt/0.9/QVTcore java://org.eclipse.qvtd.pivot.qvtcore.QVTcorePackage http://www.eclipse.org/qvt/0.9/QVTcoreBase java://org.eclipse.qvtd.pivot.qvtcorebase.QVTcoreBasePackage"
+ name="UmlToRdbms.qvtc" externalURI="platform:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtc">
+ <nestedPackage xsi:type="qvtb:Transformation" xmi:id="T.umlRdbms" name="umlRdbms"
+ superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclElement">
+ <modelParameter xmi:id="qT.umlRdbms.uml" name="uml" usedPackage="SimpleUML.ecore.oclas#P.simpleuml"/>
+ <modelParameter xmi:id="qT.umlRdbms.rdbms" name="rdbms" usedPackage="SimpleRDBMS.ecore.oclas#P.simplerdbms"/>
+ <modelParameter usedPackage="UMLtoRDBMS.ecore.oclas#P.umltordbms"/>
+ <rule xsi:type="qvtc:Mapping" name="packageToSchema">
+ <ownedComment body="-- Package and Schema mapping&#xA;class PackageToSchema {&#xA;composite classesToTables : Set(ClassToTable) opposites owner;&#xA;composite primitivesToNames : Set(PrimitiveToName) opposites owner;&#xA;name : String;&#xA;-- uml&#xA;umlPackage : Package;&#xA;-- rdbms&#xA;schema : Schema;&#xA;}"/>
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="false" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern/>
+ <bottomPattern>
+ <variable xmi:id="qV.umlRdbms.packageToSchema.uml.bottom.p" name="p" type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.packageToSchema.rdbms.bottom.s" name="s"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.packageToSchema.uml.bottom.p"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.packageToSchema.bottom.p2s"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.schema">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.packageToSchema.rdbms.bottom.s"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.packageToSchema.bottom.p2s"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.packageToSchema.bottom.p2s" name="p2s"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </bottomPattern>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.packageToSchema.uml.bottom.p"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.packageToSchema.bottom.p2s"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.packageToSchema.rdbms.bottom.s"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.packageToSchema.bottom.p2s"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.packageToSchema.bottom.p2s"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.packageToSchema.uml.bottom.p"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.packageToSchema.bottom.p2s"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.packageToSchema.rdbms.bottom.s"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="primitiveToName" specification="#//@nestedPackage.0/@rule.2 #//@nestedPackage.0/@rule.3 #//@nestedPackage.0/@rule.4">
+ <ownedComment body="-- Primitive data type marshaling&#xA;class PrimitiveToName {&#xA;owner : PackageToSchema opposites primitivesToNames;&#xA;name : String;&#xA;-- uml&#xA;primitive : PrimitiveDataType;&#xA;-- rdbms&#xA;typeName : String;&#xA;}"/>
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="false" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.primitiveToName.uml.guard.p" name="p" type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.primitiveToName.uml.bottom.prim" name="prim"
+ type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="true" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.primitiveToName.rdbms.bottom.sqlType"
+ name="sqlType" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.primitiveToName.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.primitiveToName.guard.p2s" name="p2s" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.primitiveToName.guard.p2s"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveToName.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.primitive">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveToName.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.typeName">
+ <value xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#qV.umlRdbms.primitiveToName.rdbms.bottom.sqlType"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveToName.bottom.p2n"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.primitiveToName.bottom.p2n" name="p2n"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="integerToNumber" refinement="#//@nestedPackage.0/@rule.1">
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="false" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern/>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="Integer"/>
+ </conditionExpression>
+ </predicate>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="true" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:VariableAssignment" isDefault="false" targetVariable="#qV.umlRdbms.primitiveToName.rdbms.bottom.sqlType">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="NUMBER"/>
+ </assignment>
+ </bottomPattern>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.integerToNumber.bottom.p2n" name="p2n"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.IntegerToNumber"/>
+ </bottomPattern>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="2"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="NUMBER"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.IntegerToNumber"
+ referredVariable="#qV.umlRdbms.integerToNumber.bottom.p2n"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="booleanToBoolean" refinement="#//@nestedPackage.0/@rule.1">
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="false" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern/>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="Boolean"/>
+ </conditionExpression>
+ </predicate>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="true" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:VariableAssignment" isDefault="false" targetVariable="#qV.umlRdbms.primitiveToName.rdbms.bottom.sqlType">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="BOOLEAN"/>
+ </assignment>
+ </bottomPattern>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.booleanToBoolean.bottom.p2n" name="p2n"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.BooleanToBoolean"/>
+ </bottomPattern>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="2"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="BOOLEAN"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.BooleanToBoolean"
+ referredVariable="#qV.umlRdbms.booleanToBoolean.bottom.p2n"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="stringToVarchar" refinement="#//@nestedPackage.0/@rule.1">
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="false" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern/>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="String"/>
+ </conditionExpression>
+ </predicate>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="true" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:VariableAssignment" isDefault="false" targetVariable="#qV.umlRdbms.primitiveToName.rdbms.bottom.sqlType">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="VARCHAR"/>
+ </assignment>
+ </bottomPattern>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.stringToVarchar.bottom.p2n" name="p2n"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.StringToVarchar"/>
+ </bottomPattern>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="2"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="VARCHAR"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.StringToVarchar"
+ referredVariable="#qV.umlRdbms.stringToVarchar.bottom.p2n"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="flattening" specification="#//@nestedPackage.0/@rule.7 #//@nestedPackage.0/@rule.8">
+ <guardPattern/>
+ <bottomPattern/>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="classToTable">
+ <ownedComment body="query umlRdbms::getAllSupers(cls : SimpleUML::Class) : Set(SimpleUML::Class) {&#xA;cls.general->collect(gen | getAllSupers(gen))->including(cls)->asSet()&#xA;}&#xA;&#xA;query umlRdbms::getAllAttributes(cls : SimpleUML::Class) : Set( SimpleUML::Attribute) {&#xA;getAllSupers(cls)->collect(c | c.attributes)&#xA;}&#xA;&#xA;query umlRdbms::getAllForwards(cls : SimpleUML::Class) : Set( SimpleUML::Association) {&#xA;getAllSupers(cls)->collect(c | true)&#xA;}"/>
+ <ownedComment body="-- Class and Table mapping&#xA;class ClassToTable extends FromAttributeOwner, ToColumn {&#xA;owner : PackageToSchema opposites classesToTables;&#xA;composite associationToForeignKeys :&#xA;OrderedSet(AssociationToForeignKey) opposites owner;&#xA;name : String;&#xA;-- uml&#xA;umlClass : Class;&#xA;-- rdbms&#xA;table : Table;&#xA;primaryKey : Key;&#xA;}"/>
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="true" isEnforceable="true"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.classToTable.uml.guard.p" name="p" type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="persistent"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classToTable.uml.bottom.c"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.classToTable.uml.guard.p"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classToTable.uml.bottom.c"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.classToTable.uml.bottom.c" name="c"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="true" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.classToTable.rdbms.guard.s" name="s" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="&lt;>" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%60%%62%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.t"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="meta"/>
+ </conditionExpression>
+ </predicate>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="true" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.kind">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="base"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Table.schema">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.guard.s"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.t"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.classToTable.rdbms.bottom.t" name="t"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.classToTable.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.classToTable.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.schema">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.classToTable.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.guard.s"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.classToTable.guard.p2s" name="p2s" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.classToTable.guard.p2s"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable.bottom.c2t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classToTable.uml.bottom.c"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable.bottom.c2t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.table">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable.bottom.c2t"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.classToTable.bottom.c2t" name="c2t"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ </bottomPattern>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classToTable.uml.bottom.c"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable.bottom.c2t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.t"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable.bottom.c2t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable.bottom.c2t"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classToTable.uml.bottom.c"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable.bottom.c2t"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.t"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ <local>
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="true" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern/>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.includes..ocl.OclAny">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.keys">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#//@nestedPackage.0/@rule.6/@local.1/@domain.0/@bottomPattern/@realizedVariable.1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#//@nestedPackage.0/@rule.6/@local.1/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ </conditionExpression>
+ </predicate>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Key.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#//@nestedPackage.0/@rule.6/@local.1/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.kind">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="primary"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#//@nestedPackage.0/@rule.6/@local.1/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#//@nestedPackage.0/@rule.6/@local.1/@domain.0/@bottomPattern/@realizedVariable.1"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="true" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.keys">
+ <value xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.1"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <item xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#//@nestedPackage.0/@rule.6/@local.1/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ </part>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#//@nestedPackage.0/@rule.6/@local.1/@domain.0/@bottomPattern/@realizedVariable.1"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="true" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.type">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="NUMBER"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#//@nestedPackage.0/@rule.6/@local.1/@domain.0/@bottomPattern/@realizedVariable.1"/>
+ </assignment>
+ <realizedVariable name="pk" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"/>
+ <realizedVariable name="pc" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.primaryKey">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#//@nestedPackage.0/@rule.6/@local.1/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable.bottom.c2t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ToColumn.column">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#//@nestedPackage.0/@rule.6/@local.1/@domain.0/@bottomPattern/@realizedVariable.1"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable.bottom.c2t"/>
+ </assignment>
+ </bottomPattern>
+ <local>
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="true" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.t"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_tid"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#//@nestedPackage.0/@rule.6/@local.1/@domain.0/@bottomPattern/@realizedVariable.1"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.t"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_pk"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#//@nestedPackage.0/@rule.6/@local.1/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ </bottomPattern>
+ </domain>
+ <guardPattern/>
+ <bottomPattern/>
+ </local>
+ </local>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="associationToForeignKey" refinement="#//@nestedPackage.0/@rule.5">
+ <ownedComment body="-- Association and ForeignKey mapping&#xA;class AssociationToForeignKey extends ToColumn {&#xA;referenced : ClassToTable;&#xA;owner : ClassToTable opposites associationToForeignKeys;&#xA;name : String;&#xA;-- uml&#xA;association : Association;&#xA;-- rdbms&#xA;foreignKey : ForeignKey;&#xA;}"/>
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="true" isEnforceable="true"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.uml.guard.p" name="p"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.uml.guard.sc" name="sc"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.uml.guard.dc" name="dc"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="true" targetProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="true" targetProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.dc"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="true" targetProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.p"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.associationToForeignKey.uml.bottom.a"
+ name="a" type="SimpleUML.ecore.oclas#T.simpleuml.Association"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="true" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Table.schema">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.st"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.s"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Key.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.rk"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.dt"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.rk"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="primary"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.rdbms.guard.s" name="s"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.rdbms.guard.st" name="st"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.rdbms.guard.dt" name="dt"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.rdbms.guard.rk" name="rk"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.includes..ocl.OclAny">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.2"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.foreignKeys">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fc"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fk"/>
+ </conditionExpression>
+ </predicate>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.ForeignKey.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.st"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fk"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.st"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fc"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.ForeignKey.refersTo">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.rk"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fk"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="true" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.foreignKeys">
+ <value xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.3"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <item xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fk"/>
+ </part>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fc"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.associationToForeignKey.rdbms.bottom.fk"
+ name="fk" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"/>
+ <realizedVariable xmi:id="qV.umlRdbms.associationToForeignKey.rdbms.bottom.fc"
+ name="fc" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.sc2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.p2s"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.schema">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.s"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.table">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.sc2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.st"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.table">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.dc2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.dt"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.sc2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.dc2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.dc"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.guard.p2s" name="p2s"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.guard.sc2t" name="sc2t"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.guard.dc2t" name="dc2t"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.sc2t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.referenced">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.dc2t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.association">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.foreignKey">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fk"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ToColumn.column">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fc"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.associationToForeignKey.bottom.a2f"
+ name="a2f" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"/>
+ </bottomPattern>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:IfExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String">
+ <condition xsi:type="pivot:OperationCallExp" name="and" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.and..ocl.Boolean">
+ <source xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </argument>
+ </condition>
+ <elseExpression xsi:type="pivot:IfExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String">
+ <condition xsi:type="pivot:OperationCallExp" name="and" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.and..ocl.Boolean">
+ <source xsi:type="pivot:OperationCallExp" name="&lt;>" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%60%%62%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </argument>
+ </condition>
+ <elseExpression xsi:type="pivot:IfExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String">
+ <condition xsi:type="pivot:OperationCallExp" name="and" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.and..ocl.Boolean">
+ <source xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:OperationCallExp" name="&lt;>" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%60%%62%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </argument>
+ </condition>
+ <elseExpression xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </argument>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </argument>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </argument>
+ </thenExpression>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </argument>
+ </thenExpression>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </thenExpression>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <value xsi:type="pivot:IfExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String">
+ <condition xsi:type="pivot:OperationCallExp" name="and" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.and..ocl.Boolean">
+ <source xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </argument>
+ </condition>
+ <elseExpression xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </thenExpression>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fk"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fk"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_tid"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fc"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.type">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.type">
+ <source xsi:type="pivot:OperationCallExp" isRequired="false" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OrderedCollection.first">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.4"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Key.column">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.rk"/>
+ </source>
+ </source>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fc"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="attributes" refinement="#//@nestedPackage.0/@rule.5"
+ specification="#//@nestedPackage.0/@rule.9 #//@nestedPackage.0/@rule.10 #//@nestedPackage.0/@rule.11 #//@nestedPackage.0/@rule.12">
+ <ownedComment body="-- attribute mapping&#xA;abstract class FromAttributeOwner {&#xA;composite fromAttributes : Set(FromAttribute) opposites owner;&#xA;}&#xA;abstract class FromAttribute {&#xA;name : String;&#xA;kind : String;&#xA;owner : FromAttributeOwner opposites fromAttributes;&#xA;leafs : Set(AttributeToColumn);&#xA;-- uml&#xA;attribute : Attribute;&#xA;}&#xA;abstract class ToColumn {&#xA;-- rdbms&#xA;column : Column;&#xA;}&#xA;class NonLeafAttribute extends FromAttributeOwner, FromAttribute {&#xA;leafs := fromAttributes.leafs;&#xA;}&#xA;class AttributeToColumn extends FromAttribute, ToColumn {&#xA;type : PrimitiveToName;&#xA;}"/>
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="true" isEnforceable="true"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.attributes.uml.guard.c" name="c" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="true" targetProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.attributes.uml.bottom.a" name="a"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.attributes.guard.fao" name="fao" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.attributes.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.attributes.bottom.fa" name="fa" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"/>
+ </bottomPattern>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="classAttributes" refinement="#//@nestedPackage.0/@rule.8"
+ specification="#//@nestedPackage.0/@rule.13 #//@nestedPackage.0/@rule.14">
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classAttributes.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.classAttributes.guard.fao" name="fao" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ </guardPattern>
+ <bottomPattern/>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="primitiveAttribute" refinement="#//@nestedPackage.0/@rule.8"
+ specification="#//@nestedPackage.0/@rule.13 #//@nestedPackage.0/@rule.15">
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="true" isEnforceable="true"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.primitiveAttribute.uml.guard.t" name="t" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.uml.guard.t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </assignment>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.primitive">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.guard.p2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.primitiveAttribute.guard.p2n" name="p2n" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AttributeToColumn.type">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.guard.p2n"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.bottom.fa"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.primitiveAttribute.bottom.fa" name="fa"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"/>
+ </bottomPattern>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <value xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.5"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <item xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.bottom.fa"/>
+ </part>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.bottom.fa"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="complexAttributeAttributes" refinement="#//@nestedPackage.0/@rule.8"
+ specification="#//@nestedPackage.0/@rule.15 #//@nestedPackage.0/@rule.16">
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.uml.guard.ca"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.complexAttributeAttributes.uml.guard.ca" name="ca"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.uml.guard.ca"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.complexAttributeAttributes.guard.fao" name="fao"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"/>
+ </guardPattern>
+ <bottomPattern/>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </argument>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="complexAttribute" refinement="#//@nestedPackage.0/@rule.8"
+ specification="#//@nestedPackage.0/@rule.14 #//@nestedPackage.0/@rule.16">
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.complexAttribute.uml.guard.t" name="t" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.complexAttribute.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ </bottomPattern>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.complexAttribute.bottom.fa" name="fa"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"/>
+ </bottomPattern>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <value xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.6"
+ implicit="true" referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Set.collect..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.7"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttributeOwner.fromAttributes">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.attributes.guard.fao"/>
+ </source>
+ <body xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.5"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" referredVariable="#//@nestedPackage.0/@rule.12/@local.0/@bottomPattern/@assignment.0/@value/@iterator.0"/>
+ </body>
+ <iterator name="1_" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Set.collect..T"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.complexAttribute.bottom.fa"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="classPrimitiveAttributes" refinement="#//@nestedPackage.0/@rule.9 #//@nestedPackage.0/@rule.10">
+ <guardPattern/>
+ <bottomPattern/>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="classComplexAttributes" refinement="#//@nestedPackage.0/@rule.9 #//@nestedPackage.0/@rule.12">
+ <guardPattern/>
+ <bottomPattern/>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="complexAttributePrimitiveAttributes" refinement="#//@nestedPackage.0/@rule.11 #//@nestedPackage.0/@rule.10">
+ <guardPattern/>
+ <bottomPattern/>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="complexAttributeComplexAttributes" refinement="#//@nestedPackage.0/@rule.11 #//@nestedPackage.0/@rule.12">
+ <guardPattern/>
+ <bottomPattern/>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="attributeColumns">
+ <ownedComment body="-- column mapping"/>
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="true" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.attributeColumns.rdbms.guard.t" name="t" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Real.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Integer"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.size">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.keys">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.bottom.c"/>
+ </source>
+ </source>
+ <argument xsi:type="pivot:UnlimitedNaturalLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#UnlimitedNatural"
+ unlimitedNaturalSymbol="0"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Real.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Integer"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.size">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.2"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.foreignKeys">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.bottom.c"/>
+ </source>
+ </source>
+ <argument xsi:type="pivot:UnlimitedNaturalLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#UnlimitedNatural"
+ unlimitedNaturalSymbol="0"/>
+ </conditionExpression>
+ </predicate>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.guard.t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.bottom.c"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.attributeColumns.rdbms.bottom.c" name="c"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.table">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.attributeColumns.guard.c2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.attributeColumns.guard.c2t" name="c2t" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.includes..ocl.OclAny">
+ <source xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.6"
+ implicit="true" referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Set.collect..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.7"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttributeOwner.fromAttributes">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.attributeColumns.guard.c2t"/>
+ </source>
+ <body xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.5"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" referredVariable="#//@nestedPackage.0/@rule.17/@bottomPattern/@predicate.0/@conditionExpression/@source/@iterator.0"/>
+ </body>
+ <iterator name="1_" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Set.collect..T"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns.bottom.a2c"/>
+ </conditionExpression>
+ </predicate>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ToColumn.column">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.bottom.c"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns.bottom.a2c"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="true" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.attributeColumns.guard.c2t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns.bottom.a2c"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.attributeColumns.bottom.a2c" name="a2c"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"/>
+ </bottomPattern>
+ <local>
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="true" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern>
+ <variable name="ct" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.type">
+ <value xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.17/@local.0/@domain.0/@guardPattern/@variable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.bottom.c"/>
+ </assignment>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.typeName">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#//@nestedPackage.0/@rule.17/@local.0/@guardPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.17/@local.0/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <variable name="p2n" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AttributeToColumn.type">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#//@nestedPackage.0/@rule.17/@local.0/@guardPattern/@variable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns.bottom.a2c"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns.bottom.a2c"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.bottom.c"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.bottom.c"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns.bottom.a2c"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns.bottom.a2c"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.bottom.c"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.bottom.c"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns.bottom.a2c"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ </rule>
+ </nestedPackage>
+ <nestedPackage xmi:id="P.$$" name="$$" nsPrefix="orphanage" nsURI="http://www.eclipse.org/ocl/3.1.0/orphanage">
+ <ownedType xsi:type="pivot:OrderedSetType" name="OrderedSet" superClass="#//@nestedPackage.1/@ownedType.8 #//@nestedPackage.1/@ownedType.9"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedSet">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedSetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.9"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:OrderedSetType" name="OrderedSet" superClass="#//@nestedPackage.1/@ownedType.10 #//@nestedPackage.1/@ownedType.11"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedSet">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedSetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.11"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:OrderedSetType" name="OrderedSet" superClass="#//@nestedPackage.1/@ownedType.12 #//@nestedPackage.1/@ownedType.13"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedSet">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedSetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.14"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:BagType" name="Bag" superClass="#//@nestedPackage.1/@ownedType.15"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Bag">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..BagT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.16"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.17"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.17"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.18"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.18"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.19"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.19"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.15"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.20"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ </nestedPackage>
+</qvtc:CoreModel>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvti b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvti
new file mode 100644
index 000000000..ed1c82fcd
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvti
@@ -0,0 +1,519 @@
+import Simpleuml: 'http://www.eclipse.org/qvt/examples/0.1/simpleUML';
+import Simplerdbms: 'http://www.eclipse.org/qvt/examples/0.1/SimpleRDBMS';
+import Umltordbms: 'http://www.eclipse.org/qvt/examples/0.1/UMLtoRDBMS';
+
+transformation umlRdbms {
+ uml imports Simpleuml;
+ rdbms imports Simplerdbms;
+ middle imports Umltordbms;
+}
+
+map packageToSchema_LM in umlRdbms {
+ check uml (p:Package ) {
+ }
+ enforce middle ( ) {
+ realize p2s:PackageToSchema }
+ where ( ) {
+
+ p2s.name := p.name;
+ p2s.umlPackage := p; }
+}
+
+map packageToSchema_MR in umlRdbms {
+ enforce rdbms ( ) {
+ realize s:Schema }
+ check middle (p2s:PackageToSchema ) {
+ }
+ where ( ) {
+
+ p2s.schema := s;
+ s.name := p2s.name; }
+}
+
+map integerToNumber_LM in umlRdbms {
+ check uml (p:Package,
+ prim:PrimitiveDataType ) {
+ }
+ enforce middle (p2s:PackageToSchema ) {
+ realize p2n:IntegerToNumber }
+ where (p2s.umlPackage.=(p);
+ prim.namespace.=(p);
+ prim.name.=('Integer');
+ ) {
+
+ p2n.owner := p2s;
+ p2n.name := prim.name.+('2').+('NUMBER');
+ p2n.primitive := prim; }
+}
+
+map integerToNumber_MR in umlRdbms {
+ enforce rdbms ( ) {
+ realize sqlType:String }
+ check middle (p2s:PackageToSchema,
+ p2n:IntegerToNumber ) {
+ }
+ where (p2n.owner.=(p2s);
+ ) {
+
+ p2n.typeName := sqlType;
+ sqlType := 'NUMBER'; }
+}
+
+map booleanToBoolean_LM in umlRdbms {
+ check uml (p:Package,
+ prim:PrimitiveDataType ) {
+ }
+ enforce middle (p2s:PackageToSchema ) {
+ realize p2n:BooleanToBoolean }
+ where (p2s.umlPackage.=(p);
+ prim.namespace.=(p);
+ prim.name.=('Boolean');
+ ) {
+
+ p2n.owner := p2s;
+ p2n.primitive := prim;
+ p2n.name := prim.name.+('2').+('BOOLEAN'); }
+}
+
+map booleanToBoolean_MR in umlRdbms {
+ enforce rdbms ( ) {
+ realize sqlType:String }
+ check middle (p2s:PackageToSchema,
+ p2n:BooleanToBoolean ) {
+ }
+ where (p2n.owner.=(p2s);
+ ) {
+
+ p2n.typeName := sqlType;
+ sqlType := 'BOOLEAN'; }
+}
+
+map stringToVarchar_MR in umlRdbms {
+ enforce rdbms ( ) {
+ realize sqlType:String }
+ check middle (p2s:PackageToSchema,
+ p2n:StringToVarchar ) {
+ }
+ where (p2n.owner.=(p2s);
+ ) {
+
+ p2n.typeName := sqlType;
+ sqlType := 'VARCHAR'; }
+}
+
+map stringToVarchar_LM in umlRdbms {
+ check uml (p:Package,
+ prim:PrimitiveDataType ) {
+ }
+ enforce middle (p2s:PackageToSchema ) {
+ realize p2n:StringToVarchar }
+ where (p2s.umlPackage.=(p);
+ prim.namespace.=(p);
+ prim.name.=('String');
+ ) {
+
+ p2n.primitive := prim;
+ p2n.name := prim.name.+('2').+('VARCHAR');
+ p2n.owner := p2s; }
+}
+
+map classToTable_LM in umlRdbms {
+ check uml (p:Package,
+ c:Class ) {
+ }
+ enforce middle (p2s:PackageToSchema ) {
+ realize c2t:ClassToTable }
+ where (p2s.umlPackage.=(p);
+ c.kind.=('persistent');
+ c.namespace.=(p);
+ ) {
+
+ c2t.umlClass := c;
+ c2t.owner := p2s;
+ c2t.name := c.name; }
+}
+
+map classToTable_MR in umlRdbms {
+ enforce rdbms (s:Schema ) {
+ realize t:Table,
+ realize pk:Key,
+ realize pc:Column }
+ check middle (p2s:PackageToSchema,
+ c2t:ClassToTable ) {
+ }
+ where (p2s.schema.=(s);
+ c2t.owner.=(p2s);
+ ) {
+
+ c2t.column := pc;
+ t.name := c2t.name;
+ c2t.primaryKey := pk;
+ c2t.table := t;
+ t.kind := 'base';
+ t.schema := s;
+ pk.owner := t;
+ pk.kind := 'primary';
+ pc.owner := t;
+ pc.keys := Set{pk};
+ pc.type := 'NUMBER';
+ pc.name := t.name.+('_tid');
+ pk.name := t.name.+('_pk'); }
+}
+
+map associationToForeignKey_LM in umlRdbms {
+ check uml (p:Package,
+ sc:Class,
+ dc:Class,
+ a:Association ) {
+ }
+ enforce middle (p2s:PackageToSchema,
+ sc2t:ClassToTable,
+ dc2t:ClassToTable ) {
+ realize a2f:AssociationToForeignKey }
+ where (sc2t.umlClass.=(sc);
+ dc2t.umlClass.=(dc);
+ sc2t.owner.=(p2s);
+ p2s.umlPackage.=(p);
+ a.namespace.=(p);
+ a.destination.=(dc);
+ a.source.=(sc);
+ sc.namespace.=(p);
+ ) {
+
+ a2f.association := a;
+ a.name := if a.destination.=(dc).and(a.source.=(sc)) then a2f.name else a.name endif;
+ a2f.referenced := dc2t;
+ a2f.owner := sc2t;
+ a2f.name := if a.destination.=(dc).and(a.source.=(sc)) then a.name else if a.destination.<>(dc).and(a.source.=(sc)) then dc.name.+('_').+(a.name) else if a.destination.=(dc).and(a.source.<>(sc)) then a.name.+('_').+(sc.name) else dc.name.+('_').+(a.name).+('_').+(sc.name) endif endif endif; }
+}
+
+map associationToForeignKey_MR in umlRdbms {
+ enforce rdbms (s:Schema,
+ st:Table,
+ dt:Table,
+ rk:Key ) {
+ realize fk:ForeignKey,
+ realize fc:Column }
+ check middle (p2s:PackageToSchema,
+ sc2t:ClassToTable,
+ dc2t:ClassToTable,
+ a2f:AssociationToForeignKey ) {
+ }
+ where (p2s.schema.=(s);
+ sc2t.owner.=(p2s);
+ sc2t.table.=(st);
+ dc2t.table.=(dt);
+ a2f.referenced.=(dc2t);
+ a2f.owner.=(sc2t);
+ rk.kind.=('primary');
+ st.schema.=(s);
+ rk.owner.=(dt);
+ ) {
+
+ fk.name := a2f.name;
+ a2f.column := fc;
+ fc.type := rk.column->first().type;
+ fc.name := a2f.name.+('_tid');
+ a2f.foreignKey := fk;
+ fk.owner := st;
+ fc.owner := st;
+ fk.refersTo := rk;
+ fc.foreignKeys := Set{fk}; }
+}
+
+map classPrimitiveAttributes_LM in umlRdbms {
+ check uml (t:PrimitiveDataType,
+ c:Class,
+ a:Attribute ) {
+ }
+ enforce middle (fao:ClassToTable,
+ p2n:PrimitiveToName ) {
+ realize fa:AttributeToColumn }
+ where (p2n.primitive.=(t);
+ fao.umlClass.=(c);
+ a.owner.=(c);
+ a.type.=(t);
+ ) {
+
+ fa.kind := a.kind;
+ fa.attribute := a;
+ fa.type := p2n;
+ fa.owner := fao;
+ fa.leafs := Set{fa};
+ fa.kind := a.kind;
+ fa.owner := fao;
+ fa.name := a.name;
+ fa.attribute := a; }
+}
+
+map classComplexAttributes_LM in umlRdbms {
+ check uml (t:Class,
+ c:Class,
+ a:Attribute ) {
+ }
+ enforce middle (fao:ClassToTable ) {
+ realize fa:NonLeafAttribute }
+ where (fao.umlClass.=(c);
+ a.type.=(t);
+ a.owner.=(c);
+ ) {
+
+ fa.name := a.name;
+ fa.leafs := fao.fromAttributes->collect(1_ : umltordbms::FromAttribute[?] | 1_.leafs);
+ fa.attribute := a;
+ fa.kind := a.kind;
+ fa.attribute := a;
+ fa.owner := fao;
+ fa.owner := fao;
+ fa.kind := a.kind; }
+}
+
+map complexAttributePrimitiveAttributes_LM in umlRdbms {
+ check uml (ca:Attribute,
+ c:Class,
+ t:PrimitiveDataType,
+ a:Attribute ) {
+ }
+ enforce middle (fao:NonLeafAttribute,
+ p2n:PrimitiveToName ) {
+ realize fa:AttributeToColumn }
+ where (fao.attribute.=(ca);
+ p2n.primitive.=(t);
+ a.owner.=(c);
+ ca.type.=(c);
+ a.owner.=(c);
+ a.type.=(t);
+ ) {
+
+ fa.name := fao.name.+('_').+(a.name);
+ fa.owner := fao;
+ fa.kind := a.kind;
+ fa.attribute := a;
+ fa.attribute := a;
+ fa.leafs := Set{fa};
+ fa.type := p2n;
+ fa.owner := fao;
+ fa.kind := a.kind; }
+}
+
+map complexAttributeComplexAttributes_LM in umlRdbms {
+ check uml (ca:Attribute,
+ c:Class,
+ t:Class,
+ a:Attribute ) {
+ }
+ enforce middle (fao:NonLeafAttribute ) {
+ realize fa:NonLeafAttribute }
+ where (fao.attribute.=(ca);
+ a.owner.=(c);
+ a.type.=(t);
+ a.owner.=(c);
+ ca.type.=(c);
+ ) {
+
+ fa.kind := a.kind;
+ fa.leafs := fao.fromAttributes->collect(1_ : umltordbms::FromAttribute[?] | 1_.leafs);
+ fa.kind := a.kind;
+ fa.name := fao.name.+('_').+(a.name);
+ fa.owner := fao;
+ fa.owner := fao;
+ fa.attribute := a;
+ fa.attribute := a; }
+}
+
+map attributeColumns_MR in umlRdbms {
+ enforce rdbms (t:Table,
+ ct:String ) {
+ realize c:Column }
+ check middle (c2t:ClassToTable,
+ p2n:PrimitiveToName,
+ a2c:AttributeToColumn ) {
+ }
+ where (c2t.table.=(t);
+ p2n.typeName.=(ct);
+ c2t.fromAttributes->collect(1_ : umltordbms::FromAttribute[?] | 1_.leafs)->includes(a2c);
+ a2c.owner.=(c2t);
+ a2c.type.=(p2n);
+ ) {
+
+ c.name := a2c.name;
+ c.kind := a2c.kind;
+ a2c.column := c;
+ c.owner := t;
+ c.type := ct; }
+}
+
+map __root__ in umlRdbms {
+ where ( ) {
+ }
+
+ for p in simpleuml::Package.allInstances() {
+ call packageToSchema_LM {
+ p:= p;
+ }
+
+ }
+
+ for p2s in umltordbms::PackageToSchema.allInstances() {
+ call packageToSchema_MR {
+ p2s:= p2s;
+ }
+
+ }
+
+ for c in simpleuml::Class.allInstances() {
+ call classToTable_LM {
+ c:= c;
+ p:= c.namespace;
+ p2s:= c.namespace.middle;
+ }
+
+ }
+
+ for c2t in umltordbms::ClassToTable.allInstances() {
+ call classToTable_MR {
+ c2t:= c2t;
+ p2s:= c2t.owner;
+ s:= c2t.owner.schema;
+ }
+
+ }
+
+ for a in simpleuml::Association.allInstances() {
+ call associationToForeignKey_LM {
+ a:= a;
+ dc:= a.destination;
+ p:= a.namespace;
+ sc:= a.source;
+ sc2t:= a.source.middle;
+ dc2t:= a.destination.middle;
+ p2s:= a.source.middle.owner;
+ }
+
+ }
+
+ for a2f in umltordbms::AssociationToForeignKey.allInstances() {
+
+ for rk in simplerdbms::Key.allInstances() {
+ call associationToForeignKey_MR {
+ a2f:= a2f;
+ rk:= rk;
+ dc2t:= a2f.referenced;
+ sc2t:= a2f.owner;
+ s:= a2f.owner.table.schema;
+ st:= a2f.owner.table;
+ dt:= a2f.referenced.table;
+ p2s:= a2f.owner.owner;
+ }
+ }
+ }
+
+ for prim in simpleuml::PrimitiveDataType.allInstances() {
+ call integerToNumber_LM {
+ prim:= prim;
+ p:= prim.namespace;
+ p2s:= prim.namespace.middle;
+ }
+
+ }
+
+ for p2n in umltordbms::IntegerToNumber.allInstances() {
+ call integerToNumber_MR {
+ p2n:= p2n;
+ p2s:= p2n.owner;
+ }
+
+ }
+
+ for prim in simpleuml::PrimitiveDataType.allInstances() {
+ call booleanToBoolean_LM {
+ prim:= prim;
+ p:= prim.namespace;
+ p2s:= prim.namespace.middle;
+ }
+
+ }
+
+ for prim in simpleuml::PrimitiveDataType.allInstances() {
+ call stringToVarchar_LM {
+ prim:= prim;
+ p:= prim.namespace;
+ p2s:= prim.namespace.middle;
+ }
+
+ }
+
+ for a in simpleuml::Attribute.allInstances() {
+ call classPrimitiveAttributes_LM {
+ a:= a;
+ t:= a.type;
+ c:= a.owner;
+ fao:= a.owner.middle;
+ p2n:= a.type.middle;
+ }
+
+ }
+
+ for a in simpleuml::Attribute.allInstances() {
+ call classComplexAttributes_LM {
+ a:= a;
+ c:= a.owner;
+ t:= a.type;
+ fao:= a.owner.middle;
+ }
+
+ }
+
+ for a in simpleuml::Attribute.allInstances() {
+ for fao in umltordbms::NonLeafAttribute.allInstances() {
+ call complexAttributeComplexAttributes_LM {
+ fao:= fao;
+ a:= a;
+ ca:= fao.attribute;
+ c:= a.owner;
+ t:= a.type;
+ }
+ }
+ }
+
+ for a in simpleuml::Attribute.allInstances() {
+ for ca in simpleuml::Attribute.allInstances() {
+ call complexAttributePrimitiveAttributes_LM {
+ a:= a;
+ ca:= ca;
+ t:= a.type;
+ c:= a.owner;
+ p2n:= a.type.middle;
+ fao:= "<null>"."<null>";
+ }
+ }
+ }
+
+ for p2n in umltordbms::BooleanToBoolean.allInstances() {
+ call booleanToBoolean_MR {
+ p2n:= p2n;
+ p2s:= p2n.owner;
+ }
+
+ }
+
+ for p2n in umltordbms::StringToVarchar.allInstances() {
+ call stringToVarchar_MR {
+ p2n:= p2n;
+ p2s:= p2n.owner;
+ }
+
+ }
+
+ for a2c in umltordbms::AttributeToColumn.allInstances() {
+ call attributeColumns_MR {
+ a2c:= a2c;
+ c2t:= a2c.owner;
+ p2n:= a2c.type;
+ ct:= a2c.type.typeName;
+ t:= a2c.owner.table;
+ }
+
+ }
+
+} \ No newline at end of file
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtias b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtias
new file mode 100644
index 000000000..4c99f713b
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtias
@@ -0,0 +1,2956 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<qvti:ImperativeModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:pivot="http://www.eclipse.org/ocl/3.1.0/Pivot" xmlns:qvtb="http://www.eclipse.org/qvt/0.9/QVTbase"
+ xmlns:qvtcb="http://www.eclipse.org/qvt/0.9/QVTcoreBase" xmlns:qvti="http://www.eclipse.org/qvt/0.9/QVTimperative"
+ xsi:schemaLocation="http://www.eclipse.org/ocl/3.1.0/Pivot java://org.eclipse.ocl.examples.pivot.PivotPackage http://www.eclipse.org/qvt/0.9/QVTbase java://org.eclipse.qvtd.pivot.qvtbase.QVTbasePackage http://www.eclipse.org/qvt/0.9/QVTcoreBase java://org.eclipse.qvtd.pivot.qvtcorebase.QVTcoreBasePackage http://www.eclipse.org/qvt/0.9/QVTimperative java://org.eclipse.qvtd.pivot.qvtimperative.QVTimperativePackage"
+ name="UmlToRdbms.qvti" externalURI="platform:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvti">
+ <nestedPackage xsi:type="qvtb:Transformation" xmi:id="T.umlRdbms" name="umlRdbms">
+ <modelParameter xmi:id="qT.umlRdbms.uml" name="uml" usedPackage="SimpleUML.ecore.oclas#P.simpleuml"/>
+ <modelParameter xmi:id="qT.umlRdbms.rdbms" name="rdbms" usedPackage="SimpleRDBMS.ecore.oclas#P.simplerdbms"/>
+ <modelParameter xmi:id="qT.umlRdbms.middle" name="middle" usedPackage="UMLtoRDBMS.ecore.oclas#P.umltordbms"/>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.packageToSchema_LM" name="packageToSchema_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.packageToSchema_LM.uml.guard.p" name="p" type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.middle">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.packageToSchema_LM.middle.bottom.p2s"
+ name="p2s" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.packageToSchema_LM.uml.guard.p"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.packageToSchema_LM.middle.bottom.p2s"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.packageToSchema_LM.uml.guard.p"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.packageToSchema_LM.middle.bottom.p2s"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.packageToSchema_MR" name="packageToSchema_MR">
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.packageToSchema_MR.rdbms.bottom.s"
+ name="s" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.middle">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.packageToSchema_MR.middle.guard.p2s" name="p2s"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.schema">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.packageToSchema_MR.rdbms.bottom.s"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.packageToSchema_MR.middle.guard.p2s"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.packageToSchema_MR.middle.guard.p2s"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.packageToSchema_MR.rdbms.bottom.s"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.integerToNumber_LM" name="integerToNumber_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.integerToNumber_LM.uml.guard.p" name="p" type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ <variable xmi:id="qV.umlRdbms.integerToNumber_LM.uml.guard.prim" name="prim"
+ type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.middle">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.integerToNumber_LM.middle.guard.p2s" name="p2s"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.integerToNumber_LM.middle.bottom.p2n"
+ name="p2n" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.IntegerToNumber"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.integerToNumber_LM.middle.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.integerToNumber_LM.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.integerToNumber_LM.uml.guard.prim"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.integerToNumber_LM.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.integerToNumber_LM.uml.guard.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="Integer"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.integerToNumber_LM.uml.guard.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="2"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="NUMBER"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.IntegerToNumber"
+ referredVariable="#qV.umlRdbms.integerToNumber_LM.middle.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.primitive">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.integerToNumber_LM.uml.guard.prim"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.integerToNumber_LM.middle.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.integerToNumber_LM.middle.guard.p2s"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.integerToNumber_LM.middle.bottom.p2n"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.integerToNumber_MR" name="integerToNumber_MR">
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.integerToNumber_MR.rdbms.bottom.sqlType"
+ name="sqlType" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.middle">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.integerToNumber_MR.middle.guard.p2s" name="p2s"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ <variable xmi:id="qV.umlRdbms.integerToNumber_MR.middle.guard.p2n" name="p2n"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.IntegerToNumber"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.integerToNumber_MR.middle.guard.p2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.integerToNumber_MR.middle.guard.p2s"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.typeName">
+ <value xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#qV.umlRdbms.integerToNumber_MR.rdbms.bottom.sqlType"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.integerToNumber_MR.middle.guard.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:VariableAssignment" isDefault="false" targetVariable="#qV.umlRdbms.integerToNumber_MR.rdbms.bottom.sqlType">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="NUMBER"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.booleanToBoolean_MR" name="booleanToBoolean_MR">
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.booleanToBoolean_MR.rdbms.bottom.sqlType"
+ name="sqlType" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.middle">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.booleanToBoolean_MR.middle.guard.p2s" name="p2s"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ <variable xmi:id="qV.umlRdbms.booleanToBoolean_MR.middle.guard.p2n" name="p2n"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.BooleanToBoolean"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.booleanToBoolean_MR.middle.guard.p2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.booleanToBoolean_MR.middle.guard.p2s"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.typeName">
+ <value xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#qV.umlRdbms.booleanToBoolean_MR.rdbms.bottom.sqlType"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.booleanToBoolean_MR.middle.guard.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:VariableAssignment" isDefault="false" targetVariable="#qV.umlRdbms.booleanToBoolean_MR.rdbms.bottom.sqlType">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="BOOLEAN"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.booleanToBoolean_LM" name="booleanToBoolean_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.booleanToBoolean_LM.uml.guard.p" name="p"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ <variable xmi:id="qV.umlRdbms.booleanToBoolean_LM.uml.guard.prim" name="prim"
+ type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.middle">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.booleanToBoolean_LM.middle.guard.p2s" name="p2s"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.booleanToBoolean_LM.middle.bottom.p2n"
+ name="p2n" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.BooleanToBoolean"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.booleanToBoolean_LM.middle.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.booleanToBoolean_LM.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.booleanToBoolean_LM.uml.guard.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="Boolean"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.booleanToBoolean_LM.uml.guard.prim"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.booleanToBoolean_LM.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.booleanToBoolean_LM.middle.guard.p2s"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.booleanToBoolean_LM.middle.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.primitive">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.booleanToBoolean_LM.uml.guard.prim"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.booleanToBoolean_LM.middle.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.booleanToBoolean_LM.uml.guard.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="2"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="BOOLEAN"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.BooleanToBoolean"
+ referredVariable="#qV.umlRdbms.booleanToBoolean_LM.middle.bottom.p2n"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.stringToVarchar_MR" name="stringToVarchar_MR">
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.stringToVarchar_MR.rdbms.bottom.sqlType"
+ name="sqlType" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.middle">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.stringToVarchar_MR.middle.guard.p2s" name="p2s"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ <variable xmi:id="qV.umlRdbms.stringToVarchar_MR.middle.guard.p2n" name="p2n"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.StringToVarchar"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.stringToVarchar_MR.middle.guard.p2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.stringToVarchar_MR.middle.guard.p2s"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.typeName">
+ <value xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#qV.umlRdbms.stringToVarchar_MR.rdbms.bottom.sqlType"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.stringToVarchar_MR.middle.guard.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:VariableAssignment" isDefault="false" targetVariable="#qV.umlRdbms.stringToVarchar_MR.rdbms.bottom.sqlType">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="VARCHAR"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.stringToVarchar_LM" name="stringToVarchar_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.stringToVarchar_LM.uml.guard.p" name="p" type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ <variable xmi:id="qV.umlRdbms.stringToVarchar_LM.uml.guard.prim" name="prim"
+ type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.middle">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.stringToVarchar_LM.middle.guard.p2s" name="p2s"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.stringToVarchar_LM.middle.bottom.p2n"
+ name="p2n" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.StringToVarchar"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.stringToVarchar_LM.middle.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.stringToVarchar_LM.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.stringToVarchar_LM.uml.guard.prim"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.stringToVarchar_LM.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.stringToVarchar_LM.uml.guard.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="String"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.stringToVarchar_LM.uml.guard.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="2"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="VARCHAR"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.StringToVarchar"
+ referredVariable="#qV.umlRdbms.stringToVarchar_LM.middle.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.stringToVarchar_LM.middle.guard.p2s"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.stringToVarchar_LM.middle.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.primitive">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.stringToVarchar_LM.uml.guard.prim"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.stringToVarchar_LM.middle.bottom.p2n"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.classToTable_MR" name="classToTable_MR">
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.classToTable_MR.rdbms.guard.s" name="s" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.classToTable_MR.rdbms.bottom.t" name="t"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"/>
+ <realizedVariable xmi:id="qV.umlRdbms.classToTable_MR.rdbms.bottom.pk" name="pk"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"/>
+ <realizedVariable xmi:id="qV.umlRdbms.classToTable_MR.rdbms.bottom.pc" name="pc"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.middle">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.classToTable_MR.middle.guard.p2s" name="p2s"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ <variable xmi:id="qV.umlRdbms.classToTable_MR.middle.guard.c2t" name="c2t"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.schema">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.classToTable_MR.middle.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.guard.s"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable_MR.middle.guard.c2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.classToTable_MR.middle.guard.p2s"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable_MR.middle.guard.c2t"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.table">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable_MR.middle.guard.c2t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.primaryKey">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.pk"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable_MR.middle.guard.c2t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ToColumn.column">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.pc"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable_MR.middle.guard.c2t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="true" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.kind">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="base"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Table.schema">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.guard.s"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Key.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.pk"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.kind">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="primary"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.pk"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.pc"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="true" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.keys">
+ <value xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.0"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <item xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.pk"/>
+ </part>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.pc"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="true" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.type">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="NUMBER"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.pc"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.t"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_tid"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.pc"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.t"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_pk"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.pk"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.classToTable_LM" name="classToTable_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.classToTable_LM.uml.guard.p" name="p" type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ <variable xmi:id="qV.umlRdbms.classToTable_LM.uml.guard.c" name="c" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.middle">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.classToTable_LM.middle.guard.p2s" name="p2s"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.classToTable_LM.middle.bottom.c2t"
+ name="c2t" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.classToTable_LM.middle.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.classToTable_LM.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classToTable_LM.uml.guard.c"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.classToTable_LM.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classToTable_LM.uml.guard.c"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="persistent"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classToTable_LM.uml.guard.c"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable_LM.middle.bottom.c2t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.classToTable_LM.middle.guard.p2s"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable_LM.middle.bottom.c2t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classToTable_LM.uml.guard.c"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable_LM.middle.bottom.c2t"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.associationToForeignKey_LM" name="associationToForeignKey_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey_LM.uml.guard.p" name="p"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey_LM.uml.guard.sc" name="sc"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey_LM.uml.guard.dc" name="dc"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey_LM.uml.guard.a" name="a"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Association"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.middle">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey_LM.middle.guard.p2s"
+ name="p2s" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey_LM.middle.guard.sc2t"
+ name="sc2t" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey_LM.middle.guard.dc2t"
+ name="dc2t" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.associationToForeignKey_LM.middle.bottom.a2f"
+ name="a2f" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.middle.guard.dc2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.dc"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.middle.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.middle.guard.sc2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.sc"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.middle.guard.sc2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.middle.guard.p2s"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.sc"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.dc"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.sc"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.referenced">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.middle.guard.dc2t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.middle.bottom.a2f"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:IfExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String">
+ <condition xsi:type="pivot:OperationCallExp" name="and" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.and..ocl.Boolean">
+ <source xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.sc"/>
+ </argument>
+ </condition>
+ <elseExpression xsi:type="pivot:IfExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String">
+ <condition xsi:type="pivot:OperationCallExp" name="and" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.and..ocl.Boolean">
+ <source xsi:type="pivot:OperationCallExp" name="&lt;>" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%60%%62%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.sc"/>
+ </argument>
+ </condition>
+ <elseExpression xsi:type="pivot:IfExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String">
+ <condition xsi:type="pivot:OperationCallExp" name="and" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.and..ocl.Boolean">
+ <source xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:OperationCallExp" name="&lt;>" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%60%%62%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.sc"/>
+ </argument>
+ </condition>
+ <elseExpression xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </argument>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.sc"/>
+ </argument>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.sc"/>
+ </argument>
+ </thenExpression>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </argument>
+ </thenExpression>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </thenExpression>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.middle.bottom.a2f"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.middle.guard.sc2t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.middle.bottom.a2f"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <value xsi:type="pivot:IfExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String">
+ <condition xsi:type="pivot:OperationCallExp" name="and" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.and..ocl.Boolean">
+ <source xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.sc"/>
+ </argument>
+ </condition>
+ <elseExpression xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.middle.bottom.a2f"/>
+ </thenExpression>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.association">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.middle.bottom.a2f"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.associationToForeignKey_MR" name="associationToForeignKey_MR">
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.s"
+ name="s" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.st"
+ name="st" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.dt"
+ name="dt" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.rk"
+ name="rk" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.associationToForeignKey_MR.rdbms.bottom.fk"
+ name="fk" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"/>
+ <realizedVariable xmi:id="qV.umlRdbms.associationToForeignKey_MR.rdbms.bottom.fc"
+ name="fc" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.middle">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey_MR.middle.guard.p2s"
+ name="p2s" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey_MR.middle.guard.sc2t"
+ name="sc2t" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey_MR.middle.guard.dc2t"
+ name="dc2t" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey_MR.middle.guard.a2f"
+ name="a2f" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.table">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.sc2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.st"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.table">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.dc2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.dt"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.schema">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.s"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.sc2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.p2s"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.referenced">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.a2f"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.dc2t"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.a2f"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.sc2t"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.rk"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="primary"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Key.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.rk"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.dt"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Table.schema">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.st"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.s"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.type">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.type">
+ <source xsi:type="pivot:OperationCallExp" isRequired="false" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OrderedCollection.first">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.1"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Key.column">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.rk"/>
+ </source>
+ </source>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.bottom.fc"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.a2f"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.bottom.fk"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.a2f"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_tid"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.bottom.fc"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ToColumn.column">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.bottom.fc"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.a2f"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.foreignKey">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.bottom.fk"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.a2f"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.ForeignKey.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.st"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.bottom.fk"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.st"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.bottom.fc"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.ForeignKey.refersTo">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.rk"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.bottom.fk"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="true" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.foreignKeys">
+ <value xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.2"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <item xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.bottom.fk"/>
+ </part>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.bottom.fc"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.classPrimitiveAttributes_LM"
+ name="classPrimitiveAttributes_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.t" name="t"
+ type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ <variable xmi:id="qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.c" name="c"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable xmi:id="qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.a" name="a"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.middle">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.classPrimitiveAttributes_LM.middle.guard.fao"
+ name="fao" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ <variable xmi:id="qV.umlRdbms.classPrimitiveAttributes_LM.middle.guard.p2n"
+ name="p2n" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.classPrimitiveAttributes_LM.middle.bottom.fa"
+ name="fa" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.primitive">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.middle.guard.p2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.middle.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AttributeToColumn.type">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.middle.guard.p2n"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.middle.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.middle.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <value xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.3"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <item xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.middle.bottom.fa"/>
+ </part>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.classComplexAttributes_LM" name="classComplexAttributes_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.classComplexAttributes_LM.uml.guard.t" name="t"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable xmi:id="qV.umlRdbms.classComplexAttributes_LM.uml.guard.c" name="c"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable xmi:id="qV.umlRdbms.classComplexAttributes_LM.uml.guard.a" name="a"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.middle">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.classComplexAttributes_LM.middle.guard.fao"
+ name="fao" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.classComplexAttributes_LM.middle.bottom.fa"
+ name="fa" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.middle.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <value xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.4"
+ implicit="true" referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Set.collect..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.5"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttributeOwner.fromAttributes">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.middle.guard.fao"/>
+ </source>
+ <body xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.3"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" referredVariable="#//@nestedPackage.0/@rule.13/@bottomPattern/@assignment.0/@value/@iterator.0"/>
+ </body>
+ <iterator name="1_" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Set.collect..T"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.uml.guard.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.uml.guard.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.uml.guard.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.uml.guard.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.middle.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.uml.guard.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.middle.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.complexAttributePrimitiveAttributes_LM"
+ name="complexAttributePrimitiveAttributes_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.ca"
+ name="ca" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ <variable xmi:id="qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.c"
+ name="c" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable xmi:id="qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.t"
+ name="t" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ <variable xmi:id="qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.a"
+ name="a" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.middle">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.guard.fao"
+ name="fao" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"/>
+ <variable xmi:id="qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.guard.p2n"
+ name="p2n" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.bottom.fa"
+ name="fa" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.ca"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.primitive">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.guard.p2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.ca"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.a"/>
+ </argument>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <value xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.3"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <item xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.bottom.fa"/>
+ </part>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AttributeToColumn.type">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.guard.p2n"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.complexAttributeComplexAttributes_LM"
+ name="complexAttributeComplexAttributes_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.ca"
+ name="ca" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ <variable xmi:id="qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.c"
+ name="c" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable xmi:id="qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.t"
+ name="t" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable xmi:id="qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.a"
+ name="a" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.middle">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.complexAttributeComplexAttributes_LM.middle.guard.fao"
+ name="fao" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.complexAttributeComplexAttributes_LM.middle.bottom.fa"
+ name="fa" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.middle.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.ca"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.ca"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.middle.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.a"/>
+ </argument>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.middle.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <value xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.4"
+ implicit="true" referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Set.collect..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.5"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttributeOwner.fromAttributes">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.middle.guard.fao"/>
+ </source>
+ <body xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.3"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" referredVariable="#//@nestedPackage.0/@rule.15/@bottomPattern/@assignment.3/@value/@iterator.0"/>
+ </body>
+ <iterator name="1_" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Set.collect..T"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.middle.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.attributeColumns_MR" name="attributeColumns_MR">
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.attributeColumns_MR.rdbms.guard.t" name="t"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"/>
+ <variable xmi:id="qV.umlRdbms.attributeColumns_MR.rdbms.guard.ct" name="ct"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.attributeColumns_MR.rdbms.bottom.c"
+ name="c" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.middle">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.attributeColumns_MR.middle.guard.c2t" name="c2t"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ <variable xmi:id="qV.umlRdbms.attributeColumns_MR.middle.guard.p2n" name="p2n"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"/>
+ <variable xmi:id="qV.umlRdbms.attributeColumns_MR.middle.guard.a2c" name="a2c"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.typeName">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.middle.guard.p2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.rdbms.guard.ct"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.table">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.middle.guard.c2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.rdbms.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AttributeToColumn.type">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.middle.guard.a2c"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.middle.guard.p2n"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.middle.guard.a2c"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.middle.guard.c2t"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.includes..ocl.OclAny">
+ <source xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.6"
+ implicit="true" referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Set.collect..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.7"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttributeOwner.fromAttributes">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.middle.guard.c2t"/>
+ </source>
+ <body xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.8"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" referredVariable="#//@nestedPackage.0/@rule.16/@guardPattern/@predicate.4/@conditionExpression/@source/@iterator.0"/>
+ </body>
+ <iterator name="1_" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Set.collect..T"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.middle.guard.a2c"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.middle.guard.a2c"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.rdbms.bottom.c"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.middle.guard.a2c"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.rdbms.bottom.c"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ToColumn.column">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.rdbms.bottom.c"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.middle.guard.a2c"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.rdbms.guard.t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.rdbms.bottom.c"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.type">
+ <value xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.rdbms.guard.ct"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.rdbms.bottom.c"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.__root__" name="__root__">
+ <guardPattern/>
+ <bottomPattern/>
+ <mappingStatement xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingLoop">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.9"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclElement.allInstances">
+ <source xsi:type="pivot:TypeExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredType="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ </source>
+ <body xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m.umlRdbms.packageToSchema_LM">
+ <binding boundVariable="#qV.umlRdbms.packageToSchema_LM.uml.guard.p">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#i.umlRdbms.__root__.0.0.p"/>
+ </binding>
+ </mappingStatements>
+ </body>
+ <iterator xmi:id="i.umlRdbms.__root__.0.0.p" name="p" type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ </mappingStatements>
+ <mappingStatements xsi:type="qvti:MappingLoop">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.9"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclElement.allInstances">
+ <source xsi:type="pivot:TypeExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredType="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </source>
+ <body xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m.umlRdbms.packageToSchema_MR">
+ <binding boundVariable="#qV.umlRdbms.packageToSchema_MR.middle.guard.p2s">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#i.umlRdbms.__root__.0.1.p2s"/>
+ </binding>
+ </mappingStatements>
+ </body>
+ <iterator xmi:id="i.umlRdbms.__root__.0.1.p2s" name="p2s" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </mappingStatements>
+ <mappingStatements xsi:type="qvti:MappingLoop">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.9"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclElement.allInstances">
+ <source xsi:type="pivot:TypeExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredType="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </source>
+ <body xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m.umlRdbms.classToTable_LM">
+ <binding boundVariable="#qV.umlRdbms.classToTable_LM.uml.guard.c">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#i.umlRdbms.__root__.0.2.c"/>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.classToTable_LM.uml.guard.p">
+ <value xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classToTable_LM.uml.guard.c"/>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.classToTable_LM.middle.guard.p2s">
+ <value xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Package.middle">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classToTable_LM.uml.guard.c"/>
+ </source>
+ </value>
+ </binding>
+ </mappingStatements>
+ </body>
+ <iterator xmi:id="i.umlRdbms.__root__.0.2.c" name="c" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </mappingStatements>
+ <mappingStatements xsi:type="qvti:MappingLoop">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.9"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclElement.allInstances">
+ <source xsi:type="pivot:TypeExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredType="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ </source>
+ <body xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m.umlRdbms.classToTable_MR">
+ <binding boundVariable="#qV.umlRdbms.classToTable_MR.middle.guard.c2t">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#i.umlRdbms.__root__.0.3.c2t"/>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.classToTable_MR.middle.guard.p2s">
+ <value xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable_MR.middle.guard.c2t"/>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.classToTable_MR.rdbms.guard.s">
+ <value xsi:type="pivot:PropertyCallExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.schema">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable_MR.middle.guard.c2t"/>
+ </source>
+ </value>
+ </binding>
+ </mappingStatements>
+ </body>
+ <iterator xmi:id="i.umlRdbms.__root__.0.3.c2t" name="c2t" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ </mappingStatements>
+ <mappingStatements xsi:type="qvti:MappingLoop">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.9"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclElement.allInstances">
+ <source xsi:type="pivot:TypeExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredType="SimpleUML.ecore.oclas#T.simpleuml.Association"/>
+ </source>
+ <body xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m.umlRdbms.associationToForeignKey_LM">
+ <binding boundVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#i.umlRdbms.__root__.0.4.a"/>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.p">
+ <value xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.sc">
+ <value xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.dc">
+ <value xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.associationToForeignKey_LM.middle.guard.dc2t">
+ <value xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Class.middle">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </source>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.associationToForeignKey_LM.middle.guard.sc2t">
+ <value xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Class.middle">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </source>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.associationToForeignKey_LM.middle.guard.p2s">
+ <value xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.owner">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Class.middle">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </source>
+ </source>
+ </value>
+ </binding>
+ </mappingStatements>
+ </body>
+ <iterator xmi:id="i.umlRdbms.__root__.0.4.a" name="a" type="SimpleUML.ecore.oclas#T.simpleuml.Association"/>
+ </mappingStatements>
+ <mappingStatements xsi:type="qvti:MappingLoop">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.9"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclElement.allInstances">
+ <source xsi:type="pivot:TypeExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"/>
+ </source>
+ <body xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingLoop">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.9"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclElement.allInstances">
+ <source xsi:type="pivot:TypeExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"/>
+ </source>
+ <body xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m.umlRdbms.associationToForeignKey_MR">
+ <binding boundVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.rk">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#i.umlRdbms.__root__.0.5.0.0.rk"/>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.a2f">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#i.umlRdbms.__root__.0.5.a2f"/>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.dc2t">
+ <value xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.referenced">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.a2f"/>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.sc2t">
+ <value xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.a2f"/>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.p2s">
+ <value xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.owner">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.a2f"/>
+ </source>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.st">
+ <value xsi:type="pivot:PropertyCallExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.table">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.a2f"/>
+ </source>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.s">
+ <value xsi:type="pivot:PropertyCallExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.schema">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.owner">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.a2f"/>
+ </source>
+ </source>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.dt">
+ <value xsi:type="pivot:PropertyCallExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.table">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.referenced">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.a2f"/>
+ </source>
+ </value>
+ </binding>
+ </mappingStatements>
+ </body>
+ <iterator xmi:id="i.umlRdbms.__root__.0.5.0.0.rk" name="rk" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"/>
+ </mappingStatements>
+ </body>
+ <iterator xmi:id="i.umlRdbms.__root__.0.5.a2f" name="a2f" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"/>
+ </mappingStatements>
+ <mappingStatements xsi:type="qvti:MappingLoop">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.9"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclElement.allInstances">
+ <source xsi:type="pivot:TypeExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredType="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ </source>
+ <body xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m.umlRdbms.booleanToBoolean_LM">
+ <binding boundVariable="#qV.umlRdbms.booleanToBoolean_LM.uml.guard.prim">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#i.umlRdbms.__root__.0.6.prim"/>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.booleanToBoolean_LM.uml.guard.p">
+ <value xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.booleanToBoolean_LM.uml.guard.prim"/>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.booleanToBoolean_LM.middle.guard.p2s">
+ <value xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Package.middle">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.booleanToBoolean_LM.uml.guard.prim"/>
+ </source>
+ </value>
+ </binding>
+ </mappingStatements>
+ </body>
+ <iterator xmi:id="i.umlRdbms.__root__.0.6.prim" name="prim" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ </mappingStatements>
+ <mappingStatements xsi:type="qvti:MappingLoop">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.9"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclElement.allInstances">
+ <source xsi:type="pivot:TypeExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredType="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ </source>
+ <body xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m.umlRdbms.integerToNumber_LM">
+ <binding boundVariable="#qV.umlRdbms.integerToNumber_LM.uml.guard.prim">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#i.umlRdbms.__root__.0.7.prim"/>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.integerToNumber_LM.uml.guard.p">
+ <value xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.integerToNumber_LM.uml.guard.prim"/>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.integerToNumber_LM.middle.guard.p2s">
+ <value xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Package.middle">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.integerToNumber_LM.uml.guard.prim"/>
+ </source>
+ </value>
+ </binding>
+ </mappingStatements>
+ </body>
+ <iterator xmi:id="i.umlRdbms.__root__.0.7.prim" name="prim" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ </mappingStatements>
+ <mappingStatements xsi:type="qvti:MappingLoop">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.9"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclElement.allInstances">
+ <source xsi:type="pivot:TypeExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredType="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ </source>
+ <body xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m.umlRdbms.stringToVarchar_LM">
+ <binding boundVariable="#qV.umlRdbms.stringToVarchar_LM.uml.guard.prim">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#i.umlRdbms.__root__.0.8.prim"/>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.stringToVarchar_LM.uml.guard.p">
+ <value xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.stringToVarchar_LM.uml.guard.prim"/>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.stringToVarchar_LM.middle.guard.p2s">
+ <value xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Package.middle">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.stringToVarchar_LM.uml.guard.prim"/>
+ </source>
+ </value>
+ </binding>
+ </mappingStatements>
+ </body>
+ <iterator xmi:id="i.umlRdbms.__root__.0.8.prim" name="prim" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ </mappingStatements>
+ <mappingStatements xsi:type="qvti:MappingLoop">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.9"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclElement.allInstances">
+ <source xsi:type="pivot:TypeExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredType="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </source>
+ <body xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m.umlRdbms.classPrimitiveAttributes_LM">
+ <binding boundVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.a">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#i.umlRdbms.__root__.0.9.a"/>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.c">
+ <value xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.a"/>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.t">
+ <value xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.a"/>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.middle.guard.fao">
+ <value xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Class.middle">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.a"/>
+ </source>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.middle.guard.p2n">
+ <value xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PrimitiveDataType.middle">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.a"/>
+ </source>
+ </value>
+ </binding>
+ </mappingStatements>
+ </body>
+ <iterator xmi:id="i.umlRdbms.__root__.0.9.a" name="a" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </mappingStatements>
+ <mappingStatements xsi:type="qvti:MappingLoop">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.9"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclElement.allInstances">
+ <source xsi:type="pivot:TypeExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.BooleanToBoolean"
+ referredType="UMLtoRDBMS.ecore.oclas#T.umltordbms.BooleanToBoolean"/>
+ </source>
+ <body xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m.umlRdbms.booleanToBoolean_MR">
+ <binding boundVariable="#qV.umlRdbms.booleanToBoolean_MR.middle.guard.p2n">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.BooleanToBoolean"
+ referredVariable="#i.umlRdbms.__root__.0.10.p2n"/>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.booleanToBoolean_MR.middle.guard.p2s">
+ <value xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.BooleanToBoolean"
+ referredVariable="#qV.umlRdbms.booleanToBoolean_MR.middle.guard.p2n"/>
+ </value>
+ </binding>
+ </mappingStatements>
+ </body>
+ <iterator xmi:id="i.umlRdbms.__root__.0.10.p2n" name="p2n" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.BooleanToBoolean"/>
+ </mappingStatements>
+ <mappingStatements xsi:type="qvti:MappingLoop">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.9"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclElement.allInstances">
+ <source xsi:type="pivot:TypeExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.StringToVarchar"
+ referredType="UMLtoRDBMS.ecore.oclas#T.umltordbms.StringToVarchar"/>
+ </source>
+ <body xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m.umlRdbms.stringToVarchar_MR">
+ <binding boundVariable="#qV.umlRdbms.stringToVarchar_MR.middle.guard.p2n">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.StringToVarchar"
+ referredVariable="#i.umlRdbms.__root__.0.11.p2n"/>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.stringToVarchar_MR.middle.guard.p2s">
+ <value xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.StringToVarchar"
+ referredVariable="#qV.umlRdbms.stringToVarchar_MR.middle.guard.p2n"/>
+ </value>
+ </binding>
+ </mappingStatements>
+ </body>
+ <iterator xmi:id="i.umlRdbms.__root__.0.11.p2n" name="p2n" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.StringToVarchar"/>
+ </mappingStatements>
+ <mappingStatements xsi:type="qvti:MappingLoop">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.9"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclElement.allInstances">
+ <source xsi:type="pivot:TypeExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredType="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </source>
+ <body xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m.umlRdbms.classComplexAttributes_LM">
+ <binding boundVariable="#qV.umlRdbms.classComplexAttributes_LM.uml.guard.a">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#i.umlRdbms.__root__.0.12.a"/>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.classComplexAttributes_LM.uml.guard.c">
+ <value xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.uml.guard.a"/>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.classComplexAttributes_LM.uml.guard.t">
+ <value xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.uml.guard.a"/>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.classComplexAttributes_LM.middle.guard.fao">
+ <value xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Class.middle">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.uml.guard.a"/>
+ </source>
+ </value>
+ </binding>
+ </mappingStatements>
+ </body>
+ <iterator xmi:id="i.umlRdbms.__root__.0.12.a" name="a" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </mappingStatements>
+ <mappingStatements xsi:type="qvti:MappingLoop">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.9"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclElement.allInstances">
+ <source xsi:type="pivot:TypeExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredType="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </source>
+ <body xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingLoop">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.9"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclElement.allInstances">
+ <source xsi:type="pivot:TypeExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredType="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </source>
+ <body xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m.umlRdbms.complexAttributeComplexAttributes_LM">
+ <binding boundVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.a">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#i.umlRdbms.__root__.0.13.0.0.a"/>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.ca">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#i.umlRdbms.__root__.0.13.ca"/>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.t">
+ <value xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.a"/>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.c">
+ <value xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.ca"/>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.middle.guard.fao">
+ <value xsi:type="pivot:PropertyCallExp"/>
+ </binding>
+ </mappingStatements>
+ </body>
+ <iterator xmi:id="i.umlRdbms.__root__.0.13.0.0.a" name="a" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </mappingStatements>
+ </body>
+ <iterator xmi:id="i.umlRdbms.__root__.0.13.ca" name="ca" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </mappingStatements>
+ <mappingStatements xsi:type="qvti:MappingLoop">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.9"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclElement.allInstances">
+ <source xsi:type="pivot:TypeExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredType="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </source>
+ <body xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingLoop">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.9"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclElement.allInstances">
+ <source xsi:type="pivot:TypeExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredType="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </source>
+ <body xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m.umlRdbms.complexAttributePrimitiveAttributes_LM">
+ <binding boundVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.ca">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#i.umlRdbms.__root__.0.14.0.0.ca"/>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.a">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#i.umlRdbms.__root__.0.14.a"/>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.c">
+ <value xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.a"/>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.t">
+ <value xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.a"/>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.guard.p2n">
+ <value xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PrimitiveDataType.middle">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.a"/>
+ </source>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.guard.fao">
+ <value xsi:type="pivot:PropertyCallExp"/>
+ </binding>
+ </mappingStatements>
+ </body>
+ <iterator xmi:id="i.umlRdbms.__root__.0.14.0.0.ca" name="ca" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </mappingStatements>
+ </body>
+ <iterator xmi:id="i.umlRdbms.__root__.0.14.a" name="a" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </mappingStatements>
+ <mappingStatements xsi:type="qvti:MappingLoop">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.9"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclElement.allInstances">
+ <source xsi:type="pivot:TypeExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.IntegerToNumber"
+ referredType="UMLtoRDBMS.ecore.oclas#T.umltordbms.IntegerToNumber"/>
+ </source>
+ <body xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m.umlRdbms.integerToNumber_MR">
+ <binding boundVariable="#qV.umlRdbms.integerToNumber_MR.middle.guard.p2n">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.IntegerToNumber"
+ referredVariable="#i.umlRdbms.__root__.0.15.p2n"/>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.integerToNumber_MR.middle.guard.p2s">
+ <value xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.IntegerToNumber"
+ referredVariable="#qV.umlRdbms.integerToNumber_MR.middle.guard.p2n"/>
+ </value>
+ </binding>
+ </mappingStatements>
+ </body>
+ <iterator xmi:id="i.umlRdbms.__root__.0.15.p2n" name="p2n" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.IntegerToNumber"/>
+ </mappingStatements>
+ <mappingStatements xsi:type="qvti:MappingLoop">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.9"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclElement.allInstances">
+ <source xsi:type="pivot:TypeExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"/>
+ </source>
+ <body xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m.umlRdbms.attributeColumns_MR">
+ <binding boundVariable="#qV.umlRdbms.attributeColumns_MR.middle.guard.a2c">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#i.umlRdbms.__root__.0.16.a2c"/>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.attributeColumns_MR.middle.guard.p2n">
+ <value xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AttributeToColumn.type">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.middle.guard.a2c"/>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.attributeColumns_MR.middle.guard.c2t">
+ <value xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.middle.guard.a2c"/>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.attributeColumns_MR.rdbms.guard.t">
+ <value xsi:type="pivot:PropertyCallExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.table">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.middle.guard.a2c"/>
+ </source>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.umlRdbms.attributeColumns_MR.rdbms.guard.ct">
+ <value xsi:type="pivot:PropertyCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.typeName">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AttributeToColumn.type">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.middle.guard.a2c"/>
+ </source>
+ </value>
+ </binding>
+ </mappingStatements>
+ </body>
+ <iterator xmi:id="i.umlRdbms.__root__.0.16.a2c" name="a2c" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"/>
+ </mappingStatements>
+ </mappingStatement>
+ </rule>
+ </nestedPackage>
+ <nestedPackage xmi:id="P.$$" name="$$" nsPrefix="orphanage" nsURI="http://www.eclipse.org/ocl/3.1.0/orphanage">
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.10"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:OrderedSetType" name="OrderedSet" superClass="#//@nestedPackage.1/@ownedType.11 #//@nestedPackage.1/@ownedType.12"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedSet">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedSetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.13"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.14"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:BagType" name="Bag" superClass="#//@nestedPackage.1/@ownedType.15"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Bag">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..BagT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.16"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:BagType" name="Bag" superClass="#//@nestedPackage.1/@ownedType.17"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Bag">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..BagT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.18"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.19"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.20"
+ elementType="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#OclSelf">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:SelfType http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#OclSelf"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.21"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.22"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.22"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.23"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.15"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.24"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.25"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.17"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.26"
+ elementType="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#OclSelf">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:SelfType http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#OclSelf"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#OclSelf">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:SelfType http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#OclSelf"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ </nestedPackage>
+</qvti:ImperativeModel>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtm.qvtcas b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtm.qvtcas
new file mode 100644
index 000000000..692e61cf6
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtm.qvtcas
@@ -0,0 +1,2569 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<qvtc:CoreModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:pivot="http://www.eclipse.org/ocl/3.1.0/Pivot" xmlns:qvtb="http://www.eclipse.org/qvt/0.9/QVTbase"
+ xmlns:qvtc="http://www.eclipse.org/qvt/0.9/QVTcore" xmlns:qvtcb="http://www.eclipse.org/qvt/0.9/QVTcoreBase"
+ xsi:schemaLocation="http://www.eclipse.org/ocl/3.1.0/Pivot java://org.eclipse.ocl.examples.pivot.PivotPackage http://www.eclipse.org/qvt/0.9/QVTbase java://org.eclipse.qvtd.pivot.qvtbase.QVTbasePackage http://www.eclipse.org/qvt/0.9/QVTcore java://org.eclipse.qvtd.pivot.qvtcore.QVTcorePackage http://www.eclipse.org/qvt/0.9/QVTcoreBase java://org.eclipse.qvtd.pivot.qvtcorebase.QVTcoreBasePackage"
+ name="UmlToRdbms.qvtm.qvtc" externalURI="platform:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtm.qvtc">
+ <nestedPackage xsi:type="qvtb:Transformation" xmi:id="T.umlRdbms" name="umlRdbms"
+ superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclElement">
+ <ownedComment body="/* Enforce uml to rdbms */"/>
+ <modelParameter xmi:id="qT.umlRdbms.uml" name="uml" usedPackage="SimpleUML.ecore.oclas#P.simpleuml"/>
+ <modelParameter xmi:id="qT.umlRdbms.rdbms" name="rdbms" usedPackage="SimpleRDBMS.ecore.oclas#P.simplerdbms"/>
+ <modelParameter usedPackage="UMLtoRDBMS.ecore.oclas#P.umltordbms"/>
+ <rule xsi:type="qvtc:Mapping" name="packageToSchema">
+ <ownedComment body="-- Package and Schema mapping&#xA;class PackageToSchema {&#xA;composite classesToTables : Set(ClassToTable) opposites owner;&#xA;composite primitivesToNames : Set(PrimitiveToName) opposites owner;&#xA;name : String;&#xA;-- uml&#xA;umlPackage : Package;&#xA;-- rdbms&#xA;schema : Schema;&#xA;}"/>
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern/>
+ <bottomPattern>
+ <variable xmi:id="qV.umlRdbms.packageToSchema.uml.bottom.p" name="p" type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.packageToSchema.rdbms.bottom.s" name="s"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.packageToSchema.uml.bottom.p"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.packageToSchema.bottom.p2s"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.schema">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.packageToSchema.rdbms.bottom.s"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.packageToSchema.bottom.p2s"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.packageToSchema.uml.bottom.p"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.packageToSchema.bottom.p2s"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.packageToSchema.bottom.p2s"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.packageToSchema.rdbms.bottom.s"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.packageToSchema.bottom.p2s" name="p2s"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="primitiveToName" specification="#//@nestedPackage.0/@rule.2 #//@nestedPackage.0/@rule.3 #//@nestedPackage.0/@rule.4">
+ <ownedComment body="-- Primitive data type marshaling&#xA;class PrimitiveToName {&#xA;owner : PackageToSchema opposites primitivesToNames;&#xA;name : String;&#xA;-- uml&#xA;primitive : PrimitiveDataType;&#xA;-- rdbms&#xA;typeName : String;&#xA;}"/>
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.primitiveToName.uml.guard.p" name="p" type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.primitiveToName.uml.bottom.prim" name="prim"
+ type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.primitiveToName.rdbms.bottom.sqlType"
+ name="sqlType" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.primitiveToName.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.primitiveToName.guard.p2s" name="p2s" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.primitiveToName.guard.p2s"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveToName.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.primitive">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveToName.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.typeName">
+ <value xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#qV.umlRdbms.primitiveToName.rdbms.bottom.sqlType"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveToName.bottom.p2n"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.primitiveToName.bottom.p2n" name="p2n"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="integerToNumber" refinement="#//@nestedPackage.0/@rule.1">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.integerToNumber.uml.guard.p" name="p" type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="Integer"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.integerToNumber.uml.bottom.prim" name="prim"
+ type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:VariableAssignment" isDefault="false" targetVariable="#qV.umlRdbms.primitiveToName.rdbms.bottom.sqlType">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="NUMBER"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.integerToNumber.rdbms.bottom.sqlType"
+ name="sqlType" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.primitiveToName.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.integerToNumber.guard.p2s" name="p2s" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.integerToNumber.uml.bottom.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="2"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="NUMBER"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.IntegerToNumber"
+ referredVariable="#qV.umlRdbms.integerToNumber.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.primitiveToName.guard.p2s"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveToName.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.primitive">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveToName.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.typeName">
+ <value xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#qV.umlRdbms.primitiveToName.rdbms.bottom.sqlType"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveToName.bottom.p2n"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.integerToNumber.bottom.p2n" name="p2n"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.IntegerToNumber"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="booleanToBoolean" refinement="#//@nestedPackage.0/@rule.1">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.booleanToBoolean.uml.guard.p" name="p" type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="Boolean"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.booleanToBoolean.uml.bottom.prim" name="prim"
+ type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:VariableAssignment" isDefault="false" targetVariable="#qV.umlRdbms.primitiveToName.rdbms.bottom.sqlType">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="BOOLEAN"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.booleanToBoolean.rdbms.bottom.sqlType"
+ name="sqlType" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.primitiveToName.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.booleanToBoolean.guard.p2s" name="p2s" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.booleanToBoolean.uml.bottom.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="2"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="BOOLEAN"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.BooleanToBoolean"
+ referredVariable="#qV.umlRdbms.booleanToBoolean.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.primitiveToName.guard.p2s"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveToName.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.primitive">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveToName.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.typeName">
+ <value xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#qV.umlRdbms.primitiveToName.rdbms.bottom.sqlType"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveToName.bottom.p2n"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.booleanToBoolean.bottom.p2n" name="p2n"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.BooleanToBoolean"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="stringToVarchar" refinement="#//@nestedPackage.0/@rule.1">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.stringToVarchar.uml.guard.p" name="p" type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="String"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.stringToVarchar.uml.bottom.prim" name="prim"
+ type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:VariableAssignment" isDefault="false" targetVariable="#qV.umlRdbms.primitiveToName.rdbms.bottom.sqlType">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="VARCHAR"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.stringToVarchar.rdbms.bottom.sqlType"
+ name="sqlType" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.primitiveToName.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.stringToVarchar.guard.p2s" name="p2s" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.stringToVarchar.uml.bottom.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="2"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="VARCHAR"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.StringToVarchar"
+ referredVariable="#qV.umlRdbms.stringToVarchar.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.primitiveToName.guard.p2s"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveToName.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.primitive">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveToName.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.typeName">
+ <value xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#qV.umlRdbms.primitiveToName.rdbms.bottom.sqlType"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveToName.bottom.p2n"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.stringToVarchar.bottom.p2n" name="p2n"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.StringToVarchar"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="flattening" specification="#//@nestedPackage.0/@rule.7 #//@nestedPackage.0/@rule.8">
+ <guardPattern/>
+ <bottomPattern/>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="classToTable">
+ <ownedComment body="query umlRdbms::getAllSupers(cls : SimpleUML::Class) : Set(SimpleUML::Class) {&#xA;cls.general->collect(gen | getAllSupers(gen))->including(cls)->asSet()&#xA;}&#xA;&#xA;query umlRdbms::getAllAttributes(cls : SimpleUML::Class) : Set( SimpleUML::Attribute) {&#xA;getAllSupers(cls)->collect(c | c.attributes)&#xA;}&#xA;&#xA;query umlRdbms::getAllForwards(cls : SimpleUML::Class) : Set( SimpleUML::Association) {&#xA;getAllSupers(cls)->collect(c | true)&#xA;}"/>
+ <ownedComment body="-- Class and Table mapping&#xA;class ClassToTable extends FromAttributeOwner, ToColumn {&#xA;owner : PackageToSchema opposites classesToTables;&#xA;composite associationToForeignKeys :&#xA;OrderedSet(AssociationToForeignKey) opposites owner;&#xA;name : String;&#xA;-- uml&#xA;umlClass : Class;&#xA;-- rdbms&#xA;table : Table;&#xA;primaryKey : Key;&#xA;}"/>
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.classToTable.uml.guard.p" name="p" type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classToTable.uml.bottom.c"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="persistent"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classToTable.uml.bottom.c"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.classToTable.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.classToTable.uml.bottom.c" name="c" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.classToTable.rdbms.guard.s" name="s" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="true" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.kind">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="base"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Table.schema">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.guard.s"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Key.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.pk"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.kind">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="primary"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.pk"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.pc"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="true" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.keys">
+ <value xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.21"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <item xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.pk"/>
+ </part>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.pc"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="true" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.type">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="NUMBER"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.pc"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.t"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_tid"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.pc"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.t"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_pk"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.pk"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.classToTable.rdbms.bottom.t" name="t"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"/>
+ <realizedVariable xmi:id="qV.umlRdbms.classToTable.rdbms.bottom.pk" name="pk"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"/>
+ <realizedVariable xmi:id="qV.umlRdbms.classToTable.rdbms.bottom.pc" name="pc"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.classToTable.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.classToTable.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.schema">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.classToTable.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.guard.s"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.classToTable.guard.p2s" name="p2s" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.classToTable.guard.p2s"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable.bottom.c2t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classToTable.uml.bottom.c"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable.bottom.c2t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.table">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable.bottom.c2t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classToTable.uml.bottom.c"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable.bottom.c2t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable.bottom.c2t"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.primaryKey">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.pk"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable.bottom.c2t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ToColumn.column">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.pc"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable.bottom.c2t"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.classToTable.bottom.c2t" name="c2t"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="associationToForeignKey" refinement="#//@nestedPackage.0/@rule.5">
+ <ownedComment body="-- Association and ForeignKey mapping&#xA;class AssociationToForeignKey extends ToColumn {&#xA;referenced : ClassToTable;&#xA;owner : ClassToTable opposites associationToForeignKeys;&#xA;name : String;&#xA;-- uml&#xA;association : Association;&#xA;-- rdbms&#xA;foreignKey : ForeignKey;&#xA;}"/>
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.uml.guard.p" name="p"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.uml.guard.sc" name="sc"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.uml.guard.dc" name="dc"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.dc"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.uml.bottom.a" name="a"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Association"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Table.schema">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.st"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.s"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Key.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.rk"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.dt"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.rk"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="primary"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.rdbms.guard.s" name="s"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.rdbms.guard.st" name="st"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.rdbms.guard.dt" name="dt"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.rdbms.guard.rk" name="rk"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.ForeignKey.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.st"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fk"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.st"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fc"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.ForeignKey.refersTo">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.rk"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fk"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="true" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.foreignKeys">
+ <value xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.3"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <item xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fk"/>
+ </part>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fc"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.associationToForeignKey.rdbms.bottom.fk"
+ name="fk" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"/>
+ <realizedVariable xmi:id="qV.umlRdbms.associationToForeignKey.rdbms.bottom.fc"
+ name="fc" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.sc2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.p2s"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.schema">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.s"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.table">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.sc2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.st"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.table">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.dc2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.dt"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.sc2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.dc2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.dc"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.guard.p2s" name="p2s"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.guard.sc2t" name="sc2t"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.guard.dc2t" name="dc2t"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.sc2t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.referenced">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.dc2t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.association">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.foreignKey">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fk"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ToColumn.column">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fc"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:IfExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String">
+ <condition xsi:type="pivot:OperationCallExp" name="and" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.and..ocl.Boolean">
+ <source xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </argument>
+ </condition>
+ <elseExpression xsi:type="pivot:IfExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String">
+ <condition xsi:type="pivot:OperationCallExp" name="and" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.and..ocl.Boolean">
+ <source xsi:type="pivot:OperationCallExp" name="&lt;>" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%60%%62%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </argument>
+ </condition>
+ <elseExpression xsi:type="pivot:IfExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String">
+ <condition xsi:type="pivot:OperationCallExp" name="and" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.and..ocl.Boolean">
+ <source xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:OperationCallExp" name="&lt;>" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%60%%62%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </argument>
+ </condition>
+ <elseExpression xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </argument>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </argument>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </argument>
+ </thenExpression>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </argument>
+ </thenExpression>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </thenExpression>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <value xsi:type="pivot:IfExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String">
+ <condition xsi:type="pivot:OperationCallExp" name="and" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.and..ocl.Boolean">
+ <source xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </argument>
+ </condition>
+ <elseExpression xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </thenExpression>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fk"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_tid"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fc"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.type">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.type">
+ <source xsi:type="pivot:OperationCallExp" isRequired="false" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OrderedCollection.first">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.22"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Key.column">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.rk"/>
+ </source>
+ </source>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fc"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.associationToForeignKey.bottom.a2f"
+ name="a2f" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="attributes" refinement="#//@nestedPackage.0/@rule.5"
+ specification="#//@nestedPackage.0/@rule.9 #//@nestedPackage.0/@rule.10 #//@nestedPackage.0/@rule.11 #//@nestedPackage.0/@rule.12">
+ <ownedComment body="-- attribute mapping&#xA;abstract class FromAttributeOwner {&#xA;composite fromAttributes : Set(FromAttribute) opposites owner;&#xA;}&#xA;abstract class FromAttribute {&#xA;name : String;&#xA;kind : String;&#xA;owner : FromAttributeOwner opposites fromAttributes;&#xA;leafs : Set(AttributeToColumn);&#xA;-- uml&#xA;attribute : Attribute;&#xA;}&#xA;abstract class ToColumn {&#xA;-- rdbms&#xA;column : Column;&#xA;}&#xA;class NonLeafAttribute extends FromAttributeOwner, FromAttribute {&#xA;leafs := fromAttributes.leafs;&#xA;}&#xA;class AttributeToColumn extends FromAttribute, ToColumn {&#xA;type : PrimitiveToName;&#xA;}"/>
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.attributes.uml.guard.c" name="c" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.attributes.uml.bottom.a" name="a" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.attributes.guard.fao" name="fao" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.attributes.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.attributes.bottom.fa" name="fa" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="classAttributes" refinement="#//@nestedPackage.0/@rule.8"
+ specification="#//@nestedPackage.0/@rule.13 #//@nestedPackage.0/@rule.14">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.classAttributes.uml.guard.c" name="c" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classAttributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classAttributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.classAttributes.uml.bottom.a" name="a" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classAttributes.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.classAttributes.guard.fao" name="fao" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classAttributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.classAttributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.attributes.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.classAttributes.bottom.fa" name="fa"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="primitiveAttribute" refinement="#//@nestedPackage.0/@rule.8"
+ specification="#//@nestedPackage.0/@rule.13 #//@nestedPackage.0/@rule.15">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.primitiveAttribute.uml.guard.t" name="t" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ <variable xmi:id="qV.umlRdbms.primitiveAttribute.uml.guard.c" name="c" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.primitiveAttribute.uml.bottom.a" name="a"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.primitive">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.guard.p2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.primitiveAttribute.guard.p2n" name="p2n" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"/>
+ <variable xmi:id="qV.umlRdbms.primitiveAttribute.guard.fao" name="fao" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AttributeToColumn.type">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.guard.p2n"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <value xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.23"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <item xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.bottom.fa"/>
+ </part>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.attributes.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.primitiveAttribute.bottom.fa" name="fa"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="complexAttributeAttributes" refinement="#//@nestedPackage.0/@rule.8"
+ specification="#//@nestedPackage.0/@rule.15 #//@nestedPackage.0/@rule.16">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.uml.guard.ca"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.complexAttributeAttributes.uml.guard.ca" name="ca"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ <variable xmi:id="qV.umlRdbms.complexAttributeAttributes.uml.guard.c" name="c"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.complexAttributeAttributes.uml.bottom.a" name="a"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.uml.guard.ca"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.complexAttributeAttributes.guard.fao" name="fao"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.uml.bottom.a"/>
+ </argument>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.attributes.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.complexAttributeAttributes.bottom.fa"
+ name="fa" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="complexAttribute" refinement="#//@nestedPackage.0/@rule.8"
+ specification="#//@nestedPackage.0/@rule.14 #//@nestedPackage.0/@rule.16">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.complexAttribute.uml.guard.t" name="t" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable xmi:id="qV.umlRdbms.complexAttribute.uml.guard.c" name="c" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.complexAttribute.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.complexAttribute.uml.bottom.a" name="a" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.complexAttribute.guard.fao" name="fao" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <value xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.24"
+ implicit="true" referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Set.collect..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.25"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttributeOwner.fromAttributes">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.complexAttribute.guard.fao"/>
+ </source>
+ <body xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.23"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" referredVariable="#//@nestedPackage.0/@rule.12/@bottomPattern/@assignment.0/@value/@iterator.0"/>
+ </body>
+ <iterator name="1_" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Set.collect..T"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.complexAttribute.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.attributes.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.complexAttribute.bottom.fa" name="fa"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="classPrimitiveAttributes" refinement="#//@nestedPackage.0/@rule.9 #//@nestedPackage.0/@rule.10">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.classPrimitiveAttributes.uml.guard.t" name="t"
+ type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ <variable xmi:id="qV.umlRdbms.classPrimitiveAttributes.uml.guard.c" name="c"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.classPrimitiveAttributes.uml.bottom.a" name="a"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classAttributes.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.primitive">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.guard.p2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.classPrimitiveAttributes.guard.fao" name="fao"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ <variable xmi:id="qV.umlRdbms.classPrimitiveAttributes.guard.p2n" name="p2n"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classAttributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.classAttributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.attributes.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AttributeToColumn.type">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.guard.p2n"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <value xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.23"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <item xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.bottom.fa"/>
+ </part>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.attributes.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.classPrimitiveAttributes.bottom.fa"
+ name="fa" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="classComplexAttributes" refinement="#//@nestedPackage.0/@rule.9 #//@nestedPackage.0/@rule.12">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.classComplexAttributes.uml.guard.t" name="t"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable xmi:id="qV.umlRdbms.classComplexAttributes.uml.guard.c" name="c"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classComplexAttributes.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.classComplexAttributes.uml.bottom.a" name="a"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classAttributes.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.classComplexAttributes.guard.fao" name="fao"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classAttributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.classAttributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.attributes.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <value xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.24"
+ implicit="true" referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Set.collect..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.25"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttributeOwner.fromAttributes">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.complexAttribute.guard.fao"/>
+ </source>
+ <body xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.23"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" referredVariable="#//@nestedPackage.0/@rule.14/@bottomPattern/@assignment.4/@value/@iterator.0"/>
+ </body>
+ <iterator name="1_" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Set.collect..T"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.complexAttribute.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.attributes.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.classComplexAttributes.bottom.fa" name="fa"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="complexAttributePrimitiveAttributes" refinement="#//@nestedPackage.0/@rule.11 #//@nestedPackage.0/@rule.10">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes.uml.guard.ca"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.complexAttributePrimitiveAttributes.uml.guard.ca"
+ name="ca" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ <variable xmi:id="qV.umlRdbms.complexAttributePrimitiveAttributes.uml.guard.c"
+ name="c" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable xmi:id="qV.umlRdbms.complexAttributePrimitiveAttributes.uml.guard.t"
+ name="t" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.complexAttributePrimitiveAttributes.uml.bottom.a"
+ name="a" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.uml.guard.ca"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.primitive">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.guard.p2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.complexAttributePrimitiveAttributes.guard.fao"
+ name="fao" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"/>
+ <variable xmi:id="qV.umlRdbms.complexAttributePrimitiveAttributes.guard.p2n"
+ name="p2n" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.uml.bottom.a"/>
+ </argument>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.attributes.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AttributeToColumn.type">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.guard.p2n"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <value xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.23"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <item xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.bottom.fa"/>
+ </part>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.attributes.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.complexAttributePrimitiveAttributes.bottom.fa"
+ name="fa" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="complexAttributeComplexAttributes" refinement="#//@nestedPackage.0/@rule.11 #//@nestedPackage.0/@rule.12">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes.uml.guard.ca"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.complexAttributeComplexAttributes.uml.guard.ca"
+ name="ca" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ <variable xmi:id="qV.umlRdbms.complexAttributeComplexAttributes.uml.guard.c"
+ name="c" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable xmi:id="qV.umlRdbms.complexAttributeComplexAttributes.uml.guard.t"
+ name="t" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.complexAttribute.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.complexAttributeComplexAttributes.uml.bottom.a"
+ name="a" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.uml.guard.ca"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.complexAttributeComplexAttributes.guard.fao"
+ name="fao" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.uml.bottom.a"/>
+ </argument>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.attributes.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <value xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.24"
+ implicit="true" referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Set.collect..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.25"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttributeOwner.fromAttributes">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.complexAttribute.guard.fao"/>
+ </source>
+ <body xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.23"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" referredVariable="#//@nestedPackage.0/@rule.16/@bottomPattern/@assignment.4/@value/@iterator.0"/>
+ </body>
+ <iterator name="1_" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Set.collect..T"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.complexAttribute.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.attributes.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.complexAttributeComplexAttributes.bottom.fa"
+ name="fa" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="attributeColumns">
+ <ownedComment body="-- column mapping"/>
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.attributeColumns.rdbms.guard.t" name="t" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"/>
+ <variable xmi:id="qV.umlRdbms.attributeColumns.rdbms.guard.ct" name="ct"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.guard.t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.bottom.c"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.type">
+ <value xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.guard.ct"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.bottom.c"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.attributeColumns.rdbms.bottom.c" name="c"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.table">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.attributeColumns.guard.c2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.typeName">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.attributeColumns.guard.p2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.guard.ct"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.attributeColumns.guard.c2t" name="c2t" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ <variable xmi:id="qV.umlRdbms.attributeColumns.guard.p2n" name="p2n" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.includes..ocl.OclAny">
+ <source xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.6"
+ implicit="true" referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Set.collect..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.7"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttributeOwner.fromAttributes">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.attributeColumns.guard.c2t"/>
+ </source>
+ <body xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.5"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" referredVariable="#//@nestedPackage.0/@rule.17/@bottomPattern/@predicate.0/@conditionExpression/@source/@iterator.0"/>
+ </body>
+ <iterator name="1_" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Set.collect..T"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns.bottom.a2c"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns.bottom.a2c"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.attributeColumns.guard.c2t"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AttributeToColumn.type">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns.bottom.a2c"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.attributeColumns.guard.p2n"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.attributeColumns.bottom.a2c" name="a2c" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"/>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ToColumn.column">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.bottom.c"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns.bottom.a2c"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns.bottom.a2c"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.bottom.c"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns.bottom.a2c"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.bottom.c"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ </nestedPackage>
+ <nestedPackage xmi:id="P.$$" name="$$" nsPrefix="orphanage" nsURI="http://www.eclipse.org/ocl/3.1.0/orphanage">
+ <ownedType xsi:type="pivot:OrderedSetType" name="OrderedSet" superClass="#//@nestedPackage.1/@ownedType.8 #//@nestedPackage.1/@ownedType.9"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedSet">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedSetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.9"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:OrderedSetType" name="OrderedSet" superClass="#//@nestedPackage.1/@ownedType.10 #//@nestedPackage.1/@ownedType.11"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedSet">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedSetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.11"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:OrderedSetType" name="OrderedSet" superClass="#//@nestedPackage.1/@ownedType.12 #//@nestedPackage.1/@ownedType.13"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedSet">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedSetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.14"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:BagType" name="Bag" superClass="#//@nestedPackage.1/@ownedType.15"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Bag">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..BagT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.16"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.17"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.17"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.18"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.18"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.19"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.19"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.15"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.20"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.26"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:OrderedSetType" name="OrderedSet" superClass="#//@nestedPackage.1/@ownedType.27 #//@nestedPackage.1/@ownedType.28"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedSet">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedSetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.29"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:BagType" name="Bag" superClass="#//@nestedPackage.1/@ownedType.30"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Bag">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..BagT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.31"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.32"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.33"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.33"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.30"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.34"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ </nestedPackage>
+</qvtc:CoreModel>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtm.qvtcas.rc b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtm.qvtcas.rc
new file mode 100644
index 000000000..692e61cf6
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtm.qvtcas.rc
@@ -0,0 +1,2569 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<qvtc:CoreModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:pivot="http://www.eclipse.org/ocl/3.1.0/Pivot" xmlns:qvtb="http://www.eclipse.org/qvt/0.9/QVTbase"
+ xmlns:qvtc="http://www.eclipse.org/qvt/0.9/QVTcore" xmlns:qvtcb="http://www.eclipse.org/qvt/0.9/QVTcoreBase"
+ xsi:schemaLocation="http://www.eclipse.org/ocl/3.1.0/Pivot java://org.eclipse.ocl.examples.pivot.PivotPackage http://www.eclipse.org/qvt/0.9/QVTbase java://org.eclipse.qvtd.pivot.qvtbase.QVTbasePackage http://www.eclipse.org/qvt/0.9/QVTcore java://org.eclipse.qvtd.pivot.qvtcore.QVTcorePackage http://www.eclipse.org/qvt/0.9/QVTcoreBase java://org.eclipse.qvtd.pivot.qvtcorebase.QVTcoreBasePackage"
+ name="UmlToRdbms.qvtm.qvtc" externalURI="platform:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtm.qvtc">
+ <nestedPackage xsi:type="qvtb:Transformation" xmi:id="T.umlRdbms" name="umlRdbms"
+ superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclElement">
+ <ownedComment body="/* Enforce uml to rdbms */"/>
+ <modelParameter xmi:id="qT.umlRdbms.uml" name="uml" usedPackage="SimpleUML.ecore.oclas#P.simpleuml"/>
+ <modelParameter xmi:id="qT.umlRdbms.rdbms" name="rdbms" usedPackage="SimpleRDBMS.ecore.oclas#P.simplerdbms"/>
+ <modelParameter usedPackage="UMLtoRDBMS.ecore.oclas#P.umltordbms"/>
+ <rule xsi:type="qvtc:Mapping" name="packageToSchema">
+ <ownedComment body="-- Package and Schema mapping&#xA;class PackageToSchema {&#xA;composite classesToTables : Set(ClassToTable) opposites owner;&#xA;composite primitivesToNames : Set(PrimitiveToName) opposites owner;&#xA;name : String;&#xA;-- uml&#xA;umlPackage : Package;&#xA;-- rdbms&#xA;schema : Schema;&#xA;}"/>
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern/>
+ <bottomPattern>
+ <variable xmi:id="qV.umlRdbms.packageToSchema.uml.bottom.p" name="p" type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.packageToSchema.rdbms.bottom.s" name="s"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.packageToSchema.uml.bottom.p"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.packageToSchema.bottom.p2s"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.schema">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.packageToSchema.rdbms.bottom.s"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.packageToSchema.bottom.p2s"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.packageToSchema.uml.bottom.p"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.packageToSchema.bottom.p2s"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.packageToSchema.bottom.p2s"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.packageToSchema.rdbms.bottom.s"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.packageToSchema.bottom.p2s" name="p2s"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="primitiveToName" specification="#//@nestedPackage.0/@rule.2 #//@nestedPackage.0/@rule.3 #//@nestedPackage.0/@rule.4">
+ <ownedComment body="-- Primitive data type marshaling&#xA;class PrimitiveToName {&#xA;owner : PackageToSchema opposites primitivesToNames;&#xA;name : String;&#xA;-- uml&#xA;primitive : PrimitiveDataType;&#xA;-- rdbms&#xA;typeName : String;&#xA;}"/>
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.primitiveToName.uml.guard.p" name="p" type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.primitiveToName.uml.bottom.prim" name="prim"
+ type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.primitiveToName.rdbms.bottom.sqlType"
+ name="sqlType" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.primitiveToName.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.primitiveToName.guard.p2s" name="p2s" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.primitiveToName.guard.p2s"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveToName.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.primitive">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveToName.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.typeName">
+ <value xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#qV.umlRdbms.primitiveToName.rdbms.bottom.sqlType"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveToName.bottom.p2n"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.primitiveToName.bottom.p2n" name="p2n"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="integerToNumber" refinement="#//@nestedPackage.0/@rule.1">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.integerToNumber.uml.guard.p" name="p" type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="Integer"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.integerToNumber.uml.bottom.prim" name="prim"
+ type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:VariableAssignment" isDefault="false" targetVariable="#qV.umlRdbms.primitiveToName.rdbms.bottom.sqlType">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="NUMBER"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.integerToNumber.rdbms.bottom.sqlType"
+ name="sqlType" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.primitiveToName.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.integerToNumber.guard.p2s" name="p2s" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.integerToNumber.uml.bottom.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="2"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="NUMBER"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.IntegerToNumber"
+ referredVariable="#qV.umlRdbms.integerToNumber.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.primitiveToName.guard.p2s"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveToName.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.primitive">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveToName.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.typeName">
+ <value xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#qV.umlRdbms.primitiveToName.rdbms.bottom.sqlType"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveToName.bottom.p2n"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.integerToNumber.bottom.p2n" name="p2n"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.IntegerToNumber"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="booleanToBoolean" refinement="#//@nestedPackage.0/@rule.1">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.booleanToBoolean.uml.guard.p" name="p" type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="Boolean"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.booleanToBoolean.uml.bottom.prim" name="prim"
+ type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:VariableAssignment" isDefault="false" targetVariable="#qV.umlRdbms.primitiveToName.rdbms.bottom.sqlType">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="BOOLEAN"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.booleanToBoolean.rdbms.bottom.sqlType"
+ name="sqlType" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.primitiveToName.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.booleanToBoolean.guard.p2s" name="p2s" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.booleanToBoolean.uml.bottom.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="2"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="BOOLEAN"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.BooleanToBoolean"
+ referredVariable="#qV.umlRdbms.booleanToBoolean.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.primitiveToName.guard.p2s"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveToName.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.primitive">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveToName.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.typeName">
+ <value xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#qV.umlRdbms.primitiveToName.rdbms.bottom.sqlType"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveToName.bottom.p2n"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.booleanToBoolean.bottom.p2n" name="p2n"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.BooleanToBoolean"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="stringToVarchar" refinement="#//@nestedPackage.0/@rule.1">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.stringToVarchar.uml.guard.p" name="p" type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="String"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.stringToVarchar.uml.bottom.prim" name="prim"
+ type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:VariableAssignment" isDefault="false" targetVariable="#qV.umlRdbms.primitiveToName.rdbms.bottom.sqlType">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="VARCHAR"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.stringToVarchar.rdbms.bottom.sqlType"
+ name="sqlType" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.primitiveToName.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.stringToVarchar.guard.p2s" name="p2s" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.stringToVarchar.uml.bottom.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="2"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="VARCHAR"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.StringToVarchar"
+ referredVariable="#qV.umlRdbms.stringToVarchar.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.primitiveToName.guard.p2s"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveToName.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.primitive">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveToName.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.typeName">
+ <value xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#qV.umlRdbms.primitiveToName.rdbms.bottom.sqlType"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveToName.bottom.p2n"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.stringToVarchar.bottom.p2n" name="p2n"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.StringToVarchar"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="flattening" specification="#//@nestedPackage.0/@rule.7 #//@nestedPackage.0/@rule.8">
+ <guardPattern/>
+ <bottomPattern/>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="classToTable">
+ <ownedComment body="query umlRdbms::getAllSupers(cls : SimpleUML::Class) : Set(SimpleUML::Class) {&#xA;cls.general->collect(gen | getAllSupers(gen))->including(cls)->asSet()&#xA;}&#xA;&#xA;query umlRdbms::getAllAttributes(cls : SimpleUML::Class) : Set( SimpleUML::Attribute) {&#xA;getAllSupers(cls)->collect(c | c.attributes)&#xA;}&#xA;&#xA;query umlRdbms::getAllForwards(cls : SimpleUML::Class) : Set( SimpleUML::Association) {&#xA;getAllSupers(cls)->collect(c | true)&#xA;}"/>
+ <ownedComment body="-- Class and Table mapping&#xA;class ClassToTable extends FromAttributeOwner, ToColumn {&#xA;owner : PackageToSchema opposites classesToTables;&#xA;composite associationToForeignKeys :&#xA;OrderedSet(AssociationToForeignKey) opposites owner;&#xA;name : String;&#xA;-- uml&#xA;umlClass : Class;&#xA;-- rdbms&#xA;table : Table;&#xA;primaryKey : Key;&#xA;}"/>
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.classToTable.uml.guard.p" name="p" type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classToTable.uml.bottom.c"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="persistent"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classToTable.uml.bottom.c"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.classToTable.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.classToTable.uml.bottom.c" name="c" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.classToTable.rdbms.guard.s" name="s" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="true" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.kind">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="base"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Table.schema">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.guard.s"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Key.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.pk"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.kind">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="primary"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.pk"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.pc"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="true" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.keys">
+ <value xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.21"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <item xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.pk"/>
+ </part>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.pc"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="true" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.type">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="NUMBER"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.pc"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.t"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_tid"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.pc"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.t"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_pk"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.pk"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.classToTable.rdbms.bottom.t" name="t"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"/>
+ <realizedVariable xmi:id="qV.umlRdbms.classToTable.rdbms.bottom.pk" name="pk"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"/>
+ <realizedVariable xmi:id="qV.umlRdbms.classToTable.rdbms.bottom.pc" name="pc"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.classToTable.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.classToTable.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.schema">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.classToTable.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.guard.s"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.classToTable.guard.p2s" name="p2s" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.classToTable.guard.p2s"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable.bottom.c2t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classToTable.uml.bottom.c"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable.bottom.c2t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.table">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable.bottom.c2t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classToTable.uml.bottom.c"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable.bottom.c2t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable.bottom.c2t"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.primaryKey">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.pk"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable.bottom.c2t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ToColumn.column">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.pc"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable.bottom.c2t"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.classToTable.bottom.c2t" name="c2t"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="associationToForeignKey" refinement="#//@nestedPackage.0/@rule.5">
+ <ownedComment body="-- Association and ForeignKey mapping&#xA;class AssociationToForeignKey extends ToColumn {&#xA;referenced : ClassToTable;&#xA;owner : ClassToTable opposites associationToForeignKeys;&#xA;name : String;&#xA;-- uml&#xA;association : Association;&#xA;-- rdbms&#xA;foreignKey : ForeignKey;&#xA;}"/>
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.uml.guard.p" name="p"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.uml.guard.sc" name="sc"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.uml.guard.dc" name="dc"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.dc"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.uml.bottom.a" name="a"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Association"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Table.schema">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.st"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.s"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Key.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.rk"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.dt"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.rk"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="primary"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.rdbms.guard.s" name="s"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.rdbms.guard.st" name="st"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.rdbms.guard.dt" name="dt"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.rdbms.guard.rk" name="rk"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.ForeignKey.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.st"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fk"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.st"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fc"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.ForeignKey.refersTo">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.rk"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fk"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="true" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.foreignKeys">
+ <value xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.3"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <item xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fk"/>
+ </part>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fc"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.associationToForeignKey.rdbms.bottom.fk"
+ name="fk" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"/>
+ <realizedVariable xmi:id="qV.umlRdbms.associationToForeignKey.rdbms.bottom.fc"
+ name="fc" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.sc2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.p2s"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.schema">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.s"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.table">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.sc2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.st"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.table">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.dc2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.dt"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.sc2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.dc2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.dc"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.guard.p2s" name="p2s"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.guard.sc2t" name="sc2t"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.guard.dc2t" name="dc2t"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.sc2t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.referenced">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.dc2t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.association">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.foreignKey">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fk"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ToColumn.column">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fc"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:IfExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String">
+ <condition xsi:type="pivot:OperationCallExp" name="and" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.and..ocl.Boolean">
+ <source xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </argument>
+ </condition>
+ <elseExpression xsi:type="pivot:IfExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String">
+ <condition xsi:type="pivot:OperationCallExp" name="and" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.and..ocl.Boolean">
+ <source xsi:type="pivot:OperationCallExp" name="&lt;>" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%60%%62%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </argument>
+ </condition>
+ <elseExpression xsi:type="pivot:IfExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String">
+ <condition xsi:type="pivot:OperationCallExp" name="and" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.and..ocl.Boolean">
+ <source xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:OperationCallExp" name="&lt;>" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%60%%62%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </argument>
+ </condition>
+ <elseExpression xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </argument>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </argument>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </argument>
+ </thenExpression>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </argument>
+ </thenExpression>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </thenExpression>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <value xsi:type="pivot:IfExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String">
+ <condition xsi:type="pivot:OperationCallExp" name="and" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.and..ocl.Boolean">
+ <source xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </argument>
+ </condition>
+ <elseExpression xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </thenExpression>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fk"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_tid"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fc"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.type">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.type">
+ <source xsi:type="pivot:OperationCallExp" isRequired="false" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OrderedCollection.first">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.22"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Key.column">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.rk"/>
+ </source>
+ </source>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fc"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.associationToForeignKey.bottom.a2f"
+ name="a2f" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="attributes" refinement="#//@nestedPackage.0/@rule.5"
+ specification="#//@nestedPackage.0/@rule.9 #//@nestedPackage.0/@rule.10 #//@nestedPackage.0/@rule.11 #//@nestedPackage.0/@rule.12">
+ <ownedComment body="-- attribute mapping&#xA;abstract class FromAttributeOwner {&#xA;composite fromAttributes : Set(FromAttribute) opposites owner;&#xA;}&#xA;abstract class FromAttribute {&#xA;name : String;&#xA;kind : String;&#xA;owner : FromAttributeOwner opposites fromAttributes;&#xA;leafs : Set(AttributeToColumn);&#xA;-- uml&#xA;attribute : Attribute;&#xA;}&#xA;abstract class ToColumn {&#xA;-- rdbms&#xA;column : Column;&#xA;}&#xA;class NonLeafAttribute extends FromAttributeOwner, FromAttribute {&#xA;leafs := fromAttributes.leafs;&#xA;}&#xA;class AttributeToColumn extends FromAttribute, ToColumn {&#xA;type : PrimitiveToName;&#xA;}"/>
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.attributes.uml.guard.c" name="c" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.attributes.uml.bottom.a" name="a" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.attributes.guard.fao" name="fao" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.attributes.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.attributes.bottom.fa" name="fa" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="classAttributes" refinement="#//@nestedPackage.0/@rule.8"
+ specification="#//@nestedPackage.0/@rule.13 #//@nestedPackage.0/@rule.14">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.classAttributes.uml.guard.c" name="c" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classAttributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classAttributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.classAttributes.uml.bottom.a" name="a" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classAttributes.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.classAttributes.guard.fao" name="fao" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classAttributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.classAttributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.attributes.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.classAttributes.bottom.fa" name="fa"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="primitiveAttribute" refinement="#//@nestedPackage.0/@rule.8"
+ specification="#//@nestedPackage.0/@rule.13 #//@nestedPackage.0/@rule.15">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.primitiveAttribute.uml.guard.t" name="t" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ <variable xmi:id="qV.umlRdbms.primitiveAttribute.uml.guard.c" name="c" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.primitiveAttribute.uml.bottom.a" name="a"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.primitive">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.guard.p2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.primitiveAttribute.guard.p2n" name="p2n" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"/>
+ <variable xmi:id="qV.umlRdbms.primitiveAttribute.guard.fao" name="fao" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AttributeToColumn.type">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.guard.p2n"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <value xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.23"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <item xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.bottom.fa"/>
+ </part>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.attributes.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.primitiveAttribute.bottom.fa" name="fa"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="complexAttributeAttributes" refinement="#//@nestedPackage.0/@rule.8"
+ specification="#//@nestedPackage.0/@rule.15 #//@nestedPackage.0/@rule.16">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.uml.guard.ca"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.complexAttributeAttributes.uml.guard.ca" name="ca"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ <variable xmi:id="qV.umlRdbms.complexAttributeAttributes.uml.guard.c" name="c"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.complexAttributeAttributes.uml.bottom.a" name="a"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.uml.guard.ca"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.complexAttributeAttributes.guard.fao" name="fao"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.uml.bottom.a"/>
+ </argument>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.attributes.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.complexAttributeAttributes.bottom.fa"
+ name="fa" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="complexAttribute" refinement="#//@nestedPackage.0/@rule.8"
+ specification="#//@nestedPackage.0/@rule.14 #//@nestedPackage.0/@rule.16">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.complexAttribute.uml.guard.t" name="t" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable xmi:id="qV.umlRdbms.complexAttribute.uml.guard.c" name="c" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.complexAttribute.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.complexAttribute.uml.bottom.a" name="a" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.complexAttribute.guard.fao" name="fao" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <value xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.24"
+ implicit="true" referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Set.collect..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.25"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttributeOwner.fromAttributes">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.complexAttribute.guard.fao"/>
+ </source>
+ <body xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.23"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" referredVariable="#//@nestedPackage.0/@rule.12/@bottomPattern/@assignment.0/@value/@iterator.0"/>
+ </body>
+ <iterator name="1_" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Set.collect..T"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.complexAttribute.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.attributes.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.complexAttribute.bottom.fa" name="fa"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="classPrimitiveAttributes" refinement="#//@nestedPackage.0/@rule.9 #//@nestedPackage.0/@rule.10">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.classPrimitiveAttributes.uml.guard.t" name="t"
+ type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ <variable xmi:id="qV.umlRdbms.classPrimitiveAttributes.uml.guard.c" name="c"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.classPrimitiveAttributes.uml.bottom.a" name="a"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classAttributes.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.primitive">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.guard.p2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.classPrimitiveAttributes.guard.fao" name="fao"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ <variable xmi:id="qV.umlRdbms.classPrimitiveAttributes.guard.p2n" name="p2n"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classAttributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.classAttributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.attributes.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AttributeToColumn.type">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.guard.p2n"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <value xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.23"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <item xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.bottom.fa"/>
+ </part>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.attributes.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.classPrimitiveAttributes.bottom.fa"
+ name="fa" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="classComplexAttributes" refinement="#//@nestedPackage.0/@rule.9 #//@nestedPackage.0/@rule.12">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.classComplexAttributes.uml.guard.t" name="t"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable xmi:id="qV.umlRdbms.classComplexAttributes.uml.guard.c" name="c"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classComplexAttributes.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.classComplexAttributes.uml.bottom.a" name="a"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classAttributes.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.classComplexAttributes.guard.fao" name="fao"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classAttributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.classAttributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.attributes.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <value xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.24"
+ implicit="true" referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Set.collect..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.25"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttributeOwner.fromAttributes">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.complexAttribute.guard.fao"/>
+ </source>
+ <body xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.23"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" referredVariable="#//@nestedPackage.0/@rule.14/@bottomPattern/@assignment.4/@value/@iterator.0"/>
+ </body>
+ <iterator name="1_" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Set.collect..T"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.complexAttribute.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.attributes.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.classComplexAttributes.bottom.fa" name="fa"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="complexAttributePrimitiveAttributes" refinement="#//@nestedPackage.0/@rule.11 #//@nestedPackage.0/@rule.10">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes.uml.guard.ca"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.complexAttributePrimitiveAttributes.uml.guard.ca"
+ name="ca" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ <variable xmi:id="qV.umlRdbms.complexAttributePrimitiveAttributes.uml.guard.c"
+ name="c" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable xmi:id="qV.umlRdbms.complexAttributePrimitiveAttributes.uml.guard.t"
+ name="t" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.complexAttributePrimitiveAttributes.uml.bottom.a"
+ name="a" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.uml.guard.ca"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.primitive">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.guard.p2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.complexAttributePrimitiveAttributes.guard.fao"
+ name="fao" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"/>
+ <variable xmi:id="qV.umlRdbms.complexAttributePrimitiveAttributes.guard.p2n"
+ name="p2n" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.uml.bottom.a"/>
+ </argument>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.attributes.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AttributeToColumn.type">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.guard.p2n"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <value xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.23"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <item xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.bottom.fa"/>
+ </part>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.attributes.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.complexAttributePrimitiveAttributes.bottom.fa"
+ name="fa" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="complexAttributeComplexAttributes" refinement="#//@nestedPackage.0/@rule.11 #//@nestedPackage.0/@rule.12">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes.uml.guard.ca"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.complexAttributeComplexAttributes.uml.guard.ca"
+ name="ca" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ <variable xmi:id="qV.umlRdbms.complexAttributeComplexAttributes.uml.guard.c"
+ name="c" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable xmi:id="qV.umlRdbms.complexAttributeComplexAttributes.uml.guard.t"
+ name="t" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.complexAttribute.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.complexAttributeComplexAttributes.uml.bottom.a"
+ name="a" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.uml.guard.ca"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.complexAttributeComplexAttributes.guard.fao"
+ name="fao" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.uml.bottom.a"/>
+ </argument>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.attributes.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <value xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.24"
+ implicit="true" referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Set.collect..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.25"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttributeOwner.fromAttributes">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.complexAttribute.guard.fao"/>
+ </source>
+ <body xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.23"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" referredVariable="#//@nestedPackage.0/@rule.16/@bottomPattern/@assignment.4/@value/@iterator.0"/>
+ </body>
+ <iterator name="1_" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Set.collect..T"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.complexAttribute.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.attributes.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.complexAttributeComplexAttributes.bottom.fa"
+ name="fa" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="attributeColumns">
+ <ownedComment body="-- column mapping"/>
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.attributeColumns.rdbms.guard.t" name="t" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"/>
+ <variable xmi:id="qV.umlRdbms.attributeColumns.rdbms.guard.ct" name="ct"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.guard.t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.bottom.c"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.type">
+ <value xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.guard.ct"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.bottom.c"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.attributeColumns.rdbms.bottom.c" name="c"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.table">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.attributeColumns.guard.c2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.typeName">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.attributeColumns.guard.p2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.guard.ct"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.attributeColumns.guard.c2t" name="c2t" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ <variable xmi:id="qV.umlRdbms.attributeColumns.guard.p2n" name="p2n" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.includes..ocl.OclAny">
+ <source xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.6"
+ implicit="true" referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Set.collect..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.7"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttributeOwner.fromAttributes">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.attributeColumns.guard.c2t"/>
+ </source>
+ <body xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.5"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" referredVariable="#//@nestedPackage.0/@rule.17/@bottomPattern/@predicate.0/@conditionExpression/@source/@iterator.0"/>
+ </body>
+ <iterator name="1_" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Set.collect..T"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns.bottom.a2c"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns.bottom.a2c"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.attributeColumns.guard.c2t"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AttributeToColumn.type">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns.bottom.a2c"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.attributeColumns.guard.p2n"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.attributeColumns.bottom.a2c" name="a2c" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"/>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ToColumn.column">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.bottom.c"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns.bottom.a2c"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns.bottom.a2c"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.bottom.c"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns.bottom.a2c"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.bottom.c"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ </nestedPackage>
+ <nestedPackage xmi:id="P.$$" name="$$" nsPrefix="orphanage" nsURI="http://www.eclipse.org/ocl/3.1.0/orphanage">
+ <ownedType xsi:type="pivot:OrderedSetType" name="OrderedSet" superClass="#//@nestedPackage.1/@ownedType.8 #//@nestedPackage.1/@ownedType.9"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedSet">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedSetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.9"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:OrderedSetType" name="OrderedSet" superClass="#//@nestedPackage.1/@ownedType.10 #//@nestedPackage.1/@ownedType.11"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedSet">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedSetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.11"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:OrderedSetType" name="OrderedSet" superClass="#//@nestedPackage.1/@ownedType.12 #//@nestedPackage.1/@ownedType.13"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedSet">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedSetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.14"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:BagType" name="Bag" superClass="#//@nestedPackage.1/@ownedType.15"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Bag">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..BagT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.16"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.17"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.17"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.18"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.18"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.19"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.19"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.15"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.20"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.26"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:OrderedSetType" name="OrderedSet" superClass="#//@nestedPackage.1/@ownedType.27 #//@nestedPackage.1/@ownedType.28"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedSet">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedSetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.29"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:BagType" name="Bag" superClass="#//@nestedPackage.1/@ownedType.30"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Bag">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..BagT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.31"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.32"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.33"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.33"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.30"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.34"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ </nestedPackage>
+</qvtc:CoreModel>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtp.qvtias b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtp.qvtias
new file mode 100644
index 000000000..730751962
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtp.qvtias
@@ -0,0 +1,2266 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<qvti:ImperativeModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:pivot="http://www.eclipse.org/ocl/3.1.0/Pivot" xmlns:qvtb="http://www.eclipse.org/qvt/0.9/QVTbase"
+ xmlns:qvtcb="http://www.eclipse.org/qvt/0.9/QVTcoreBase" xmlns:qvti="http://www.eclipse.org/qvt/0.9/QVTimperative"
+ xsi:schemaLocation="http://www.eclipse.org/ocl/3.1.0/Pivot java://org.eclipse.ocl.examples.pivot.PivotPackage http://www.eclipse.org/qvt/0.9/QVTbase java://org.eclipse.qvtd.pivot.qvtbase.QVTbasePackage http://www.eclipse.org/qvt/0.9/QVTcoreBase java://org.eclipse.qvtd.pivot.qvtcorebase.QVTcoreBasePackage http://www.eclipse.org/qvt/0.9/QVTimperative java://org.eclipse.qvtd.pivot.qvtimperative.QVTimperativePackage"
+ name="UmlToRdbms.qvtp.qvti" externalURI="platform:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtp.qvti">
+ <nestedPackage xsi:type="qvtb:Transformation" xmi:id="T.umlRdbms" name="umlRdbms">
+ <modelParameter xmi:id="qT.umlRdbms.uml" name="uml" usedPackage="SimpleUML.ecore.oclas#P.simpleuml"/>
+ <modelParameter xmi:id="qT.umlRdbms.rdbms" name="rdbms" usedPackage="SimpleRDBMS.ecore.oclas#P.simplerdbms"/>
+ <modelParameter xmi:id="qT.umlRdbms.middle" name="middle" usedPackage="UMLtoRDBMS.ecore.oclas#P.umltordbms"/>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.packageToSchema_LM" name="packageToSchema_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.packageToSchema_LM.uml.guard.p" name="p" type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.middle">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.packageToSchema_LM.middle.bottom.p2s"
+ name="p2s" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.packageToSchema_LM.uml.guard.p"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.packageToSchema_LM.middle.bottom.p2s"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.packageToSchema_LM.uml.guard.p"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.packageToSchema_LM.middle.bottom.p2s"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.packageToSchema_MR" name="packageToSchema_MR">
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.packageToSchema_MR.rdbms.bottom.s"
+ name="s" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.middle">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.packageToSchema_MR.middle.guard.p2s" name="p2s"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.schema">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.packageToSchema_MR.rdbms.bottom.s"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.packageToSchema_MR.middle.guard.p2s"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.packageToSchema_MR.middle.guard.p2s"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.packageToSchema_MR.rdbms.bottom.s"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.integerToNumber_LM" name="integerToNumber_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.integerToNumber_LM.uml.guard.p" name="p" type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ <variable xmi:id="qV.umlRdbms.integerToNumber_LM.uml.guard.prim" name="prim"
+ type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.middle">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.integerToNumber_LM.middle.guard.p2s" name="p2s"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.integerToNumber_LM.middle.bottom.p2n"
+ name="p2n" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.IntegerToNumber"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.integerToNumber_LM.middle.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.integerToNumber_LM.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.integerToNumber_LM.uml.guard.prim"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.integerToNumber_LM.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.integerToNumber_LM.uml.guard.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="Integer"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.integerToNumber_LM.uml.guard.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="2"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="NUMBER"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.IntegerToNumber"
+ referredVariable="#qV.umlRdbms.integerToNumber_LM.middle.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.primitive">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.integerToNumber_LM.uml.guard.prim"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.integerToNumber_LM.middle.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.integerToNumber_LM.middle.guard.p2s"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.integerToNumber_LM.middle.bottom.p2n"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.integerToNumber_MR" name="integerToNumber_MR">
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.integerToNumber_MR.rdbms.bottom.sqlType"
+ name="sqlType" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.middle">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.integerToNumber_MR.middle.guard.p2s" name="p2s"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ <variable xmi:id="qV.umlRdbms.integerToNumber_MR.middle.guard.p2n" name="p2n"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.IntegerToNumber"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.integerToNumber_MR.middle.guard.p2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.integerToNumber_MR.middle.guard.p2s"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.typeName">
+ <value xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#qV.umlRdbms.integerToNumber_MR.rdbms.bottom.sqlType"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.integerToNumber_MR.middle.guard.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:VariableAssignment" isDefault="false" targetVariable="#qV.umlRdbms.integerToNumber_MR.rdbms.bottom.sqlType">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="NUMBER"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.booleanToBoolean_MR" name="booleanToBoolean_MR">
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.booleanToBoolean_MR.rdbms.bottom.sqlType"
+ name="sqlType" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.middle">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.booleanToBoolean_MR.middle.guard.p2s" name="p2s"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ <variable xmi:id="qV.umlRdbms.booleanToBoolean_MR.middle.guard.p2n" name="p2n"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.BooleanToBoolean"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.booleanToBoolean_MR.middle.guard.p2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.booleanToBoolean_MR.middle.guard.p2s"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.typeName">
+ <value xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#qV.umlRdbms.booleanToBoolean_MR.rdbms.bottom.sqlType"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.booleanToBoolean_MR.middle.guard.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:VariableAssignment" isDefault="false" targetVariable="#qV.umlRdbms.booleanToBoolean_MR.rdbms.bottom.sqlType">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="BOOLEAN"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.booleanToBoolean_LM" name="booleanToBoolean_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.booleanToBoolean_LM.uml.guard.p" name="p"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ <variable xmi:id="qV.umlRdbms.booleanToBoolean_LM.uml.guard.prim" name="prim"
+ type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.middle">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.booleanToBoolean_LM.middle.guard.p2s" name="p2s"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.booleanToBoolean_LM.middle.bottom.p2n"
+ name="p2n" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.BooleanToBoolean"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.booleanToBoolean_LM.middle.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.booleanToBoolean_LM.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.booleanToBoolean_LM.uml.guard.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="Boolean"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.booleanToBoolean_LM.uml.guard.prim"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.booleanToBoolean_LM.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.booleanToBoolean_LM.middle.guard.p2s"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.booleanToBoolean_LM.middle.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.primitive">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.booleanToBoolean_LM.uml.guard.prim"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.booleanToBoolean_LM.middle.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.booleanToBoolean_LM.uml.guard.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="2"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="BOOLEAN"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.BooleanToBoolean"
+ referredVariable="#qV.umlRdbms.booleanToBoolean_LM.middle.bottom.p2n"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.stringToVarchar_MR" name="stringToVarchar_MR">
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.stringToVarchar_MR.rdbms.bottom.sqlType"
+ name="sqlType" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.middle">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.stringToVarchar_MR.middle.guard.p2s" name="p2s"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ <variable xmi:id="qV.umlRdbms.stringToVarchar_MR.middle.guard.p2n" name="p2n"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.StringToVarchar"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.stringToVarchar_MR.middle.guard.p2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.stringToVarchar_MR.middle.guard.p2s"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.typeName">
+ <value xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#qV.umlRdbms.stringToVarchar_MR.rdbms.bottom.sqlType"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.stringToVarchar_MR.middle.guard.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:VariableAssignment" isDefault="false" targetVariable="#qV.umlRdbms.stringToVarchar_MR.rdbms.bottom.sqlType">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="VARCHAR"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.stringToVarchar_LM" name="stringToVarchar_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.stringToVarchar_LM.uml.guard.p" name="p" type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ <variable xmi:id="qV.umlRdbms.stringToVarchar_LM.uml.guard.prim" name="prim"
+ type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.middle">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.stringToVarchar_LM.middle.guard.p2s" name="p2s"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.stringToVarchar_LM.middle.bottom.p2n"
+ name="p2n" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.StringToVarchar"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.stringToVarchar_LM.middle.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.stringToVarchar_LM.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.stringToVarchar_LM.uml.guard.prim"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.stringToVarchar_LM.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.stringToVarchar_LM.uml.guard.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="String"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.stringToVarchar_LM.uml.guard.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="2"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="VARCHAR"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.StringToVarchar"
+ referredVariable="#qV.umlRdbms.stringToVarchar_LM.middle.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.stringToVarchar_LM.middle.guard.p2s"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.stringToVarchar_LM.middle.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.primitive">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.stringToVarchar_LM.uml.guard.prim"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.stringToVarchar_LM.middle.bottom.p2n"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.classToTable_MR" name="classToTable_MR">
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.classToTable_MR.rdbms.guard.s" name="s" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.classToTable_MR.rdbms.bottom.t" name="t"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"/>
+ <realizedVariable xmi:id="qV.umlRdbms.classToTable_MR.rdbms.bottom.pk" name="pk"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"/>
+ <realizedVariable xmi:id="qV.umlRdbms.classToTable_MR.rdbms.bottom.pc" name="pc"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.middle">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.classToTable_MR.middle.guard.p2s" name="p2s"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ <variable xmi:id="qV.umlRdbms.classToTable_MR.middle.guard.c2t" name="c2t"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.schema">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.classToTable_MR.middle.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.guard.s"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable_MR.middle.guard.c2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.classToTable_MR.middle.guard.p2s"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable_MR.middle.guard.c2t"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.table">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable_MR.middle.guard.c2t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.primaryKey">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.pk"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable_MR.middle.guard.c2t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ToColumn.column">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.pc"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable_MR.middle.guard.c2t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="true" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.kind">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="base"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Table.schema">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.guard.s"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Key.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.pk"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.kind">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="primary"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.pk"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.pc"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="true" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.keys">
+ <value xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.0"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <item xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.pk"/>
+ </part>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.pc"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="true" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.type">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="NUMBER"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.pc"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.t"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_tid"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.pc"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.t"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_pk"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.classToTable_MR.rdbms.bottom.pk"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.classToTable_LM" name="classToTable_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.classToTable_LM.uml.guard.p" name="p" type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ <variable xmi:id="qV.umlRdbms.classToTable_LM.uml.guard.c" name="c" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.middle">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.classToTable_LM.middle.guard.p2s" name="p2s"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.classToTable_LM.middle.bottom.c2t"
+ name="c2t" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.classToTable_LM.middle.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.classToTable_LM.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classToTable_LM.uml.guard.c"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.classToTable_LM.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classToTable_LM.uml.guard.c"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="persistent"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classToTable_LM.uml.guard.c"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable_LM.middle.bottom.c2t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.classToTable_LM.middle.guard.p2s"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable_LM.middle.bottom.c2t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classToTable_LM.uml.guard.c"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable_LM.middle.bottom.c2t"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.associationToForeignKey_LM" name="associationToForeignKey_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey_LM.uml.guard.p" name="p"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey_LM.uml.guard.sc" name="sc"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey_LM.uml.guard.dc" name="dc"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey_LM.uml.guard.a" name="a"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Association"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.middle">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey_LM.middle.guard.p2s"
+ name="p2s" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey_LM.middle.guard.sc2t"
+ name="sc2t" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey_LM.middle.guard.dc2t"
+ name="dc2t" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.associationToForeignKey_LM.middle.bottom.a2f"
+ name="a2f" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.middle.guard.dc2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.dc"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.middle.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.middle.guard.sc2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.sc"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.middle.guard.sc2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.middle.guard.p2s"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.sc"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.dc"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.sc"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.referenced">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.middle.guard.dc2t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.middle.bottom.a2f"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:IfExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String">
+ <condition xsi:type="pivot:OperationCallExp" name="and" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.and..ocl.Boolean">
+ <source xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.sc"/>
+ </argument>
+ </condition>
+ <elseExpression xsi:type="pivot:IfExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String">
+ <condition xsi:type="pivot:OperationCallExp" name="and" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.and..ocl.Boolean">
+ <source xsi:type="pivot:OperationCallExp" name="&lt;>" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%60%%62%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.sc"/>
+ </argument>
+ </condition>
+ <elseExpression xsi:type="pivot:IfExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String">
+ <condition xsi:type="pivot:OperationCallExp" name="and" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.and..ocl.Boolean">
+ <source xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:OperationCallExp" name="&lt;>" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%60%%62%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.sc"/>
+ </argument>
+ </condition>
+ <elseExpression xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </argument>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.sc"/>
+ </argument>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.sc"/>
+ </argument>
+ </thenExpression>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </argument>
+ </thenExpression>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </thenExpression>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.middle.bottom.a2f"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.middle.guard.sc2t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.middle.bottom.a2f"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <value xsi:type="pivot:IfExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String">
+ <condition xsi:type="pivot:OperationCallExp" name="and" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.and..ocl.Boolean">
+ <source xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.sc"/>
+ </argument>
+ </condition>
+ <elseExpression xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.middle.bottom.a2f"/>
+ </thenExpression>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.association">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_LM.middle.bottom.a2f"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.associationToForeignKey_MR" name="associationToForeignKey_MR">
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.s"
+ name="s" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.st"
+ name="st" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.dt"
+ name="dt" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.rk"
+ name="rk" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.associationToForeignKey_MR.rdbms.bottom.fk"
+ name="fk" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"/>
+ <realizedVariable xmi:id="qV.umlRdbms.associationToForeignKey_MR.rdbms.bottom.fc"
+ name="fc" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.middle">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey_MR.middle.guard.p2s"
+ name="p2s" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey_MR.middle.guard.sc2t"
+ name="sc2t" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey_MR.middle.guard.dc2t"
+ name="dc2t" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey_MR.middle.guard.a2f"
+ name="a2f" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.table">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.sc2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.st"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.table">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.dc2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.dt"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.schema">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.s"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.sc2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.p2s"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.referenced">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.a2f"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.dc2t"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.a2f"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.sc2t"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.rk"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="primary"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Key.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.rk"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.dt"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Table.schema">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.st"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.s"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.type">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.type">
+ <source xsi:type="pivot:OperationCallExp" isRequired="false" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OrderedCollection.first">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.1"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Key.column">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.rk"/>
+ </source>
+ </source>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.bottom.fc"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.a2f"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.bottom.fk"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.a2f"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_tid"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.bottom.fc"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ToColumn.column">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.bottom.fc"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.a2f"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.foreignKey">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.bottom.fk"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.middle.guard.a2f"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.ForeignKey.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.st"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.bottom.fk"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.st"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.bottom.fc"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.ForeignKey.refersTo">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.rk"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.bottom.fk"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="true" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.foreignKeys">
+ <value xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.2"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <item xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.bottom.fk"/>
+ </part>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.associationToForeignKey_MR.rdbms.bottom.fc"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.classPrimitiveAttributes_LM"
+ name="classPrimitiveAttributes_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.t" name="t"
+ type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ <variable xmi:id="qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.c" name="c"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable xmi:id="qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.a" name="a"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.middle">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.classPrimitiveAttributes_LM.middle.guard.fao"
+ name="fao" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ <variable xmi:id="qV.umlRdbms.classPrimitiveAttributes_LM.middle.guard.p2n"
+ name="p2n" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.classPrimitiveAttributes_LM.middle.bottom.fa"
+ name="fa" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.primitive">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.middle.guard.p2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.middle.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AttributeToColumn.type">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.middle.guard.p2n"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.middle.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.middle.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <value xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.3"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <item xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.middle.bottom.fa"/>
+ </part>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.classPrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.classComplexAttributes_LM" name="classComplexAttributes_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.classComplexAttributes_LM.uml.guard.t" name="t"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable xmi:id="qV.umlRdbms.classComplexAttributes_LM.uml.guard.c" name="c"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable xmi:id="qV.umlRdbms.classComplexAttributes_LM.uml.guard.a" name="a"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.middle">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.classComplexAttributes_LM.middle.guard.fao"
+ name="fao" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.classComplexAttributes_LM.middle.bottom.fa"
+ name="fa" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.middle.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <value xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.4"
+ implicit="true" referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Set.collect..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.5"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttributeOwner.fromAttributes">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.middle.guard.fao"/>
+ </source>
+ <body xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.3"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" referredVariable="#//@nestedPackage.0/@rule.13/@bottomPattern/@assignment.0/@value/@iterator.0"/>
+ </body>
+ <iterator name="1_" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Set.collect..T"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.uml.guard.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.uml.guard.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.uml.guard.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.uml.guard.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.middle.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.uml.guard.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.middle.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.classComplexAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.complexAttributePrimitiveAttributes_LM"
+ name="complexAttributePrimitiveAttributes_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.ca"
+ name="ca" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ <variable xmi:id="qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.c"
+ name="c" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable xmi:id="qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.t"
+ name="t" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ <variable xmi:id="qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.a"
+ name="a" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.middle">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.guard.fao"
+ name="fao" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"/>
+ <variable xmi:id="qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.guard.p2n"
+ name="p2n" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.bottom.fa"
+ name="fa" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.ca"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.primitive">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.guard.p2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.ca"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.a"/>
+ </argument>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <value xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.3"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <item xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.bottom.fa"/>
+ </part>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AttributeToColumn.type">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.guard.p2n"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.complexAttributeComplexAttributes_LM"
+ name="complexAttributeComplexAttributes_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.ca"
+ name="ca" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ <variable xmi:id="qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.c"
+ name="c" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable xmi:id="qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.t"
+ name="t" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable xmi:id="qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.a"
+ name="a" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.middle">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.complexAttributeComplexAttributes_LM.middle.guard.fao"
+ name="fao" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.complexAttributeComplexAttributes_LM.middle.bottom.fa"
+ name="fa" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.middle.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.ca"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.ca"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.middle.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.a"/>
+ </argument>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.middle.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <value xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.4"
+ implicit="true" referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Set.collect..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.5"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttributeOwner.fromAttributes">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.middle.guard.fao"/>
+ </source>
+ <body xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.3"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" referredVariable="#//@nestedPackage.0/@rule.15/@bottomPattern/@assignment.3/@value/@iterator.0"/>
+ </body>
+ <iterator name="1_" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Set.collect..T"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.middle.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeComplexAttributes_LM.middle.bottom.fa"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.attributeColumns_MR" name="attributeColumns_MR">
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.attributeColumns_MR.rdbms.guard.t" name="t"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"/>
+ <variable xmi:id="qV.umlRdbms.attributeColumns_MR.rdbms.guard.ct" name="ct"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.attributeColumns_MR.rdbms.bottom.c"
+ name="c" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.middle">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.attributeColumns_MR.middle.guard.c2t" name="c2t"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ <variable xmi:id="qV.umlRdbms.attributeColumns_MR.middle.guard.p2n" name="p2n"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"/>
+ <variable xmi:id="qV.umlRdbms.attributeColumns_MR.middle.guard.a2c" name="a2c"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.typeName">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.middle.guard.p2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.rdbms.guard.ct"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.table">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.middle.guard.c2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.rdbms.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AttributeToColumn.type">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.middle.guard.a2c"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.middle.guard.p2n"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.middle.guard.a2c"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.middle.guard.c2t"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.includes..ocl.OclAny">
+ <source xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.6"
+ implicit="true" referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Set.collect..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.7"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttributeOwner.fromAttributes">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.middle.guard.c2t"/>
+ </source>
+ <body xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.8"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" referredVariable="#//@nestedPackage.0/@rule.16/@guardPattern/@predicate.4/@conditionExpression/@source/@iterator.0"/>
+ </body>
+ <iterator name="1_" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Set.collect..T"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.middle.guard.a2c"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.middle.guard.a2c"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.rdbms.bottom.c"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.middle.guard.a2c"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.rdbms.bottom.c"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ToColumn.column">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.rdbms.bottom.c"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.middle.guard.a2c"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.rdbms.guard.t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.rdbms.bottom.c"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.type">
+ <value xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.rdbms.guard.ct"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.attributeColumns_MR.rdbms.bottom.c"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.__root__" name="__root__">
+ <guardPattern/>
+ <bottomPattern/>
+ </rule>
+ </nestedPackage>
+ <nestedPackage xmi:id="P.$$" name="$$" nsPrefix="orphanage" nsURI="http://www.eclipse.org/ocl/3.1.0/orphanage">
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.9"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:OrderedSetType" name="OrderedSet" superClass="#//@nestedPackage.1/@ownedType.10 #//@nestedPackage.1/@ownedType.11"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedSet">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedSetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.12"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.13"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:BagType" name="Bag" superClass="#//@nestedPackage.1/@ownedType.14"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Bag">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..BagT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.15"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:BagType" name="Bag" superClass="#//@nestedPackage.1/@ownedType.16"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Bag">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..BagT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.17"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.18"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.19"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.20"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.20"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.21"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.14"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.22"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.23"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.16"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ </nestedPackage>
+</qvti:ImperativeModel>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtu.qvtcas b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtu.qvtcas
new file mode 100644
index 000000000..bd8be0fca
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtu.qvtcas
@@ -0,0 +1,1665 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<qvtc:CoreModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:pivot="http://www.eclipse.org/ocl/3.1.0/Pivot" xmlns:qvtb="http://www.eclipse.org/qvt/0.9/QVTbase"
+ xmlns:qvtc="http://www.eclipse.org/qvt/0.9/QVTcore" xmlns:qvtcb="http://www.eclipse.org/qvt/0.9/QVTcoreBase"
+ xsi:schemaLocation="http://www.eclipse.org/ocl/3.1.0/Pivot java://org.eclipse.ocl.examples.pivot.PivotPackage http://www.eclipse.org/qvt/0.9/QVTbase java://org.eclipse.qvtd.pivot.qvtbase.QVTbasePackage http://www.eclipse.org/qvt/0.9/QVTcore java://org.eclipse.qvtd.pivot.qvtcore.QVTcorePackage http://www.eclipse.org/qvt/0.9/QVTcoreBase java://org.eclipse.qvtd.pivot.qvtcorebase.QVTcoreBasePackage"
+ name="UmlToRdbms.qvtu.qvtc" externalURI="platform:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbms.qvtu.qvtc">
+ <nestedPackage xsi:type="qvtb:Transformation" xmi:id="T.umlRdbms" name="umlRdbms"
+ superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclElement">
+ <ownedComment body="/* Enforce uml to rdbms */"/>
+ <modelParameter xmi:id="qT.umlRdbms.uml" name="uml" usedPackage="SimpleUML.ecore.oclas#P.simpleuml"/>
+ <modelParameter xmi:id="qT.umlRdbms.rdbms" name="rdbms" usedPackage="SimpleRDBMS.ecore.oclas#P.simplerdbms"/>
+ <modelParameter usedPackage="UMLtoRDBMS.ecore.oclas#P.umltordbms"/>
+ <rule xsi:type="qvtc:Mapping" name="packageToSchema">
+ <ownedComment body="-- Package and Schema mapping&#xA;class PackageToSchema {&#xA;composite classesToTables : Set(ClassToTable) opposites owner;&#xA;composite primitivesToNames : Set(PrimitiveToName) opposites owner;&#xA;name : String;&#xA;-- uml&#xA;umlPackage : Package;&#xA;-- rdbms&#xA;schema : Schema;&#xA;}"/>
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern/>
+ <bottomPattern>
+ <variable xmi:id="qV.umlRdbms.packageToSchema.uml.bottom.p" name="p" type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.packageToSchema.rdbms.bottom.s" name="s"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.packageToSchema.uml.bottom.p"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.packageToSchema.bottom.p2s"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.schema">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.packageToSchema.rdbms.bottom.s"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.packageToSchema.bottom.p2s"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.packageToSchema.bottom.p2s" name="p2s"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </bottomPattern>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.packageToSchema.uml.bottom.p"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.packageToSchema.bottom.p2s"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.packageToSchema.bottom.p2s"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.packageToSchema.rdbms.bottom.s"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="primitiveToName" specification="#//@nestedPackage.0/@rule.2 #//@nestedPackage.0/@rule.3 #//@nestedPackage.0/@rule.4">
+ <ownedComment body="-- Primitive data type marshaling&#xA;class PrimitiveToName {&#xA;owner : PackageToSchema opposites primitivesToNames;&#xA;name : String;&#xA;-- uml&#xA;primitive : PrimitiveDataType;&#xA;-- rdbms&#xA;typeName : String;&#xA;}"/>
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.primitiveToName.uml.guard.p" name="p" type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.primitiveToName.uml.bottom.prim" name="prim"
+ type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.primitiveToName.rdbms.bottom.sqlType"
+ name="sqlType" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.primitiveToName.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.primitiveToName.guard.p2s" name="p2s" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.primitiveToName.guard.p2s"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveToName.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.primitive">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveToName.bottom.p2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.typeName">
+ <value xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#qV.umlRdbms.primitiveToName.rdbms.bottom.sqlType"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveToName.bottom.p2n"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.primitiveToName.bottom.p2n" name="p2n"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="integerToNumber" refinement="#//@nestedPackage.0/@rule.1">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern/>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="Integer"/>
+ </conditionExpression>
+ </predicate>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:VariableAssignment" isDefault="false" targetVariable="#qV.umlRdbms.primitiveToName.rdbms.bottom.sqlType">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="NUMBER"/>
+ </assignment>
+ </bottomPattern>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.integerToNumber.bottom.p2n" name="p2n"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.IntegerToNumber"/>
+ </bottomPattern>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="2"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="NUMBER"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.IntegerToNumber"
+ referredVariable="#qV.umlRdbms.integerToNumber.bottom.p2n"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="booleanToBoolean" refinement="#//@nestedPackage.0/@rule.1">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern/>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="Boolean"/>
+ </conditionExpression>
+ </predicate>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:VariableAssignment" isDefault="false" targetVariable="#qV.umlRdbms.primitiveToName.rdbms.bottom.sqlType">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="BOOLEAN"/>
+ </assignment>
+ </bottomPattern>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.booleanToBoolean.bottom.p2n" name="p2n"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.BooleanToBoolean"/>
+ </bottomPattern>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="2"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="BOOLEAN"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.BooleanToBoolean"
+ referredVariable="#qV.umlRdbms.booleanToBoolean.bottom.p2n"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="stringToVarchar" refinement="#//@nestedPackage.0/@rule.1">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern/>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="String"/>
+ </conditionExpression>
+ </predicate>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:VariableAssignment" isDefault="false" targetVariable="#qV.umlRdbms.primitiveToName.rdbms.bottom.sqlType">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="VARCHAR"/>
+ </assignment>
+ </bottomPattern>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.stringToVarchar.bottom.p2n" name="p2n"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.StringToVarchar"/>
+ </bottomPattern>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveToName.uml.bottom.prim"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="2"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="VARCHAR"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.StringToVarchar"
+ referredVariable="#qV.umlRdbms.stringToVarchar.bottom.p2n"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="flattening" specification="#//@nestedPackage.0/@rule.7 #//@nestedPackage.0/@rule.8">
+ <guardPattern/>
+ <bottomPattern/>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="classToTable">
+ <ownedComment body="query umlRdbms::getAllSupers(cls : SimpleUML::Class) : Set(SimpleUML::Class) {&#xA;cls.general->collect(gen | getAllSupers(gen))->including(cls)->asSet()&#xA;}&#xA;&#xA;query umlRdbms::getAllAttributes(cls : SimpleUML::Class) : Set( SimpleUML::Attribute) {&#xA;getAllSupers(cls)->collect(c | c.attributes)&#xA;}&#xA;&#xA;query umlRdbms::getAllForwards(cls : SimpleUML::Class) : Set( SimpleUML::Association) {&#xA;getAllSupers(cls)->collect(c | true)&#xA;}"/>
+ <ownedComment body="-- Class and Table mapping&#xA;class ClassToTable extends FromAttributeOwner, ToColumn {&#xA;owner : PackageToSchema opposites classesToTables;&#xA;composite associationToForeignKeys :&#xA;OrderedSet(AssociationToForeignKey) opposites owner;&#xA;name : String;&#xA;-- uml&#xA;umlClass : Class;&#xA;-- rdbms&#xA;table : Table;&#xA;primaryKey : Key;&#xA;}"/>
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.classToTable.uml.guard.p" name="p" type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classToTable.uml.bottom.c"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="persistent"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classToTable.uml.bottom.c"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.classToTable.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.classToTable.uml.bottom.c" name="c" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.classToTable.rdbms.guard.s" name="s" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="true" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.kind">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="base"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Table.schema">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.guard.s"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.t"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.classToTable.rdbms.bottom.t" name="t"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.classToTable.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.classToTable.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.schema">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.classToTable.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.guard.s"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.classToTable.guard.p2s" name="p2s" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.classToTable.guard.p2s"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable.bottom.c2t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classToTable.uml.bottom.c"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable.bottom.c2t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.table">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable.bottom.c2t"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.classToTable.bottom.c2t" name="c2t"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ </bottomPattern>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.classToTable.uml.bottom.c"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable.bottom.c2t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable.bottom.c2t"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.t"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ <local>
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Key.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#//@nestedPackage.0/@rule.6/@local.1/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.kind">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="primary"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#//@nestedPackage.0/@rule.6/@local.1/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#//@nestedPackage.0/@rule.6/@local.1/@domain.0/@bottomPattern/@realizedVariable.1"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="true" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.keys">
+ <value xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.1"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <item xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#//@nestedPackage.0/@rule.6/@local.1/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ </part>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#//@nestedPackage.0/@rule.6/@local.1/@domain.0/@bottomPattern/@realizedVariable.1"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="true" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.type">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="NUMBER"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#//@nestedPackage.0/@rule.6/@local.1/@domain.0/@bottomPattern/@realizedVariable.1"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.t"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_tid"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#//@nestedPackage.0/@rule.6/@local.1/@domain.0/@bottomPattern/@realizedVariable.1"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.classToTable.rdbms.bottom.t"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_pk"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#//@nestedPackage.0/@rule.6/@local.1/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <realizedVariable name="pk" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"/>
+ <realizedVariable name="pc" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.primaryKey">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#//@nestedPackage.0/@rule.6/@local.1/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable.bottom.c2t"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ToColumn.column">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#//@nestedPackage.0/@rule.6/@local.1/@domain.0/@bottomPattern/@realizedVariable.1"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classToTable.bottom.c2t"/>
+ </assignment>
+ </bottomPattern>
+ <local>
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern/>
+ <bottomPattern/>
+ </domain>
+ <guardPattern/>
+ <bottomPattern/>
+ </local>
+ </local>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="associationToForeignKey" refinement="#//@nestedPackage.0/@rule.5">
+ <ownedComment body="-- Association and ForeignKey mapping&#xA;class AssociationToForeignKey extends ToColumn {&#xA;referenced : ClassToTable;&#xA;owner : ClassToTable opposites associationToForeignKeys;&#xA;name : String;&#xA;-- uml&#xA;association : Association;&#xA;-- rdbms&#xA;foreignKey : ForeignKey;&#xA;}"/>
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.uml.guard.p" name="p"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.uml.guard.sc" name="sc"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.uml.guard.dc" name="dc"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.dc"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.uml.bottom.a" name="a"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Association"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Table.schema">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.st"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.s"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Key.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.rk"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.dt"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.rk"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="primary"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.rdbms.guard.s" name="s"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.rdbms.guard.st" name="st"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.rdbms.guard.dt" name="dt"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.rdbms.guard.rk" name="rk"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.ForeignKey.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.st"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fk"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.st"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fc"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.ForeignKey.refersTo">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.rk"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fk"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="true" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.foreignKeys">
+ <value xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.3"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <item xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fk"/>
+ </part>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fc"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.associationToForeignKey.rdbms.bottom.fk"
+ name="fk" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"/>
+ <realizedVariable xmi:id="qV.umlRdbms.associationToForeignKey.rdbms.bottom.fc"
+ name="fc" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.sc2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.p2s"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.p"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.schema">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.p2s"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.s"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.table">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.sc2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.st"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.table">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.dc2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.dt"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.sc2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.dc2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.dc"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.guard.p2s" name="p2s"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.guard.sc2t" name="sc2t"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ <variable xmi:id="qV.umlRdbms.associationToForeignKey.guard.dc2t" name="dc2t"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.sc2t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.referenced">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.guard.dc2t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.association">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.foreignKey">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fk"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ToColumn.column">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fc"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.associationToForeignKey.bottom.a2f"
+ name="a2f" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"/>
+ </bottomPattern>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:IfExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String">
+ <condition xsi:type="pivot:OperationCallExp" name="and" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.and..ocl.Boolean">
+ <source xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </argument>
+ </condition>
+ <elseExpression xsi:type="pivot:IfExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String">
+ <condition xsi:type="pivot:OperationCallExp" name="and" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.and..ocl.Boolean">
+ <source xsi:type="pivot:OperationCallExp" name="&lt;>" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%60%%62%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </argument>
+ </condition>
+ <elseExpression xsi:type="pivot:IfExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String">
+ <condition xsi:type="pivot:OperationCallExp" name="and" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.and..ocl.Boolean">
+ <source xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:OperationCallExp" name="&lt;>" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%60%%62%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </argument>
+ </condition>
+ <elseExpression xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </argument>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </argument>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </argument>
+ </thenExpression>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </argument>
+ </thenExpression>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </thenExpression>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <value xsi:type="pivot:IfExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String">
+ <condition xsi:type="pivot:OperationCallExp" name="and" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.and..ocl.Boolean">
+ <source xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.dc"/>
+ </source>
+ <argument xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.guard.sc"/>
+ </argument>
+ </condition>
+ <elseExpression xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </thenExpression>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.uml.bottom.a"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fk"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.bottom.a2f"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_tid"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fc"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.type">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.type">
+ <source xsi:type="pivot:OperationCallExp" isRequired="false" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OrderedCollection.first">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.4"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Key.column">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.guard.rk"/>
+ </source>
+ </source>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.associationToForeignKey.rdbms.bottom.fc"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="attributes" refinement="#//@nestedPackage.0/@rule.5"
+ specification="#//@nestedPackage.0/@rule.9 #//@nestedPackage.0/@rule.10 #//@nestedPackage.0/@rule.11 #//@nestedPackage.0/@rule.12">
+ <ownedComment body="-- attribute mapping&#xA;abstract class FromAttributeOwner {&#xA;composite fromAttributes : Set(FromAttribute) opposites owner;&#xA;}&#xA;abstract class FromAttribute {&#xA;name : String;&#xA;kind : String;&#xA;owner : FromAttributeOwner opposites fromAttributes;&#xA;leafs : Set(AttributeToColumn);&#xA;-- uml&#xA;attribute : Attribute;&#xA;}&#xA;abstract class ToColumn {&#xA;-- rdbms&#xA;column : Column;&#xA;}&#xA;class NonLeafAttribute extends FromAttributeOwner, FromAttribute {&#xA;leafs := fromAttributes.leafs;&#xA;}&#xA;class AttributeToColumn extends FromAttribute, ToColumn {&#xA;type : PrimitiveToName;&#xA;}"/>
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.attributes.uml.guard.c" name="c" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.attributes.uml.bottom.a" name="a" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.attributes.guard.fao" name="fao" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.attributes.guard.fao"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.attributes.bottom.fa" name="fa" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"/>
+ </bottomPattern>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="classAttributes" refinement="#//@nestedPackage.0/@rule.8"
+ specification="#//@nestedPackage.0/@rule.13 #//@nestedPackage.0/@rule.14">
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.classAttributes.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.classAttributes.guard.fao" name="fao" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ </guardPattern>
+ <bottomPattern/>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="primitiveAttribute" refinement="#//@nestedPackage.0/@rule.8"
+ specification="#//@nestedPackage.0/@rule.13 #//@nestedPackage.0/@rule.15">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.primitiveAttribute.uml.guard.t" name="t" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.primitive">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.guard.p2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.primitiveAttribute.guard.p2n" name="p2n" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AttributeToColumn.type">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.guard.p2n"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.bottom.fa"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.primitiveAttribute.bottom.fa" name="fa"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"/>
+ </bottomPattern>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <value xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.5"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <item xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.bottom.fa"/>
+ </part>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.primitiveAttribute.bottom.fa"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="complexAttributeAttributes" refinement="#//@nestedPackage.0/@rule.8"
+ specification="#//@nestedPackage.0/@rule.15 #//@nestedPackage.0/@rule.16">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.uml.guard.ca"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.attributes.uml.guard.c"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.complexAttributeAttributes.uml.guard.ca" name="ca"
+ type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.uml.guard.ca"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.complexAttributeAttributes.guard.fao" name="fao"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"/>
+ </guardPattern>
+ <bottomPattern/>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.complexAttributeAttributes.guard.fao"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </argument>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#qV.umlRdbms.attributes.bottom.fa"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="complexAttribute" refinement="#//@nestedPackage.0/@rule.8"
+ specification="#//@nestedPackage.0/@rule.14 #//@nestedPackage.0/@rule.16">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.umlRdbms.uml">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.complexAttribute.uml.guard.t" name="t" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#qV.umlRdbms.attributes.uml.bottom.a"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#qV.umlRdbms.complexAttribute.uml.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ </bottomPattern>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.umlRdbms.complexAttribute.bottom.fa" name="fa"
+ type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"/>
+ </bottomPattern>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <value xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.6"
+ implicit="true" referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Set.collect..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.7"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttributeOwner.fromAttributes">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#qV.umlRdbms.attributes.guard.fao"/>
+ </source>
+ <body xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.5"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" referredVariable="#//@nestedPackage.0/@rule.12/@local.0/@bottomPattern/@assignment.0/@value/@iterator.0"/>
+ </body>
+ <iterator name="1_" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Set.collect..T"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#qV.umlRdbms.complexAttribute.bottom.fa"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="classPrimitiveAttributes" refinement="#//@nestedPackage.0/@rule.9 #//@nestedPackage.0/@rule.10">
+ <guardPattern/>
+ <bottomPattern/>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="classComplexAttributes" refinement="#//@nestedPackage.0/@rule.9 #//@nestedPackage.0/@rule.12">
+ <guardPattern/>
+ <bottomPattern/>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="complexAttributePrimitiveAttributes" refinement="#//@nestedPackage.0/@rule.11 #//@nestedPackage.0/@rule.10">
+ <guardPattern/>
+ <bottomPattern/>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="complexAttributeComplexAttributes" refinement="#//@nestedPackage.0/@rule.11 #//@nestedPackage.0/@rule.12">
+ <guardPattern/>
+ <bottomPattern/>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="attributeColumns">
+ <ownedComment body="-- column mapping"/>
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern>
+ <variable xmi:id="qV.umlRdbms.attributeColumns.rdbms.guard.t" name="t" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.guard.t"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.bottom.c"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.umlRdbms.attributeColumns.rdbms.bottom.c" name="c"
+ type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.table">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.attributeColumns.guard.c2t"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.guard.t"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.attributeColumns.guard.c2t" name="c2t" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.includes..ocl.OclAny">
+ <source xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.6"
+ implicit="true" referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Set.collect..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.7"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttributeOwner.fromAttributes">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.attributeColumns.guard.c2t"/>
+ </source>
+ <body xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.5"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" referredVariable="#//@nestedPackage.0/@rule.17/@bottomPattern/@predicate.0/@conditionExpression/@source/@iterator.0"/>
+ </body>
+ <iterator name="1_" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Set.collect..T"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns.bottom.a2c"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns.bottom.a2c"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#qV.umlRdbms.attributeColumns.guard.c2t"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.umlRdbms.attributeColumns.bottom.a2c" name="a2c" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"/>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ToColumn.column">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.bottom.c"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns.bottom.a2c"/>
+ </assignment>
+ </bottomPattern>
+ <local>
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.umlRdbms.rdbms">
+ <guardPattern>
+ <variable name="ct" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.type">
+ <value xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.17/@local.0/@domain.0/@guardPattern/@variable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.bottom.c"/>
+ </assignment>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.typeName">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#//@nestedPackage.0/@rule.17/@local.0/@guardPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.17/@local.0/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <variable name="p2n" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AttributeToColumn.type">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns.bottom.a2c"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#//@nestedPackage.0/@rule.17/@local.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ </bottomPattern>
+ </local>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.UmlToRdbmsModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns.bottom.a2c"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.bottom.c"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#qV.umlRdbms.attributeColumns.bottom.a2c"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#qV.umlRdbms.attributeColumns.rdbms.bottom.c"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ </rule>
+ </nestedPackage>
+ <nestedPackage xmi:id="P.$$" name="$$" nsPrefix="orphanage" nsURI="http://www.eclipse.org/ocl/3.1.0/orphanage">
+ <ownedType xsi:type="pivot:OrderedSetType" name="OrderedSet" superClass="#//@nestedPackage.1/@ownedType.8 #//@nestedPackage.1/@ownedType.9"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedSet">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedSetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.9"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:OrderedSetType" name="OrderedSet" superClass="#//@nestedPackage.1/@ownedType.10 #//@nestedPackage.1/@ownedType.11"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedSet">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedSetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.11"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:OrderedSetType" name="OrderedSet" superClass="#//@nestedPackage.1/@ownedType.12 #//@nestedPackage.1/@ownedType.13"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedSet">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedSetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.14"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:BagType" name="Bag" superClass="#//@nestedPackage.1/@ownedType.15"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Bag">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..BagT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.16"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.17"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.17"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.18"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.18"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.19"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.19"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.15"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.20"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ </nestedPackage>
+</qvtc:CoreModel>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/UmlToRdbms/UmlToRdbmsConfig.xmi b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsConfig.xmi
index 6c5369b2d..fc38886ef 100644
--- a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/UmlToRdbms/UmlToRdbmsConfig.xmi
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsConfig.xmi
@@ -5,29 +5,29 @@
xmlns:qvtcconfig="http://www.eclipse.org/qvt/examples/0.1/QVTcConfig"
inputDirection="//@transformation/@direction.0"
outputDirection="//@transformation/@direction.1"
- mode="enforcement"
+ mode="enforce"
middle="//@transformation/@direction.2">
<transformation
name="umlRdbms">
- <direction
- name="uml"
- imports="//@transformation/@import.0"/>
- <direction
- name="rdbms"
- imports="//@transformation/@import.1"/>
- <direction
- imports="//@transformation/@import.2"/>
<import
name="SimpleUML"
- metamodel="SimpleUML.ecore"
+ metamodelFile="UmlToRdbms/SimpleUML.ecore"
package="simpleuml"/>
<import
name="SimpleRDBMS"
- metamodel="SimpleRDBMS.ecore"
+ metamodelFile="UmlToRdbms/SimpleRDBMS.ecore"
package="simplerdbms"/>
<import
name="UMLtoRDBMS"
- metamodel="UMLtoRDBMS.ecore"
+ metamodelFile="UmlToRdbms/UMLtoRDBMS.ecore"
package="umltordbms"/>
+ <direction
+ name="uml"
+ imports="//@transformation/@import.0"/>
+ <direction
+ name="rdbms"
+ imports="//@transformation/@import.1"/>
+ <direction
+ imports="//@transformation/@import.2"/>
</transformation>
</qvtcconfig:Configuration>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsContainment.xmi b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsContainment.xmi
new file mode 100644
index 000000000..86c12da5f
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsContainment.xmi
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:qVTcDataDependencyGraph="http://www.eclipse.org/qvt/examples/0.2/QVTcDataDependencyGraph">
+ <qVTcDataDependencyGraph:ClassNode outgoing="/2 /4 /6 /8" label="PackageToSchema" model="input"/>
+ <qVTcDataDependencyGraph:ClassNode incoming="/2" outgoing="/10 /12 /14" label="ClassToTable" model="input">
+ <superTypes>FromAttributeOwner</superTypes>
+ <superTypes>ToColumn</superTypes>
+ </qVTcDataDependencyGraph:ClassNode>
+ <qVTcDataDependencyGraph:ContainmentEdge target="/1" source="/0" model="input">
+ <referredProperty href="UMLtoRDBMS.ecore#//PackageToSchema/classesToTables"/>
+ </qVTcDataDependencyGraph:ContainmentEdge>
+ <qVTcDataDependencyGraph:ClassNode incoming="/4" label="BooleanToBoolean" model="input">
+ <superTypes>PrimitiveToName</superTypes>
+ </qVTcDataDependencyGraph:ClassNode>
+ <qVTcDataDependencyGraph:ContainmentEdge target="/3" source="/0" model="input">
+ <referredProperty href="UMLtoRDBMS.ecore#//PackageToSchema/primitivesToNames"/>
+ </qVTcDataDependencyGraph:ContainmentEdge>
+ <qVTcDataDependencyGraph:ClassNode incoming="/6" label="IntegerToNumber" model="input">
+ <superTypes>PrimitiveToName</superTypes>
+ </qVTcDataDependencyGraph:ClassNode>
+ <qVTcDataDependencyGraph:ContainmentEdge target="/5" source="/0" model="input">
+ <referredProperty href="UMLtoRDBMS.ecore#//PackageToSchema/primitivesToNames"/>
+ </qVTcDataDependencyGraph:ContainmentEdge>
+ <qVTcDataDependencyGraph:ClassNode incoming="/8" label="StringToVarchar" model="input">
+ <superTypes>PrimitiveToName</superTypes>
+ </qVTcDataDependencyGraph:ClassNode>
+ <qVTcDataDependencyGraph:ContainmentEdge target="/7" source="/0" model="input">
+ <referredProperty href="UMLtoRDBMS.ecore#//PackageToSchema/primitivesToNames"/>
+ </qVTcDataDependencyGraph:ContainmentEdge>
+ <qVTcDataDependencyGraph:ClassNode incoming="/10" label="AssociationToForeignKey" model="input">
+ <superTypes>ToColumn</superTypes>
+ </qVTcDataDependencyGraph:ClassNode>
+ <qVTcDataDependencyGraph:ContainmentEdge target="/9" source="/1" model="input">
+ <referredProperty href="UMLtoRDBMS.ecore#//ClassToTable/associationsToForeignKeys"/>
+ </qVTcDataDependencyGraph:ContainmentEdge>
+ <qVTcDataDependencyGraph:ClassNode incoming="/12 /15" label="AttributeToColumn" model="input">
+ <superTypes>FromAttribute</superTypes>
+ <superTypes>ToColumn</superTypes>
+ </qVTcDataDependencyGraph:ClassNode>
+ <qVTcDataDependencyGraph:ContainmentEdge target="/11" source="/1" model="input">
+ <referredProperty href="UMLtoRDBMS.ecore#//FromAttributeOwner/fromAttributes"/>
+ </qVTcDataDependencyGraph:ContainmentEdge>
+ <qVTcDataDependencyGraph:ClassNode incoming="/14" outgoing="/15" label="NonLeafAttribute" model="input">
+ <superTypes>FromAttributeOwner</superTypes>
+ <superTypes>FromAttribute</superTypes>
+ </qVTcDataDependencyGraph:ClassNode>
+ <qVTcDataDependencyGraph:ContainmentEdge target="/13" source="/1" model="input">
+ <referredProperty href="UMLtoRDBMS.ecore#//FromAttributeOwner/fromAttributes"/>
+ </qVTcDataDependencyGraph:ContainmentEdge>
+ <qVTcDataDependencyGraph:ContainmentEdge target="/11" source="/13" model="input">
+ <referredProperty href="UMLtoRDBMS.ecore#//FromAttributeOwner/fromAttributes"/>
+ </qVTcDataDependencyGraph:ContainmentEdge>
+</xmi:XMI>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsContainmentTree.xmi b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsContainmentTree.xmi
new file mode 100644
index 000000000..a1702cb58
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsContainmentTree.xmi
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsDataDep.xmi b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsDataDep.xmi
new file mode 100644
index 000000000..8cb3993bd
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsDataDep.xmi
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsEcoreToContainmentTree.launch b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsEcoreToContainmentTree.launch
new file mode 100644
index 000000000..c787a9666
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsEcoreToContainmentTree.launch
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.epsilon.eol.eclipse.dt.launching.EolLaunchConfigurationDelegate">
+<booleanAttribute key="fine_grained_profiling" value="false"/>
+<listAttribute key="models">
+<listEntry value="#&#13;&#10;#Thu May 08 12:55:43 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=mm&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/emf/2002/Ecore&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UMLtoRDBMS.ecore&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UMLtoRDBMS.ecore&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Thu May 08 12:55:52 BST 2014&#13;&#10;isMetamodelFileBased=true&#13;&#10;name=tree&#13;&#10;readOnLoad=false&#13;&#10;storeOnDisposal=true&#13;&#10;aliases=&#13;&#10;cached=false&#13;&#10;fileBasedMetamodelUri=platform\:/resource/org.eclipse.qvtd.build.etl/model/ECoreContainmentTree.ecore&#13;&#10;metamodelUri=&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsContainmentTree.xmi&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsContainmentTree.xmi&#13;&#10;expand=true&#13;&#10;metamodelFile=/org.eclipse.qvtd.build.etl/model/ECoreContainmentTree.ecore&#13;&#10;"/>
+</listAttribute>
+<booleanAttribute key="profile_model_loading" value="false"/>
+<booleanAttribute key="profiling_enabled" value="false"/>
+<booleanAttribute key="reset_profiler" value="false"/>
+<stringAttribute key="source" value="/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/utils/EcoreToContainmentTree.eol"/>
+</launchConfiguration>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsInterMap.xmi b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsInterMap.xmi
new file mode 100644
index 000000000..9ed50de16
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsInterMap.xmi
@@ -0,0 +1,9 @@
+<?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:qVTcDataDependencyGraph="http://www.eclipse.org/qvt/examples/0.2/QVTcDataDependencyGraph">
+ <qVTcDataDependencyGraph:Graph name="InterMapping">
+ <elements xsi:type="qVTcDataDependencyGraph:MappingNode" label="packageToSchema_LM">
+ <qvtAstNode href="UmlToRdbms.qvtias#m.umlRdbms.packageToSchema_LM"/>
+ </elements>
+ </qVTcDataDependencyGraph:Graph>
+ <qVTcDataDependencyGraph:DependencyEdge/>
+</xmi:XMI>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsMergeDataDep.xmi b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsMergeDataDep.xmi
new file mode 100644
index 000000000..8cb3993bd
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsMergeDataDep.xmi
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsReducedDataDep.xmi b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsReducedDataDep.xmi
new file mode 100644
index 000000000..8cb3993bd
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsReducedDataDep.xmi
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsSchedule.xmi b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsSchedule.xmi
new file mode 100644
index 000000000..a9487d8f0
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsSchedule.xmi
@@ -0,0 +1,370 @@
+<?xml version="1.0" encoding="ASCII"?>
+<qvtschedule:Schedule xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:qvtschedule="http://www.eclipse.org/qvt/0.1/QVTschedule/">
+ <datums xsi:type="qvtschedule:ClassDatum" sources="//@actions.0" dataParameter="//@actions.1/@distinctArguments.0/@primaryArguments.0 //@actions.2/@distinctArguments.0/@secondaryArguments.0 //@actions.3/@distinctArguments.0/@secondaryArguments.0 //@actions.4/@distinctArguments.0/@secondaryArguments.0 //@actions.5/@distinctArguments.0/@secondaryArguments.1 //@actions.6/@distinctArguments.0/@secondaryArguments.0 //@actions.7/@distinctArguments.0/@secondaryArguments.1 //@actions.8/@distinctArguments.0/@secondaryArguments.0 //@actions.9/@distinctArguments.0/@secondaryArguments.0 //@actions.10/@distinctArguments.0/@secondaryArguments.5 //@actions.11/@distinctArguments.1/@secondaryArguments.1">
+ <type href="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ <domain href="UmlToRdbms.qvtp.qvtias#//@nestedPackage.0/@rule.0/@domain.1"/>
+ </datums>
+ <datums xsi:type="qvtschedule:ClassDatum" dataParameter="//@actions.0/@distinctArguments.0/@primaryArguments.0 //@actions.2/@distinctArguments.0/@secondaryArguments.1 //@actions.5/@distinctArguments.0/@secondaryArguments.0 //@actions.7/@distinctArguments.0/@secondaryArguments.0 //@actions.9/@distinctArguments.0/@secondaryArguments.1 //@actions.10/@distinctArguments.0/@secondaryArguments.0">
+ <type href="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ <domain href="UmlToRdbms.qvtp.qvtias#//@nestedPackage.0/@rule.0/@domain.0"/>
+ </datums>
+ <datums xsi:type="qvtschedule:ClassDatum" sources="//@actions.1" dataParameter="//@actions.8/@distinctArguments.0/@secondaryArguments.1 //@actions.11/@distinctArguments.1/@secondaryArguments.2">
+ <type href="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"/>
+ <domain href="UmlToRdbms.qvtp.qvtias#//@nestedPackage.0/@rule.1/@domain.0"/>
+ </datums>
+ <datums xsi:type="qvtschedule:ClassDatum" dataParameter="//@actions.12/@distinctArguments.0/@secondaryArguments.3 //@actions.14/@distinctArguments.1/@secondaryArguments.0 //@actions.16/@distinctArguments.0/@secondaryArguments.1">
+ <type href="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"/>
+ <domain href="UmlToRdbms.qvtp.qvtias#//@nestedPackage.0/@rule.2/@domain.1"/>
+ </datums>
+ <datums xsi:type="qvtschedule:ClassDatum" super="//@datums.3" sources="//@actions.2" dataParameter="//@actions.3/@distinctArguments.0/@primaryArguments.0">
+ <type href="UMLtoRDBMS.ecore.oclas#T.umltordbms.IntegerToNumber"/>
+ <domain href="UmlToRdbms.qvtp.qvtias#//@nestedPackage.0/@rule.2/@domain.1"/>
+ </datums>
+ <datums xsi:type="qvtschedule:ClassDatum" dataParameter="//@actions.2/@distinctArguments.0/@primaryArguments.0 //@actions.5/@distinctArguments.0/@primaryArguments.0 //@actions.7/@distinctArguments.0/@primaryArguments.0 //@actions.12/@distinctArguments.0/@secondaryArguments.2 //@actions.14/@distinctArguments.1/@secondaryArguments.2">
+ <type href="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ <domain href="UmlToRdbms.qvtp.qvtias#//@nestedPackage.0/@rule.2/@domain.0"/>
+ </datums>
+ <datums xsi:type="qvtschedule:ClassDatum" sources="//@actions.3 //@actions.4 //@actions.6" dataParameter="//@actions.16/@distinctArguments.0/@secondaryArguments.2">
+ <type href="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <domain href="UmlToRdbms.qvtp.qvtias#//@nestedPackage.0/@rule.3/@domain.0"/>
+ </datums>
+ <datums xsi:type="qvtschedule:ClassDatum" super="//@datums.3" sources="//@actions.5" dataParameter="//@actions.4/@distinctArguments.0/@primaryArguments.0">
+ <type href="UMLtoRDBMS.ecore.oclas#T.umltordbms.BooleanToBoolean"/>
+ <domain href="UmlToRdbms.qvtp.qvtias#//@nestedPackage.0/@rule.4/@domain.1"/>
+ </datums>
+ <datums xsi:type="qvtschedule:ClassDatum" super="//@datums.3" sources="//@actions.7" dataParameter="//@actions.6/@distinctArguments.0/@primaryArguments.0">
+ <type href="UMLtoRDBMS.ecore.oclas#T.umltordbms.StringToVarchar"/>
+ <domain href="UmlToRdbms.qvtp.qvtias#//@nestedPackage.0/@rule.6/@domain.1"/>
+ </datums>
+ <datums xsi:type="qvtschedule:ClassDatum" sources="//@actions.8" dataParameter="//@actions.11/@distinctArguments.0/@primaryArguments.0">
+ <type href="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"/>
+ <domain href="UmlToRdbms.qvtp.qvtias#//@nestedPackage.0/@rule.8/@domain.0"/>
+ </datums>
+ <datums xsi:type="qvtschedule:ClassDatum" sources="//@actions.8" dataParameter="//@actions.11/@distinctArguments.1/@secondaryArguments.3 //@actions.11/@distinctArguments.1/@secondaryArguments.4 //@actions.16/@distinctArguments.0/@secondaryArguments.0">
+ <type href="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"/>
+ <domain href="UmlToRdbms.qvtp.qvtias#//@nestedPackage.0/@rule.8/@domain.0"/>
+ </datums>
+ <datums xsi:type="qvtschedule:ClassDatum" sources="//@actions.8 //@actions.11 //@actions.16">
+ <type href="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"/>
+ <domain href="UmlToRdbms.qvtp.qvtias#//@nestedPackage.0/@rule.8/@domain.0"/>
+ </datums>
+ <datums xsi:type="qvtschedule:ClassDatum" sources="//@actions.9" dataParameter="//@actions.8/@distinctArguments.0/@primaryArguments.0 //@actions.10/@distinctArguments.0/@secondaryArguments.2 //@actions.10/@distinctArguments.0/@secondaryArguments.3 //@actions.11/@distinctArguments.1/@secondaryArguments.0 //@actions.11/@distinctArguments.1/@secondaryArguments.5 //@actions.12/@distinctArguments.0/@secondaryArguments.0 //@actions.13/@distinctArguments.0/@secondaryArguments.2 //@actions.16/@distinctArguments.0/@secondaryArguments.3">
+ <type href="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ <domain href="UmlToRdbms.qvtp.qvtias#//@nestedPackage.0/@rule.8/@domain.1"/>
+ </datums>
+ <datums xsi:type="qvtschedule:ClassDatum" dataParameter="//@actions.9/@distinctArguments.0/@primaryArguments.0 //@actions.10/@distinctArguments.0/@secondaryArguments.1 //@actions.10/@distinctArguments.0/@secondaryArguments.4 //@actions.12/@distinctArguments.0/@secondaryArguments.1 //@actions.13/@distinctArguments.0/@secondaryArguments.0 //@actions.13/@distinctArguments.0/@secondaryArguments.1 //@actions.14/@distinctArguments.1/@secondaryArguments.1 //@actions.15/@distinctArguments.0/@secondaryArguments.0 //@actions.15/@distinctArguments.1/@secondaryArguments.0">
+ <type href="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <domain href="UmlToRdbms.qvtp.qvtias#//@nestedPackage.0/@rule.9/@domain.0"/>
+ </datums>
+ <datums xsi:type="qvtschedule:ClassDatum" sources="//@actions.10" dataParameter="//@actions.11/@distinctArguments.1/@primaryArguments.0">
+ <type href="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"/>
+ <domain href="UmlToRdbms.qvtp.qvtias#//@nestedPackage.0/@rule.10/@domain.1"/>
+ </datums>
+ <datums xsi:type="qvtschedule:ClassDatum" dataParameter="//@actions.10/@distinctArguments.0/@primaryArguments.0">
+ <type href="SimpleUML.ecore.oclas#T.simpleuml.Association"/>
+ <domain href="UmlToRdbms.qvtp.qvtias#//@nestedPackage.0/@rule.10/@domain.0"/>
+ </datums>
+ <datums xsi:type="qvtschedule:ClassDatum" sources="//@actions.11">
+ <type href="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"/>
+ <domain href="UmlToRdbms.qvtp.qvtias#//@nestedPackage.0/@rule.11/@domain.0"/>
+ </datums>
+ <datums xsi:type="qvtschedule:ClassDatum">
+ <type href="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"/>
+ <domain href="UmlToRdbms.qvtp.qvtias#//@nestedPackage.0/@rule.12/@domain.1"/>
+ </datums>
+ <datums xsi:type="qvtschedule:ClassDatum" super="//@datums.17" sources="//@actions.12 //@actions.14" dataParameter="//@actions.16/@distinctArguments.0/@primaryArguments.0">
+ <type href="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"/>
+ <domain href="UmlToRdbms.qvtp.qvtias#//@nestedPackage.0/@rule.12/@domain.1"/>
+ </datums>
+ <datums xsi:type="qvtschedule:ClassDatum" dataParameter="//@actions.12/@distinctArguments.0/@primaryArguments.0 //@actions.13/@distinctArguments.0/@primaryArguments.0 //@actions.14/@distinctArguments.0/@primaryArguments.0 //@actions.14/@distinctArguments.1/@primaryArguments.0 //@actions.15/@distinctArguments.0/@primaryArguments.0 //@actions.15/@distinctArguments.1/@primaryArguments.0">
+ <type href="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ <domain href="UmlToRdbms.qvtp.qvtias#//@nestedPackage.0/@rule.12/@domain.0"/>
+ </datums>
+ <datums xsi:type="qvtschedule:ClassDatum" super="//@datums.17" sources="//@actions.13 //@actions.15" dataParameter="//@actions.14/@distinctArguments.0/@secondaryArguments.0 //@actions.15/@distinctArguments.1/@secondaryArguments.1">
+ <type href="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"/>
+ <domain href="UmlToRdbms.qvtp.qvtias#//@nestedPackage.0/@rule.13/@domain.1"/>
+ </datums>
+ <actions xsi:type="qvtschedule:MappingAction" results="//@datums.0" order="1" parent="//@actions.17">
+ <distinctArguments>
+ <primaryArguments datum="//@datums.1">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.packageToSchema_LM.uml.guard.p"/>
+ </primaryArguments>
+ </distinctArguments>
+ <mapping href="UmlToRdbms.qvtp.qvtias#m.umlRdbms.packageToSchema_LM"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" results="//@datums.2" order="2" parent="//@actions.17">
+ <distinctArguments>
+ <primaryArguments datum="//@datums.0">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.packageToSchema_MR.middle.guard.p2s"/>
+ </primaryArguments>
+ </distinctArguments>
+ <mapping href="UmlToRdbms.qvtp.qvtias#m.umlRdbms.packageToSchema_MR"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" results="//@datums.4" order="8" parent="//@actions.17">
+ <distinctArguments>
+ <primaryArguments datum="//@datums.5">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.integerToNumber_LM.uml.guard.prim"/>
+ </primaryArguments>
+ <secondaryArguments datum="//@datums.0">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.integerToNumber_LM.middle.guard.p2s"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.1">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.integerToNumber_LM.uml.guard.p"/>
+ </secondaryArguments>
+ </distinctArguments>
+ <mapping href="UmlToRdbms.qvtp.qvtias#m.umlRdbms.integerToNumber_LM"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" results="//@datums.6" order="16" parent="//@actions.17">
+ <distinctArguments>
+ <primaryArguments datum="//@datums.4">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.integerToNumber_MR.middle.guard.p2n"/>
+ </primaryArguments>
+ <secondaryArguments datum="//@datums.0">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.integerToNumber_MR.middle.guard.p2s"/>
+ </secondaryArguments>
+ </distinctArguments>
+ <mapping href="UmlToRdbms.qvtp.qvtias#m.umlRdbms.integerToNumber_MR"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" results="//@datums.6" order="11" parent="//@actions.17">
+ <distinctArguments>
+ <primaryArguments datum="//@datums.7">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.booleanToBoolean_MR.middle.guard.p2n"/>
+ </primaryArguments>
+ <secondaryArguments datum="//@datums.0">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.booleanToBoolean_MR.middle.guard.p2s"/>
+ </secondaryArguments>
+ </distinctArguments>
+ <mapping href="UmlToRdbms.qvtp.qvtias#m.umlRdbms.booleanToBoolean_MR"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" results="//@datums.7" order="7" parent="//@actions.17">
+ <distinctArguments>
+ <primaryArguments datum="//@datums.5">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.booleanToBoolean_LM.uml.guard.prim"/>
+ </primaryArguments>
+ <secondaryArguments datum="//@datums.1">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.booleanToBoolean_LM.uml.guard.p"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.0">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.booleanToBoolean_LM.middle.guard.p2s"/>
+ </secondaryArguments>
+ </distinctArguments>
+ <mapping href="UmlToRdbms.qvtp.qvtias#m.umlRdbms.booleanToBoolean_LM"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" results="//@datums.6" order="12" parent="//@actions.17">
+ <distinctArguments>
+ <primaryArguments datum="//@datums.8">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.stringToVarchar_MR.middle.guard.p2n"/>
+ </primaryArguments>
+ <secondaryArguments datum="//@datums.0">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.stringToVarchar_MR.middle.guard.p2s"/>
+ </secondaryArguments>
+ </distinctArguments>
+ <mapping href="UmlToRdbms.qvtp.qvtias#m.umlRdbms.stringToVarchar_MR"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" results="//@datums.8" order="9" parent="//@actions.17">
+ <distinctArguments>
+ <primaryArguments datum="//@datums.5">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.stringToVarchar_LM.uml.guard.prim"/>
+ </primaryArguments>
+ <secondaryArguments datum="//@datums.1">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.stringToVarchar_LM.uml.guard.p"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.0">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.stringToVarchar_LM.middle.guard.p2s"/>
+ </secondaryArguments>
+ </distinctArguments>
+ <mapping href="UmlToRdbms.qvtp.qvtias#m.umlRdbms.stringToVarchar_LM"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" results="//@datums.9 //@datums.10 //@datums.11" order="4" parent="//@actions.17">
+ <distinctArguments>
+ <primaryArguments datum="//@datums.12">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.classToTable_MR.middle.guard.c2t"/>
+ </primaryArguments>
+ <secondaryArguments datum="//@datums.0">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.classToTable_MR.middle.guard.p2s"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.2">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.classToTable_MR.rdbms.guard.s"/>
+ </secondaryArguments>
+ </distinctArguments>
+ <mapping href="UmlToRdbms.qvtp.qvtias#m.umlRdbms.classToTable_MR"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" results="//@datums.12" order="3" parent="//@actions.17">
+ <distinctArguments>
+ <primaryArguments datum="//@datums.13">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.classToTable_LM.uml.guard.c"/>
+ </primaryArguments>
+ <secondaryArguments datum="//@datums.0">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.classToTable_LM.middle.guard.p2s"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.1">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.classToTable_LM.uml.guard.p"/>
+ </secondaryArguments>
+ </distinctArguments>
+ <mapping href="UmlToRdbms.qvtp.qvtias#m.umlRdbms.classToTable_LM"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" results="//@datums.14" order="5" parent="//@actions.17">
+ <distinctArguments>
+ <primaryArguments datum="//@datums.15">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.associationToForeignKey_LM.uml.guard.a"/>
+ </primaryArguments>
+ <secondaryArguments datum="//@datums.1">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.associationToForeignKey_LM.uml.guard.p"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.13">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.associationToForeignKey_LM.uml.guard.sc"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.12">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.associationToForeignKey_LM.middle.guard.dc2t"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.12">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.associationToForeignKey_LM.middle.guard.sc2t"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.13">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.associationToForeignKey_LM.uml.guard.dc"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.0">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.associationToForeignKey_LM.middle.guard.p2s"/>
+ </secondaryArguments>
+ </distinctArguments>
+ <mapping href="UmlToRdbms.qvtp.qvtias#m.umlRdbms.associationToForeignKey_LM"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" results="//@datums.11 //@datums.16" order="6" parent="//@actions.17">
+ <distinctArguments>
+ <primaryArguments datum="//@datums.9">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.rk"/>
+ </primaryArguments>
+ </distinctArguments>
+ <distinctArguments>
+ <primaryArguments datum="//@datums.14">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.associationToForeignKey_MR.middle.guard.a2f"/>
+ </primaryArguments>
+ <secondaryArguments datum="//@datums.12">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.associationToForeignKey_MR.middle.guard.dc2t"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.0">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.associationToForeignKey_MR.middle.guard.p2s"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.2">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.s"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.10">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.st"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.10">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.associationToForeignKey_MR.rdbms.guard.dt"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.12">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.associationToForeignKey_MR.middle.guard.sc2t"/>
+ </secondaryArguments>
+ </distinctArguments>
+ <mapping href="UmlToRdbms.qvtp.qvtias#m.umlRdbms.associationToForeignKey_MR"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" results="//@datums.18" order="10" parent="//@actions.17">
+ <distinctArguments>
+ <primaryArguments datum="//@datums.19">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.a"/>
+ </primaryArguments>
+ <secondaryArguments datum="//@datums.12">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.classPrimitiveAttributes_LM.middle.guard.fao"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.13">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.c"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.5">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.classPrimitiveAttributes_LM.uml.guard.t"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.3">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.classPrimitiveAttributes_LM.middle.guard.p2n"/>
+ </secondaryArguments>
+ </distinctArguments>
+ <mapping href="UmlToRdbms.qvtp.qvtias#m.umlRdbms.classPrimitiveAttributes_LM"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" results="//@datums.20" order="13" parent="//@actions.17">
+ <distinctArguments>
+ <primaryArguments datum="//@datums.19">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.classComplexAttributes_LM.uml.guard.a"/>
+ </primaryArguments>
+ <secondaryArguments datum="//@datums.13">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.classComplexAttributes_LM.uml.guard.c"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.13">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.classComplexAttributes_LM.uml.guard.t"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.12">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.classComplexAttributes_LM.middle.guard.fao"/>
+ </secondaryArguments>
+ </distinctArguments>
+ <mapping href="UmlToRdbms.qvtp.qvtias#m.umlRdbms.classComplexAttributes_LM"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" results="//@datums.18" order="15" parent="//@actions.17">
+ <distinctArguments>
+ <primaryArguments datum="//@datums.19">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.ca"/>
+ </primaryArguments>
+ <secondaryArguments datum="//@datums.20">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.guard.fao"/>
+ </secondaryArguments>
+ </distinctArguments>
+ <distinctArguments>
+ <primaryArguments datum="//@datums.19">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.a"/>
+ </primaryArguments>
+ <secondaryArguments datum="//@datums.3">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.middle.guard.p2n"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.13">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.c"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.5">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.complexAttributePrimitiveAttributes_LM.uml.guard.t"/>
+ </secondaryArguments>
+ </distinctArguments>
+ <mapping href="UmlToRdbms.qvtp.qvtias#m.umlRdbms.complexAttributePrimitiveAttributes_LM"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" results="//@datums.20" order="14" parent="//@actions.17">
+ <distinctArguments>
+ <primaryArguments datum="//@datums.19">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.a"/>
+ </primaryArguments>
+ <secondaryArguments datum="//@datums.13">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.t"/>
+ </secondaryArguments>
+ </distinctArguments>
+ <distinctArguments>
+ <primaryArguments datum="//@datums.19">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.ca"/>
+ </primaryArguments>
+ <secondaryArguments datum="//@datums.13">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.complexAttributeComplexAttributes_LM.uml.guard.c"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.20">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.complexAttributeComplexAttributes_LM.middle.guard.fao"/>
+ </secondaryArguments>
+ </distinctArguments>
+ <mapping href="UmlToRdbms.qvtp.qvtias#m.umlRdbms.complexAttributeComplexAttributes_LM"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" results="//@datums.11" order="17" parent="//@actions.17">
+ <distinctArguments>
+ <primaryArguments datum="//@datums.18">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.attributeColumns_MR.middle.guard.a2c"/>
+ </primaryArguments>
+ <secondaryArguments datum="//@datums.10">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.attributeColumns_MR.rdbms.guard.t"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.3">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.attributeColumns_MR.middle.guard.p2n"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.6">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.attributeColumns_MR.rdbms.guard.ct"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.12">
+ <variable href="UmlToRdbms.qvtp.qvtias#qV.umlRdbms.attributeColumns_MR.middle.guard.c2t"/>
+ </secondaryArguments>
+ </distinctArguments>
+ <mapping href="UmlToRdbms.qvtp.qvtias#m.umlRdbms.attributeColumns_MR"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" children="//@actions.0 //@actions.1 //@actions.9 //@actions.8 //@actions.10 //@actions.11 //@actions.5 //@actions.2 //@actions.7 //@actions.12 //@actions.4 //@actions.6 //@actions.13 //@actions.15 //@actions.14 //@actions.3 //@actions.16">
+ <mapping href="UmlToRdbms.qvtp.qvtias#m.umlRdbms.__root__"/>
+ </actions>
+</qvtschedule:Schedule>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsSimple.qvtias b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsSimple.qvtias
new file mode 100644
index 000000000..d58c40649
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsSimple.qvtias
@@ -0,0 +1,2137 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<qvti:ImperativeModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:pivot="http://www.eclipse.org/ocl/3.1.0/Pivot" xmlns:qvtb="http://www.eclipse.org/qvt/0.9/QVTbase"
+ xmlns:qvtcb="http://www.eclipse.org/qvt/0.9/QVTcoreBase" xmlns:qvti="http://www.eclipse.org/qvt/0.9/QVTimperative"
+ xsi:schemaLocation="http://www.eclipse.org/ocl/3.1.0/Pivot java://org.eclipse.ocl.examples.pivot.PivotPackage http://www.eclipse.org/qvt/0.9/QVTbase java://org.eclipse.qvtd.pivot.qvtbase.QVTbasePackage http://www.eclipse.org/qvt/0.9/QVTcoreBase java://org.eclipse.qvtd.pivot.qvtcorebase.QVTcoreBasePackage http://www.eclipse.org/qvt/0.9/QVTimperative java://org.eclipse.qvtd.pivot.qvtimperative.QVTimperativePackage">
+ <nestedPackage xsi:type="qvtb:Transformation" xmi:id="T.umlRdbms" name="umlRdbms">
+ <modelParameter name="uml" usedPackage="SimpleUML.ecore.oclas#P.simpleuml"/>
+ <modelParameter name="rdbms" usedPackage="SimpleRDBMS.ecore.oclas#P.simplerdbms"/>
+ <modelParameter name="middle" usedPackage="UMLtoRDBMS.ecore.oclas#P.umltordbms"/>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.packageToSchema_MR" name="packageToSchema_MR">
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#//@nestedPackage.0/@modelParameter.1">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable name="s" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isEnforceable="false" typedModel="#//@nestedPackage.0/@modelParameter.2">
+ <guardPattern>
+ <variable name="p2s" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.schema">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#//@nestedPackage.0/@rule.0/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#//@nestedPackage.0/@rule.0/@domain.1/@guardPattern/@variable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#//@nestedPackage.0/@rule.0/@domain.1/@guardPattern/@variable.0"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#//@nestedPackage.0/@rule.0/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.packageToSchema_LM" name="packageToSchema_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="false" isEnforceable="false"
+ typedModel="#//@nestedPackage.0/@modelParameter.0">
+ <guardPattern>
+ <variable name="p" type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isEnforceable="true" typedModel="#//@nestedPackage.0/@modelParameter.2">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable name="p2s" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#//@nestedPackage.0/@rule.1/@domain.0/@guardPattern/@variable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#//@nestedPackage.0/@rule.1/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#//@nestedPackage.0/@rule.1/@domain.0/@guardPattern/@variable.0"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#//@nestedPackage.0/@rule.1/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.integerToNumber_MR" name="integerToNumber_MR">
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#//@nestedPackage.0/@modelParameter.1">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable name="sqlType" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isEnforceable="false" typedModel="#//@nestedPackage.0/@modelParameter.2">
+ <guardPattern>
+ <variable name="p2s" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ <variable name="p2n" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.IntegerToNumber"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#//@nestedPackage.0/@rule.2/@domain.1/@guardPattern/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#//@nestedPackage.0/@rule.2/@domain.1/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.typeName">
+ <value xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.2/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#//@nestedPackage.0/@rule.2/@domain.1/@guardPattern/@variable.1"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:VariableAssignment" isDefault="false" targetVariable="#//@nestedPackage.0/@rule.2/@domain.0/@bottomPattern/@realizedVariable.0">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="NUMBER"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.integerToNumber_LM" name="integerToNumber_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="false" isEnforceable="false"
+ typedModel="#//@nestedPackage.0/@modelParameter.0">
+ <guardPattern>
+ <variable name="p" type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ <variable name="prim" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isEnforceable="true" typedModel="#//@nestedPackage.0/@modelParameter.2">
+ <guardPattern>
+ <variable name="p2s" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable name="p2n" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.IntegerToNumber"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.1/@guardPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.0/@guardPattern/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.0/@guardPattern/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="Integer"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.0/@guardPattern/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="2"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="NUMBER"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.IntegerToNumber"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.primitive">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.0/@guardPattern/@variable.1"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.1/@guardPattern/@variable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.booleanToBoolean_LM" name="booleanToBoolean_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="false" isEnforceable="false"
+ typedModel="#//@nestedPackage.0/@modelParameter.0">
+ <guardPattern>
+ <variable name="p" type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ <variable name="prim" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isEnforceable="true" typedModel="#//@nestedPackage.0/@modelParameter.2">
+ <guardPattern>
+ <variable name="p2s" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable name="p2n" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.BooleanToBoolean"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#//@nestedPackage.0/@rule.4/@domain.1/@guardPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#//@nestedPackage.0/@rule.4/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#//@nestedPackage.0/@rule.4/@domain.0/@guardPattern/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="Boolean"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#//@nestedPackage.0/@rule.4/@domain.0/@guardPattern/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#//@nestedPackage.0/@rule.4/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#//@nestedPackage.0/@rule.4/@domain.0/@guardPattern/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="2"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="BOOLEAN"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.BooleanToBoolean"
+ referredVariable="#//@nestedPackage.0/@rule.4/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.primitive">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#//@nestedPackage.0/@rule.4/@domain.0/@guardPattern/@variable.1"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#//@nestedPackage.0/@rule.4/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#//@nestedPackage.0/@rule.4/@domain.1/@guardPattern/@variable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#//@nestedPackage.0/@rule.4/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.booleanToBoolean_MR" name="booleanToBoolean_MR">
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#//@nestedPackage.0/@modelParameter.1">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable name="sqlType" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isEnforceable="false" typedModel="#//@nestedPackage.0/@modelParameter.2">
+ <guardPattern>
+ <variable name="p2s" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ <variable name="p2n" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.BooleanToBoolean"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#//@nestedPackage.0/@rule.5/@domain.1/@guardPattern/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#//@nestedPackage.0/@rule.5/@domain.1/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.typeName">
+ <value xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.5/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#//@nestedPackage.0/@rule.5/@domain.1/@guardPattern/@variable.1"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:VariableAssignment" isDefault="false" targetVariable="#//@nestedPackage.0/@rule.5/@domain.0/@bottomPattern/@realizedVariable.0">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="BOOLEAN"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.stringToVarchar_MR" name="stringToVarchar_MR">
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#//@nestedPackage.0/@modelParameter.1">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable name="sqlType" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isEnforceable="false" typedModel="#//@nestedPackage.0/@modelParameter.2">
+ <guardPattern>
+ <variable name="p2s" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ <variable name="p2n" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.StringToVarchar"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#//@nestedPackage.0/@rule.6/@domain.1/@guardPattern/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#//@nestedPackage.0/@rule.6/@domain.1/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.typeName">
+ <value xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.6/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#//@nestedPackage.0/@rule.6/@domain.1/@guardPattern/@variable.1"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:VariableAssignment" isDefault="false" targetVariable="#//@nestedPackage.0/@rule.6/@domain.0/@bottomPattern/@realizedVariable.0">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="VARCHAR"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.stringToVarchar_LM" name="stringToVarchar_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="false" isEnforceable="false"
+ typedModel="#//@nestedPackage.0/@modelParameter.0">
+ <guardPattern>
+ <variable name="p" type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ <variable name="prim" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isEnforceable="true" typedModel="#//@nestedPackage.0/@modelParameter.2">
+ <guardPattern>
+ <variable name="p2s" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable name="p2n" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.StringToVarchar"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#//@nestedPackage.0/@rule.7/@domain.1/@guardPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#//@nestedPackage.0/@rule.7/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#//@nestedPackage.0/@rule.7/@domain.0/@guardPattern/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="String"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#//@nestedPackage.0/@rule.7/@domain.0/@guardPattern/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#//@nestedPackage.0/@rule.7/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#//@nestedPackage.0/@rule.7/@domain.0/@guardPattern/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="2"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="VARCHAR"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.StringToVarchar"
+ referredVariable="#//@nestedPackage.0/@rule.7/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.primitive">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#//@nestedPackage.0/@rule.7/@domain.0/@guardPattern/@variable.1"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#//@nestedPackage.0/@rule.7/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#//@nestedPackage.0/@rule.7/@domain.1/@guardPattern/@variable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#//@nestedPackage.0/@rule.7/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.classToTable_MR" name="classToTable_MR">
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#//@nestedPackage.0/@modelParameter.1">
+ <guardPattern>
+ <variable name="s" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable name="t" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"/>
+ <realizedVariable name="pk" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"/>
+ <realizedVariable name="pc" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isEnforceable="false" typedModel="#//@nestedPackage.0/@modelParameter.2">
+ <guardPattern>
+ <variable name="p2s" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ <variable name="c2t" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.schema">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#//@nestedPackage.0/@rule.8/@domain.1/@guardPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#//@nestedPackage.0/@rule.8/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#//@nestedPackage.0/@rule.8/@domain.1/@guardPattern/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#//@nestedPackage.0/@rule.8/@domain.1/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#//@nestedPackage.0/@rule.8/@domain.1/@guardPattern/@variable.1"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#//@nestedPackage.0/@rule.8/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ToColumn.column">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#//@nestedPackage.0/@rule.8/@domain.0/@bottomPattern/@realizedVariable.2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#//@nestedPackage.0/@rule.8/@domain.1/@guardPattern/@variable.1"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.primaryKey">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#//@nestedPackage.0/@rule.8/@domain.0/@bottomPattern/@realizedVariable.1"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#//@nestedPackage.0/@rule.8/@domain.1/@guardPattern/@variable.1"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.table">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#//@nestedPackage.0/@rule.8/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#//@nestedPackage.0/@rule.8/@domain.1/@guardPattern/@variable.1"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="true" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.kind">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="base"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#//@nestedPackage.0/@rule.8/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Table.schema">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#//@nestedPackage.0/@rule.8/@domain.0/@guardPattern/@variable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#//@nestedPackage.0/@rule.8/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Key.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#//@nestedPackage.0/@rule.8/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#//@nestedPackage.0/@rule.8/@domain.0/@bottomPattern/@realizedVariable.1"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.kind">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="primary"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#//@nestedPackage.0/@rule.8/@domain.0/@bottomPattern/@realizedVariable.1"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#//@nestedPackage.0/@rule.8/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#//@nestedPackage.0/@rule.8/@domain.0/@bottomPattern/@realizedVariable.2"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="true" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.keys">
+ <value xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.0"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <item xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#//@nestedPackage.0/@rule.8/@domain.0/@bottomPattern/@realizedVariable.1"/>
+ </part>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#//@nestedPackage.0/@rule.8/@domain.0/@bottomPattern/@realizedVariable.2"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="true" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.type">
+ <value xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="NUMBER"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#//@nestedPackage.0/@rule.8/@domain.0/@bottomPattern/@realizedVariable.2"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#//@nestedPackage.0/@rule.8/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_tid"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#//@nestedPackage.0/@rule.8/@domain.0/@bottomPattern/@realizedVariable.2"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#//@nestedPackage.0/@rule.8/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_pk"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#//@nestedPackage.0/@rule.8/@domain.0/@bottomPattern/@realizedVariable.1"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.classToTable_LM" name="classToTable_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="false" isEnforceable="false"
+ typedModel="#//@nestedPackage.0/@modelParameter.0">
+ <guardPattern>
+ <variable name="p" type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ <variable name="c" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isEnforceable="true" typedModel="#//@nestedPackage.0/@modelParameter.2">
+ <guardPattern>
+ <variable name="p2s" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable name="c2t" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#//@nestedPackage.0/@rule.9/@domain.1/@guardPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#//@nestedPackage.0/@rule.9/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.9/@domain.0/@guardPattern/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#//@nestedPackage.0/@rule.9/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.9/@domain.0/@guardPattern/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="persistent"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.9/@domain.0/@guardPattern/@variable.1"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#//@nestedPackage.0/@rule.9/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#//@nestedPackage.0/@rule.9/@domain.1/@guardPattern/@variable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#//@nestedPackage.0/@rule.9/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.9/@domain.0/@guardPattern/@variable.1"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#//@nestedPackage.0/@rule.9/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.associationToForeignKey_MR" name="associationToForeignKey_MR">
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#//@nestedPackage.0/@modelParameter.1">
+ <guardPattern>
+ <variable name="s" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"/>
+ <variable name="st" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"/>
+ <variable name="dt" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"/>
+ <variable name="rk" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable name="fk" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"/>
+ <realizedVariable name="fc" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isEnforceable="false" typedModel="#//@nestedPackage.0/@modelParameter.2">
+ <guardPattern>
+ <variable name="p2s" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ <variable name="sc2t" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ <variable name="dc2t" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ <variable name="a2f" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.table">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.1/@guardPattern/@variable.2"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.0/@guardPattern/@variable.2"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.schema">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.1/@guardPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.table">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.1/@guardPattern/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.0/@guardPattern/@variable.1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.1/@guardPattern/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.1/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.referenced">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.1/@guardPattern/@variable.3"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.1/@guardPattern/@variable.2"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.1/@guardPattern/@variable.3"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.1/@guardPattern/@variable.1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Table.schema">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.0/@guardPattern/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Schema"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Key.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.0/@guardPattern/@variable.3"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.0/@guardPattern/@variable.2"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.0/@guardPattern/@variable.3"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="primary"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.type">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.type">
+ <source xsi:type="pivot:OperationCallExp" isRequired="false" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OrderedCollection.first">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.1"
+ referredProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Key.column">
+ <source xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.0/@guardPattern/@variable.3"/>
+ </source>
+ </source>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.0/@bottomPattern/@realizedVariable.1"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.1/@guardPattern/@variable.3"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.1/@guardPattern/@variable.3"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_tid"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.0/@bottomPattern/@realizedVariable.1"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ToColumn.column">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.0/@bottomPattern/@realizedVariable.1"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.1/@guardPattern/@variable.3"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.foreignKey">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.1/@guardPattern/@variable.3"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.ForeignKey.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.0/@guardPattern/@variable.1"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.0/@guardPattern/@variable.1"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.0/@bottomPattern/@realizedVariable.1"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.ForeignKey.refersTo">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.0/@guardPattern/@variable.3"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="true" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.foreignKeys">
+ <value xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.2"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <item xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ </part>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#//@nestedPackage.0/@rule.10/@domain.0/@bottomPattern/@realizedVariable.1"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.associationToForeignKey_LM" name="associationToForeignKey_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="false" isEnforceable="false"
+ typedModel="#//@nestedPackage.0/@modelParameter.0">
+ <guardPattern>
+ <variable name="p" type="SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ <variable name="sc" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable name="dc" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable name="a" type="SimpleUML.ecore.oclas#T.simpleuml.Association"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isEnforceable="true" typedModel="#//@nestedPackage.0/@modelParameter.2">
+ <guardPattern>
+ <variable name="p2s" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"/>
+ <variable name="sc2t" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ <variable name="dc2t" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable name="a2f" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PackageToSchema.umlPackage">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.1/@guardPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.1/@guardPattern/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.1/@guardPattern/@variable.2"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.2"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.1/@guardPattern/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PackageToSchema"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.1/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.3"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.2"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.3"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.3"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <value xsi:type="pivot:IfExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String">
+ <condition xsi:type="pivot:OperationCallExp" name="and" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.and..ocl.Boolean">
+ <source xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.3"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.2"/>
+ </source>
+ <argument xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.3"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.1"/>
+ </argument>
+ </condition>
+ <elseExpression xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.3"/>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </thenExpression>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.3"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.association">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.3"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.name">
+ <value xsi:type="pivot:IfExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String">
+ <condition xsi:type="pivot:OperationCallExp" name="and" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.and..ocl.Boolean">
+ <source xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.3"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.2"/>
+ </source>
+ <argument xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.3"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.1"/>
+ </argument>
+ </condition>
+ <elseExpression xsi:type="pivot:IfExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String">
+ <condition xsi:type="pivot:OperationCallExp" name="and" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.and..ocl.Boolean">
+ <source xsi:type="pivot:OperationCallExp" name="&lt;>" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%60%%62%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.3"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.2"/>
+ </source>
+ <argument xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.3"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.1"/>
+ </argument>
+ </condition>
+ <elseExpression xsi:type="pivot:IfExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String">
+ <condition xsi:type="pivot:OperationCallExp" name="and" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Boolean.and..ocl.Boolean">
+ <source xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.destination">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.3"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.2"/>
+ </source>
+ <argument xsi:type="pivot:OperationCallExp" name="&lt;>" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%60%%62%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Association.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.3"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.1"/>
+ </argument>
+ </condition>
+ <elseExpression xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.2"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.3"/>
+ </argument>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.1"/>
+ </argument>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.3"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.1"/>
+ </argument>
+ </thenExpression>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.2"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.3"/>
+ </argument>
+ </thenExpression>
+ </elseExpression>
+ <thenExpression xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Association"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.0/@guardPattern/@variable.3"/>
+ </thenExpression>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.referenced">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.1/@guardPattern/@variable.2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AssociationToForeignKey.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.1/@guardPattern/@variable.1"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AssociationToForeignKey"
+ referredVariable="#//@nestedPackage.0/@rule.11/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.classPrimitiveAttributes_LM"
+ name="classPrimitiveAttributes_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="false" isEnforceable="false"
+ typedModel="#//@nestedPackage.0/@modelParameter.0">
+ <guardPattern>
+ <variable name="t" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ <variable name="c" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable name="a" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isEnforceable="true" typedModel="#//@nestedPackage.0/@modelParameter.2">
+ <guardPattern>
+ <variable name="fao" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ <variable name="p2n" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable name="fa" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#//@nestedPackage.0/@rule.12/@domain.1/@guardPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.12/@domain.0/@guardPattern/@variable.1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.primitive">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#//@nestedPackage.0/@rule.12/@domain.1/@guardPattern/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#//@nestedPackage.0/@rule.12/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.12/@domain.0/@guardPattern/@variable.2"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.12/@domain.0/@guardPattern/@variable.1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.12/@domain.0/@guardPattern/@variable.2"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#//@nestedPackage.0/@rule.12/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.12/@domain.0/@guardPattern/@variable.2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#//@nestedPackage.0/@rule.12/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <value xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.3"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <item xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#//@nestedPackage.0/@rule.12/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </part>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#//@nestedPackage.0/@rule.12/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.12/@domain.0/@guardPattern/@variable.2"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#//@nestedPackage.0/@rule.12/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#//@nestedPackage.0/@rule.12/@domain.1/@guardPattern/@variable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#//@nestedPackage.0/@rule.12/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#//@nestedPackage.0/@rule.12/@domain.1/@guardPattern/@variable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#//@nestedPackage.0/@rule.12/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.12/@domain.0/@guardPattern/@variable.2"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#//@nestedPackage.0/@rule.12/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.12/@domain.0/@guardPattern/@variable.2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#//@nestedPackage.0/@rule.12/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.12/@domain.0/@guardPattern/@variable.2"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#//@nestedPackage.0/@rule.12/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AttributeToColumn.type">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#//@nestedPackage.0/@rule.12/@domain.1/@guardPattern/@variable.1"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#//@nestedPackage.0/@rule.12/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.classComplexAttributes_LM" name="classComplexAttributes_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="false" isEnforceable="false"
+ typedModel="#//@nestedPackage.0/@modelParameter.0">
+ <guardPattern>
+ <variable name="t" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable name="c" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable name="a" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isEnforceable="true" typedModel="#//@nestedPackage.0/@modelParameter.2">
+ <guardPattern>
+ <variable name="fao" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable name="fa" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.umlClass">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#//@nestedPackage.0/@rule.13/@domain.1/@guardPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.13/@domain.0/@guardPattern/@variable.1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.13/@domain.0/@guardPattern/@variable.2"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.13/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.13/@domain.0/@guardPattern/@variable.2"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.13/@domain.0/@guardPattern/@variable.1"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.13/@domain.0/@guardPattern/@variable.2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#//@nestedPackage.0/@rule.13/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#//@nestedPackage.0/@rule.13/@domain.1/@guardPattern/@variable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#//@nestedPackage.0/@rule.13/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.13/@domain.0/@guardPattern/@variable.2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#//@nestedPackage.0/@rule.13/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.13/@domain.0/@guardPattern/@variable.2"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#//@nestedPackage.0/@rule.13/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <value xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.4"
+ implicit="true" referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Set.collect..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.5"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttributeOwner.fromAttributes">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#//@nestedPackage.0/@rule.13/@domain.1/@guardPattern/@variable.0"/>
+ </source>
+ <body xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.3"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" referredVariable="#//@nestedPackage.0/@rule.13/@bottomPattern/@assignment.4/@value/@iterator.0"/>
+ </body>
+ <iterator name="1_" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Set.collect..T"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#//@nestedPackage.0/@rule.13/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.13/@domain.0/@guardPattern/@variable.2"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#//@nestedPackage.0/@rule.13/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#//@nestedPackage.0/@rule.13/@domain.1/@guardPattern/@variable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#//@nestedPackage.0/@rule.13/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.13/@domain.0/@guardPattern/@variable.2"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#//@nestedPackage.0/@rule.13/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.complexAttributePrimitiveAttributes_LM"
+ name="complexAttributePrimitiveAttributes_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="false" isEnforceable="false"
+ typedModel="#//@nestedPackage.0/@modelParameter.0">
+ <guardPattern>
+ <variable name="ca" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ <variable name="c" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable name="t" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"/>
+ <variable name="a" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isEnforceable="true" typedModel="#//@nestedPackage.0/@modelParameter.2">
+ <guardPattern>
+ <variable name="fao" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"/>
+ <variable name="p2n" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable name="fa" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.primitive">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#//@nestedPackage.0/@rule.14/@domain.1/@guardPattern/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#//@nestedPackage.0/@rule.14/@domain.0/@guardPattern/@variable.2"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#//@nestedPackage.0/@rule.14/@domain.1/@guardPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.14/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.14/@domain.0/@guardPattern/@variable.3"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.PrimitiveDataType"
+ referredVariable="#//@nestedPackage.0/@rule.14/@domain.0/@guardPattern/@variable.2"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.14/@domain.0/@guardPattern/@variable.3"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.14/@domain.0/@guardPattern/@variable.1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.14/@domain.0/@guardPattern/@variable.3"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.14/@domain.0/@guardPattern/@variable.1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.14/@domain.0/@guardPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.14/@domain.0/@guardPattern/@variable.1"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.14/@domain.0/@guardPattern/@variable.3"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#//@nestedPackage.0/@rule.14/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#//@nestedPackage.0/@rule.14/@domain.1/@guardPattern/@variable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#//@nestedPackage.0/@rule.14/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#//@nestedPackage.0/@rule.14/@domain.1/@guardPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.14/@domain.0/@guardPattern/@variable.3"/>
+ </argument>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#//@nestedPackage.0/@rule.14/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.14/@domain.0/@guardPattern/@variable.3"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#//@nestedPackage.0/@rule.14/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.14/@domain.0/@guardPattern/@variable.3"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#//@nestedPackage.0/@rule.14/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#//@nestedPackage.0/@rule.14/@domain.1/@guardPattern/@variable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#//@nestedPackage.0/@rule.14/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AttributeToColumn.type">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#//@nestedPackage.0/@rule.14/@domain.1/@guardPattern/@variable.1"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#//@nestedPackage.0/@rule.14/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.14/@domain.0/@guardPattern/@variable.3"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#//@nestedPackage.0/@rule.14/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <value xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.3"
+ kind="Set">
+ <part xsi:type="pivot:CollectionItem" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <item xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#//@nestedPackage.0/@rule.14/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </part>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#//@nestedPackage.0/@rule.14/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.complexAttributeComplexAttributes_LM"
+ name="complexAttributeComplexAttributes_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="uml" isCheckable="false" isEnforceable="false"
+ typedModel="#//@nestedPackage.0/@modelParameter.0">
+ <guardPattern>
+ <variable name="ca" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ <variable name="c" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable name="t" type="SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <variable name="a" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isEnforceable="true" typedModel="#//@nestedPackage.0/@modelParameter.2">
+ <guardPattern>
+ <variable name="fao" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable name="fa" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#//@nestedPackage.0/@rule.15/@domain.1/@guardPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.15/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.15/@domain.0/@guardPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.15/@domain.0/@guardPattern/@variable.1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.15/@domain.0/@guardPattern/@variable.3"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.15/@domain.0/@guardPattern/@variable.2"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.15/@domain.0/@guardPattern/@variable.3"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.15/@domain.0/@guardPattern/@variable.1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.15/@domain.0/@guardPattern/@variable.3"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.15/@domain.0/@guardPattern/@variable.1"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.15/@domain.0/@guardPattern/@variable.3"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#//@nestedPackage.0/@rule.15/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.15/@domain.0/@guardPattern/@variable.3"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#//@nestedPackage.0/@rule.15/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.attribute">
+ <value xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.15/@domain.0/@guardPattern/@variable.3"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#//@nestedPackage.0/@rule.15/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <value xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.4"
+ implicit="true" referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Set.collect..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.5"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttributeOwner.fromAttributes">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#//@nestedPackage.0/@rule.15/@domain.1/@guardPattern/@variable.0"/>
+ </source>
+ <body xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.3"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" referredVariable="#//@nestedPackage.0/@rule.15/@bottomPattern/@assignment.3/@value/@iterator.0"/>
+ </body>
+ <iterator name="1_" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Set.collect..T"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#//@nestedPackage.0/@rule.15/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.15/@domain.0/@guardPattern/@variable.3"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#//@nestedPackage.0/@rule.15/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#//@nestedPackage.0/@rule.15/@domain.1/@guardPattern/@variable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#//@nestedPackage.0/@rule.15/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.name">
+ <value xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:OperationCallExp" name="+" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%43%..ocl.String">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.NonLeafAttribute"
+ referredVariable="#//@nestedPackage.0/@rule.15/@domain.1/@guardPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:StringLiteralExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ stringSymbol="_"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.15/@domain.0/@guardPattern/@variable.3"/>
+ </argument>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#//@nestedPackage.0/@rule.15/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <value xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredVariable="#//@nestedPackage.0/@rule.15/@domain.1/@guardPattern/@variable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ referredVariable="#//@nestedPackage.0/@rule.15/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.attributeColumns_MR" name="attributeColumns_MR">
+ <domain xsi:type="qvtcb:CoreDomain" name="rdbms" isCheckable="false" isEnforceable="true"
+ typedModel="#//@nestedPackage.0/@modelParameter.1">
+ <guardPattern>
+ <variable name="t" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"/>
+ <variable name="ct" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable name="c" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isEnforceable="false" typedModel="#//@nestedPackage.0/@modelParameter.2">
+ <guardPattern>
+ <variable name="c2t" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"/>
+ <variable name="p2n" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"/>
+ <variable name="a2c" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ClassToTable.table">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#//@nestedPackage.0/@rule.16/@domain.1/@guardPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#//@nestedPackage.0/@rule.16/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.PrimitiveToName.typeName">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#//@nestedPackage.0/@rule.16/@domain.1/@guardPattern/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.16/@domain.0/@guardPattern/@variable.1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttributeOwner"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.owner">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#//@nestedPackage.0/@rule.16/@domain.1/@guardPattern/@variable.2"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#//@nestedPackage.0/@rule.16/@domain.1/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.includes..ocl.OclAny">
+ <source xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.4"
+ implicit="true" referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.Set.collect..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.5"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttributeOwner.fromAttributes">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.ClassToTable"
+ referredVariable="#//@nestedPackage.0/@rule.16/@domain.1/@guardPattern/@variable.0"/>
+ </source>
+ <body xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.3"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.leafs">
+ <source xsi:type="pivot:VariableExp" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" referredVariable="#//@nestedPackage.0/@rule.16/@guardPattern/@predicate.3/@conditionExpression/@source/@iterator.0"/>
+ </body>
+ <iterator name="1_" isRequired="false" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ implicit="true" representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.Set.collect..T"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#//@nestedPackage.0/@rule.16/@domain.1/@guardPattern/@variable.2"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.AttributeToColumn.type">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#//@nestedPackage.0/@rule.16/@domain.1/@guardPattern/@variable.2"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.PrimitiveToName"
+ referredVariable="#//@nestedPackage.0/@rule.16/@domain.1/@guardPattern/@variable.1"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.name">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#//@nestedPackage.0/@rule.16/@domain.1/@guardPattern/@variable.2"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#//@nestedPackage.0/@rule.16/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.ToColumn.column">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#//@nestedPackage.0/@rule.16/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#//@nestedPackage.0/@rule.16/@domain.1/@guardPattern/@variable.2"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.RModelElement.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="UMLtoRDBMS.ecore.oclas#p.umltordbms.FromAttribute.kind">
+ <source xsi:type="pivot:VariableExp" type="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ referredVariable="#//@nestedPackage.0/@rule.16/@domain.1/@guardPattern/@variable.2"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#//@nestedPackage.0/@rule.16/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Table"
+ referredVariable="#//@nestedPackage.0/@rule.16/@domain.0/@guardPattern/@variable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#//@nestedPackage.0/@rule.16/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleRDBMS.ecore.oclas#p.simplerdbms.Column.type">
+ <value xsi:type="pivot:VariableExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.16/@domain.0/@guardPattern/@variable.1"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ referredVariable="#//@nestedPackage.0/@rule.16/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.umlRdbms.__base__" name="__base__">
+ <mappingCall referredMapping="#m.umlRdbms.packageToSchema_LM"/>
+ <mappingCall referredMapping="#m.umlRdbms.packageToSchema_MR"/>
+ <mappingCall referredMapping="#m.umlRdbms.classToTable_LM"/>
+ <mappingCall referredMapping="#m.umlRdbms.classToTable_MR"/>
+ <mappingCall referredMapping="#m.umlRdbms.associationToForeignKey_LM"/>
+ <mappingCall referredMapping="#m.umlRdbms.associationToForeignKey_MR"/>
+ <mappingCall referredMapping="#m.umlRdbms.classPrimitiveAttributes_LM"/>
+ <mappingCall referredMapping="#m.umlRdbms.classComplexAttributes_LM"/>
+ <mappingCall referredMapping="#m.umlRdbms.complexAttributeComplexAttributes_LM"/>
+ <mappingCall referredMapping="#m.umlRdbms.complexAttributePrimitiveAttributes_LM"/>
+ <mappingCall referredMapping="#m.umlRdbms.integerToNumber_LM"/>
+ <mappingCall referredMapping="#m.umlRdbms.integerToNumber_MR"/>
+ <mappingCall referredMapping="#m.umlRdbms.booleanToBoolean_LM"/>
+ <mappingCall referredMapping="#m.umlRdbms.booleanToBoolean_MR"/>
+ <mappingCall referredMapping="#m.umlRdbms.stringToVarchar_LM"/>
+ <mappingCall referredMapping="#m.umlRdbms.stringToVarchar_MR"/>
+ <mappingCall referredMapping="#m.umlRdbms.attributeColumns_MR"/>
+ </rule>
+ </nestedPackage>
+ <nestedPackage xmi:id="P.$$" name="$$" nsPrefix="orphanage" nsURI="http://www.eclipse.org/ocl/3.1.0/orphanage">
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.6"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:OrderedSetType" name="OrderedSet" superClass="#//@nestedPackage.1/@ownedType.7 #//@nestedPackage.1/@ownedType.8"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedSet">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedSetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.9"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.10"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:BagType" name="Bag" superClass="#//@nestedPackage.1/@ownedType.11"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Bag">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..BagT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.12"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.13"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.14"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.14"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.15"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.11"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.AttributeToColumn"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.16"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Key">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Key"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.Column">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.Column"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class SimpleRDBMS.ecore.oclas#T.simplerdbms.ForeignKey"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class UMLtoRDBMS.ecore.oclas#T.umltordbms.FromAttribute"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ </nestedPackage>
+</qvti:ImperativeModel>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/VerySimpleUML.ecore b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/VerySimpleUML.ecore
new file mode 100644
index 000000000..d7409ea7a
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/VerySimpleUML.ecore
@@ -0,0 +1,9 @@
+<?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="simpleuml" nsURI="http://www.eclipse.org/qvt/examples/0.1/simpleUML"
+ nsPrefix="simpleuml">
+ <eClassifiers xsi:type="ecore:EClass" name="Package">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="names" upperBound="-1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/Graph2Graph.xmi b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/Graph2Graph.xmi
new file mode 100644
index 000000000..6d499ded7
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/Graph2Graph.xmi
@@ -0,0 +1,195 @@
+<?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:simplegraph2graph="http://http://www.eclipse.org/qvt/examples/0.1/SimpleGraph2Graph" xsi:schemaLocation="http://http://www.eclipse.org/qvt/examples/0.1/SimpleGraph2Graph SimpleGraph2Graph.ecore">
+ <simplegraph2graph:Graph2Graph name="graphone">
+ <graph1 href="SimpleGraph.xmi#/"/>
+ <graph2 href="SimpleGraphLower.xmi#/"/>
+ <element2Element xsi:type="simplegraph2graph:Node2Node" label="stansted">
+ <node1 href="SimpleGraph.xmi#//@element.2"/>
+ <node2 href="SimpleGraphLower.xmi#//@element.1"/>
+ </element2Element>
+ <element2Element xsi:type="simplegraph2graph:Node2Node" label="munich">
+ <node1 href="SimpleGraph.xmi#//@element.5"/>
+ <node2 href="SimpleGraphLower.xmi#//@element.0"/>
+ </element2Element>
+ <element2Element xsi:type="simplegraph2graph:Node2Node" label="stuttgart">
+ <node1 href="SimpleGraph.xmi#//@element.9"/>
+ <node2 href="SimpleGraphLower.xmi#//@element.2"/>
+ </element2Element>
+ <element2Element xsi:type="simplegraph2graph:Node2Node" label="innsbruck">
+ <node1 href="SimpleGraph.xmi#//@element.7"/>
+ <node2 href="SimpleGraphLower.xmi#//@element.3"/>
+ </element2Element>
+ <element2Element xsi:type="simplegraph2graph:Node2Node" label="york">
+ <node1 href="SimpleGraph.xmi#//@element.0"/>
+ <node2 href="SimpleGraphLower.xmi#//@element.4"/>
+ </element2Element>
+ <element2Element xsi:type="simplegraph2graph:Edge2Edge" target="/0/@element2Element.0" source="/0/@element2Element.4">
+ <edge1 href="SimpleGraph.xmi#//@element.1"/>
+ <edge2 href="SimpleGraphLower.xmi#//@element.5"/>
+ </element2Element>
+ <element2Element xsi:type="simplegraph2graph:Edge2Edge" target="/0/@element2Element.4" source="/0/@element2Element.0">
+ <edge1 href="SimpleGraph.xmi#//@element.3"/>
+ <edge2 href="SimpleGraphLower.xmi#//@element.6"/>
+ </element2Element>
+ <element2Element xsi:type="simplegraph2graph:Edge2Edge" target="/0/@element2Element.0" source="/0/@element2Element.2">
+ <edge1 href="SimpleGraph.xmi#//@element.10"/>
+ <edge2 href="SimpleGraphLower.xmi#//@element.8"/>
+ </element2Element>
+ <element2Element xsi:type="simplegraph2graph:Edge2Edge" target="/0/@element2Element.3" source="/0/@element2Element.1">
+ <edge1 href="SimpleGraph.xmi#//@element.6"/>
+ <edge2 href="SimpleGraphLower.xmi#//@element.10"/>
+ </element2Element>
+ <element2Element xsi:type="simplegraph2graph:Edge2Edge" target="/0/@element2Element.1" source="/0/@element2Element.0">
+ <edge1 href="SimpleGraph.xmi#//@element.4"/>
+ <edge2 href="SimpleGraphLower.xmi#//@element.9"/>
+ </element2Element>
+ <element2Element xsi:type="simplegraph2graph:Edge2Edge" target="/0/@element2Element.2" source="/0/@element2Element.3">
+ <edge1 href="SimpleGraph.xmi#//@element.8"/>
+ <edge2 href="SimpleGraphLower.xmi#//@element.7"/>
+ </element2Element>
+ </simplegraph2graph:Graph2Graph>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+ <simplegraph2graph:Edge2Edge/>
+</xmi:XMI>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/SimpleGraph.ecore b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/SimpleGraph.ecore
new file mode 100644
index 000000000..2b0e535f9
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/SimpleGraph.ecore
@@ -0,0 +1,27 @@
+<?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="simplegraph" nsURI="http://www.eclipse.org/qvt/examples/0.1/SimpleGraph"
+ nsPrefix="simplegraph">
+ <eClassifiers xsi:type="ecore:EClass" name="Node" eSuperTypes="#//Element">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="incoming" upperBound="-1"
+ eType="#//Edge" eOpposite="#//Edge/target"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="outgoing" upperBound="-1"
+ eType="#//Edge" eOpposite="#//Edge/source"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="label" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Edge" eSuperTypes="#//Element">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="target" eType="#//Node"
+ eOpposite="#//Node/incoming"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="source" eType="#//Node"
+ eOpposite="#//Node/outgoing"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Element" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="graph" lowerBound="1" eType="#//Graph"
+ eOpposite="#//Graph/element"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Graph">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="element" upperBound="-1"
+ eType="#//Element" containment="true" eOpposite="#//Element/graph"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/SimpleGraph.xmi b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/SimpleGraph.xmi
new file mode 100644
index 000000000..4526836b5
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/SimpleGraph.xmi
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="ASCII"?>
+<simplegraph:Graph xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:simplegraph="http://www.eclipse.org/qvt/examples/0.1/SimpleGraph" xsi:schemaLocation="http://www.eclipse.org/qvt/examples/0.1/SimpleGraph SimpleGraph.ecore" name="GraphOne">
+ <element xsi:type="simplegraph:Node" incoming="//@element.3" outgoing="//@element.1" label="York"/>
+ <element xsi:type="simplegraph:Edge" target="//@element.2" source="//@element.0"/>
+ <element xsi:type="simplegraph:Node" incoming="//@element.1 //@element.10" outgoing="//@element.4 //@element.3" label="Stansted"/>
+ <element xsi:type="simplegraph:Edge" target="//@element.0" source="//@element.2"/>
+ <element xsi:type="simplegraph:Edge" target="//@element.5" source="//@element.2"/>
+ <element xsi:type="simplegraph:Node" incoming="//@element.4" outgoing="//@element.6" label="Munich"/>
+ <element xsi:type="simplegraph:Edge" target="//@element.7" source="//@element.5"/>
+ <element xsi:type="simplegraph:Node" incoming="//@element.6" outgoing="//@element.8" label="Innsbruck"/>
+ <element xsi:type="simplegraph:Edge" target="//@element.9" source="//@element.7"/>
+ <element xsi:type="simplegraph:Node" incoming="//@element.8" outgoing="//@element.10" label="Stuttgart"/>
+ <element xsi:type="simplegraph:Edge" target="//@element.2" source="//@element.9"/>
+</simplegraph:Graph>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/SimpleGraph2Graph.ecore b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/SimpleGraph2Graph.ecore
new file mode 100644
index 000000000..28f081cc6
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/SimpleGraph2Graph.ecore
@@ -0,0 +1,27 @@
+<?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="simplegraph2graph" nsURI="http://http://www.eclipse.org/qvt/examples/0.1/SimpleGraph2Graph"
+ nsPrefix="simplegraph2graph">
+ <eClassifiers xsi:type="ecore:EClass" name="Graph2Graph">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="graph1" eType="ecore:EClass SimpleGraph.ecore#//Graph"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="graph2" eType="ecore:EClass SimpleGraph.ecore#//Graph"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="element2Element" upperBound="-1"
+ eType="#//Element2Element" containment="true" eOpposite="#//Element2Element/owner"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Element2Element" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="owner" eType="#//Graph2Graph"
+ eOpposite="#//Graph2Graph/element2Element"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Edge2Edge" eSuperTypes="#//Element2Element">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="edge1" eType="ecore:EClass SimpleGraph.ecore#//Edge"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="edge2" eType="ecore:EClass SimpleGraph.ecore#//Edge"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="target" eType="#//Node2Node"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="source" eType="#//Node2Node"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Node2Node" eSuperTypes="#//Element2Element">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="node1" eType="ecore:EClass SimpleGraph.ecore#//Node"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="node2" eType="ecore:EClass SimpleGraph.ecore#//Node"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="label" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/SimpleGraph2GraphContainmentTree.xmi b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/SimpleGraph2GraphContainmentTree.xmi
new file mode 100644
index 000000000..a1702cb58
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/SimpleGraph2GraphContainmentTree.xmi
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/SimpleGraphContainmentTree.xmi b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/SimpleGraphContainmentTree.xmi
new file mode 100644
index 000000000..93d2f641e
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/SimpleGraphContainmentTree.xmi
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:eCoreContainemntTree="http://www.eclipse.org/qvt/examples/0.1/ECoreContainemntTree">
+ <eCoreContainemntTree:Node EClassName="simplegraph" children="/1"/>
+ <eCoreContainemntTree:Node EClassName="Graph" parent="/0" children="/2 /3"/>
+ <eCoreContainemntTree:Node EClassName="Node" parent="/1">
+ <superTypes>Element</superTypes>
+ </eCoreContainemntTree:Node>
+ <eCoreContainemntTree:Node EClassName="Edge" parent="/1">
+ <superTypes>Element</superTypes>
+ </eCoreContainemntTree:Node>
+ <eCoreContainemntTree:Node EClassName="simplegraph" children="/5"/>
+ <eCoreContainemntTree:Node EClassName="Graph" parent="/4" children="/6 /7"/>
+ <eCoreContainemntTree:Node EClassName="Node" parent="/5">
+ <superTypes>Element</superTypes>
+ </eCoreContainemntTree:Node>
+ <eCoreContainemntTree:Node EClassName="Edge" parent="/5">
+ <superTypes>Element</superTypes>
+ </eCoreContainemntTree:Node>
+</xmi:XMI>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/SimpleGraphLower.xmi b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/SimpleGraphLower.xmi
new file mode 100644
index 000000000..0c623e86c
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/SimpleGraphLower.xmi
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="ASCII"?>
+<simplegraph:Graph xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:simplegraph="http://www.eclipse.org/qvt/examples/0.1/SimpleGraph" xsi:schemaLocation="http://www.eclipse.org/qvt/examples/0.1/SimpleGraph SimpleGraph.ecore" name="graphone">
+ <element xsi:type="simplegraph:Node" incoming="//@element.9" outgoing="//@element.10" label="munich"/>
+ <element xsi:type="simplegraph:Node" incoming="//@element.5 //@element.8" outgoing="//@element.6 //@element.9" label="stansted"/>
+ <element xsi:type="simplegraph:Node" incoming="//@element.7" outgoing="//@element.8" label="stuttgart"/>
+ <element xsi:type="simplegraph:Node" incoming="//@element.10" outgoing="//@element.7" label="innsbruck"/>
+ <element xsi:type="simplegraph:Node" incoming="//@element.6" outgoing="//@element.5" label="york"/>
+ <element xsi:type="simplegraph:Edge" target="//@element.1" source="//@element.4"/>
+ <element xsi:type="simplegraph:Edge" target="//@element.4" source="//@element.1"/>
+ <element xsi:type="simplegraph:Edge" target="//@element.2" source="//@element.3"/>
+ <element xsi:type="simplegraph:Edge" target="//@element.1" source="//@element.2"/>
+ <element xsi:type="simplegraph:Edge" target="//@element.0" source="//@element.1"/>
+ <element xsi:type="simplegraph:Edge" target="//@element.3" source="//@element.0"/>
+</simplegraph:Graph>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/SimpleGraphLowerValidate.xmi b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/SimpleGraphLowerValidate.xmi
new file mode 100644
index 000000000..a9437a2ca
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/SimpleGraphLowerValidate.xmi
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="ASCII"?>
+<simplegraph:Graph
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:simplegraph="http://http://www.eclipse.org/qvt/examples/0.1/SimpleGraph"
+ xsi:schemaLocation="http://http://www.eclipse.org/qvt/examples/0.1/SimpleGraph SimpleGraph.ecore"
+ name="graphone">
+ <element xsi:type="simplegraph:Node"
+ incoming="//@element.3"
+ outgoing="//@element.1"
+ label="york"/>
+ <element xsi:type="simplegraph:Edge"
+ target="//@element.2"
+ source="//@element.0"/>
+ <element xsi:type="simplegraph:Node"
+ incoming="//@element.1 //@element.10"
+ outgoing="//@element.4 //@element.3"
+ label="stansted"/>
+ <element xsi:type="simplegraph:Edge"
+ target="//@element.0"
+ source="//@element.2"/>
+ <element xsi:type="simplegraph:Edge"
+ target="//@element.5"
+ source="//@element.2"/>
+ <element xsi:type="simplegraph:Node"
+ incoming="//@element.4"
+ outgoing="//@element.6"
+ label="munich"/>
+ <element xsi:type="simplegraph:Edge"
+ target="//@element.7"
+ source="//@element.5"/>
+ <element xsi:type="simplegraph:Node"
+ incoming="//@element.6"
+ outgoing="//@element.8"
+ label="innsbruck"/>
+ <element xsi:type="simplegraph:Edge"
+ target="//@element.9"
+ source="//@element.7"/>
+ <element xsi:type="simplegraph:Node"
+ incoming="//@element.8"
+ outgoing="//@element.10"
+ label="stuttgart"/>
+ <element xsi:type="simplegraph:Edge"
+ target="//@element.2"
+ source="//@element.9"/>
+</simplegraph:Graph>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower QvtuToQvti.launch b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower QvtuToQvti.launch
new file mode 100644
index 000000000..39f994a5a
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower QvtuToQvti.launch
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntLaunchConfigurationType">
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.qvtd.build.etl"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+</listAttribute>
+<listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry containerPath=&quot;org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5&quot; path=&quot;1&quot; type=&quot;4&quot;/&gt;&#13;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry id=&quot;org.eclipse.ant.ui.classpathentry.antHome&quot;&gt;&#13;&#10;&lt;memento default=&quot;true&quot;/&gt;&#13;&#10;&lt;/runtimeClasspathEntry&gt;&#13;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/org.eclipse.qvtd.build.etl/org.eclipse.qvtd.build.ant.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>
+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry id=&quot;org.eclipse.ant.ui.classpathentry.extraClasspathEntries&quot;&gt;&#13;&#10;&lt;memento/&gt;&#13;&#10;&lt;/runtimeClasspathEntry&gt;&#13;&#10;"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.qvtd.build.etl"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<mapAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTIES">
+<mapEntry key="configuration" value="UpperToLowerConfig.xmi"/>
+<mapEntry key="eclipse.pdebuild.home" value="/C:/Eclipse Kepler QVT/plugins/org.eclipse.pde.build_3.8.100.v20130514-1028/./"/>
+<mapEntry key="eclipse.pdebuild.scripts" value="/C:/Eclipse Kepler QVT/plugins/org.eclipse.pde.build_3.8.100.v20130514-1028/scripts/"/>
+<mapEntry key="eclipse.pdebuild.templates" value="/C:/Eclipse Kepler QVT/plugins/org.eclipse.pde.build_3.8.100.v20130514-1028/templates/"/>
+<mapEntry key="name" value="UpperToLower"/>
+</mapAttribute>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/mtc/QvtuToQvtiMtc.xml}"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/UpperToLower}"/>
+<stringAttribute key="process_factory_id" value="org.eclipse.ant.ui.remoteAntProcessFactory"/>
+</launchConfiguration>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower.qvtc b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower.qvtc
new file mode 100644
index 000000000..55a7aa7b4
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower.qvtc
@@ -0,0 +1,95 @@
+import SimpleGraph : 'SimpleGraph.ecore'::simplegraph;
+import SimpleGraph2Graph : 'SimpleGraph2Graph.ecore'::simplegraph2graph;
+
+transformation UpperToLower {
+ upperGraph imports SimpleGraph;
+ lowerGraph imports SimpleGraph;
+ imports SimpleGraph2Graph;
+}
+
+/*
+ * Don't use realize keywords on the two initial domains indicates that both models must exist and at least have the root node defined?
+ */
+map graph2graph in UpperToLower {
+ check enforce upperGraph() {
+ realize g1:Graph |
+ }
+ enforce lowerGraph() {
+ /* Enforced domains should at least have one realized variable?*/
+ realize g2:Graph |
+ }
+ where () {
+ /* Although in the example is not realized, all middle model variables should be realized
+ * or does the middle model is also expected to have at least the initial element? */
+ realize g2g:Graph2Graph |
+ g2g.graph1 := g1;
+ g2g.graph2 := g2;
+ }
+ map {
+ where () {
+ g2g.name := g1.name.toLowerCase();
+ g2g.name := g2.name.toUpperCase();
+ g1.name := g2g.name;
+ g2.name := g2g.name;
+ }
+ }
+}
+
+map node2node in UpperToLower {
+ check enforce upperGraph(g1:Graph |) {
+ realize n1:Node |
+ n1.graph := g1;
+ }
+ enforce lowerGraph(g2:Graph |) {
+ realize n2:Node |
+ n2.graph := g2;
+ }
+ where (g2g:Graph2Graph |
+ g2g.graph1 = g1;
+ g2g.graph2 = g2;) {
+ realize n2n:Node2Node |
+ n2n.owner := g2g;
+ n2n.node1 := n1;
+ n2n.node2 := n2;
+ }
+ map {
+ where () {
+ n2n.label := n1.label.toLowerCase();
+ n2n.label := n2.label.toUpperCase();
+ n1.label := n2n.label;
+ n2.label := n2n.label;
+ }
+ }
+}
+
+map edge2edge in UpperToLower {
+ enforce upperGraph(g1:Graph, sn1:Node, tn1:Node |) {
+ realize e1:Edge |
+ e1.graph := g1;
+ e1.source := sn1;
+ e1.target := tn1;
+ }
+ enforce lowerGraph(g2:Graph, sn2:Node, tn2:Node |) {
+ realize e2:Edge |
+ e2.graph := g2;
+ e2.source := sn2;
+ e2.target := tn2;
+ }
+ where (g2g:Graph2Graph, sn2n:Node2Node, tn2n:Node2Node |
+ g2g.graph1 = g1;
+ g2g.graph2 = g2;
+ sn2n.owner = g2g;
+ sn2n.node1 = sn1;
+ sn2n.node2 = sn2;
+ tn2n.node1 = tn1;
+ tn2n.node2 = tn2;
+ ) {
+ realize e2e:Edge2Edge |
+ e2e.owner := g2g;
+ e2e.edge1 := e1;
+ e2e.edge2 := e2;
+ e2e.source := sn2n;
+ e2e.target := tn2n;
+
+ }
+} \ No newline at end of file
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower.qvtcas b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower.qvtcas
new file mode 100644
index 000000000..0cd7dbe4d
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower.qvtcas
@@ -0,0 +1,423 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<qvtc:CoreModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:pivot="http://www.eclipse.org/ocl/3.1.0/Pivot" xmlns:qvtb="http://www.eclipse.org/qvt/0.9/QVTbase"
+ xmlns:qvtc="http://www.eclipse.org/qvt/0.9/QVTcore" xmlns:qvtcb="http://www.eclipse.org/qvt/0.9/QVTcoreBase"
+ xsi:schemaLocation="http://www.eclipse.org/ocl/3.1.0/Pivot java://org.eclipse.ocl.examples.pivot.PivotPackage http://www.eclipse.org/qvt/0.9/QVTbase java://org.eclipse.qvtd.pivot.qvtbase.QVTbasePackage http://www.eclipse.org/qvt/0.9/QVTcore java://org.eclipse.qvtd.pivot.qvtcore.QVTcorePackage http://www.eclipse.org/qvt/0.9/QVTcoreBase java://org.eclipse.qvtd.pivot.qvtcorebase.QVTcoreBasePackage"
+ name="UpperToLower.qvtc" externalURI="platform:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower.qvtc">
+ <nestedPackage xsi:type="qvtb:Transformation" xmi:id="T.UpperToLower" name="UpperToLower"
+ superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclElement">
+ <modelParameter xmi:id="qT.UpperToLower.upperGraph" name="upperGraph" usedPackage="SimpleGraph.ecore.oclas#P.simplegraph"/>
+ <modelParameter xmi:id="qT.UpperToLower.lowerGraph" name="lowerGraph" usedPackage="SimpleGraph.ecore.oclas#P.simplegraph"/>
+ <modelParameter usedPackage="SimpleGraph2Graph.ecore.oclas#P.simplegraph2graph"/>
+ <rule xsi:type="qvtc:Mapping" name="graph2graph">
+ <ownedComment body="Don't use realize keywords on the two initial domains indicates that both models must exist and at least have the root node defined?"/>
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="true" isEnforceable="true"
+ typedModel="#qT.UpperToLower.upperGraph">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.UpperToLower.graph2graph.upperGraph.bottom.g1"
+ name="g1" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.UpperToLower.lowerGraph">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.UpperToLower.graph2graph.lowerGraph.bottom.g2"
+ name="g2" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph">
+ <ownedComment body="Enforced domains should at least have one realized variable?"/>
+ </realizedVariable>
+ </bottomPattern>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph1">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.graph2graph.upperGraph.bottom.g1"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.graph2graph.bottom.g2g"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph2">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.graph2graph.lowerGraph.bottom.g2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.graph2graph.bottom.g2g"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.UpperToLower.graph2graph.bottom.g2g" name="g2g"
+ type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph">
+ <ownedComment body="Although in the example is not realized, all middle model variables should be realized&#xA;or does the middle model is also expected to have at least the initial element?"/>
+ </realizedVariable>
+ </bottomPattern>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.name">
+ <value xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.toLowerCase">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Graph.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.graph2graph.upperGraph.bottom.g1"/>
+ </source>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.graph2graph.bottom.g2g"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.name">
+ <value xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.toUpperCase">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Graph.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.graph2graph.lowerGraph.bottom.g2"/>
+ </source>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.graph2graph.bottom.g2g"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Graph.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.graph2graph.bottom.g2g"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.graph2graph.upperGraph.bottom.g1"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Graph.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.graph2graph.bottom.g2g"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.graph2graph.lowerGraph.bottom.g2"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="node2node">
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="true" isEnforceable="true"
+ typedModel="#qT.UpperToLower.upperGraph">
+ <guardPattern>
+ <variable xmi:id="qV.UpperToLower.node2node.upperGraph.guard.g1" name="g1"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Element.graph">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.node2node.upperGraph.guard.g1"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.node2node.upperGraph.bottom.n1"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.UpperToLower.node2node.upperGraph.bottom.n1"
+ name="n1" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.UpperToLower.lowerGraph">
+ <guardPattern>
+ <variable xmi:id="qV.UpperToLower.node2node.lowerGraph.guard.g2" name="g2"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Element.graph">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.node2node.lowerGraph.guard.g2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.node2node.lowerGraph.bottom.n2"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.UpperToLower.node2node.lowerGraph.bottom.n2"
+ name="n2" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph1">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.node2node.guard.g2g"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.node2node.upperGraph.guard.g1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph2">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.node2node.guard.g2g"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.node2node.lowerGraph.guard.g2"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.UpperToLower.node2node.guard.g2g" name="g2g" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Element2Element.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.node2node.guard.g2g"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.node2node.bottom.n2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.node1">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.node2node.upperGraph.bottom.n1"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.node2node.bottom.n2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.node2">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.node2node.lowerGraph.bottom.n2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.node2node.bottom.n2n"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.UpperToLower.node2node.bottom.n2n" name="n2n"
+ type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"/>
+ </bottomPattern>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.label">
+ <value xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.toLowerCase">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Node.label">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.node2node.upperGraph.bottom.n1"/>
+ </source>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.node2node.bottom.n2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.label">
+ <value xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.toUpperCase">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Node.label">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.node2node.lowerGraph.bottom.n2"/>
+ </source>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.node2node.bottom.n2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Node.label">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.label">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.node2node.bottom.n2n"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.node2node.upperGraph.bottom.n1"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Node.label">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.label">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.node2node.bottom.n2n"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.node2node.lowerGraph.bottom.n2"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="edge2edge">
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.UpperToLower.upperGraph">
+ <guardPattern>
+ <variable xmi:id="qV.UpperToLower.edge2edge.upperGraph.guard.g1" name="g1"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge.upperGraph.guard.sn1" name="sn1"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge.upperGraph.guard.tn1" name="tn1"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Element.graph">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.edge2edge.upperGraph.guard.g1"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.upperGraph.bottom.e1"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Edge.source">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge.upperGraph.guard.sn1"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.upperGraph.bottom.e1"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Edge.target">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge.upperGraph.guard.tn1"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.upperGraph.bottom.e1"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.UpperToLower.edge2edge.upperGraph.bottom.e1"
+ name="e1" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.UpperToLower.lowerGraph">
+ <guardPattern>
+ <variable xmi:id="qV.UpperToLower.edge2edge.lowerGraph.guard.g2" name="g2"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge.lowerGraph.guard.sn2" name="sn2"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge.lowerGraph.guard.tn2" name="tn2"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Element.graph">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.edge2edge.lowerGraph.guard.g2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.lowerGraph.bottom.e2"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Edge.source">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge.lowerGraph.guard.sn2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.lowerGraph.bottom.e2"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Edge.target">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge.lowerGraph.guard.tn2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.lowerGraph.bottom.e2"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.UpperToLower.edge2edge.lowerGraph.bottom.e2"
+ name="e2" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph1">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.edge2edge.guard.g2g"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.edge2edge.upperGraph.guard.g1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph2">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.edge2edge.guard.g2g"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.edge2edge.lowerGraph.guard.g2"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Element2Element.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge.guard.sn2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.edge2edge.guard.g2g"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.node1">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge.guard.sn2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge.upperGraph.guard.sn1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.node2">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge.guard.sn2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge.lowerGraph.guard.sn2"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.node1">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge.guard.tn2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge.upperGraph.guard.tn1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.node2">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge.guard.tn2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge.lowerGraph.guard.tn2"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.UpperToLower.edge2edge.guard.g2g" name="g2g" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge.guard.sn2n" name="sn2n" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge.guard.tn2n" name="tn2n" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Element2Element.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.edge2edge.guard.g2g"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.bottom.e2e"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Edge2Edge.edge1">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.upperGraph.bottom.e1"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.bottom.e2e"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Edge2Edge.edge2">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.lowerGraph.bottom.e2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.bottom.e2e"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Edge2Edge.source">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge.guard.sn2n"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.bottom.e2e"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Edge2Edge.target">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge.guard.tn2n"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.bottom.e2e"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.UpperToLower.edge2edge.bottom.e2e" name="e2e"
+ type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"/>
+ </bottomPattern>
+ </rule>
+ </nestedPackage>
+</qvtc:CoreModel>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower.qvtias b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower.qvtias
new file mode 100644
index 000000000..9d2509bef
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower.qvtias
@@ -0,0 +1,792 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<qvti:ImperativeModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:pivot="http://www.eclipse.org/ocl/3.1.0/Pivot" xmlns:qvtb="http://www.eclipse.org/qvt/0.9/QVTbase"
+ xmlns:qvtcb="http://www.eclipse.org/qvt/0.9/QVTcoreBase" xmlns:qvti="http://www.eclipse.org/qvt/0.9/QVTimperative"
+ xsi:schemaLocation="http://www.eclipse.org/ocl/3.1.0/Pivot java://org.eclipse.ocl.examples.pivot.PivotPackage http://www.eclipse.org/qvt/0.9/QVTbase java://org.eclipse.qvtd.pivot.qvtbase.QVTbasePackage http://www.eclipse.org/qvt/0.9/QVTcoreBase java://org.eclipse.qvtd.pivot.qvtcorebase.QVTcoreBasePackage http://www.eclipse.org/qvt/0.9/QVTimperative java://org.eclipse.qvtd.pivot.qvtimperative.QVTimperativePackage"
+ name="UpperToLower.qvti" externalURI="platform:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower.qvti">
+ <nestedPackage xsi:type="qvtb:Transformation" xmi:id="T.UpperToLower" name="UpperToLower">
+ <modelParameter xmi:id="qT.UpperToLower.upperGraph" name="upperGraph" usedPackage="SimpleGraph.ecore.oclas#P.simplegraph"/>
+ <modelParameter xmi:id="qT.UpperToLower.lowerGraph" name="lowerGraph" usedPackage="SimpleGraph.ecore.oclas#P.simplegraph"/>
+ <modelParameter xmi:id="qT.UpperToLower.middle" name="middle" usedPackage="SimpleGraph2Graph.ecore.oclas#P.simplegraph2graph"/>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.UpperToLower.graph2graph_MR" name="graph2graph_MR">
+ <domain xsi:type="qvtcb:CoreDomain" name="lowerGraph" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.UpperToLower.lowerGraph">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.UpperToLower.graph2graph_MR.lowerGraph.bottom.g2"
+ name="g2" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.UpperToLower.middle">
+ <guardPattern>
+ <variable xmi:id="qV.UpperToLower.graph2graph_MR.middle.guard.g2g" name="g2g"
+ type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Graph.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.graph2graph_MR.middle.guard.g2g"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.graph2graph_MR.lowerGraph.bottom.g2"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph2">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.graph2graph_MR.lowerGraph.bottom.g2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.graph2graph_MR.middle.guard.g2g"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.UpperToLower.graph2graph_LM" name="graph2graph_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="upperGraph" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.UpperToLower.upperGraph">
+ <guardPattern>
+ <variable xmi:id="qV.UpperToLower.graph2graph_LM.upperGraph.guard.g1" name="g1"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.UpperToLower.middle">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.UpperToLower.graph2graph_LM.middle.bottom.g2g"
+ name="g2g" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph1">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.graph2graph_LM.upperGraph.guard.g1"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.graph2graph_LM.middle.bottom.g2g"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.name">
+ <value xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.toLowerCase">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Graph.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.graph2graph_LM.upperGraph.guard.g1"/>
+ </source>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.graph2graph_LM.middle.bottom.g2g"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.UpperToLower.node2node_LM" name="node2node_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="upperGraph" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.UpperToLower.upperGraph">
+ <guardPattern>
+ <variable xmi:id="qV.UpperToLower.node2node_LM.upperGraph.guard.g1" name="g1"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"/>
+ <variable xmi:id="qV.UpperToLower.node2node_LM.upperGraph.guard.n1" name="n1"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.UpperToLower.middle">
+ <guardPattern>
+ <variable xmi:id="qV.UpperToLower.node2node_LM.middle.guard.g2g" name="g2g"
+ type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.UpperToLower.node2node_LM.middle.bottom.n2n"
+ name="n2n" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph1">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.node2node_LM.middle.guard.g2g"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.node2node_LM.upperGraph.guard.g1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Element.graph">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.node2node_LM.upperGraph.guard.n1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.node2node_LM.upperGraph.guard.g1"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.label">
+ <value xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.toLowerCase">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Node.label">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.node2node_LM.upperGraph.guard.n1"/>
+ </source>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.node2node_LM.middle.bottom.n2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.node1">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.node2node_LM.upperGraph.guard.n1"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.node2node_LM.middle.bottom.n2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Element2Element.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.node2node_LM.middle.guard.g2g"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.node2node_LM.middle.bottom.n2n"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.UpperToLower.node2node_MR" name="node2node_MR">
+ <domain xsi:type="qvtcb:CoreDomain" name="lowerGraph" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.UpperToLower.lowerGraph">
+ <guardPattern>
+ <variable xmi:id="qV.UpperToLower.node2node_MR.lowerGraph.guard.g2" name="g2"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.UpperToLower.node2node_MR.lowerGraph.bottom.n2"
+ name="n2" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.UpperToLower.middle">
+ <guardPattern>
+ <variable xmi:id="qV.UpperToLower.node2node_MR.middle.guard.g2g" name="g2g"
+ type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"/>
+ <variable xmi:id="qV.UpperToLower.node2node_MR.middle.guard.n2n" name="n2n"
+ type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph2">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.node2node_MR.middle.guard.g2g"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.node2node_MR.lowerGraph.guard.g2"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Element2Element.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.node2node_MR.middle.guard.n2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.node2node_MR.middle.guard.g2g"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Node.label">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.label">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.node2node_MR.middle.guard.n2n"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.node2node_MR.lowerGraph.bottom.n2"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.node2">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.node2node_MR.lowerGraph.bottom.n2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.node2node_MR.middle.guard.n2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Element.graph">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.node2node_MR.lowerGraph.guard.g2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.node2node_MR.lowerGraph.bottom.n2"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.UpperToLower.edge2edge_LM" name="edge2edge_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="upperGraph" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.UpperToLower.upperGraph">
+ <guardPattern>
+ <variable xmi:id="qV.UpperToLower.edge2edge_LM.upperGraph.guard.g1" name="g1"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge_LM.upperGraph.guard.sn1" name="sn1"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge_LM.upperGraph.guard.tn1" name="tn1"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge_LM.upperGraph.guard.e1" name="e1"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.UpperToLower.middle">
+ <guardPattern>
+ <variable xmi:id="qV.UpperToLower.edge2edge_LM.middle.guard.g2g" name="g2g"
+ type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge_LM.middle.guard.sn2n" name="sn2n"
+ type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge_LM.middle.guard.tn2n" name="tn2n"
+ type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.UpperToLower.edge2edge_LM.middle.bottom.e2e"
+ name="e2e" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Element2Element.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.middle.guard.sn2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.middle.guard.g2g"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.node1">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.middle.guard.tn2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.upperGraph.guard.tn1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph1">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.middle.guard.g2g"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.upperGraph.guard.g1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.node1">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.middle.guard.sn2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.upperGraph.guard.sn1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Edge.target">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.upperGraph.guard.e1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.upperGraph.guard.tn1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Element.graph">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.upperGraph.guard.e1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.upperGraph.guard.g1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Edge.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.upperGraph.guard.e1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.upperGraph.guard.sn1"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Edge2Edge.source">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.middle.guard.sn2n"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.middle.bottom.e2e"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Element2Element.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.middle.guard.g2g"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.middle.bottom.e2e"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Edge2Edge.edge1">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.upperGraph.guard.e1"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.middle.bottom.e2e"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Edge2Edge.target">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.middle.guard.tn2n"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.middle.bottom.e2e"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.UpperToLower.edge2edge_MR" name="edge2edge_MR">
+ <domain xsi:type="qvtcb:CoreDomain" name="lowerGraph" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.UpperToLower.lowerGraph">
+ <guardPattern>
+ <variable xmi:id="qV.UpperToLower.edge2edge_MR.lowerGraph.guard.g2" name="g2"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge_MR.lowerGraph.guard.sn2" name="sn2"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge_MR.lowerGraph.guard.tn2" name="tn2"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.UpperToLower.edge2edge_MR.lowerGraph.bottom.e2"
+ name="e2" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.UpperToLower.middle">
+ <guardPattern>
+ <variable xmi:id="qV.UpperToLower.edge2edge_MR.middle.guard.g2g" name="g2g"
+ type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge_MR.middle.guard.sn2n" name="sn2n"
+ type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge_MR.middle.guard.tn2n" name="tn2n"
+ type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge_MR.middle.guard.e2e" name="e2e"
+ type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Element2Element.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.middle.guard.sn2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.middle.guard.g2g"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph2">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.middle.guard.g2g"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.lowerGraph.guard.g2"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.node2">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.middle.guard.tn2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.lowerGraph.guard.tn2"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.node2">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.middle.guard.sn2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.lowerGraph.guard.sn2"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Edge2Edge.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.middle.guard.e2e"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.middle.guard.sn2n"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Element2Element.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.middle.guard.e2e"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.middle.guard.g2g"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Edge2Edge.target">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.middle.guard.e2e"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.middle.guard.tn2n"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Edge2Edge.edge2">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.lowerGraph.bottom.e2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.middle.guard.e2e"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Element.graph">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.lowerGraph.guard.g2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.lowerGraph.bottom.e2"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Edge.source">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.lowerGraph.guard.sn2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.lowerGraph.bottom.e2"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Edge.target">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.lowerGraph.guard.tn2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.lowerGraph.bottom.e2"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.UpperToLower.__root__" name="__root__">
+ <guardPattern/>
+ <bottomPattern/>
+ <mappingStatement xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingLoop">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclElement.allInstances">
+ <source xsi:type="pivot:TypeExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredType="SimpleGraph.ecore.oclas#T.simplegraph.Graph"/>
+ </source>
+ <body xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m.UpperToLower.graph2graph_LM">
+ <binding boundVariable="#qV.UpperToLower.graph2graph_LM.upperGraph.guard.g1">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#i.UpperToLower.__root__.0.0.g1"/>
+ </binding>
+ </mappingStatements>
+ </body>
+ <iterator xmi:id="i.UpperToLower.__root__.0.0.g1" name="g1" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"/>
+ </mappingStatements>
+ <mappingStatements xsi:type="qvti:MappingLoop">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclElement.allInstances">
+ <source xsi:type="pivot:TypeExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredType="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"/>
+ </source>
+ <body xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m.UpperToLower.graph2graph_MR">
+ <binding boundVariable="#qV.UpperToLower.graph2graph_MR.middle.guard.g2g">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#i.UpperToLower.__root__.0.1.g2g"/>
+ </binding>
+ </mappingStatements>
+ </body>
+ <iterator xmi:id="i.UpperToLower.__root__.0.1.g2g" name="g2g" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"/>
+ </mappingStatements>
+ <mappingStatements xsi:type="qvti:MappingLoop">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclElement.allInstances">
+ <source xsi:type="pivot:TypeExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredType="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ </source>
+ <body xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingLoop">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclElement.allInstances">
+ <source xsi:type="pivot:TypeExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredType="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"/>
+ </source>
+ <body xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m.UpperToLower.node2node_LM">
+ <binding boundVariable="#qV.UpperToLower.node2node_LM.middle.guard.g2g">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#i.UpperToLower.__root__.0.2.0.0.g2g"/>
+ </binding>
+ <binding boundVariable="#qV.UpperToLower.node2node_LM.upperGraph.guard.n1">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#i.UpperToLower.__root__.0.2.n1"/>
+ </binding>
+ <binding boundVariable="#qV.UpperToLower.node2node_LM.upperGraph.guard.g1">
+ <value xsi:type="pivot:PropertyCallExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Element.graph">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.node2node_LM.upperGraph.guard.n1"/>
+ </value>
+ </binding>
+ </mappingStatements>
+ </body>
+ <iterator xmi:id="i.UpperToLower.__root__.0.2.0.0.g2g" name="g2g" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"/>
+ </mappingStatements>
+ </body>
+ <iterator xmi:id="i.UpperToLower.__root__.0.2.n1" name="n1" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ </mappingStatements>
+ <mappingStatements xsi:type="qvti:MappingLoop">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclElement.allInstances">
+ <source xsi:type="pivot:TypeExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredType="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"/>
+ </source>
+ <body xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m.UpperToLower.node2node_MR">
+ <binding boundVariable="#qV.UpperToLower.node2node_MR.middle.guard.n2n">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#i.UpperToLower.__root__.0.3.n2n"/>
+ </binding>
+ <binding boundVariable="#qV.UpperToLower.node2node_MR.middle.guard.g2g">
+ <value xsi:type="pivot:PropertyCallExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Element2Element.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.node2node_MR.middle.guard.n2n"/>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.UpperToLower.node2node_MR.lowerGraph.guard.g2">
+ <value xsi:type="pivot:PropertyCallExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph2">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Element2Element.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.node2node_MR.middle.guard.n2n"/>
+ </source>
+ </value>
+ </binding>
+ </mappingStatements>
+ </body>
+ <iterator xmi:id="i.UpperToLower.__root__.0.3.n2n" name="n2n" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"/>
+ </mappingStatements>
+ <mappingStatements xsi:type="qvti:MappingLoop">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclElement.allInstances">
+ <source xsi:type="pivot:TypeExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredType="SimpleGraph.ecore.oclas#T.simplegraph.Edge"/>
+ </source>
+ <body xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingLoop">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclElement.allInstances">
+ <source xsi:type="pivot:TypeExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredType="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"/>
+ </source>
+ <body xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingLoop">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclElement.allInstances">
+ <source xsi:type="pivot:TypeExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredType="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"/>
+ </source>
+ <body xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m.UpperToLower.edge2edge_LM">
+ <binding boundVariable="#qV.UpperToLower.edge2edge_LM.middle.guard.tn2n">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#i.UpperToLower.__root__.0.4.0.0.0.0.tn2n"/>
+ </binding>
+ <binding boundVariable="#qV.UpperToLower.edge2edge_LM.middle.guard.sn2n">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#i.UpperToLower.__root__.0.4.0.0.sn2n"/>
+ </binding>
+ <binding boundVariable="#qV.UpperToLower.edge2edge_LM.upperGraph.guard.e1">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#i.UpperToLower.__root__.0.4.e1"/>
+ </binding>
+ <binding boundVariable="#qV.UpperToLower.edge2edge_LM.upperGraph.guard.sn1">
+ <value xsi:type="pivot:PropertyCallExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Edge.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.upperGraph.guard.e1"/>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.UpperToLower.edge2edge_LM.upperGraph.guard.tn1">
+ <value xsi:type="pivot:PropertyCallExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Edge.target">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.upperGraph.guard.e1"/>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.UpperToLower.edge2edge_LM.upperGraph.guard.g1">
+ <value xsi:type="pivot:PropertyCallExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Element.graph">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.upperGraph.guard.e1"/>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.UpperToLower.edge2edge_LM.middle.guard.g2g">
+ <value xsi:type="pivot:PropertyCallExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Element2Element.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.middle.guard.sn2n"/>
+ </value>
+ </binding>
+ </mappingStatements>
+ </body>
+ <iterator xmi:id="i.UpperToLower.__root__.0.4.0.0.0.0.tn2n" name="tn2n"
+ type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"/>
+ </mappingStatements>
+ </body>
+ <iterator xmi:id="i.UpperToLower.__root__.0.4.0.0.sn2n" name="sn2n"
+ type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"/>
+ </mappingStatements>
+ </body>
+ <iterator xmi:id="i.UpperToLower.__root__.0.4.e1" name="e1" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"/>
+ </mappingStatements>
+ <mappingStatements xsi:type="qvti:MappingLoop">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclElement.allInstances">
+ <source xsi:type="pivot:TypeExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredType="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"/>
+ </source>
+ <body xsi:type="qvti:MappingSequence">
+ <mappingStatements xsi:type="qvti:MappingCall" referredMapping="#m.UpperToLower.edge2edge_MR">
+ <binding boundVariable="#qV.UpperToLower.edge2edge_MR.middle.guard.e2e">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#i.UpperToLower.__root__.0.5.e2e"/>
+ </binding>
+ <binding boundVariable="#qV.UpperToLower.edge2edge_MR.middle.guard.tn2n">
+ <value xsi:type="pivot:PropertyCallExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Edge2Edge.target">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.middle.guard.e2e"/>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.UpperToLower.edge2edge_MR.middle.guard.g2g">
+ <value xsi:type="pivot:PropertyCallExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Element2Element.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.middle.guard.e2e"/>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.UpperToLower.edge2edge_MR.middle.guard.sn2n">
+ <value xsi:type="pivot:PropertyCallExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Edge2Edge.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.middle.guard.e2e"/>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.UpperToLower.edge2edge_MR.lowerGraph.guard.g2">
+ <value xsi:type="pivot:PropertyCallExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph2">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Element2Element.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.middle.guard.e2e"/>
+ </source>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.UpperToLower.edge2edge_MR.lowerGraph.guard.sn2">
+ <value xsi:type="pivot:PropertyCallExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.node2">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Edge2Edge.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.middle.guard.e2e"/>
+ </source>
+ </value>
+ </binding>
+ <binding boundVariable="#qV.UpperToLower.edge2edge_MR.lowerGraph.guard.tn2">
+ <value xsi:type="pivot:PropertyCallExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.node2">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Edge2Edge.target">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.middle.guard.e2e"/>
+ </source>
+ </value>
+ </binding>
+ </mappingStatements>
+ </body>
+ <iterator xmi:id="i.UpperToLower.__root__.0.5.e2e" name="e2e" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"/>
+ </mappingStatements>
+ </mappingStatement>
+ </rule>
+ </nestedPackage>
+ <nestedPackage xmi:id="P.$$" name="$$" nsPrefix="orphanage" nsURI="http://www.eclipse.org/ocl/3.1.0/orphanage">
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.1"
+ elementType="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#OclSelf">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:SelfType http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#OclSelf"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.2"
+ elementType="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#OclSelf">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:SelfType http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#OclSelf"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#OclSelf">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:SelfType http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#OclSelf"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ </nestedPackage>
+</qvti:ImperativeModel>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower.qvtm.qvtcas b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower.qvtm.qvtcas
new file mode 100644
index 000000000..f264fb5ef
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower.qvtm.qvtcas
@@ -0,0 +1,396 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<qvtc:CoreModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:pivot="http://www.eclipse.org/ocl/3.1.0/Pivot" xmlns:qvtb="http://www.eclipse.org/qvt/0.9/QVTbase"
+ xmlns:qvtc="http://www.eclipse.org/qvt/0.9/QVTcore" xmlns:qvtcb="http://www.eclipse.org/qvt/0.9/QVTcoreBase"
+ xsi:schemaLocation="http://www.eclipse.org/ocl/3.1.0/Pivot java://org.eclipse.ocl.examples.pivot.PivotPackage http://www.eclipse.org/qvt/0.9/QVTbase java://org.eclipse.qvtd.pivot.qvtbase.QVTbasePackage http://www.eclipse.org/qvt/0.9/QVTcore java://org.eclipse.qvtd.pivot.qvtcore.QVTcorePackage http://www.eclipse.org/qvt/0.9/QVTcoreBase java://org.eclipse.qvtd.pivot.qvtcorebase.QVTcoreBasePackage"
+ name="UpperToLower.qvtm.qvtc" externalURI="platform:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower.qvtm.qvtc">
+ <nestedPackage xsi:type="qvtb:Transformation" xmi:id="T.UpperToLower" name="UpperToLower"
+ superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclElement">
+ <ownedComment body="/* Enforce upperGraph to lowerGraph */"/>
+ <modelParameter xmi:id="qT.UpperToLower.upperGraph" name="upperGraph" usedPackage="SimpleGraph.ecore.oclas#P.simplegraph"/>
+ <modelParameter xmi:id="qT.UpperToLower.lowerGraph" name="lowerGraph" usedPackage="SimpleGraph.ecore.oclas#P.simplegraph"/>
+ <modelParameter usedPackage="SimpleGraph2Graph.ecore.oclas#P.simplegraph2graph"/>
+ <rule xsi:type="qvtc:Mapping" name="graph2graph">
+ <ownedComment body="Don't use realize keywords on the two initial domains indicates that both models must exist and at least have the root node defined?"/>
+ <domain xsi:type="qvtcb:CoreDomain" name="upperGraph" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.UpperToLower.upperGraph">
+ <guardPattern/>
+ <bottomPattern>
+ <variable xmi:id="qV.UpperToLower.graph2graph.upperGraph.bottom.g1" name="g1"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="lowerGraph" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.UpperToLower.lowerGraph">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.UpperToLower.graph2graph.lowerGraph.bottom.g2"
+ name="g2" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph">
+ <ownedComment body="Enforced domains should at least have one realized variable?"/>
+ </realizedVariable>
+ </bottomPattern>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph1">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.graph2graph.upperGraph.bottom.g1"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.graph2graph.bottom.g2g"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph2">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.graph2graph.lowerGraph.bottom.g2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.graph2graph.bottom.g2g"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.name">
+ <value xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.toLowerCase">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Graph.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.graph2graph.upperGraph.bottom.g1"/>
+ </source>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.graph2graph.bottom.g2g"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Graph.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.graph2graph.bottom.g2g"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.graph2graph.lowerGraph.bottom.g2"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.UpperToLower.graph2graph.bottom.g2g" name="g2g"
+ type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph">
+ <ownedComment body="Although in the example is not realized, all middle model variables should be realized&#xA;or does the middle model is also expected to have at least the initial element?"/>
+ </realizedVariable>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="node2node">
+ <domain xsi:type="qvtcb:CoreDomain" name="upperGraph" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.UpperToLower.upperGraph">
+ <guardPattern>
+ <variable xmi:id="qV.UpperToLower.node2node.upperGraph.guard.g1" name="g1"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Element.graph">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.node2node.upperGraph.bottom.n1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.node2node.upperGraph.guard.g1"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.UpperToLower.node2node.upperGraph.bottom.n1" name="n1"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="lowerGraph" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.UpperToLower.lowerGraph">
+ <guardPattern>
+ <variable xmi:id="qV.UpperToLower.node2node.lowerGraph.guard.g2" name="g2"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Element.graph">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.node2node.lowerGraph.guard.g2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.node2node.lowerGraph.bottom.n2"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.UpperToLower.node2node.lowerGraph.bottom.n2"
+ name="n2" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph1">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.node2node.guard.g2g"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.node2node.upperGraph.guard.g1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph2">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.node2node.guard.g2g"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.node2node.lowerGraph.guard.g2"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.UpperToLower.node2node.guard.g2g" name="g2g" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Element2Element.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.node2node.guard.g2g"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.node2node.bottom.n2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.node1">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.node2node.upperGraph.bottom.n1"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.node2node.bottom.n2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.node2">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.node2node.lowerGraph.bottom.n2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.node2node.bottom.n2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.label">
+ <value xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.toLowerCase">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Node.label">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.node2node.upperGraph.bottom.n1"/>
+ </source>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.node2node.bottom.n2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Node.label">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.label">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.node2node.bottom.n2n"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.node2node.lowerGraph.bottom.n2"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.UpperToLower.node2node.bottom.n2n" name="n2n"
+ type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="edge2edge">
+ <domain xsi:type="qvtcb:CoreDomain" name="upperGraph" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.UpperToLower.upperGraph">
+ <guardPattern>
+ <variable xmi:id="qV.UpperToLower.edge2edge.upperGraph.guard.g1" name="g1"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge.upperGraph.guard.sn1" name="sn1"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge.upperGraph.guard.tn1" name="tn1"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Element.graph">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.upperGraph.bottom.e1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.edge2edge.upperGraph.guard.g1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Edge.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.upperGraph.bottom.e1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge.upperGraph.guard.sn1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Edge.target">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.upperGraph.bottom.e1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge.upperGraph.guard.tn1"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.UpperToLower.edge2edge.upperGraph.bottom.e1" name="e1"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="lowerGraph" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.UpperToLower.lowerGraph">
+ <guardPattern>
+ <variable xmi:id="qV.UpperToLower.edge2edge.lowerGraph.guard.g2" name="g2"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge.lowerGraph.guard.sn2" name="sn2"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge.lowerGraph.guard.tn2" name="tn2"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Element.graph">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.edge2edge.lowerGraph.guard.g2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.lowerGraph.bottom.e2"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Edge.source">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge.lowerGraph.guard.sn2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.lowerGraph.bottom.e2"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Edge.target">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge.lowerGraph.guard.tn2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.lowerGraph.bottom.e2"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.UpperToLower.edge2edge.lowerGraph.bottom.e2"
+ name="e2" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph1">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.edge2edge.guard.g2g"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.edge2edge.upperGraph.guard.g1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph2">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.edge2edge.guard.g2g"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.edge2edge.lowerGraph.guard.g2"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Element2Element.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge.guard.sn2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.edge2edge.guard.g2g"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.node1">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge.guard.sn2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge.upperGraph.guard.sn1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.node2">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge.guard.sn2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge.lowerGraph.guard.sn2"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.node1">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge.guard.tn2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge.upperGraph.guard.tn1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.node2">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge.guard.tn2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge.lowerGraph.guard.tn2"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.UpperToLower.edge2edge.guard.g2g" name="g2g" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge.guard.sn2n" name="sn2n" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge.guard.tn2n" name="tn2n" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Element2Element.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.edge2edge.guard.g2g"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.bottom.e2e"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Edge2Edge.edge1">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.upperGraph.bottom.e1"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.bottom.e2e"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Edge2Edge.edge2">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.lowerGraph.bottom.e2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.bottom.e2e"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Edge2Edge.source">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge.guard.sn2n"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.bottom.e2e"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Edge2Edge.target">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge.guard.tn2n"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.bottom.e2e"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.UpperToLower.edge2edge.bottom.e2e" name="e2e"
+ type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"/>
+ </bottomPattern>
+ </rule>
+ </nestedPackage>
+</qvtc:CoreModel>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower.qvtp.qvtias b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower.qvtp.qvtias
new file mode 100644
index 000000000..cefc37eb4
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower.qvtp.qvtias
@@ -0,0 +1,530 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<qvti:ImperativeModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:pivot="http://www.eclipse.org/ocl/3.1.0/Pivot" xmlns:qvtb="http://www.eclipse.org/qvt/0.9/QVTbase"
+ xmlns:qvtcb="http://www.eclipse.org/qvt/0.9/QVTcoreBase" xmlns:qvti="http://www.eclipse.org/qvt/0.9/QVTimperative"
+ xsi:schemaLocation="http://www.eclipse.org/ocl/3.1.0/Pivot java://org.eclipse.ocl.examples.pivot.PivotPackage http://www.eclipse.org/qvt/0.9/QVTbase java://org.eclipse.qvtd.pivot.qvtbase.QVTbasePackage http://www.eclipse.org/qvt/0.9/QVTcoreBase java://org.eclipse.qvtd.pivot.qvtcorebase.QVTcoreBasePackage http://www.eclipse.org/qvt/0.9/QVTimperative java://org.eclipse.qvtd.pivot.qvtimperative.QVTimperativePackage"
+ name="UpperToLower.qvtp.qvti" externalURI="platform:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower.qvtp.qvti">
+ <nestedPackage xsi:type="qvtb:Transformation" xmi:id="T.UpperToLower" name="UpperToLower">
+ <modelParameter xmi:id="qT.UpperToLower.upperGraph" name="upperGraph" usedPackage="SimpleGraph.ecore.oclas#P.simplegraph"/>
+ <modelParameter xmi:id="qT.UpperToLower.lowerGraph" name="lowerGraph" usedPackage="SimpleGraph.ecore.oclas#P.simplegraph"/>
+ <modelParameter xmi:id="qT.UpperToLower.middle" name="middle" usedPackage="SimpleGraph2Graph.ecore.oclas#P.simplegraph2graph"/>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.UpperToLower.graph2graph_MR" name="graph2graph_MR">
+ <domain xsi:type="qvtcb:CoreDomain" name="lowerGraph" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.UpperToLower.lowerGraph">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.UpperToLower.graph2graph_MR.lowerGraph.bottom.g2"
+ name="g2" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph">
+ <ownedComment body="Enforced domains should at least have one realized variable?"/>
+ </realizedVariable>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.UpperToLower.middle">
+ <guardPattern>
+ <variable xmi:id="qV.UpperToLower.graph2graph_MR.middle.guard.g2g" name="g2g"
+ type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph">
+ <ownedComment body="Although in the example is not realized, all middle model variables should be realized&#xA;or does the middle model is also expected to have at least the initial element?"/>
+ </variable>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Graph.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.graph2graph_MR.middle.guard.g2g"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.graph2graph_MR.lowerGraph.bottom.g2"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph2">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.graph2graph_MR.lowerGraph.bottom.g2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.graph2graph_MR.middle.guard.g2g"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.UpperToLower.graph2graph_LM" name="graph2graph_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="upperGraph" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.UpperToLower.upperGraph">
+ <guardPattern>
+ <variable xmi:id="qV.UpperToLower.graph2graph_LM.upperGraph.guard.g1" name="g1"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.UpperToLower.middle">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.UpperToLower.graph2graph_LM.middle.bottom.g2g"
+ name="g2g" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph">
+ <ownedComment body="Although in the example is not realized, all middle model variables should be realized&#xA;or does the middle model is also expected to have at least the initial element?"/>
+ </realizedVariable>
+ </bottomPattern>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph1">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.graph2graph_LM.upperGraph.guard.g1"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.graph2graph_LM.middle.bottom.g2g"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.name">
+ <value xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.toLowerCase">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Graph.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.graph2graph_LM.upperGraph.guard.g1"/>
+ </source>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.graph2graph_LM.middle.bottom.g2g"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.UpperToLower.node2node_LM" name="node2node_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="upperGraph" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.UpperToLower.upperGraph">
+ <guardPattern>
+ <variable xmi:id="qV.UpperToLower.node2node_LM.upperGraph.guard.g1" name="g1"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"/>
+ <variable xmi:id="qV.UpperToLower.node2node_LM.upperGraph.guard.n1" name="n1"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.UpperToLower.middle">
+ <guardPattern>
+ <variable xmi:id="qV.UpperToLower.node2node_LM.middle.guard.g2g" name="g2g"
+ type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.UpperToLower.node2node_LM.middle.bottom.n2n"
+ name="n2n" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph1">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.node2node_LM.middle.guard.g2g"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.node2node_LM.upperGraph.guard.g1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Element.graph">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.node2node_LM.upperGraph.guard.n1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.node2node_LM.upperGraph.guard.g1"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.label">
+ <value xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.toLowerCase">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Node.label">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.node2node_LM.upperGraph.guard.n1"/>
+ </source>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.node2node_LM.middle.bottom.n2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.node1">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.node2node_LM.upperGraph.guard.n1"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.node2node_LM.middle.bottom.n2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Element2Element.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.node2node_LM.middle.guard.g2g"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.node2node_LM.middle.bottom.n2n"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.UpperToLower.node2node_MR" name="node2node_MR">
+ <domain xsi:type="qvtcb:CoreDomain" name="lowerGraph" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.UpperToLower.lowerGraph">
+ <guardPattern>
+ <variable xmi:id="qV.UpperToLower.node2node_MR.lowerGraph.guard.g2" name="g2"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.UpperToLower.node2node_MR.lowerGraph.bottom.n2"
+ name="n2" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.UpperToLower.middle">
+ <guardPattern>
+ <variable xmi:id="qV.UpperToLower.node2node_MR.middle.guard.g2g" name="g2g"
+ type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"/>
+ <variable xmi:id="qV.UpperToLower.node2node_MR.middle.guard.n2n" name="n2n"
+ type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph2">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.node2node_MR.middle.guard.g2g"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.node2node_MR.lowerGraph.guard.g2"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Element2Element.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.node2node_MR.middle.guard.n2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.node2node_MR.middle.guard.g2g"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Node.label">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.label">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.node2node_MR.middle.guard.n2n"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.node2node_MR.lowerGraph.bottom.n2"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.node2">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.node2node_MR.lowerGraph.bottom.n2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.node2node_MR.middle.guard.n2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Element.graph">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.node2node_MR.lowerGraph.guard.g2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.node2node_MR.lowerGraph.bottom.n2"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.UpperToLower.edge2edge_LM" name="edge2edge_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="upperGraph" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.UpperToLower.upperGraph">
+ <guardPattern>
+ <variable xmi:id="qV.UpperToLower.edge2edge_LM.upperGraph.guard.g1" name="g1"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge_LM.upperGraph.guard.sn1" name="sn1"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge_LM.upperGraph.guard.tn1" name="tn1"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge_LM.upperGraph.guard.e1" name="e1"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.UpperToLower.middle">
+ <guardPattern>
+ <variable xmi:id="qV.UpperToLower.edge2edge_LM.middle.guard.g2g" name="g2g"
+ type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge_LM.middle.guard.sn2n" name="sn2n"
+ type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge_LM.middle.guard.tn2n" name="tn2n"
+ type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.UpperToLower.edge2edge_LM.middle.bottom.e2e"
+ name="e2e" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Element2Element.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.middle.guard.sn2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.middle.guard.g2g"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.node1">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.middle.guard.tn2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.upperGraph.guard.tn1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph1">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.middle.guard.g2g"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.upperGraph.guard.g1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.node1">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.middle.guard.sn2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.upperGraph.guard.sn1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Edge.target">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.upperGraph.guard.e1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.upperGraph.guard.tn1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Element.graph">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.upperGraph.guard.e1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.upperGraph.guard.g1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Edge.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.upperGraph.guard.e1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.upperGraph.guard.sn1"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Edge2Edge.source">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.middle.guard.sn2n"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.middle.bottom.e2e"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Element2Element.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.middle.guard.g2g"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.middle.bottom.e2e"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Edge2Edge.edge1">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.upperGraph.guard.e1"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.middle.bottom.e2e"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Edge2Edge.target">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.middle.guard.tn2n"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_LM.middle.bottom.e2e"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.UpperToLower.edge2edge_MR" name="edge2edge_MR">
+ <domain xsi:type="qvtcb:CoreDomain" name="lowerGraph" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.UpperToLower.lowerGraph">
+ <guardPattern>
+ <variable xmi:id="qV.UpperToLower.edge2edge_MR.lowerGraph.guard.g2" name="g2"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge_MR.lowerGraph.guard.sn2" name="sn2"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge_MR.lowerGraph.guard.tn2" name="tn2"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.UpperToLower.edge2edge_MR.lowerGraph.bottom.e2"
+ name="e2" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.UpperToLower.middle">
+ <guardPattern>
+ <variable xmi:id="qV.UpperToLower.edge2edge_MR.middle.guard.g2g" name="g2g"
+ type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge_MR.middle.guard.sn2n" name="sn2n"
+ type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge_MR.middle.guard.tn2n" name="tn2n"
+ type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge_MR.middle.guard.e2e" name="e2e"
+ type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Element2Element.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.middle.guard.sn2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.middle.guard.g2g"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph2">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.middle.guard.g2g"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.lowerGraph.guard.g2"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.node2">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.middle.guard.tn2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.lowerGraph.guard.tn2"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.node2">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.middle.guard.sn2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.lowerGraph.guard.sn2"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Edge2Edge.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.middle.guard.e2e"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.middle.guard.sn2n"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Element2Element.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.middle.guard.e2e"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.middle.guard.g2g"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Edge2Edge.target">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.middle.guard.e2e"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.middle.guard.tn2n"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Edge2Edge.edge2">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.lowerGraph.bottom.e2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.middle.guard.e2e"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Element.graph">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.lowerGraph.guard.g2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.lowerGraph.bottom.e2"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Edge.source">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.lowerGraph.guard.sn2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.lowerGraph.bottom.e2"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Edge.target">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.lowerGraph.guard.tn2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge_MR.lowerGraph.bottom.e2"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvti:Mapping" xmi:id="m.UpperToLower.__root__" name="__root__">
+ <guardPattern/>
+ <bottomPattern/>
+ </rule>
+ </nestedPackage>
+</qvti:ImperativeModel>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower.qvtu.qvtcas b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower.qvtu.qvtcas
new file mode 100644
index 000000000..f0a1e8c53
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower.qvtu.qvtcas
@@ -0,0 +1,406 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<qvtc:CoreModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:pivot="http://www.eclipse.org/ocl/3.1.0/Pivot" xmlns:qvtb="http://www.eclipse.org/qvt/0.9/QVTbase"
+ xmlns:qvtc="http://www.eclipse.org/qvt/0.9/QVTcore" xmlns:qvtcb="http://www.eclipse.org/qvt/0.9/QVTcoreBase"
+ xsi:schemaLocation="http://www.eclipse.org/ocl/3.1.0/Pivot java://org.eclipse.ocl.examples.pivot.PivotPackage http://www.eclipse.org/qvt/0.9/QVTbase java://org.eclipse.qvtd.pivot.qvtbase.QVTbasePackage http://www.eclipse.org/qvt/0.9/QVTcore java://org.eclipse.qvtd.pivot.qvtcore.QVTcorePackage http://www.eclipse.org/qvt/0.9/QVTcoreBase java://org.eclipse.qvtd.pivot.qvtcorebase.QVTcoreBasePackage"
+ name="UpperToLower.qvtu.qvtc" externalURI="platform:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower.qvtu.qvtc">
+ <nestedPackage xsi:type="qvtb:Transformation" xmi:id="T.UpperToLower" name="UpperToLower"
+ superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclElement">
+ <ownedComment body="/* Enforce upperGraph to lowerGraph */"/>
+ <modelParameter xmi:id="qT.UpperToLower.upperGraph" name="upperGraph" usedPackage="SimpleGraph.ecore.oclas#P.simplegraph"/>
+ <modelParameter xmi:id="qT.UpperToLower.lowerGraph" name="lowerGraph" usedPackage="SimpleGraph.ecore.oclas#P.simplegraph"/>
+ <modelParameter usedPackage="SimpleGraph2Graph.ecore.oclas#P.simplegraph2graph"/>
+ <rule xsi:type="qvtc:Mapping" name="graph2graph">
+ <ownedComment body="Don't use realize keywords on the two initial domains indicates that both models must exist and at least have the root node defined?"/>
+ <domain xsi:type="qvtcb:CoreDomain" name="upperGraph" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.UpperToLower.upperGraph">
+ <guardPattern/>
+ <bottomPattern>
+ <variable xmi:id="qV.UpperToLower.graph2graph.upperGraph.bottom.g1" name="g1"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="lowerGraph" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.UpperToLower.lowerGraph">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable xmi:id="qV.UpperToLower.graph2graph.lowerGraph.bottom.g2"
+ name="g2" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph">
+ <ownedComment body="Enforced domains should at least have one realized variable?"/>
+ </realizedVariable>
+ </bottomPattern>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph1">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.graph2graph.upperGraph.bottom.g1"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.graph2graph.bottom.g2g"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph2">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.graph2graph.lowerGraph.bottom.g2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.graph2graph.bottom.g2g"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.UpperToLower.graph2graph.bottom.g2g" name="g2g"
+ type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph">
+ <ownedComment body="Although in the example is not realized, all middle model variables should be realized&#xA;or does the middle model is also expected to have at least the initial element?"/>
+ </realizedVariable>
+ </bottomPattern>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.name">
+ <value xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.toLowerCase">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Graph.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.graph2graph.upperGraph.bottom.g1"/>
+ </source>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.graph2graph.bottom.g2g"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Graph.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.graph2graph.bottom.g2g"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.graph2graph.lowerGraph.bottom.g2"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="node2node">
+ <domain xsi:type="qvtcb:CoreDomain" name="upperGraph" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.UpperToLower.upperGraph">
+ <guardPattern>
+ <variable xmi:id="qV.UpperToLower.node2node.upperGraph.guard.g1" name="g1"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Element.graph">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.node2node.upperGraph.bottom.n1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.node2node.upperGraph.guard.g1"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.UpperToLower.node2node.upperGraph.bottom.n1" name="n1"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="lowerGraph" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.UpperToLower.lowerGraph">
+ <guardPattern>
+ <variable xmi:id="qV.UpperToLower.node2node.lowerGraph.guard.g2" name="g2"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Element.graph">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.node2node.lowerGraph.guard.g2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.node2node.lowerGraph.bottom.n2"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.UpperToLower.node2node.lowerGraph.bottom.n2"
+ name="n2" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph1">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.node2node.guard.g2g"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.node2node.upperGraph.guard.g1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph2">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.node2node.guard.g2g"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.node2node.lowerGraph.guard.g2"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.UpperToLower.node2node.guard.g2g" name="g2g" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Element2Element.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.node2node.guard.g2g"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.node2node.bottom.n2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.node1">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.node2node.upperGraph.bottom.n1"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.node2node.bottom.n2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.node2">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.node2node.lowerGraph.bottom.n2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.node2node.bottom.n2n"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.UpperToLower.node2node.bottom.n2n" name="n2n"
+ type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"/>
+ </bottomPattern>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.label">
+ <value xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.toLowerCase">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Node.label">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.node2node.upperGraph.bottom.n1"/>
+ </source>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.node2node.bottom.n2n"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Node.label">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.label">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.node2node.bottom.n2n"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.node2node.lowerGraph.bottom.n2"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="edge2edge">
+ <domain xsi:type="qvtcb:CoreDomain" name="upperGraph" isCheckable="true" isEnforceable="false"
+ typedModel="#qT.UpperToLower.upperGraph">
+ <guardPattern>
+ <variable xmi:id="qV.UpperToLower.edge2edge.upperGraph.guard.g1" name="g1"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge.upperGraph.guard.sn1" name="sn1"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge.upperGraph.guard.tn1" name="tn1"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Element.graph">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.upperGraph.bottom.e1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.edge2edge.upperGraph.guard.g1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Edge.source">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.upperGraph.bottom.e1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge.upperGraph.guard.sn1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Edge.target">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.upperGraph.bottom.e1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge.upperGraph.guard.tn1"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.UpperToLower.edge2edge.upperGraph.bottom.e1" name="e1"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="lowerGraph" isCheckable="false" isEnforceable="true"
+ typedModel="#qT.UpperToLower.lowerGraph">
+ <guardPattern>
+ <variable xmi:id="qV.UpperToLower.edge2edge.lowerGraph.guard.g2" name="g2"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge.lowerGraph.guard.sn2" name="sn2"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge.lowerGraph.guard.tn2" name="tn2"
+ type="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Element.graph">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.edge2edge.lowerGraph.guard.g2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.lowerGraph.bottom.e2"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Edge.source">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge.lowerGraph.guard.sn2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.lowerGraph.bottom.e2"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Edge.target">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge.lowerGraph.guard.tn2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.lowerGraph.bottom.e2"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.UpperToLower.edge2edge.lowerGraph.bottom.e2"
+ name="e2" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph1">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.edge2edge.guard.g2g"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.edge2edge.upperGraph.guard.g1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph2">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.edge2edge.guard.g2g"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#qV.UpperToLower.edge2edge.lowerGraph.guard.g2"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Element2Element.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge.guard.sn2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.edge2edge.guard.g2g"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.node1">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge.guard.sn2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge.upperGraph.guard.sn1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.node2">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge.guard.sn2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge.lowerGraph.guard.sn2"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.node1">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge.guard.tn2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge.upperGraph.guard.tn1"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.node2">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge.guard.tn2n"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#qV.UpperToLower.edge2edge.lowerGraph.guard.tn2"/>
+ </conditionExpression>
+ </predicate>
+ <variable xmi:id="qV.UpperToLower.edge2edge.guard.g2g" name="g2g" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge.guard.sn2n" name="sn2n" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"/>
+ <variable xmi:id="qV.UpperToLower.edge2edge.guard.tn2n" name="tn2n" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Element2Element.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#qV.UpperToLower.edge2edge.guard.g2g"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.bottom.e2e"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Edge2Edge.edge1">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.upperGraph.bottom.e1"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.bottom.e2e"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Edge2Edge.edge2">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.lowerGraph.bottom.e2"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.bottom.e2e"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Edge2Edge.source">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge.guard.sn2n"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.bottom.e2e"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Edge2Edge.target">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#qV.UpperToLower.edge2edge.guard.tn2n"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"
+ referredVariable="#qV.UpperToLower.edge2edge.bottom.e2e"/>
+ </assignment>
+ <realizedVariable xmi:id="qV.UpperToLower.edge2edge.bottom.e2e" name="e2e"
+ type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"/>
+ </bottomPattern>
+ </rule>
+ </nestedPackage>
+</qvtc:CoreModel>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/GraphToGraphMinimal/UpperToLowerConfig.xmi b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLowerConfig.xmi
index 66eea1031..556bee2b7 100644
--- a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/GraphToGraphMinimal/UpperToLowerConfig.xmi
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLowerConfig.xmi
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="ASCII"?>
-<qvtcconfig:Configuration xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:qvtcconfig="http://www.eclipse.org/qvt/examples/0.1/QVTcConfig" inputDirection="//@transformation/@direction.0" outputDirection="//@transformation/@direction.1" mode="enforcement" middle="//@transformation/@direction.2">
+<qvtcconfig:Configuration xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:qvtcconfig="http://www.eclipse.org/qvt/examples/0.1/QVTcConfig" inputDirection="//@transformation/@direction.0" outputDirection="//@transformation/@direction.1" mode="enforce" middle="//@transformation/@direction.2">
<transformation name="copyGraph">
<direction name="upperGraph" imports="//@transformation/@import.0"/>
<direction name="lowerGraph" imports="//@transformation/@import.0"/>
<direction imports="//@transformation/@import.1"/>
- <import name="SimpleGraph" metamodel="SimpleGraph.ecore" package="simplegraph"/>
- <import name="SimpleGraph2Graph" metamodel="SimpleGraph2Graph.ecore" package="simplegraph2graph"/>
+ <import name="SimpleGraph" metamodelFile="UpperToLower/SimpleGraph.ecore" package="simplegraph"/>
+ <import name="SimpleGraph2Graph" metamodelFile="UpperToLower/SimpleGraph2Graph.ecore" package="simplegraph2graph"/>
</transformation>
</qvtcconfig:Configuration>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLowerPartition.qvtm.qvtcas b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLowerPartition.qvtm.qvtcas
new file mode 100644
index 000000000..6e349b4e9
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLowerPartition.qvtm.qvtcas
@@ -0,0 +1,223 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<qvtc:CoreModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:pivot="http://www.eclipse.org/ocl/3.1.0/Pivot" xmlns:qvtb="http://www.eclipse.org/qvt/0.9/QVTbase"
+ xmlns:qvtc="http://www.eclipse.org/qvt/0.9/QVTcore" xmlns:qvtcb="http://www.eclipse.org/qvt/0.9/QVTcoreBase"
+ xsi:schemaLocation="http://www.eclipse.org/ocl/3.1.0/Pivot java://org.eclipse.ocl.examples.pivot.PivotPackage http://www.eclipse.org/qvt/0.9/QVTbase java://org.eclipse.qvtd.pivot.qvtbase.QVTbasePackage http://www.eclipse.org/qvt/0.9/QVTcore java://org.eclipse.qvtd.pivot.qvtcore.QVTcorePackage http://www.eclipse.org/qvt/0.9/QVTcoreBase java://org.eclipse.qvtd.pivot.qvtcorebase.QVTcoreBasePackage">
+ <nestedPackage xsi:type="qvtb:Transformation" xmi:id="T.UpperToLower" name="UpperToLower">
+ <modelParameter name="upperGraph" usedPackage="SimpleGraph.ecore.oclas#P.simplegraph"/>
+ <modelParameter name="lowerGraph" usedPackage="SimpleGraph.ecore.oclas#P.simplegraph"/>
+ <modelParameter name="middle" usedPackage="SimpleGraph2Graph.ecore.oclas#P.simplegraph2graph"/>
+ <rule xsi:type="qvtc:Mapping" name="graph2graph_MR">
+ <domain xsi:type="qvtcb:CoreDomain" name="lowerGraph" isCheckable="false" isEnforceable="true"
+ typedModel="#//@nestedPackage.0/@modelParameter.1">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable name="g2" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph">
+ <ownedComment body="Enforced domains should at least have one realized variable?"/>
+ </realizedVariable>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isEnforceable="false" typedModel="#//@nestedPackage.0/@modelParameter.2">
+ <guardPattern>
+ <variable name="g2g" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph">
+ <ownedComment body="Although in the example is not realized, all middle model variables should be realized&#xA;or does the middle model is also expected to have at least the initial element?"/>
+ </variable>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph2">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#//@nestedPackage.0/@rule.0/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#//@nestedPackage.0/@rule.0/@domain.1/@guardPattern/@variable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Graph.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#//@nestedPackage.0/@rule.0/@domain.1/@guardPattern/@variable.0"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#//@nestedPackage.0/@rule.0/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="graph2graph_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="upperGraph" isCheckable="false" isEnforceable="false"
+ typedModel="#//@nestedPackage.0/@modelParameter.0">
+ <guardPattern>
+ <variable name="g1" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isEnforceable="true" typedModel="#//@nestedPackage.0/@modelParameter.2">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable name="g2g" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph">
+ <ownedComment body="Although in the example is not realized, all middle model variables should be realized&#xA;or does the middle model is also expected to have at least the initial element?"/>
+ </realizedVariable>
+ </bottomPattern>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph1">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#//@nestedPackage.0/@rule.1/@domain.0/@guardPattern/@variable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#//@nestedPackage.0/@rule.1/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.name">
+ <value xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.toLowerCase">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Graph.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#//@nestedPackage.0/@rule.1/@domain.0/@guardPattern/@variable.0"/>
+ </source>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#//@nestedPackage.0/@rule.1/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="node2node_LM">
+ <domain xsi:type="qvtcb:CoreDomain" name="upperGraph" isCheckable="false" isEnforceable="false"
+ typedModel="#//@nestedPackage.0/@modelParameter.0">
+ <guardPattern>
+ <variable name="g1" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"/>
+ <variable name="n1" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isEnforceable="true" typedModel="#//@nestedPackage.0/@modelParameter.2">
+ <guardPattern>
+ <variable name="g2g" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable name="n2n" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph1">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#//@nestedPackage.0/@rule.2/@domain.1/@guardPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#//@nestedPackage.0/@rule.2/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Element.graph">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#//@nestedPackage.0/@rule.2/@domain.0/@guardPattern/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#//@nestedPackage.0/@rule.2/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Element2Element.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#//@nestedPackage.0/@rule.2/@domain.1/@guardPattern/@variable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#//@nestedPackage.0/@rule.2/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.label">
+ <value xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.String.toLowerCase">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleGraph.ecore.oclas#p.simplegraph.Node.label">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#//@nestedPackage.0/@rule.2/@domain.0/@guardPattern/@variable.1"/>
+ </source>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#//@nestedPackage.0/@rule.2/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.node1">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#//@nestedPackage.0/@rule.2/@domain.0/@guardPattern/@variable.1"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#//@nestedPackage.0/@rule.2/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="node2node_MR">
+ <domain xsi:type="qvtcb:CoreDomain" name="lowerGraph" isCheckable="false" isEnforceable="true"
+ typedModel="#//@nestedPackage.0/@modelParameter.1">
+ <guardPattern>
+ <variable name="g2" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Element.graph">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.0/@guardPattern/@variable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <realizedVariable name="n2" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="middle" isEnforceable="false" typedModel="#//@nestedPackage.0/@modelParameter.2">
+ <guardPattern>
+ <variable name="g2g" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"/>
+ <variable name="n2n" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"/>
+ </guardPattern>
+ <bottomPattern/>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Graph2Graph.graph2">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.1/@guardPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Graph"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Element2Element.owner">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.1/@guardPattern/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.1/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.node2">
+ <value xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.1/@guardPattern/@variable.1"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleGraph.ecore.oclas#p.simplegraph.Node.label">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleGraph2Graph.ecore.oclas#p.simplegraph2graph.Node2Node.label">
+ <source xsi:type="pivot:VariableExp" type="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.1/@guardPattern/@variable.1"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleGraph.ecore.oclas#T.simplegraph.Node"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.0/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ </bottomPattern>
+ </rule>
+ </nestedPackage>
+</qvtc:CoreModel>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLowerSchdule.xmi b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLowerSchdule.xmi
new file mode 100644
index 000000000..643393f7c
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLowerSchdule.xmi
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="ASCII"?>
+<qvtschedule:Schedule xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:qvtschedule="http://www.eclipse.org/qvt/0.1/QVTschedule/">
+ <actions xsi:type="qvtschedule:MappingAction" parent="//@actions.4">
+ <distinctArguments>
+ <primaryArguments>
+ <variable href="UpperToLower.qvtp.qvtias#qV.UpperToLower.graph2graph_LM.upperGraph.guard.g1"/>
+ </primaryArguments>
+ </distinctArguments>
+ <mapping href="UpperToLower.qvtp.qvtias#m.UpperToLower.graph2graph_LM"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" parent="//@actions.4">
+ <distinctArguments>
+ <primaryArguments>
+ <variable href="UpperToLower.qvtp.qvtias#qV.UpperToLower.graph2graph_MR.middle.guard.g2g"/>
+ </primaryArguments>
+ </distinctArguments>
+ <mapping href="UpperToLower.qvtp.qvtias#m.UpperToLower.graph2graph_MR"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" parent="//@actions.4">
+ <distinctArguments>
+ <primaryArguments>
+ <variable href="UpperToLower.qvtp.qvtias#qV.UpperToLower.node2node_LM.upperGraph.guard.n1"/>
+ </primaryArguments>
+ </distinctArguments>
+ <distinctArguments>
+ <primaryArguments>
+ <variable href="UpperToLower.qvtp.qvtias#qV.UpperToLower.node2node_LM.middle.guard.g2g"/>
+ </primaryArguments>
+ <secondaryArguments>
+ <variable href="UpperToLower.qvtp.qvtias#qV.UpperToLower.node2node_LM.upperGraph.guard.g1"/>
+ </secondaryArguments>
+ </distinctArguments>
+ <mapping href="UpperToLower.qvtp.qvtias#m.UpperToLower.node2node_LM"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" parent="//@actions.4">
+ <distinctArguments>
+ <primaryArguments>
+ <variable href="UpperToLower.qvtp.qvtias#qV.UpperToLower.node2node_MR.middle.guard.n2n"/>
+ </primaryArguments>
+ <secondaryArguments>
+ <variable href="UpperToLower.qvtp.qvtias#qV.UpperToLower.node2node_MR.middle.guard.g2g"/>
+ </secondaryArguments>
+ <secondaryArguments>
+ <variable href="UpperToLower.qvtp.qvtias#qV.UpperToLower.node2node_MR.lowerGraph.guard.g2"/>
+ </secondaryArguments>
+ </distinctArguments>
+ <mapping href="UpperToLower.qvtp.qvtias#m.UpperToLower.node2node_MR"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" children="//@actions.0 //@actions.1 //@actions.2 //@actions.3">
+ <mapping href="UpperToLower.qvtp.qvtias#m.UpperToLower.__root__"/>
+ </actions>
+</qvtschedule:Schedule>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLowerSchedule.xmi b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLowerSchedule.xmi
new file mode 100644
index 000000000..5f4081d50
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLowerSchedule.xmi
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="ASCII"?>
+<qvtschedule:Schedule xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:qvtschedule="http://www.eclipse.org/qvt/0.1/QVTschedule/">
+ <datums xsi:type="qvtschedule:ClassDatum" sources="//@actions.0" dataParameter="//@actions.1/@distinctArguments.0/@primaryArguments.0 //@actions.2/@distinctArguments.1/@secondaryArguments.0 //@actions.3/@distinctArguments.0/@secondaryArguments.0 //@actions.4/@distinctArguments.2/@secondaryArguments.2 //@actions.5/@distinctArguments.0/@secondaryArguments.0">
+ <type href="SimpleGraph.ecore.oclas#T.simplegraph.Graph"/>
+ <domain href="UpperToLower.qvtp.qvtias#//@nestedPackage.0/@rule.0/@domain.0"/>
+ </datums>
+ <datums xsi:type="qvtschedule:ClassDatum" sources="//@actions.1" dataParameter="//@actions.0/@distinctArguments.0/@primaryArguments.0 //@actions.2/@distinctArguments.0/@primaryArguments.0 //@actions.3/@distinctArguments.0/@secondaryArguments.1 //@actions.4/@distinctArguments.1/@secondaryArguments.0 //@actions.5/@distinctArguments.0/@secondaryArguments.2">
+ <type href="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Graph2Graph"/>
+ <domain href="UpperToLower.qvtp.qvtias#//@nestedPackage.0/@rule.0/@domain.1"/>
+ </datums>
+ <datums xsi:type="qvtschedule:ClassDatum" sources="//@actions.2" dataParameter="//@actions.3/@distinctArguments.0/@primaryArguments.0 //@actions.4/@distinctArguments.0/@primaryArguments.0 //@actions.4/@distinctArguments.1/@primaryArguments.0 //@actions.5/@distinctArguments.0/@secondaryArguments.1 //@actions.5/@distinctArguments.0/@secondaryArguments.3">
+ <type href="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Node2Node"/>
+ <domain href="UpperToLower.qvtp.qvtias#//@nestedPackage.0/@rule.2/@domain.1"/>
+ </datums>
+ <datums xsi:type="qvtschedule:ClassDatum" sources="//@actions.3" dataParameter="//@actions.2/@distinctArguments.1/@primaryArguments.0 //@actions.4/@distinctArguments.2/@secondaryArguments.0 //@actions.4/@distinctArguments.2/@secondaryArguments.1 //@actions.5/@distinctArguments.0/@secondaryArguments.4 //@actions.5/@distinctArguments.0/@secondaryArguments.5">
+ <type href="SimpleGraph.ecore.oclas#T.simplegraph.Node"/>
+ <domain href="UpperToLower.qvtp.qvtias#//@nestedPackage.0/@rule.2/@domain.0"/>
+ </datums>
+ <datums xsi:type="qvtschedule:ClassDatum" sources="//@actions.4" dataParameter="//@actions.5/@distinctArguments.0/@primaryArguments.0">
+ <type href="SimpleGraph2Graph.ecore.oclas#T.simplegraph2graph.Edge2Edge"/>
+ <domain href="UpperToLower.qvtp.qvtias#//@nestedPackage.0/@rule.4/@domain.1"/>
+ </datums>
+ <datums xsi:type="qvtschedule:ClassDatum" sources="//@actions.5" dataParameter="//@actions.4/@distinctArguments.2/@primaryArguments.0">
+ <type href="SimpleGraph.ecore.oclas#T.simplegraph.Edge"/>
+ <domain href="UpperToLower.qvtp.qvtias#//@nestedPackage.0/@rule.4/@domain.0"/>
+ </datums>
+ <actions xsi:type="qvtschedule:MappingAction" results="//@datums.0" order="2" parent="//@actions.6">
+ <distinctArguments>
+ <primaryArguments datum="//@datums.1">
+ <variable href="UpperToLower.qvtp.qvtias#qV.UpperToLower.graph2graph_MR.middle.guard.g2g"/>
+ </primaryArguments>
+ </distinctArguments>
+ <mapping href="UpperToLower.qvtp.qvtias#m.UpperToLower.graph2graph_MR"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" results="//@datums.1" order="1" parent="//@actions.6">
+ <distinctArguments>
+ <primaryArguments datum="//@datums.0">
+ <variable href="UpperToLower.qvtp.qvtias#qV.UpperToLower.graph2graph_LM.upperGraph.guard.g1"/>
+ </primaryArguments>
+ </distinctArguments>
+ <mapping href="UpperToLower.qvtp.qvtias#m.UpperToLower.graph2graph_LM"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" results="//@datums.2" order="3" parent="//@actions.6">
+ <distinctArguments>
+ <primaryArguments datum="//@datums.1">
+ <variable href="UpperToLower.qvtp.qvtias#qV.UpperToLower.node2node_LM.middle.guard.g2g"/>
+ </primaryArguments>
+ </distinctArguments>
+ <distinctArguments>
+ <primaryArguments datum="//@datums.3">
+ <variable href="UpperToLower.qvtp.qvtias#qV.UpperToLower.node2node_LM.upperGraph.guard.n1"/>
+ </primaryArguments>
+ <secondaryArguments datum="//@datums.0">
+ <variable href="UpperToLower.qvtp.qvtias#qV.UpperToLower.node2node_LM.upperGraph.guard.g1"/>
+ </secondaryArguments>
+ </distinctArguments>
+ <mapping href="UpperToLower.qvtp.qvtias#m.UpperToLower.node2node_LM"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" results="//@datums.3" order="4" parent="//@actions.6">
+ <distinctArguments>
+ <primaryArguments datum="//@datums.2">
+ <variable href="UpperToLower.qvtp.qvtias#qV.UpperToLower.node2node_MR.middle.guard.n2n"/>
+ </primaryArguments>
+ <secondaryArguments datum="//@datums.0">
+ <variable href="UpperToLower.qvtp.qvtias#qV.UpperToLower.node2node_MR.lowerGraph.guard.g2"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.1">
+ <variable href="UpperToLower.qvtp.qvtias#qV.UpperToLower.node2node_MR.middle.guard.g2g"/>
+ </secondaryArguments>
+ </distinctArguments>
+ <mapping href="UpperToLower.qvtp.qvtias#m.UpperToLower.node2node_MR"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" results="//@datums.4" order="5" parent="//@actions.6">
+ <distinctArguments>
+ <primaryArguments datum="//@datums.2">
+ <variable href="UpperToLower.qvtp.qvtias#qV.UpperToLower.edge2edge_LM.middle.guard.tn2n"/>
+ </primaryArguments>
+ </distinctArguments>
+ <distinctArguments>
+ <primaryArguments datum="//@datums.2">
+ <variable href="UpperToLower.qvtp.qvtias#qV.UpperToLower.edge2edge_LM.middle.guard.sn2n"/>
+ </primaryArguments>
+ <secondaryArguments datum="//@datums.1">
+ <variable href="UpperToLower.qvtp.qvtias#qV.UpperToLower.edge2edge_LM.middle.guard.g2g"/>
+ </secondaryArguments>
+ </distinctArguments>
+ <distinctArguments>
+ <primaryArguments datum="//@datums.5">
+ <variable href="UpperToLower.qvtp.qvtias#qV.UpperToLower.edge2edge_LM.upperGraph.guard.e1"/>
+ </primaryArguments>
+ <secondaryArguments datum="//@datums.3">
+ <variable href="UpperToLower.qvtp.qvtias#qV.UpperToLower.edge2edge_LM.upperGraph.guard.sn1"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.3">
+ <variable href="UpperToLower.qvtp.qvtias#qV.UpperToLower.edge2edge_LM.upperGraph.guard.tn1"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.0">
+ <variable href="UpperToLower.qvtp.qvtias#qV.UpperToLower.edge2edge_LM.upperGraph.guard.g1"/>
+ </secondaryArguments>
+ </distinctArguments>
+ <mapping href="UpperToLower.qvtp.qvtias#m.UpperToLower.edge2edge_LM"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" results="//@datums.5" order="6" parent="//@actions.6">
+ <distinctArguments>
+ <primaryArguments datum="//@datums.4">
+ <variable href="UpperToLower.qvtp.qvtias#qV.UpperToLower.edge2edge_MR.middle.guard.e2e"/>
+ </primaryArguments>
+ <secondaryArguments datum="//@datums.0">
+ <variable href="UpperToLower.qvtp.qvtias#qV.UpperToLower.edge2edge_MR.lowerGraph.guard.g2"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.2">
+ <variable href="UpperToLower.qvtp.qvtias#qV.UpperToLower.edge2edge_MR.middle.guard.tn2n"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.1">
+ <variable href="UpperToLower.qvtp.qvtias#qV.UpperToLower.edge2edge_MR.middle.guard.g2g"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.2">
+ <variable href="UpperToLower.qvtp.qvtias#qV.UpperToLower.edge2edge_MR.middle.guard.sn2n"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.3">
+ <variable href="UpperToLower.qvtp.qvtias#qV.UpperToLower.edge2edge_MR.lowerGraph.guard.sn2"/>
+ </secondaryArguments>
+ <secondaryArguments datum="//@datums.3">
+ <variable href="UpperToLower.qvtp.qvtias#qV.UpperToLower.edge2edge_MR.lowerGraph.guard.tn2"/>
+ </secondaryArguments>
+ </distinctArguments>
+ <mapping href="UpperToLower.qvtp.qvtias#m.UpperToLower.edge2edge_MR"/>
+ </actions>
+ <actions xsi:type="qvtschedule:MappingAction" children="//@actions.1 //@actions.0 //@actions.2 //@actions.3 //@actions.4 //@actions.5">
+ <mapping href="UpperToLower.qvtp.qvtias#m.UpperToLower.__root__"/>
+ </actions>
+</qvtschedule:Schedule>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UtoLGraphQVTiToText.launch b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UtoLGraphQVTiToText.launch
new file mode 100644
index 000000000..1c03a59bc
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UtoLGraphQVTiToText.launch
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.epsilon.egl.eclipse.dt.launching.EglLaunchConfigurationDelegate">
+<booleanAttribute key="appendToFile" value="false"/>
+<listAttribute key="defaultFormatters"/>
+<booleanAttribute key="fine_grained_profiling" value="false"/>
+<intAttribute key="generateTo" value="1"/>
+<listAttribute key="models">
+<listEntry value="#&#13;&#10;#Wed Sep 24 10:25:17 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=QVTi&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=QVT&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/0.9/QVTimperative,http\://www.eclipse.org/ocl/3.1.0/Pivot,http\://www.eclipse.org/qvt/0.9/QVTbase,http\://www.eclipse.org/qvt/0.9/QVTcoreBase&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower.qvtias&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/UpperToLower.qvtias&#13;&#10;expand=false&#13;&#10;metamodelFile=&#13;&#10;"/>
+</listAttribute>
+<stringAttribute key="outputFilePath" value="/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/UpperToLower/UpperToLowerPartition.qvtm.qvtc"/>
+<booleanAttribute key="produceTrace" value="false"/>
+<booleanAttribute key="profile_model_loading" value="false"/>
+<booleanAttribute key="profiling_enabled" value="false"/>
+<booleanAttribute key="reset_profiler" value="false"/>
+<stringAttribute key="source" value="/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/extras/QVTiToText.egl"/>
+<stringAttribute key="templateFactoryType" value="org.eclipse.epsilon.egl.EglFileGeneratingTemplateFactory"/>
+<stringAttribute key="traceDestination" value=""/>
+</launchConfiguration>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/GraphToGraphMinimal/build.properties b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/build.properties
index 828428016..828428016 100644
--- a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/GraphToGraphMinimal/build.properties
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UpperToLower/build.properties
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/SimpleOCL/SimpleOCLMergeDataDep.graphml b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/SimpleOCL/SimpleOCLMergeDataDep.graphml
new file mode 100644
index 000000000..d75570f45
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/SimpleOCL/SimpleOCLMergeDataDep.graphml
@@ -0,0 +1,636 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
+ <!--Created by yEd 3.12-->
+ <key for="graphml" id="d0" yfiles.type="resources"/>
+ <key for="port" id="d1" yfiles.type="portgraphics"/>
+ <key for="port" id="d2" yfiles.type="portgeometry"/>
+ <key for="port" id="d3" yfiles.type="portuserdata"/>
+ <key attr.name="url" attr.type="string" for="node" id="d4"/>
+ <key attr.name="description" attr.type="string" for="node" id="d5"/>
+ <key for="node" id="d6" yfiles.type="nodegraphics"/>
+ <key attr.name="url" attr.type="string" for="edge" id="d7"/>
+ <key attr.name="description" attr.type="string" for="edge" id="d8"/>
+ <key for="edge" id="d9" yfiles.type="edgegraphics"/>
+ <graph edgedefault="directed" id="G">
+ <node id="n0">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="573.4238095238095" y="210.0"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="106.064453125" x="-38.0322265625" y="5.6494140625">Z_to_D_1_creation</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n1">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="452.359126984127" y="210.0"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="106.064453125" x="-38.0322265625" y="5.6494140625">Z_to_D_2_creation</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n2">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="394.3265873015873" y="365.0"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="54.033203125" x="-12.0166015625" y="5.6494140625">Y1_To_B</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n3">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="254.59285714285716" y="490.0"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="54.033203125" x="-12.0166015625" y="5.6494140625">X_To_A2</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n4">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="324.96230158730157" y="365.0"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="54.6953125" x="-12.34765625" y="5.6494140625">Y2_To_C</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n5">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="406.8265873015873" y="75.0"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="54.033203125" x="-12.0166015625" y="5.6494140625">X_To_A1</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n6">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="232.57619047619048" y="365.0"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="100.076171875" x="-35.0380859375" y="5.6494140625">Z_to_D_1_update</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n7">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="162.53809523809522" y="490.0"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="100.076171875" x="-35.0380859375" y="5.6494140625">Z_to_D_2_update</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n8" yfiles.foldertype="group">
+ <data key="d4"/>
+ <data key="d5"/>
+ <data key="d6">
+ <y:ProxyAutoBoundsNode>
+ <y:Realizers active="0">
+ <y:GroupNode>
+ <y:Geometry height="627.37646484375" width="142.5" x="-15.0" y="-37.37646484375"/>
+ <y:Fill color="#F5F5F5" transparent="false"/>
+ <y:BorderStyle color="#000000" type="dashed" width="1.0"/>
+ <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#EBEBEB" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="22.37646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="142.5" x="0.0" y="0.0">Group 1</y:NodeLabel>
+ <y:Shape type="roundrectangle"/>
+ <y:State closed="false" closedHeight="50.0" closedWidth="50.0" innerGraphDisplayEnabled="false"/>
+ <y:Insets bottom="15" bottomF="15.0" left="15" leftF="15.0" right="15" rightF="15.0" top="15" topF="15.0"/>
+ <y:BorderInsets bottom="410" bottomF="410.0" left="15" leftF="15.0" right="15" rightF="15.0" top="0" topF="0.0"/>
+ </y:GroupNode>
+ <y:GroupNode>
+ <y:Geometry height="50.0" width="50.0" x="0.0" y="60.0"/>
+ <y:Fill color="#F5F5F5" transparent="false"/>
+ <y:BorderStyle color="#000000" type="dashed" width="1.0"/>
+ <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#EBEBEB" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="22.37646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="59.02685546875" x="-4.513427734375" y="0.0">Folder 1</y:NodeLabel>
+ <y:Shape type="roundrectangle"/>
+ <y:State closed="true" closedHeight="50.0" closedWidth="50.0" innerGraphDisplayEnabled="false"/>
+ <y:Insets bottom="5" bottomF="5.0" left="5" leftF="5.0" right="5" rightF="5.0" top="5" topF="5.0"/>
+ <y:BorderInsets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
+ </y:GroupNode>
+ </y:Realizers>
+ </y:ProxyAutoBoundsNode>
+ </data>
+ <graph edgedefault="directed" id="n8:">
+ <node id="n8::n0">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="33.75" y="0.0"/>
+ <y:Fill color="#FF00FF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="12.00390625" x="8.998046875" y="5.6494140625">X</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n8::n1">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="67.5" y="75.0"/>
+ <y:Fill color="#FF00FF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="18.677734375" x="5.6611328125" y="5.6494140625">Y1</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n8::n2">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="22.5" y="75.0"/>
+ <y:Fill color="#FF00FF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="18.677734375" x="5.6611328125" y="5.6494140625">Y2</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n8::n3">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="15.0" y="135.0"/>
+ <y:Fill color="#FF00FF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="11.330078125" x="9.3349609375" y="5.6494140625">Z</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ </graph>
+ </node>
+ <node id="n9" yfiles.foldertype="group">
+ <data key="d4"/>
+ <data key="d5"/>
+ <data key="d6">
+ <y:ProxyAutoBoundsNode>
+ <y:Realizers active="0">
+ <y:GroupNode>
+ <y:Geometry height="627.37646484375" width="117.5" x="641.4563492063492" y="-37.37646484375"/>
+ <y:Fill color="#F5F5F5" transparent="false"/>
+ <y:BorderStyle color="#000000" type="dashed" width="1.0"/>
+ <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#EBEBEB" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="22.37646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="117.5" x="0.0" y="0.0">Group 2</y:NodeLabel>
+ <y:Shape type="roundrectangle"/>
+ <y:State closed="false" closedHeight="50.0" closedWidth="50.0" innerGraphDisplayEnabled="false"/>
+ <y:Insets bottom="15" bottomF="15.0" left="15" leftF="15.0" right="15" rightF="15.0" top="15" topF="15.0"/>
+ <y:BorderInsets bottom="0" bottomF="0.0" left="15" leftF="15.0" right="15" rightF="15.0" top="135" topF="135.0"/>
+ </y:GroupNode>
+ <y:GroupNode>
+ <y:Geometry height="50.0" width="50.0" x="0.0" y="60.0"/>
+ <y:Fill color="#F5F5F5" transparent="false"/>
+ <y:BorderStyle color="#000000" type="dashed" width="1.0"/>
+ <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#EBEBEB" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="22.37646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="59.02685546875" x="-4.513427734375" y="0.0">Folder 2</y:NodeLabel>
+ <y:Shape type="roundrectangle"/>
+ <y:State closed="true" closedHeight="50.0" closedWidth="50.0" innerGraphDisplayEnabled="false"/>
+ <y:Insets bottom="5" bottomF="5.0" left="5" leftF="5.0" right="5" rightF="5.0" top="5" topF="5.0"/>
+ <y:BorderInsets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
+ </y:GroupNode>
+ </y:Realizers>
+ </y:ProxyAutoBoundsNode>
+ </data>
+ <graph edgedefault="directed" id="n9:">
+ <node id="n9::n0">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="698.9563492063492" y="135.0"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="18.677734375" x="5.6611328125" y="5.6494140625">A1</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n9::n1">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="691.4563492063492" y="210.0"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="12.00390625" x="8.998046875" y="5.6494140625">B</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n9::n2">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="678.4563492063492" y="545.0"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="18.677734375" x="5.6611328125" y="5.6494140625">A2</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n9::n3">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="675.9563492063492" y="420.0"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="12.666015625" x="8.6669921875" y="5.6494140625">C</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n9::n4">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="671.4563492063492" y="285.0"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="12.666015625" x="8.6669921875" y="5.6494140625">D</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ </graph>
+ </node>
+ <edge id="n8::e0" source="n8::n0" target="n8::n1">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-3.75" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="45.0" y="60.0"/>
+ <y:Point x="82.5" y="60.0"/>
+ </y:Path>
+ <y:LineStyle color="#FF00FF" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="n8::e1" source="n8::n0" target="n8::n2">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-11.25" sy="15.0" tx="0.0" ty="-15.0"/>
+ <y:LineStyle color="#FF00FF" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="n8::e2" source="n8::n2" target="n8::n3">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-7.5" sy="15.0" tx="0.0" ty="-15.0"/>
+ <y:LineStyle color="#FF00FF" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="n9::e0" source="n9::n0" target="n9::n1">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="7.5" ty="-15.0"/>
+ <y:LineStyle color="#FFCC00" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="n9::e1" source="n9::n2" target="n9::n3">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="7.5" sy="-15.0" tx="10.0" ty="15.0"/>
+ <y:LineStyle color="#FFCC00" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="n9::e2" source="n9::n3" target="n9::n4">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="7.5" sy="-15.0" tx="12.0" ty="15.0"/>
+ <y:LineStyle color="#FFCC00" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e0" source="n8::n3" target="n0">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="11.25" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="41.25" y="185.0"/>
+ <y:Point x="588.4238095238095" y="185.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e1" source="n0" target="n9::n4">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="588.4238095238095" y="260.0"/>
+ <y:Point x="686.4563492063492" y="260.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e2" source="n8::n3" target="n1">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="3.75" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="33.75" y="195.0"/>
+ <y:Point x="467.359126984127" y="195.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e3" source="n1" target="n9::n4">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="-10.0" ty="-15.0">
+ <y:Point x="467.359126984127" y="270.0"/>
+ <y:Point x="676.4563492063492" y="270.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e4" source="n8::n1" target="n2">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="-10.0" ty="-11.15625">
+ <y:Point x="82.5" y="115.0"/>
+ <y:Point x="399.3265873015873" y="115.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e5" source="n9::n4" target="n2">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="686.4563492063492" y="345.0"/>
+ <y:Point x="409.3265873015873" y="345.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e6" source="n2" target="n9::n1">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="10.0" sy="-11.15625" tx="10.0" ty="15.0">
+ <y:Point x="419.3265873015873" y="355.0"/>
+ <y:Point x="716.4563492063492" y="355.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e7" source="n9::n3" target="n3">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="7.5" ty="-12.96875">
+ <y:Point x="690.9563492063492" y="475.0"/>
+ <y:Point x="277.09285714285716" y="475.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e8" source="n8::n0" target="n3">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="3.75" sy="15.0" tx="-7.5" ty="-12.96875">
+ <y:Point x="52.5" y="50.0"/>
+ <y:Point x="182.53809523809522" y="50.0"/>
+ <y:Point x="182.53809523809522" y="445.0"/>
+ <y:Point x="262.09285714285716" y="445.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e9" source="n3" target="n9::n2">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="-7.5" ty="-15.0">
+ <y:Point x="269.59285714285716" y="530.0"/>
+ <y:Point x="685.9563492063492" y="530.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e10" source="n9::n4" target="n4">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-6.0" sy="15.0" tx="7.5" ty="-12.96875">
+ <y:Point x="680.4563492063492" y="335.0"/>
+ <y:Point x="347.46230158730157" y="335.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e11" source="n8::n2" target="n4">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="7.5" sy="15.0" tx="-7.5" ty="-12.96875">
+ <y:Point x="45.0" y="125.0"/>
+ <y:Point x="332.46230158730157" y="125.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e12" source="n4" target="n9::n3">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="-7.5" ty="-15.0">
+ <y:Point x="339.96230158730157" y="405.0"/>
+ <y:Point x="683.4563492063492" y="405.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e13" source="n8::n0" target="n5">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="11.25" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="60.0" y="40.0"/>
+ <y:Point x="421.8265873015873" y="40.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e14" source="n9::n1" target="n5">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-7.5" sy="-15.0" tx="-7.5" ty="12.96875">
+ <y:Point x="698.9563492063492" y="175.0"/>
+ <y:Point x="414.3265873015873" y="175.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e15" source="n5" target="n9::n0">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="7.5" sy="12.96875" tx="0.0" ty="-15.0">
+ <y:Point x="429.3265873015873" y="115.0"/>
+ <y:Point x="713.9563492063492" y="115.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e16" source="n9::n4" target="n6">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-12.0" sy="15.0" tx="10.000000000000028" ty="-11.15625">
+ <y:Point x="674.4563492063492" y="325.0"/>
+ <y:Point x="257.5761904761905" y="325.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e17" source="n8::n3" target="n6">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-3.75" sy="15.0" tx="-10.0" ty="-11.15625">
+ <y:Point x="26.25" y="205.0"/>
+ <y:Point x="237.57619047619048" y="205.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e18" source="n9::n1" target="n6">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-10.0" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="696.4563492063492" y="250.0"/>
+ <y:Point x="247.57619047619048" y="250.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e19" source="n9::n3" target="n7">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-10.0" sy="15.0" tx="10.0" ty="-11.15625">
+ <y:Point x="680.9563492063492" y="465.0"/>
+ <y:Point x="187.53809523809522" y="465.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e20" source="n8::n3" target="n7">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-11.25" sy="15.0" tx="-10.0" ty="-11.15625">
+ <y:Point x="18.75" y="215.0"/>
+ <y:Point x="167.53809523809522" y="215.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e21" source="n9::n4" target="n7">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="6.0" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="692.4563492063492" y="365.0"/>
+ <y:Point x="451.343253968254" y="365.0"/>
+ <y:Point x="451.343253968254" y="455.0"/>
+ <y:Point x="177.53809523809522" y="455.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="n9::e3" source="n9::n1" target="n9::n4">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="10.0" ty="-15.0">
+ <y:Point x="706.4563492063492" y="260.0"/>
+ <y:Point x="696.4563492063492" y="260.0"/>
+ </y:Path>
+ <y:LineStyle color="#FFCC00" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ </graph>
+ <data key="d0">
+ <y:Resources/>
+ </data>
+</graphml>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/DataDepToGraphML.launch b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/DataDepToGraphML.launch
new file mode 100644
index 000000000..19399776e
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/DataDepToGraphML.launch
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.epsilon.eol.eclipse.dt.launching.EolLaunchConfigurationDelegate">
+<booleanAttribute key="fine_grained_profiling" value="false"/>
+<listAttribute key="models">
+<listEntry value="#&#13;&#10;#Wed May 07 12:17:10 BST 2014&#13;&#10;name=gml&#13;&#10;readOnLoad=false&#13;&#10;storeOnDisposal=true&#13;&#10;aliases=&#13;&#10;cached=true&#13;&#10;xsdFile=/org.eclipse.qvtd.build.etl/schema/ygraphml.xsd&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/UmlToRdbmsDataDep.graphml&#13;&#10;type=XML&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/UmlToRdbmsDataDep.graphml&#13;&#10;xsdUri=platform\:/resource/org.eclipse.qvtd.build.etl/schema/ygraphml.xsd&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Thu May 08 12:37:39 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=graph&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/examples/0.2/QVTcDataDependencyGraph&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsDataDep.xmi&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsDataDep.xmi&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+</listAttribute>
+<booleanAttribute key="profile_model_loading" value="false"/>
+<booleanAttribute key="profiling_enabled" value="false"/>
+<booleanAttribute key="reset_profiler" value="false"/>
+<stringAttribute key="source" value="/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/extras/GraphToGraphML.eol"/>
+</launchConfiguration>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/InterDepToGraphML.launch b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/InterDepToGraphML.launch
new file mode 100644
index 000000000..1b1935ab0
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/InterDepToGraphML.launch
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.epsilon.eol.eclipse.dt.launching.EolLaunchConfigurationDelegate">
+<booleanAttribute key="fine_grained_profiling" value="false"/>
+<listAttribute key="models">
+<listEntry value="#&#13;&#10;#Wed May 07 14:19:45 BST 2014&#13;&#10;name=gml&#13;&#10;readOnLoad=false&#13;&#10;storeOnDisposal=true&#13;&#10;aliases=&#13;&#10;cached=true&#13;&#10;xsdFile=/org.eclipse.qvtd.build.etl/schema/ygraphml.xsd&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/UmlToRdbmsInterDep.graphml&#13;&#10;type=XML&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/UmlToRdbmsInterDep.graphml&#13;&#10;xsdUri=platform\:/resource/org.eclipse.qvtd.build.etl/schema/ygraphml.xsd&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Thu May 08 12:37:57 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=graph&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/examples/0.2/QVTcDataDependencyGraph&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsInterMap.xmi&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsInterMap.xmi&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+</listAttribute>
+<booleanAttribute key="profile_model_loading" value="false"/>
+<booleanAttribute key="profiling_enabled" value="false"/>
+<booleanAttribute key="reset_profiler" value="false"/>
+<stringAttribute key="source" value="/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/extras/GraphToGraphML.eol"/>
+</launchConfiguration>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/MergeDataDepToGraphML.launch b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/MergeDataDepToGraphML.launch
new file mode 100644
index 000000000..5999d064d
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/MergeDataDepToGraphML.launch
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.epsilon.eol.eclipse.dt.launching.EolLaunchConfigurationDelegate">
+<booleanAttribute key="fine_grained_profiling" value="false"/>
+<listAttribute key="models">
+<listEntry value="#&#13;&#10;#Wed May 07 12:17:45 BST 2014&#13;&#10;name=gml&#13;&#10;readOnLoad=false&#13;&#10;storeOnDisposal=true&#13;&#10;aliases=&#13;&#10;cached=true&#13;&#10;xsdFile=/org.eclipse.qvtd.build.etl/schema/ygraphml.xsd&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/UmlToRdbmsMergeDataDep.graphml&#13;&#10;type=XML&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/UmlToRdbmsMergeDataDep.graphml&#13;&#10;xsdUri=platform\:/resource/org.eclipse.qvtd.build.etl/schema/ygraphml.xsd&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Thu May 08 12:38:22 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=graph&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/examples/0.2/QVTcDataDependencyGraph&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsMergeDataDep.xmi&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsMergeDataDep.xmi&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+</listAttribute>
+<booleanAttribute key="profile_model_loading" value="false"/>
+<booleanAttribute key="profiling_enabled" value="false"/>
+<booleanAttribute key="reset_profiler" value="false"/>
+<stringAttribute key="source" value="/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/extras/GraphToGraphML.eol"/>
+</launchConfiguration>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/ReducedDataDepToGraphML.launch b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/ReducedDataDepToGraphML.launch
new file mode 100644
index 000000000..5b955f812
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/ReducedDataDepToGraphML.launch
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.epsilon.eol.eclipse.dt.launching.EolLaunchConfigurationDelegate">
+<booleanAttribute key="fine_grained_profiling" value="false"/>
+<listAttribute key="models">
+<listEntry value="#&#13;&#10;#Thu Jun 05 19:00:25 BST 2014&#13;&#10;name=gml&#13;&#10;readOnLoad=false&#13;&#10;storeOnDisposal=true&#13;&#10;aliases=&#13;&#10;cached=true&#13;&#10;xsdFile=/org.eclipse.qvtd.build.etl/schema/ygraphml.xsd&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/UmlToRdbmsReducedDataDep.graphml&#13;&#10;type=XML&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/UmlToRdbmsReducedDataDep.graphml&#13;&#10;xsdUri=platform\:/resource/org.eclipse.qvtd.build.etl/schema/ygraphml.xsd&#13;&#10;"/>
+<listEntry value="#&#13;&#10;#Thu May 08 12:38:41 BST 2014&#13;&#10;isMetamodelFileBased=false&#13;&#10;name=graph&#13;&#10;readOnLoad=true&#13;&#10;storeOnDisposal=false&#13;&#10;aliases=&#13;&#10;cached=true&#13;&#10;fileBasedMetamodelUri=&#13;&#10;metamodelUri=http\://www.eclipse.org/qvt/examples/0.2/QVTcDataDependencyGraph&#13;&#10;modelUri=platform\:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsReducedDataDep.xmi&#13;&#10;type=EMF&#13;&#10;modelFile=/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/UmlToRdbms/UmlToRdbmsReducedDataDep.xmi&#13;&#10;expand=true&#13;&#10;metamodelFile=&#13;&#10;"/>
+</listAttribute>
+<booleanAttribute key="profile_model_loading" value="false"/>
+<booleanAttribute key="profiling_enabled" value="false"/>
+<booleanAttribute key="reset_profiler" value="false"/>
+<stringAttribute key="source" value="/org.eclipse.qvtd.build.etl/src/org/eclipse/qvtd/build/etl/extras/GraphToGraphML.eol"/>
+</launchConfiguration>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/SimpleUmlContainmentTree.graphml b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/SimpleUmlContainmentTree.graphml
new file mode 100644
index 000000000..fa882bed6
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/SimpleUmlContainmentTree.graphml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<graphml:graphml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://graphml.graphdrawing.org/xmlns"
+ xmlns:graphml="http://graphml.graphdrawing.org/xmlns/graphml" xmlns:y="http://www.yworks.com/xml/graphml"
+ xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://graphml.graphdrawing.org/xmlns/1.1/graphml.xsd">
+ <graphml:graph edgedefault="directed" id="G"/>
+</graphml:graphml> \ No newline at end of file
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/UmlToRdbmsContainmentTree.graphml b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/UmlToRdbmsContainmentTree.graphml
new file mode 100644
index 000000000..fa882bed6
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/UmlToRdbmsContainmentTree.graphml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<graphml:graphml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://graphml.graphdrawing.org/xmlns"
+ xmlns:graphml="http://graphml.graphdrawing.org/xmlns/graphml" xmlns:y="http://www.yworks.com/xml/graphml"
+ xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://graphml.graphdrawing.org/xmlns/1.1/graphml.xsd">
+ <graphml:graph edgedefault="directed" id="G"/>
+</graphml:graphml> \ No newline at end of file
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/UmlToRdbmsDataDep.graphml b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/UmlToRdbmsDataDep.graphml
new file mode 100644
index 000000000..b1c9cea6f
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/UmlToRdbmsDataDep.graphml
@@ -0,0 +1,1085 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<graphml:graphml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://graphml.graphdrawing.org/xmlns"
+ xmlns:graphml="http://graphml.graphdrawing.org/xmlns/graphml" xmlns:y="http://www.yworks.com/xml/graphml"
+ xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://graphml.graphdrawing.org/xmlns/1.1/graphml.xsd">
+ <graphml:key attr.name="description" attr.type="string" for="node" id="d5"/>
+ <graphml:key for="node" id="d6" yfiles.type="nodegraphics"/>
+ <graphml:key attr.name="description" attr.type="string" for="edge" id="d8"/>
+ <graphml:key for="edge" id="d9" yfiles.type="edgegraphics"/>
+ <graphml:graph edgedefault="directed" id="G">
+ <graphml:node id="n0">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ff6600" transparent="false"/>
+ <y:NodeLabel>attributeColumns_MR</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n1">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#99ccff" transparent="false"/>
+ <y:NodeLabel>Table</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n2">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>ClassToTable</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n3">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>AttributeToColumn</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n4">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>StringToVarchar</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n5">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>BooleanToBoolean</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n6">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>IntegerToNumber</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n7">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#99ccff" transparent="false"/>
+ <y:NodeLabel>Column</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n8">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill transparent="false"/>
+ <y:NodeLabel>Column.type</y:NodeLabel>
+ <y:Shape type="diamond"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n9">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill transparent="false"/>
+ <y:NodeLabel>BooleanToBoolean.typeName</y:NodeLabel>
+ <y:Shape type="diamond"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n10">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill transparent="false"/>
+ <y:NodeLabel>IntegerToNumber.typeName</y:NodeLabel>
+ <y:Shape type="diamond"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n11">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill transparent="false"/>
+ <y:NodeLabel>StringToVarchar.typeName</y:NodeLabel>
+ <y:Shape type="diamond"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n12">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ff6600" transparent="false"/>
+ <y:NodeLabel>classComplexAttributes_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n13">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ff00ff" transparent="false"/>
+ <y:NodeLabel>Class</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n14">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ff00ff" transparent="false"/>
+ <y:NodeLabel>Attribute</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n15">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>NonLeafAttribute</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n16">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ff6600" transparent="false"/>
+ <y:NodeLabel>classToTable_MR</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n17">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>PackageToSchema</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n18">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#99ccff" transparent="false"/>
+ <y:NodeLabel>Schema</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n19">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#99ccff" transparent="false"/>
+ <y:NodeLabel>Key</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n20">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ff6600" transparent="false"/>
+ <y:NodeLabel>packageToSchema_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n21">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ff00ff" transparent="false"/>
+ <y:NodeLabel>Package</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n22">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ff6600" transparent="false"/>
+ <y:NodeLabel>associationToForeignKey_MR</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n23">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ffcc00" transparent="false"/>
+ <y:NodeLabel>AssociationToForeignKey</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n24">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#99ccff" transparent="false"/>
+ <y:NodeLabel>ForeignKey</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n25">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ff6600" transparent="false"/>
+ <y:NodeLabel>packageToSchema_MR</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n26">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ff6600" transparent="false"/>
+ <y:NodeLabel>classToTable_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n27">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ff6600" transparent="false"/>
+ <y:NodeLabel>booleanToBoolean_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n28">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ff00ff" transparent="false"/>
+ <y:NodeLabel>PrimitiveDataType</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n29">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ff6600" transparent="false"/>
+ <y:NodeLabel>stringToVarchar_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n30">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ff6600" transparent="false"/>
+ <y:NodeLabel>booleanToBoolean_MR</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n31">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ff6600" transparent="false"/>
+ <y:NodeLabel>complexAttributePrimitiveAttributes_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n32">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ff6600" transparent="false"/>
+ <y:NodeLabel>integerToNumber_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n33">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ff6600" transparent="false"/>
+ <y:NodeLabel>integerToNumber_MR</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n34">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ff6600" transparent="false"/>
+ <y:NodeLabel>classPrimitiveAttributes_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n35">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ff6600" transparent="false"/>
+ <y:NodeLabel>complexAttributeComplexAttributes_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n36">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ff6600" transparent="false"/>
+ <y:NodeLabel>associationToForeignKey_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n37">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ff00ff" transparent="false"/>
+ <y:NodeLabel>Association</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:node id="n38">
+ <graphml:data key="d5"/>
+ <graphml:data key="d6"><y:ShapeNode>
+ <y:Fill color="#ff6600" transparent="false"/>
+ <y:NodeLabel>stringToVarchar_MR</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode></graphml:data>
+ </graphml:node>
+ <graphml:edge id="e0" source="n1" target="n0">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e1" source="n2" target="n1">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#993366" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e2" source="n3" target="n0">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e3" source="n2" target="n0">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e4" source="n3" target="n2">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ffcc00" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e5" source="n4" target="n0">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e6" source="n5" target="n0">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e7" source="n6" target="n0">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e8" source="n0" target="n7">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#000000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e9" source="n0" target="n8">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#000000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e10" source="n9" target="n0">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e11" source="n10" target="n0">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e12" source="n11" target="n0">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e13" source="n2" target="n12">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e14" source="n13" target="n12">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ff0000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e15" source="n14" target="n12">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e16" source="n13" target="n12">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e17" source="n2" target="n13">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#993366" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e18" source="n14" target="n13">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ff00ff" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e19" source="n12" target="n15">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#000000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e20" source="n15" target="n2">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ffcc00" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e21" source="n2" target="n16">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e22" source="n17" target="n16">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e23" source="n18" target="n16">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e24" source="n16" target="n1">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#000000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e25" source="n19" target="n1">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#0000ff" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e26" source="n16" target="n19">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#000000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e27" source="n16" target="n7">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#000000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e28" source="n21" target="n20">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e29" source="n20" target="n17">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#000000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e30" source="n1" target="n22">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ff0000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e31" source="n23" target="n22">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e32" source="n19" target="n22">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e33" source="n18" target="n22">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e34" source="n1" target="n18">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#0000ff" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e35" source="n17" target="n18">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#993366" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e36" source="n17" target="n22">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e37" source="n2" target="n22">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ff0000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e38" source="n23" target="n2">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ffcc00" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e39" source="n2" target="n22">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e40" source="n1" target="n22">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e41" source="n22" target="n24">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#000000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e42" source="n22" target="n7">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#000000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e43" source="n24" target="n1">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#0000ff" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e44" source="n7" target="n1">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#0000ff" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e45" source="n24" target="n19">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#993366" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e46" source="n17" target="n25">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e47" source="n25" target="n18">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#000000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e48" source="n13" target="n26">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e49" source="n21" target="n26">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e50" source="n17" target="n26">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e51" source="n26" target="n2">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#000000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e52" source="n28" target="n27">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e53" source="n17" target="n27">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e54" source="n21" target="n27">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e55" source="n28" target="n21">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ff00ff" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e56" source="n27" target="n5">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#000000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e57" source="n5" target="n17">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ffcc00" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e58" source="n28" target="n29">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e59" source="n17" target="n29">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e60" source="n21" target="n29">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e61" source="n29" target="n4">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#000000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e62" source="n4" target="n17">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ffcc00" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e63" source="n17" target="n30">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e64" source="n5" target="n30">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e65" source="n30" target="n9">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#000000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e66" source="n14" target="n31">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ff0000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e67" source="n13" target="n31">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e68" source="n4" target="n31">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e69" source="n5" target="n31">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e70" source="n6" target="n31">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e71" source="n15" target="n31">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e72" source="n28" target="n31">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e73" source="n14" target="n28">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#993366" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e74" source="n14" target="n31">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e75" source="n31" target="n3">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#000000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e76" source="n3" target="n5">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#993366" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e77" source="n3" target="n15">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ffcc00" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e78" source="n17" target="n32">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e79" source="n28" target="n32">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e80" source="n21" target="n32">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e81" source="n17" target="n21">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#993366" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e82" source="n32" target="n6">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#000000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e83" source="n6" target="n17">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ffcc00" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e84" source="n6" target="n28">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#993366" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e85" source="n17" target="n33">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e86" source="n6" target="n33">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e87" source="n33" target="n10">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#000000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e88" source="n14" target="n34">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e89" source="n28" target="n34">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e90" source="n4" target="n28">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#993366" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e91" source="n5" target="n28">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#993366" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e92" source="n4" target="n34">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e93" source="n6" target="n34">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e94" source="n5" target="n34">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e95" source="n13" target="n34">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e96" source="n2" target="n34">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e97" source="n34" target="n3">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#000000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e98" source="n3" target="n14">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#993366" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e99" source="n3" target="n4">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#993366" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e100" source="n3" target="n6">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#993366" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e101" source="n14" target="n35">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ff0000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e102" source="n14" target="n35">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e103" source="n15" target="n35">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e104" source="n13" target="n35">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ff0000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e105" source="n13" target="n35">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e106" source="n14" target="n13">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#993366" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e107" source="n35" target="n15">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#000000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e108" source="n15" target="n14">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#993366" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e109" source="n15" target="n15">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ffcc00" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e110" source="n37" target="n36">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e111" source="n13" target="n36">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ff0000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e112" source="n2" target="n36">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ff0000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e113" source="n21" target="n36">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e114" source="n37" target="n21">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ff00ff" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e115" source="n13" target="n21">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ff00ff" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e116" source="n17" target="n36">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e117" source="n2" target="n17">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#ffcc00" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e118" source="n13" target="n36">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e119" source="n37" target="n13">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#993366" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e120" source="n2" target="n36">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e121" source="n36" target="n23">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#000000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e122" source="n23" target="n37">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#993366" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e123" source="n23" target="n2">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#993366" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e124" source="n17" target="n38">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="dotted"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e125" source="n4" target="n38">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#008000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ <graphml:edge id="e126" source="n38" target="n11">
+ <graphml:data key="d9"><y:PolyLineEdge>
+ <y:LineStyle color="#000000" type="line"/>
+ <y:Arrows source="none" target="standard"/>
+ </y:PolyLineEdge></graphml:data>
+ </graphml:edge>
+ </graphml:graph>
+</graphml:graphml> \ No newline at end of file
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/UmlToRdbmsInterDep.graphml b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/UmlToRdbmsInterDep.graphml
new file mode 100644
index 000000000..168e281f8
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/UmlToRdbmsInterDep.graphml
@@ -0,0 +1,1076 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
+ <!--Created by yEd 3.12-->
+ <key for="graphml" id="d0" yfiles.type="resources"/>
+ <key for="port" id="d1" yfiles.type="portgraphics"/>
+ <key for="port" id="d2" yfiles.type="portgeometry"/>
+ <key for="port" id="d3" yfiles.type="portuserdata"/>
+ <key attr.name="url" attr.type="string" for="node" id="d4"/>
+ <key attr.name="description" attr.type="string" for="node" id="d5"/>
+ <key for="node" id="d6" yfiles.type="nodegraphics"/>
+ <key attr.name="url" attr.type="string" for="edge" id="d7"/>
+ <key attr.name="description" attr.type="string" for="edge" id="d8"/>
+ <key for="edge" id="d9" yfiles.type="edgegraphics"/>
+ <graph edgedefault="directed" id="G">
+ <node id="n0">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="764.7402684771826" y="0.0"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="148.73828125" x="-59.369140625" y="5.6494140625">(1) packageToSchema_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n1">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="1126.398204985119" y="401.8528137423857"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="150.73046875" x="-60.365234375" y="5.6494140625">(2) packageToSchema_MR</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n2">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="286.4906653025794" y="401.8528137423857"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="120.71875" x="-45.359375" y="5.6494140625">integerToNumber_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n3">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="191.05693514384922" y="667.2467530627064"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="140.7109375" x="-55.35546875" y="5.6494140625">(9) integerToNumber_MR</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n4">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="685.6922526041667" y="401.8528137423857"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="146.095703125" x="-58.0478515625" y="5.6494140625">(8) booleanToBoolean_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n5">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="757.2402684771826" y="667.2467530627064"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="130.087890625" x="-50.0439453125" y="5.6494140625">booleanToBoolean_MR</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n6">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="42.3505859375" y="667.2467530627064"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="114.701171875" x="-42.3505859375" y="5.6494140625">stringToVarchar_MR</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n7">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="154.77677641369047" y="401.8528137423857"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="130.708984375" x="-50.3544921875" y="5.6494140625">(7) stringToVarchar_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n8">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="842.9093160962301" y="148.2842712474619"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="116.705078125" x="-43.3525390625" y="5.6494140625">(3) classToTable_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n9">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="1048.782728794643" y="667.2467530627064"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="118.697265625" x="-44.3486328125" y="5.6494140625">(4) classToTable_MR</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n10">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="1045.782728794643" y="1009.8152955576302"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="182.740234375" x="-76.3701171875" y="5.6494140625">(6) associationToForeignKey_MR</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n11">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="941.1585224454365" y="266.5685424949237"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="180.748046875" x="-75.3740234375" y="5.6494140625">(5) associationToForeignKey_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n12">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="555.4918557787698" y="861.5310243101683"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="120.044921875" x="-45.0224609375" y="5.6494140625">attributeColumns_MR</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n13">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="358.1001891121032" y="667.2467530627064"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="151.375" x="-60.6875" y="5.6494140625">classPrimitiveAttributes_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n14">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="499.266458953373" y="266.5685424949237"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="152.72265625" x="-61.361328125" y="5.6494140625">classComplexAttributes_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n15">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="555.4918557787698" y="667.2467530627064"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="213.408203125" x="-91.7041015625" y="5.6494140625">complexAttributePrimitiveAttributes_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n16">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="499.266458953373" y="401.8528137423857"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="214.755859375" x="-92.3779296875" y="5.6494140625">complexAttributeComplexAttributes_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n17">
+ <data key="d5"/>
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="1103.898204985119" y="266.5685424949237"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="custom" textColor="#000000" visible="true" width="29.341796875" x="0.3291015625" y="5.6494140625">Start<y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n18">
+ <data key="d5"/>
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="555.4918557787698" y="1117.0995668050919"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="custom" textColor="#000000" visible="true" width="25.3515625" x="2.32421875" y="5.6494140625">End<y:LabelModel>
+ <y:SmartNodeLabelModel distance="4.0"/>
+ </y:LabelModel>
+ <y:ModelParameter>
+ <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+ </y:ModelParameter>
+ </y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <edge id="e0" source="n0" target="n1">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="10.909090909090878" sy="10.28125" tx="7.5" ty="-12.96875">
+ <y:Point x="790.6493593862734" y="57.27272727272725"/>
+ <y:Point x="807.5187677372771" y="74.14213562373095"/>
+ <y:Point x="1134.7560693613882" y="74.14213562373095"/>
+ <y:Point x="1148.898204985119" y="88.28427124746179"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e1" source="n0" target="n2">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-5.454545454545496" sy="13.96875" tx="0.0" ty="-15.0">
+ <y:Point x="774.2857230226371" y="81.81818181818198"/>
+ <y:Point x="751.9617692170881" y="104.14213562373095"/>
+ <y:Point x="315.6328009263103" y="104.14213562373095"/>
+ <y:Point x="301.4906653025794" y="118.2842712474619"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e2" source="n0" target="n3">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-10.909090909090878" sy="10.28125" tx="-7.5" ty="-12.96875">
+ <y:Point x="768.8311775680917" y="57.27272727272725"/>
+ <y:Point x="751.961769217088" y="74.14213562373095"/>
+ <y:Point x="112.56415013265952" y="74.14213562373095"/>
+ <y:Point x="98.42201450892857" y="88.2842712474619"/>
+ <y:Point x="98.42201450892857" y="549.8203461915135"/>
+ <y:Point x="112.56415013265952" y="563.9624818152445"/>
+ <y:Point x="183.55693514384922" y="563.9624818152445"/>
+ <y:Point x="198.55693514384922" y="578.9624818152445"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e3" source="n2" target="n3">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-11.25" sy="9.90625" tx="7.5" ty="-12.96875">
+ <y:Point x="290.2406653025794" y="446.8528137423857"/>
+ <y:Point x="274.91249069940477" y="462.1809883455603"/>
+ <y:Point x="274.91249069940477" y="520.6782105677826"/>
+ <y:Point x="260.7703550756738" y="534.8203461915135"/>
+ <y:Point x="227.69907076758017" y="534.8203461915135"/>
+ <y:Point x="213.55693514384922" y="548.9624818152445"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e4" source="n0" target="n4">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-2.727272727272748" sy="14.71875" tx="0.0" ty="-15.0">
+ <y:Point x="777.0129957499098" y="94.09090909090924"/>
+ <y:Point x="751.9617692170881" y="119.14213562373095"/>
+ <y:Point x="714.8343882278976" y="119.14213562373095"/>
+ <y:Point x="700.6922526041667" y="133.2842712474619"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e5" source="n4" target="n5">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="11.25" sy="9.90625" tx="-7.5" ty="-12.96875">
+ <y:Point x="711.9422526041667" y="446.8528137423857"/>
+ <y:Point x="726.0843882278976" y="460.99494936611666"/>
+ <y:Point x="750.5981328534516" y="460.99494936611666"/>
+ <y:Point x="764.7402684771826" y="475.1370849898476"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e6" source="n0" target="n5">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="7.5" ty="-12.96875"/>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e7" source="n0" target="n6">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-13.636363636363626" sy="6.21875" tx="-7.5" ty="-12.96875">
+ <y:Point x="766.1039048408189" y="45.0"/>
+ <y:Point x="751.961769217088" y="59.14213562373095"/>
+ <y:Point x="63.99272156123095" y="59.14213562373095"/>
+ <y:Point x="49.8505859375" y="73.2842712474619"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e8" source="n7" target="n6">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-11.25" sy="9.90625" tx="7.5" ty="-12.96875">
+ <y:Point x="158.52677641369047" y="446.8528137423857"/>
+ <y:Point x="122.20137958829365" y="483.17821056778257"/>
+ <y:Point x="122.20137958829365" y="520.6782105677826"/>
+ <y:Point x="108.0592439645627" y="534.8203461915135"/>
+ <y:Point x="78.99272156123095" y="534.8203461915135"/>
+ <y:Point x="64.8505859375" y="548.9624818152445"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e9" source="n0" target="n7">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-8.18181818181813" sy="12.59375" tx="0.0" ty="-15.0">
+ <y:Point x="771.5584502953644" y="69.54545454545462"/>
+ <y:Point x="751.9617692170881" y="89.14213562373095"/>
+ <y:Point x="183.91891203742142" y="89.14213562373095"/>
+ <y:Point x="169.77677641369047" y="103.2842712474619"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e10" source="n8" target="n9">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="13.125" sy="7.28125" tx="-11.25" ty="-9.90625">
+ <y:Point x="871.0343160962301" y="193.2842712474619"/>
+ <y:Point x="885.176451719961" y="207.42640687119285"/>
+ <y:Point x="1038.390593170912" y="207.42640687119285"/>
+ <y:Point x="1052.532728794643" y="221.5685424949237"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e11" source="n1" target="n9">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="11.25" ty="-9.90625">
+ <y:Point x="1141.398204985119" y="446.8528137423857"/>
+ <y:Point x="1136.398204985119" y="451.8528137423857"/>
+ <y:Point x="1136.398204985119" y="520.6782105677827"/>
+ <y:Point x="1105.2560693613882" y="551.8203461915135"/>
+ <y:Point x="1089.174864418374" y="551.8203461915135"/>
+ <y:Point x="1075.032728794643" y="565.9624818152446"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e12" source="n0" target="n9">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="8.18181818181813" sy="12.59375" tx="-3.75" ty="-14.53125">
+ <y:Point x="787.9220866590007" y="69.5454545454545"/>
+ <y:Point x="807.5187677372771" y="89.14213562373095"/>
+ <y:Point x="1045.8905931709119" y="89.14213562373095"/>
+ <y:Point x="1060.032728794643" y="103.28427124746202"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e13" source="n0" target="n8">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="2.727272727272748" sy="14.71875" tx="0.0" ty="-15.0">
+ <y:Point x="782.4675412044553" y="94.09090909090912"/>
+ <y:Point x="807.5187677372771" y="119.14213562373095"/>
+ <y:Point x="843.7671804724991" y="119.14213562373095"/>
+ <y:Point x="857.9093160962301" y="133.2842712474619"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e14" source="n8" target="n10">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="1.875" sy="15.0" tx="-7.5" ty="-12.96875">
+ <y:Point x="859.7843160962301" y="921.5310243101683"/>
+ <y:Point x="888.926451719961" y="950.6731599338992"/>
+ <y:Point x="1039.1405931709119" y="950.6731599338992"/>
+ <y:Point x="1053.282728794643" y="964.8152955576303"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e15" source="n0" target="n10">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="13.636363636363626" sy="6.21875" tx="13.5" ty="-6.53125">
+ <y:Point x="793.3766321135462" y="45.0"/>
+ <y:Point x="807.5187677372771" y="59.14213562373095"/>
+ <y:Point x="1208.6215455518645" y="59.14213562373095"/>
+ <y:Point x="1222.7636811755954" y="73.28427124746179"/>
+ <y:Point x="1222.7636811755954" y="921.5310243101684"/>
+ <y:Point x="1193.6215455518645" y="950.6731599338992"/>
+ <y:Point x="1088.424864418374" y="950.6731599338992"/>
+ <y:Point x="1074.282728794643" y="964.8152955576303"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e16" source="n11" target="n10">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="-4.5" ty="-14.28125">
+ <y:Point x="956.1585224454365" y="921.5310243101683"/>
+ <y:Point x="970.3006580691674" y="935.6731599338992"/>
+ <y:Point x="1042.140593170912" y="935.6731599338992"/>
+ <y:Point x="1056.282728794643" y="949.8152955576301"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e17" source="n9" target="n10">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="2.5" sy="14.78125" tx="1.5" ty="-15.0">
+ <y:Point x="1066.282728794643" y="724.2467530627064"/>
+ <y:Point x="1064.282728794643" y="726.2467530627064"/>
+ <y:Point x="1064.282728794643" y="921.5310243101683"/>
+ <y:Point x="1062.282728794643" y="923.5310243101683"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e18" source="n1" target="n10">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="10.0" sy="11.15625" tx="10.5" ty="-10.71875">
+ <y:Point x="1151.398204985119" y="921.5310243101684"/>
+ <y:Point x="1137.2560693613882" y="935.6731599338992"/>
+ <y:Point x="1087.1405931709119" y="935.6731599338992"/>
+ <y:Point x="1071.282728794643" y="951.5310243101682"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e19" source="n8" target="n10">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-1.875" sy="15.0" tx="-10.5" ty="-10.71875">
+ <y:Point x="856.0343160962301" y="932.7810243101683"/>
+ <y:Point x="888.926451719961" y="965.6731599338992"/>
+ <y:Point x="1036.1405931709119" y="965.6731599338992"/>
+ <y:Point x="1050.282728794643" y="979.8152955576303"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e20" source="n9" target="n10">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="12.5" sy="8.28125" tx="7.5" ty="-12.96875">
+ <y:Point x="1076.282728794643" y="712.2467530627064"/>
+ <y:Point x="1078.282728794643" y="714.2467530627064"/>
+ <y:Point x="1078.282728794643" y="929.5310243101683"/>
+ <y:Point x="1068.282728794643" y="939.5310243101683"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e21" source="n9" target="n10">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-2.5" sy="14.78125" tx="-1.5" ty="-15.0">
+ <y:Point x="1061.282728794643" y="712.2467530627064"/>
+ <y:Point x="1059.282728794643" y="714.2467530627064"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e22" source="n12" target="n10">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="7.5" sy="12.96875" tx="-13.5" ty="-6.53125">
+ <y:Point x="577.9918557787698" y="921.5310243101683"/>
+ <y:Point x="637.1339914025008" y="980.6731599338992"/>
+ <y:Point x="1033.1405931709119" y="980.6731599338992"/>
+ <y:Point x="1047.282728794643" y="994.8152955576303"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e23" source="n0" target="n11">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="5.454545454545496" sy="13.96875" tx="10.0" ty="-11.15625">
+ <y:Point x="785.194813931728" y="81.81818181818187"/>
+ <y:Point x="807.5187677372771" y="104.14213562373095"/>
+ <y:Point x="952.0163868217055" y="104.14213562373095"/>
+ <y:Point x="966.1585224454365" y="118.2842712474619"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e24" source="n8" target="n11">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="5.625" sy="13.90625" tx="-10.0" ty="-11.15625">
+ <y:Point x="863.5343160962301" y="215.7842712474619"/>
+ <y:Point x="885.176451719961" y="237.42640687119285"/>
+ <y:Point x="932.0163868217055" y="237.42640687119285"/>
+ <y:Point x="946.1585224454365" y="251.5685424949238"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e25" source="n8" target="n11">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="9.375" sy="11.71875" tx="0.0" ty="-15.0">
+ <y:Point x="867.2843160962301" y="204.5342712474619"/>
+ <y:Point x="885.176451719961" y="222.42640687119285"/>
+ <y:Point x="942.0163868217055" y="222.42640687119285"/>
+ <y:Point x="956.1585224454365" y="236.5685424949238"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e26" source="n8" target="n13">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-13.125" sy="7.28125" tx="3.75" ty="-14.53125">
+ <y:Point x="844.7843160962301" y="193.2842712474619"/>
+ <y:Point x="830.6421804724991" y="207.42640687119285"/>
+ <y:Point x="390.99232473583413" y="207.42640687119285"/>
+ <y:Point x="376.8501891121032" y="221.5685424949238"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e27" source="n2" target="n13">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="3.75" sy="14.53125" tx="-3.75" ty="-14.53125">
+ <y:Point x="305.2406653025794" y="543.9950936294516"/>
+ <y:Point x="369.3501891121032" y="608.1046174389754"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e28" source="n4" target="n13">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-11.25" sy="9.90625" tx="11.25" ty="-9.90625">
+ <y:Point x="689.4422526041667" y="446.8528137423857"/>
+ <y:Point x="677.1962208581349" y="459.0988454884175"/>
+ <y:Point x="677.1962208581349" y="520.6782105677826"/>
+ <y:Point x="603.911949610673" y="593.9624818152445"/>
+ <y:Point x="398.49232473583413" y="593.9624818152445"/>
+ <y:Point x="384.3501891121032" y="608.1046174389754"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e29" source="n7" target="n13">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="3.75" sy="14.53125" tx="-11.25" ty="-9.90625">
+ <y:Point x="173.52677641369047" y="538.9323230850857"/>
+ <y:Point x="272.69907076758017" y="638.1046174389754"/>
+ <y:Point x="347.70805348837223" y="638.1046174389754"/>
+ <y:Point x="361.8501891121032" y="652.2467530627064"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e30" source="n8" target="n14">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-9.375" sy="11.71875" tx="0.0" ty="-15.0">
+ <y:Point x="848.5343160962301" y="204.5342712474619"/>
+ <y:Point x="830.6421804724991" y="222.42640687119285"/>
+ <y:Point x="528.4085945771039" y="222.42640687119285"/>
+ <y:Point x="514.266458953373" y="236.5685424949238"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e31" source="n2" target="n15">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="11.25" sy="9.90625" tx="-6.0" ty="-13.71875">
+ <y:Point x="312.7406653025794" y="520.6782105677826"/>
+ <y:Point x="356.8828009263103" y="564.8203461915135"/>
+ <y:Point x="550.3497201550389" y="564.8203461915135"/>
+ <y:Point x="564.4918557787698" y="578.9624818152445"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e32" source="n4" target="n15">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-3.75" sy="14.53125" tx="12.0" ty="-8.96875">
+ <y:Point x="696.9422526041667" y="454.3528137423857"/>
+ <y:Point x="684.6962208581349" y="466.5988454884175"/>
+ <y:Point x="684.6962208581349" y="528.1782105677826"/>
+ <y:Point x="582.4918557787698" y="630.3825756471476"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e33" source="n7" target="n15">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="11.25" sy="9.90625" tx="-12.0" ty="-8.96875">
+ <y:Point x="181.02677641369047" y="531.4323230850857"/>
+ <y:Point x="272.69907076758017" y="623.1046174389754"/>
+ <y:Point x="544.3497201550389" y="623.1046174389754"/>
+ <y:Point x="558.4918557787698" y="637.2467530627064"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e34" source="n14" target="n15">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-7.5" sy="12.96875" tx="0.0" ty="-15.0">
+ <y:Point x="506.766458953373" y="311.5685424949237"/>
+ <y:Point x="492.62432332964204" y="325.71067811865464"/>
+ <y:Point x="406.0304199739293" y="325.71067811865464"/>
+ <y:Point x="391.8882843501984" y="339.8528137423856"/>
+ <y:Point x="391.8882843501984" y="520.6782105677826"/>
+ <y:Point x="421.0304199739293" y="549.8203461915135"/>
+ <y:Point x="556.3497201550389" y="549.8203461915135"/>
+ <y:Point x="570.4918557787698" y="563.9624818152445"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e35" source="n16" target="n15">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="6.0" ty="-13.71875">
+ <y:Point x="514.266458953373" y="520.6782105677826"/>
+ <y:Point x="528.4085945771039" y="534.8203461915135"/>
+ <y:Point x="562.3497201550389" y="534.8203461915135"/>
+ <y:Point x="576.4918557787698" y="548.9624818152445"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e36" source="n14" target="n16">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="7.5" sy="12.96875" tx="7.5" ty="-12.96875"/>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e37" source="n16" target="n16">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-15.0" sy="0.0" tx="-7.5" ty="-12.96875">
+ <y:Point x="472.62432332964204" y="416.8528137423857"/>
+ <y:Point x="458.4821877059111" y="402.71067811865476"/>
+ <y:Point x="458.4821877059111" y="382.71067811865476"/>
+ <y:Point x="472.62432332964204" y="368.5685424949238"/>
+ <y:Point x="492.62432332964204" y="368.5685424949238"/>
+ <y:Point x="506.766458953373" y="382.71067811865476"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e38" source="n2" target="n12">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-3.75" sy="14.53125" tx="-5.454545454545496" ty="-13.96875">
+ <y:Point x="297.7406653025794" y="454.3528137423857"/>
+ <y:Point x="282.41249069940477" y="469.6809883455603"/>
+ <y:Point x="282.41249069940477" y="758.2467530627064"/>
+ <y:Point x="311.5546263231357" y="787.3888886864373"/>
+ <y:Point x="544.0769928823116" y="787.3888886864373"/>
+ <y:Point x="565.0373103242243" y="808.34920612835"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e39" source="n4" target="n12">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="3.75" sy="14.53125" tx="2.727272727272748" ty="-14.71875">
+ <y:Point x="704.4422526041667" y="461.8528137423857"/>
+ <y:Point x="692.1962208581349" y="474.0988454884175"/>
+ <y:Point x="692.1962208581349" y="758.2467530627064"/>
+ <y:Point x="678.0540852344039" y="772.3888886864373"/>
+ <y:Point x="587.3612641297735" y="772.3888886864373"/>
+ <y:Point x="573.2191285060426" y="786.5310243101683"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e40" source="n7" target="n12">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-3.75" sy="14.53125" tx="-10.909090909090878" ty="-10.28125">
+ <y:Point x="166.02677641369047" y="454.3528137423857"/>
+ <y:Point x="129.70137958829366" y="490.67821056778257"/>
+ <y:Point x="129.70137958829366" y="758.2467530627064"/>
+ <y:Point x="188.8435152120246" y="817.3888886864373"/>
+ <y:Point x="544.0769928823116" y="817.3888886864373"/>
+ <y:Point x="559.582764869679" y="832.8946606738047"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e41" source="n8" target="n12">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-5.625" sy="13.90625" tx="8.18181818181813" ty="-12.59375">
+ <y:Point x="852.2843160962301" y="758.2467530627064"/>
+ <y:Point x="808.1421804724991" y="802.3888886864373"/>
+ <y:Point x="592.8158095843189" y="802.3888886864373"/>
+ <y:Point x="578.673673960588" y="816.5310243101683"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e42" source="n9" target="n12">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-7.5" sy="12.96875" tx="13.636363636363626" ty="-6.21875">
+ <y:Point x="1056.282728794643" y="712.2467530627064"/>
+ <y:Point x="1054.282728794643" y="714.2467530627064"/>
+ <y:Point x="1054.282728794643" y="768.2467530627064"/>
+ <y:Point x="990.1405931709119" y="832.3888886864373"/>
+ <y:Point x="598.2703550388644" y="832.3888886864373"/>
+ <y:Point x="584.1282194151335" y="846.5310243101683"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e43" source="n13" target="n12">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="-2.727272727272748" ty="-14.71875">
+ <y:Point x="373.1001891121032" y="758.2467530627064"/>
+ <y:Point x="387.24232473583413" y="772.3888886864373"/>
+ <y:Point x="544.0769928823116" y="772.3888886864373"/>
+ <y:Point x="567.7645830514971" y="796.0764788556228"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e44" source="n15" target="n12">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="0.0" ty="-15.0"/>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e45" source="n3" target="n12">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="-8.18181818181813" ty="-12.59375">
+ <y:Point x="206.05693514384922" y="758.2467530627064"/>
+ <y:Point x="250.19907076758017" y="802.3888886864373"/>
+ <y:Point x="544.0769928823116" y="802.3888886864373"/>
+ <y:Point x="562.3100375969517" y="820.6219334010774"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e46" source="n6" target="n12">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="-13.636363636363626" ty="-6.21875">
+ <y:Point x="57.3505859375" y="758.2467530627064"/>
+ <y:Point x="131.49272156123095" y="832.3888886864373"/>
+ <y:Point x="542.7133565186753" y="832.3888886864373"/>
+ <y:Point x="556.8554921424062" y="846.5310243101683"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e47" source="n5" target="n12">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="5.454545454545496" ty="-13.96875">
+ <y:Point x="772.2402684771826" y="758.2467530627064"/>
+ <y:Point x="743.0981328534516" y="787.3888886864373"/>
+ <y:Point x="590.0885368570463" y="787.3888886864373"/>
+ <y:Point x="575.9464012333153" y="801.5310243101683"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e48" source="n17" target="n1">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="-7.5" ty="-12.96875">
+ <y:Point x="1118.898204985119" y="371.8528137423856"/>
+ <y:Point x="1133.898204985119" y="386.8528137423856"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="dashed" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="-1.9999883742559632" y="56.28427126191684">
+ <y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/>
+ </y:EdgeLabel>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e49" source="n1" target="n9">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-10.0" sy="11.15625" tx="3.75" ty="-14.53125">
+ <y:Point x="1131.398204985119" y="446.8528137423857"/>
+ <y:Point x="1119.398204985119" y="458.8528137423857"/>
+ <y:Point x="1119.398204985119" y="522.6782105677827"/>
+ <y:Point x="1105.2560693613882" y="536.8203461915135"/>
+ <y:Point x="1081.6748644183738" y="536.8203461915135"/>
+ <y:Point x="1067.532728794643" y="550.9624818152444"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="dashed" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="-13.999988374255963" y="71.7885926478607">
+ <y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/>
+ </y:EdgeLabel>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e50" source="n9" target="n10">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="7.5" sy="12.96875" tx="4.5" ty="-14.28125">
+ <y:Point x="1071.282728794643" y="921.5310243101683"/>
+ <y:Point x="1065.282728794643" y="927.5310243101683"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="dashed" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="-1.999986049107065" y="177.25667128282453">
+ <y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/>
+ </y:EdgeLabel>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e51" source="n9" target="n12">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-12.5" sy="8.28125" tx="10.909090909090878" ty="-10.28125">
+ <y:Point x="1051.282728794643" y="712.2467530627064"/>
+ <y:Point x="1047.282728794643" y="716.2467530627064"/>
+ <y:Point x="1047.282728794643" y="760.2467530627064"/>
+ <y:Point x="990.1405931709119" y="817.3888886864373"/>
+ <y:Point x="595.5430823115917" y="817.3888886864373"/>
+ <y:Point x="581.4009466878607" y="831.5310243101683"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="dashed" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="-5.999986049107065" y="43.957568492393875">
+ <y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/>
+ </y:EdgeLabel>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e52" source="n12" target="n18">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-7.5" sy="12.96875" tx="-7.5" ty="-12.96875"/>
+ <y:LineStyle color="#000000" type="dashed" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="-2.000026545448918" y="131.25621352638018">
+ <y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/>
+ </y:EdgeLabel>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e53" source="n10" target="n18">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="7.5" ty="-12.96875">
+ <y:Point x="1060.782728794643" y="1073.8152955576302"/>
+ <y:Point x="1046.640593170912" y="1087.957431181361"/>
+ <y:Point x="592.1339914025008" y="1087.957431181361"/>
+ <y:Point x="577.9918557787698" y="1102.0995668050919"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="dashed" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="-1.999986049107065" y="14.99998794044268">
+ <y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/>
+ </y:EdgeLabel>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ </graph>
+ <data key="d0">
+ <y:Resources/>
+ </data>
+</graphml>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/UmlToRdbmsMergeDataDep.graphml b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/UmlToRdbmsMergeDataDep.graphml
new file mode 100644
index 000000000..88e00d353
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/UmlToRdbmsMergeDataDep.graphml
@@ -0,0 +1,1895 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
+ <!--Created by yEd 3.12-->
+ <key for="graphml" id="d0" yfiles.type="resources"/>
+ <key for="port" id="d1" yfiles.type="portgraphics"/>
+ <key for="port" id="d2" yfiles.type="portgeometry"/>
+ <key for="port" id="d3" yfiles.type="portuserdata"/>
+ <key attr.name="url" attr.type="string" for="node" id="d4"/>
+ <key attr.name="description" attr.type="string" for="node" id="d5"/>
+ <key for="node" id="d6" yfiles.type="nodegraphics"/>
+ <key attr.name="url" attr.type="string" for="edge" id="d7"/>
+ <key attr.name="description" attr.type="string" for="edge" id="d8"/>
+ <key for="edge" id="d9" yfiles.type="edgegraphics"/>
+ <graph edgedefault="directed" id="G">
+ <node id="n0">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="195.3345238095238" y="985.0"/>
+ <y:Fill color="#99CCFF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="45.349609375" x="-7.6748046875" y="5.6494140625">Column</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n1">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="124.39722222222221" y="930.0"/>
+ <y:Fill color="#99CCFF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="65.365234375" x="-17.6826171875" y="5.6494140625">ForeignKey</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n2">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="130.46428571428572" y="750.0"/>
+ <y:Fill color="#99CCFF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="24.677734375" x="2.6611328125" y="5.6494140625">Key</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n3">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="51.36547619047619" y="400.0"/>
+ <y:Fill color="#99CCFF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="48.021484375" x="-9.0107421875" y="5.6494140625">Schema</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n4">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="94.21428571428571" y="650.0"/>
+ <y:Fill color="#99CCFF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="34.017578125" x="-2.0087890625" y="5.6494140625">Table</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n5">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="1148.5130952380953" y="400.0"/>
+ <y:Fill color="#FF00FF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="48.689453125" x="-9.3447265625" y="5.6494140625">Attribute</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n6">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="415.0809523809524" y="85.0"/>
+ <y:Fill color="#FF00FF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="65.365234375" x="-17.6826171875" y="5.6494140625">Association</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n7">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="1147.0130952380953" y="140.0"/>
+ <y:Fill color="#FF00FF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="34.005859375" x="-2.0029296875" y="5.6494140625">Class</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n8">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="937.4492063492063" y="140.0"/>
+ <y:Fill color="#FF00FF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="102.02734375" x="-36.013671875" y="5.6494140625">PrimitiveDataType</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n9">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="660.9996031746032" y="0.0"/>
+ <y:Fill color="#FF00FF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="50.69921875" x="-10.349609375" y="5.6494140625">Package</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n10">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="969.3388888888888" y="850.0"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="104.04296875" x="-37.021484375" y="5.6494140625">AttributeToColumn</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n11">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="270.9373015873016" y="650.0"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="140.734375" x="-55.3671875" y="5.6494140625">AssociationToForeignKey</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n12">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="874.4079365079365" y="400.0"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="106.08203125" x="-38.041015625" y="5.6494140625">BooleanToBoolean</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n13">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="360.26626984126983" y="400.0"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="78.02734375" x="-24.013671875" y="5.6494140625">ClassToTable</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n14">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="1179.9476190476191" y="650.0"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="94.05859375" x="-32.029296875" y="5.6494140625">NonLeafAttribute</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n15">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="1000.3087301587302" y="400.0"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="98.04296875" x="-34.021484375" y="5.6494140625">IntegerToNumber</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n16">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="525.4599206349206" y="140.0"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="108.724609375" x="-39.3623046875" y="5.6494140625">PackageToSchema</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n17">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="534.9599206349206" y="400.0"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="91.369140625" x="-30.6845703125" y="5.6494140625">StringToVarchar</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n18">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="51.36547619047619" y="305.0"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="132.73046875" x="-51.365234375" y="5.6494140625">packageToSchema_MR</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n19">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="536.4666666666667" y="85.0"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="130.73828125" x="-50.369140625" y="5.6494140625">packageToSchema_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n20">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="809.7583333333333" y="565.0"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="122.7109375" x="-46.35546875" y="5.6494140625">integerToNumber_MR</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n21">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="809.7583333333333" y="650.0"/>
+ <y:Fill color="#CCCCFF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="156.068359375" x="-63.0341796875" y="5.6494140625">IntegerToNumber.typeName</y:NodeLabel>
+ <y:Shape type="diamond"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n22">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="622.1698412698413" y="565.0"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="130.087890625" x="-50.0439453125" y="5.6494140625">booleanToBoolean_MR</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n23">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="622.1698412698413" y="650.0"/>
+ <y:Fill color="#CCCCFF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="164.107421875" x="-67.0537109375" y="5.6494140625">BooleanToBoolean.typeName</y:NodeLabel>
+ <y:Shape type="diamond"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n24">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="484.775" y="565.0"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="114.701171875" x="-42.3505859375" y="5.6494140625">stringToVarchar_MR</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n25">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="450.4186507936508" y="650.0"/>
+ <y:Fill color="#CCCCFF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="149.39453125" x="-59.697265625" y="5.6494140625">StringToVarchar.typeName</y:NodeLabel>
+ <y:Shape type="diamond"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n26">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="863.4011904761904" y="305.0"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="128.095703125" x="-49.0478515625" y="5.6494140625">booleanToBoolean_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n27">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="1007.8087301587302" y="305.0"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="120.71875" x="-45.359375" y="5.6494140625">integerToNumber_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n28">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="660.9996031746032" y="305.0"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="112.708984375" x="-41.3544921875" y="5.6494140625">stringToVarchar_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n29">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="417.9222222222222" y="305.0"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="98.705078125" x="-34.3525390625" y="5.6494140625">classToTable_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n30">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="111.71428571428571" y="565.0"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="100.697265625" x="-35.3486328125" y="5.6494140625">classToTable_MR</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n31">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="1328.3384920634921" y="565.0"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="152.72265625" x="-61.361328125" y="5.6494140625">classComplexAttributes_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n32">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="990.9805555555556" y="565.0"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="151.375" x="-60.6875" y="5.6494140625">classPrimitiveAttributes_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n33">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="1326.3757936507936" y="750.0"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="214.755859375" x="-92.3779296875" y="5.6494140625">complexAttributeComplexAttributes_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n34">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="1082.293253968254" y="750.0"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="213.408203125" x="-91.7041015625" y="5.6494140625">complexAttributePrimitiveAttributes_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n35">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="263.4373015873016" y="565.0"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="162.748046875" x="-66.3740234375" y="5.6494140625">associationToForeignKey_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n36">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="714.2238095238096" y="930.0"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="120.044921875" x="-45.0224609375" y="5.6494140625">attributeColumns_MR</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n37">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="721.7238095238096" y="985.0"/>
+ <y:Fill color="#CCCCFF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="71.365234375" x="-20.6826171875" y="5.6494140625">Column.type</y:NodeLabel>
+ <y:Shape type="diamond"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n38">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="184.0845238095238" y="850.0"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="164.740234375" x="-67.3701171875" y="5.6494140625">associationToForeignKey_MR</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <edge id="e0" source="n3" target="n4">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-10.0" sy="15.0" tx="-7.5" ty="-15.0">
+ <y:Point x="56.36547619047619" y="635.0"/>
+ <y:Point x="101.71428571428571" y="635.0"/>
+ </y:Path>
+ <y:LineStyle color="#0000FF" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e1" source="n4" target="n0">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-12.5" sy="15.0" tx="-11.25" ty="-15.0">
+ <y:Point x="96.71428571428571" y="970.0"/>
+ <y:Point x="199.0845238095238" y="970.0"/>
+ </y:Path>
+ <y:LineStyle color="#0000FF" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e2" source="n4" target="n2">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="12.5" sy="15.0" tx="-7.5" ty="-15.0">
+ <y:Point x="121.71428571428571" y="690.0"/>
+ <y:Point x="137.96428571428572" y="690.0"/>
+ </y:Path>
+ <y:LineStyle color="#0000FF" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e3" source="n4" target="n1">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-7.5" sy="15.0" tx="-7.5" ty="-15.0">
+ <y:Point x="101.71428571428571" y="915.0"/>
+ <y:Point x="131.8972222222222" y="915.0"/>
+ </y:Path>
+ <y:LineStyle color="#0000FF" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e4" source="n7" target="n5">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="1.5" sy="15.0" tx="0.0" ty="-15.0"/>
+ <y:LineStyle color="#FF00FF" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e5" source="n9" target="n6">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-13.333333333333332" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="662.6662698412698" y="40.0"/>
+ <y:Point x="430.0809523809524" y="40.0"/>
+ </y:Path>
+ <y:LineStyle color="#FF00FF" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e6" source="n9" target="n7">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="13.333333333333371" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="689.3329365079366" y="40.0"/>
+ <y:Point x="1162.0130952380953" y="40.0"/>
+ </y:Path>
+ <y:LineStyle color="#FF00FF" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e7" source="n9" target="n8">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="6.666666666666629" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="682.6662698412698" y="60.0"/>
+ <y:Point x="952.4492063492063" y="60.0"/>
+ </y:Path>
+ <y:LineStyle color="#FF00FF" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e8" source="n13" target="n11">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-5.454545454545439" sy="15.0" tx="7.5" ty="-15.0">
+ <y:Point x="369.81150793650795" y="605.0"/>
+ <y:Point x="293.4373015873016" y="605.0"/>
+ </y:Path>
+ <y:LineStyle color="#FFCC00" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e9" source="n13" target="n10">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="5.454545454545439" sy="15.0" tx="-11.25" ty="-15.0">
+ <y:Point x="380.72103174603177" y="775.0"/>
+ <y:Point x="973.0888888888888" y="775.0"/>
+ </y:Path>
+ <y:LineStyle color="#FFCC00" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e10" source="n13" target="n14">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="8.181818181818187" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="383.4484126984127" y="615.0"/>
+ <y:Point x="1194.9476190476191" y="615.0"/>
+ </y:Path>
+ <y:LineStyle color="#FFCC00" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e11" source="n14" target="n10">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-3.75" sy="15.0" tx="11.25" ty="-15.0">
+ <y:Point x="1191.1976190476191" y="715.0"/>
+ <y:Point x="1213.997619047619" y="715.0"/>
+ <y:Point x="1213.997619047619" y="800.0"/>
+ <y:Point x="995.5888888888888" y="800.0"/>
+ </y:Path>
+ <y:LineStyle color="#FFCC00" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e12" source="n14" target="n14">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-15.0" sy="0.0" tx="-10.0" ty="-15.0">
+ <y:Point x="1169.4476190476191" y="665.0"/>
+ <y:Point x="1169.4476190476191" y="635.0"/>
+ <y:Point x="1184.9476190476191" y="635.0"/>
+ </y:Path>
+ <y:LineStyle color="#FFCC00" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e13" source="n16" target="n13">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-6.0" sy="15.0" tx="-7.5" ty="-15.0">
+ <y:Point x="534.4599206349206" y="240.0"/>
+ <y:Point x="367.76626984126983" y="240.0"/>
+ </y:Path>
+ <y:LineStyle color="#FFCC00" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e14" source="n16" target="n12">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="6.0" sy="15.0" tx="-7.5" ty="-15.0">
+ <y:Point x="546.4599206349206" y="240.0"/>
+ <y:Point x="607.6448412698413" y="240.0"/>
+ <y:Point x="607.6448412698413" y="385.0"/>
+ <y:Point x="881.9079365079365" y="385.0"/>
+ </y:Path>
+ <y:LineStyle color="#FFCC00" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e15" source="n16" target="n15">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="8.0" sy="15.0" tx="-7.5" ty="-15.0">
+ <y:Point x="548.4599206349206" y="230.0"/>
+ <y:Point x="609.6448412698413" y="230.0"/>
+ <y:Point x="609.6448412698413" y="365.0"/>
+ <y:Point x="1007.8087301587302" y="365.0"/>
+ </y:Path>
+ <y:LineStyle color="#FFCC00" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e16" source="n16" target="n17">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="2.0" sy="15.0" tx="-7.5" ty="-15.0"/>
+ <y:LineStyle color="#FFCC00" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e17" source="n16" target="n18">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-14.0" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="526.4599206349206" y="180.0"/>
+ <y:Point x="66.36547619047619" y="180.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e18" source="n18" target="n3">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="0.0" ty="-15.0"/>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e19" source="n9" target="n19">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-3.3333333333333357" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="672.6662698412698" y="70.0"/>
+ <y:Point x="551.4666666666667" y="70.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e20" source="n19" target="n16">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="551.4666666666667" y="125.0"/>
+ <y:Point x="540.4599206349206" y="125.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e21" source="n16" target="n20">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="4.0" sy="15.0" tx="-7.5" ty="-12.96875">
+ <y:Point x="544.4599206349206" y="280.0"/>
+ <y:Point x="605.6448412698413" y="280.0"/>
+ <y:Point x="605.6448412698413" y="450.0"/>
+ <y:Point x="817.2583333333333" y="450.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e22" source="n15" target="n20">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-11.25" sy="15.0" tx="7.5" ty="-12.96875">
+ <y:Point x="1004.0587301587302" y="450.0"/>
+ <y:Point x="832.2583333333333" y="450.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e23" source="n20" target="n21">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="0.0" ty="-15.0"/>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e24" source="n16" target="n22">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="-7.5" ty="-12.96875">
+ <y:Point x="540.4599206349206" y="280.0"/>
+ <y:Point x="494.275" y="280.0"/>
+ <y:Point x="494.275" y="550.0"/>
+ <y:Point x="629.6698412698413" y="550.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e25" source="n12" target="n22">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-11.25" sy="15.0" tx="7.5" ty="-12.96875">
+ <y:Point x="878.1579365079365" y="440.0"/>
+ <y:Point x="644.6698412698413" y="440.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e26" source="n22" target="n23">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="0.0" ty="-15.0"/>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e27" source="n17" target="n24">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-11.25" sy="15.0" tx="7.5" ty="-12.96875">
+ <y:Point x="538.7099206349206" y="440.0"/>
+ <y:Point x="507.275" y="440.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e28" source="n16" target="n24">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-2.0" sy="15.0" tx="-7.5" ty="-12.96875">
+ <y:Point x="538.4599206349206" y="260.0"/>
+ <y:Point x="492.275" y="260.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e29" source="n24" target="n25">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="499.775" y="605.0"/>
+ <y:Point x="465.4186507936508" y="605.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e30" source="n16" target="n26">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="12.0" sy="15.0" tx="-10.0" ty="-11.15625">
+ <y:Point x="552.4599206349206" y="210.0"/>
+ <y:Point x="868.4011904761904" y="210.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e31" source="n9" target="n26">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="3.3333333333333712" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="679.3329365079366" y="70.0"/>
+ <y:Point x="878.4011904761904" y="70.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e32" source="n8" target="n26">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-6.0" sy="15.0" tx="10.0" ty="-11.15625">
+ <y:Point x="946.4492063492063" y="190.0"/>
+ <y:Point x="888.4011904761904" y="190.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e33" source="n26" target="n12">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="7.5" ty="-15.0">
+ <y:Point x="878.4011904761904" y="345.0"/>
+ <y:Point x="896.9079365079365" y="345.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e34" source="n8" target="n27">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="6.0" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="958.4492063492063" y="190.0"/>
+ <y:Point x="1022.8087301587302" y="190.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e35" source="n9" target="n27">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="10.0" sy="15.0" tx="10.0" ty="-11.15625">
+ <y:Point x="685.9996031746032" y="50.0"/>
+ <y:Point x="1032.8087301587302" y="50.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e36" source="n16" target="n27">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="14.0" sy="15.0" tx="-10.0" ty="-11.15625">
+ <y:Point x="554.4599206349206" y="200.0"/>
+ <y:Point x="1012.8087301587302" y="200.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e37" source="n27" target="n15">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="7.5" ty="-15.0"/>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e38" source="n16" target="n28">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="10.0" sy="15.0" tx="-10.0" ty="-11.15625">
+ <y:Point x="550.4599206349206" y="220.0"/>
+ <y:Point x="665.9996031746032" y="220.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e39" source="n9" target="n28">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="0.0" ty="-15.0"/>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e40" source="n8" target="n28">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-12.0" sy="15.0" tx="10.0" ty="-11.15625">
+ <y:Point x="940.4492063492063" y="180.0"/>
+ <y:Point x="685.9996031746032" y="180.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e41" source="n28" target="n17">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="7.5" ty="-15.0">
+ <y:Point x="675.9996031746032" y="345.0"/>
+ <y:Point x="557.4599206349206" y="345.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e42" source="n16" target="n29">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-4.0" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="536.4599206349206" y="250.0"/>
+ <y:Point x="432.9222222222222" y="250.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e43" source="n9" target="n29">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-6.666666666666629" sy="15.0" tx="-10.0" ty="-11.15625">
+ <y:Point x="669.3329365079366" y="60.0"/>
+ <y:Point x="476.09722222222223" y="60.0"/>
+ <y:Point x="476.09722222222223" y="210.0"/>
+ <y:Point x="422.9222222222222" y="210.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e44" source="n7" target="n29">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-13.5" sy="15.0" tx="10.0" ty="-11.15625">
+ <y:Point x="1148.5130952380953" y="270.0"/>
+ <y:Point x="442.9222222222222" y="270.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e45" source="n29" target="n13">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="7.5" ty="-15.0">
+ <y:Point x="432.9222222222222" y="345.0"/>
+ <y:Point x="382.76626984126983" y="345.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e46" source="n16" target="n30">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-12.0" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="528.4599206349206" y="200.0"/>
+ <y:Point x="142.73095238095237" y="200.0"/>
+ <y:Point x="142.73095238095237" y="425.0"/>
+ <y:Point x="126.71428571428571" y="425.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e47" source="n13" target="n30">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-13.636363636363633" sy="15.0" tx="10.000000000000014" ty="-11.15625">
+ <y:Point x="361.6299062049062" y="440.0"/>
+ <y:Point x="136.71428571428572" y="440.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e48" source="n3" target="n30">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="10.0" sy="15.0" tx="-10.0" ty="-11.15625">
+ <y:Point x="76.36547619047619" y="440.0"/>
+ <y:Point x="116.71428571428571" y="440.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e49" source="n30" target="n2">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="7.5" ty="-15.0">
+ <y:Point x="126.71428571428571" y="615.0"/>
+ <y:Point x="146.2234126984127" y="615.0"/>
+ <y:Point x="146.2234126984127" y="675.0"/>
+ <y:Point x="152.96428571428572" y="675.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e50" source="n30" target="n4">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-10.0" sy="11.15625" tx="7.5" ty="-15.0"/>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e51" source="n30" target="n0">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="10.000000000000014" sy="11.15625" tx="3.75" ty="-15.0">
+ <y:Point x="136.71428571428572" y="605.0"/>
+ <y:Point x="170.46428571428572" y="605.0"/>
+ <y:Point x="170.46428571428572" y="795.0"/>
+ <y:Point x="291.4547619047619" y="795.0"/>
+ <y:Point x="291.4547619047619" y="955.0"/>
+ <y:Point x="214.0845238095238" y="955.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e52" source="n13" target="n31">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="13.636363636363637" sy="15.0" tx="-11.25" ty="-9.90625">
+ <y:Point x="388.90263347763346" y="460.0"/>
+ <y:Point x="1332.0884920634921" y="460.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e53" source="n5" target="n31">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="12.5" sy="15.0" tx="-3.75" ty="-14.53125">
+ <y:Point x="1176.0130952380953" y="440.0"/>
+ <y:Point x="1339.5884920634921" y="440.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e54" source="n7" target="n31">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="7.5" sy="15.0" tx="11.25" ty="-9.90625">
+ <y:Point x="1169.5130952380953" y="200.0"/>
+ <y:Point x="1354.5884920634921" y="200.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e55" source="n7" target="n31">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="4.5" sy="15.0" tx="3.75" ty="-14.53125">
+ <y:Point x="1166.5130952380953" y="210.0"/>
+ <y:Point x="1347.0884920634921" y="210.0"/>
+ </y:Path>
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e56" source="n31" target="n14">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="10.0" ty="-15.0">
+ <y:Point x="1343.3384920634921" y="605.0"/>
+ <y:Point x="1204.9476190476191" y="605.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e57" source="n12" target="n32">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="11.25" sy="15.0" tx="-4.285714285714334" ty="-14.34375">
+ <y:Point x="900.6579365079365" y="480.0"/>
+ <y:Point x="1001.6948412698413" y="480.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e58" source="n15" target="n32">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-3.75" sy="15.0" tx="4.285714285714334" ty="-14.34375">
+ <y:Point x="1011.5587301587302" y="480.0"/>
+ <y:Point x="1010.26626984127" y="480.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e59" source="n17" target="n32">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="11.25" sy="15.0" tx="-8.571428571428555" ty="-12.28125">
+ <y:Point x="561.2099206349206" y="500.0"/>
+ <y:Point x="997.409126984127" y="500.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e60" source="n7" target="n32">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-4.5" sy="15.0" tx="8.571428571428555" ty="-12.28125">
+ <y:Point x="1157.5130952380953" y="300.0"/>
+ <y:Point x="1099.168253968254" y="300.0"/>
+ <y:Point x="1099.168253968254" y="470.0"/>
+ <y:Point x="1014.5519841269842" y="470.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e61" source="n5" target="n32">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-12.5" sy="15.0" tx="12.85714285714289" ty="-7.71875">
+ <y:Point x="1151.0130952380953" y="500.0"/>
+ <y:Point x="1018.8376984126985" y="500.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e62" source="n13" target="n32">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="10.90909090909091" sy="15.0" tx="-12.85714285714289" ty="-7.71875">
+ <y:Point x="386.17536075036077" y="520.0"/>
+ <y:Point x="993.1234126984127" y="520.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e63" source="n8" target="n32">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="952.4492063492063" y="470.0"/>
+ <y:Point x="1005.9805555555556" y="470.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e64" source="n32" target="n10">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="-3.75" ty="-15.0">
+ <y:Point x="1005.9805555555556" y="605.0"/>
+ <y:Point x="980.5888888888888" y="605.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e65" source="n5" target="n33">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="7.5" sy="15.0" tx="2.5" ty="-14.78125">
+ <y:Point x="1171.0130952380953" y="450.0"/>
+ <y:Point x="1256.9769841269842" y="450.0"/>
+ <y:Point x="1256.9769841269842" y="675.0"/>
+ <y:Point x="1343.8757936507936" y="675.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e66" source="n14" target="n33">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="3.75" sy="15.0" tx="-12.5" ty="-8.28125">
+ <y:Point x="1198.6976190476191" y="705.0"/>
+ <y:Point x="1328.8757936507936" y="705.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e67" source="n7" target="n33">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="10.5" sy="15.0" tx="7.5" ty="-12.96875">
+ <y:Point x="1172.5130952380953" y="190.0"/>
+ <y:Point x="1429.7" y="190.0"/>
+ <y:Point x="1429.7" y="675.0"/>
+ <y:Point x="1348.8757936507936" y="675.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e68" source="n5" target="n33">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="2.5" sy="15.0" tx="-2.5" ty="-14.78125">
+ <y:Point x="1166.0130952380953" y="470.0"/>
+ <y:Point x="1251.9769841269842" y="470.0"/>
+ <y:Point x="1251.9769841269842" y="685.0"/>
+ <y:Point x="1338.8757936507936" y="685.0"/>
+ </y:Path>
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e69" source="n7" target="n33">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="13.5" sy="15.0" tx="12.5" ty="-8.28125">
+ <y:Point x="1175.5130952380953" y="180.0"/>
+ <y:Point x="1432.7" y="180.0"/>
+ <y:Point x="1432.7" y="685.0"/>
+ <y:Point x="1353.8757936507936" y="685.0"/>
+ </y:Path>
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e70" source="n33" target="n14">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-7.5" sy="-12.96875" tx="11.25" ty="15.0">
+ <y:Point x="1333.8757936507936" y="695.0"/>
+ <y:Point x="1206.1976190476191" y="695.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e71" source="n8" target="n34">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="12.0" sy="15.0" tx="-1.875" ty="-15.0">
+ <y:Point x="964.4492063492063" y="180.0"/>
+ <y:Point x="1109.168253968254" y="180.0"/>
+ <y:Point x="1109.168253968254" y="675.0"/>
+ <y:Point x="1095.418253968254" y="675.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e72" source="n5" target="n34">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-7.5" sy="15.0" tx="5.625" ty="-13.90625">
+ <y:Point x="1156.0130952380953" y="510.0"/>
+ <y:Point x="1132.918253968254" y="510.0"/>
+ <y:Point x="1132.918253968254" y="695.0"/>
+ <y:Point x="1102.918253968254" y="695.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e73" source="n14" target="n34">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-11.25" sy="15.0" tx="13.125" ty="-7.28125">
+ <y:Point x="1183.6976190476191" y="735.0"/>
+ <y:Point x="1110.418253968254" y="735.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e74" source="n5" target="n34">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-2.5" sy="15.0" tx="9.375" ty="-11.71875">
+ <y:Point x="1161.0130952380953" y="520.0"/>
+ <y:Point x="1137.918253968254" y="520.0"/>
+ <y:Point x="1137.918253968254" y="705.0"/>
+ <y:Point x="1106.668253968254" y="705.0"/>
+ </y:Path>
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e75" source="n7" target="n34">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-1.5" sy="15.0" tx="1.875" ty="-15.0">
+ <y:Point x="1160.5130952380953" y="310.0"/>
+ <y:Point x="1129.168253968254" y="310.0"/>
+ <y:Point x="1129.168253968254" y="685.0"/>
+ <y:Point x="1099.168253968254" y="685.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e76" source="n12" target="n34">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="3.75" sy="15.0" tx="-9.375" ty="-11.71875">
+ <y:Point x="893.1579365079365" y="490.0"/>
+ <y:Point x="920.2928571428571" y="490.0"/>
+ <y:Point x="920.2928571428571" y="675.0"/>
+ <y:Point x="1087.918253968254" y="675.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e77" source="n15" target="n34">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="3.75" sy="15.0" tx="-5.625" ty="-13.90625">
+ <y:Point x="1019.0587301587302" y="490.0"/>
+ <y:Point x="1091.668253968254" y="490.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e78" source="n17" target="n34">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="3.75" sy="15.0" tx="-13.125" ty="-7.28125">
+ <y:Point x="553.7099206349206" y="530.0"/>
+ <y:Point x="736.7238095238096" y="530.0"/>
+ <y:Point x="736.7238095238096" y="690.0"/>
+ <y:Point x="1084.168253968254" y="690.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e79" source="n34" target="n10">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="3.75" ty="-15.0">
+ <y:Point x="1097.293253968254" y="790.0"/>
+ <y:Point x="988.0888888888888" y="790.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e80" source="n13" target="n35">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-10.909090909090907" sy="15.0" tx="8.571428571428555" ty="-12.28125">
+ <y:Point x="364.35717893217895" y="450.0"/>
+ <y:Point x="287.00873015873015" y="450.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e81" source="n7" target="n35">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-10.5" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="1151.5130952380953" y="280.0"/>
+ <y:Point x="1093.168253968254" y="280.0"/>
+ <y:Point x="1093.168253968254" y="355.0"/>
+ <y:Point x="278.4376984126984" y="355.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e82" source="n9" target="n35">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-10.0" sy="15.0" tx="-8.571428571428555" ty="-12.28125">
+ <y:Point x="665.9996031746032" y="50.0"/>
+ <y:Point x="472.7638888888889" y="50.0"/>
+ <y:Point x="472.7638888888889" y="190.0"/>
+ <y:Point x="269.86587301587304" y="190.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e83" source="n16" target="n35">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-8.0" sy="15.0" tx="-4.285715063077461" ty="-14.34375000000046">
+ <y:Point x="532.4599206349206" y="230.0"/>
+ <y:Point x="274.15198412698413" y="230.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e84" source="n7" target="n35">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-7.5" sy="15.0" tx="4.285714285714278" ty="-14.34375">
+ <y:Point x="1154.5130952380953" y="290.0"/>
+ <y:Point x="1096.168253968254" y="290.0"/>
+ <y:Point x="1096.168253968254" y="375.0"/>
+ <y:Point x="282.72301587301587" y="375.0"/>
+ </y:Path>
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e85" source="n13" target="n35">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-8.18181818181818" sy="15.0" tx="12.857142857142833" ty="-7.71875">
+ <y:Point x="367.08445165945164" y="460.0"/>
+ <y:Point x="291.2944444444444" y="460.0"/>
+ </y:Path>
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e86" source="n6" target="n35">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="-12.857135633680533" ty="-7.718750000003582">
+ <y:Point x="430.0809523809524" y="165.0"/>
+ <y:Point x="265.5797619047619" y="165.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e87" source="n35" target="n11">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="-7.5" ty="-15.0"/>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e88" source="n4" target="n36">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-2.5" sy="15.0" tx="-13.333333333333371" ty="-6.84375">
+ <y:Point x="106.71428571428571" y="905.0"/>
+ <y:Point x="715.8904761904762" y="905.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e89" source="n10" target="n36">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="10.0" ty="-11.15625">
+ <y:Point x="984.3388888888888" y="895.0"/>
+ <y:Point x="739.2238095238096" y="895.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e90" source="n12" target="n36">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-3.75" sy="15.0" tx="6.666666666666629" ty="-13.40625">
+ <y:Point x="885.6579365079365" y="510.0"/>
+ <y:Point x="912.7928571428571" y="510.0"/>
+ <y:Point x="912.7928571428571" y="885.0"/>
+ <y:Point x="735.8904761904762" y="885.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e91" source="n15" target="n36">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="11.25" sy="15.0" tx="13.333333333333371" ty="-6.84375">
+ <y:Point x="1026.5587301587302" y="480.0"/>
+ <y:Point x="1099.168253968254" y="480.0"/>
+ <y:Point x="1099.168253968254" y="590.0"/>
+ <y:Point x="1119.168253968254" y="590.0"/>
+ <y:Point x="1119.168253968254" y="725.0"/>
+ <y:Point x="1223.997619047619" y="725.0"/>
+ <y:Point x="1223.997619047619" y="905.0"/>
+ <y:Point x="742.5571428571429" y="905.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e92" source="n17" target="n36">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-3.75" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="546.2099206349206" y="540.0"/>
+ <y:Point x="729.2238095238096" y="540.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e93" source="n13" target="n36">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="2.727272727272748" sy="15.0" tx="-10.0" ty="-11.15625">
+ <y:Point x="377.9936507936508" y="895.0"/>
+ <y:Point x="719.2238095238096" y="895.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e94" source="n21" target="n36">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="3.3333333333333712" ty="-14.59375">
+ <y:Point x="824.7583333333333" y="875.0"/>
+ <y:Point x="732.5571428571429" y="875.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e95" source="n23" target="n36">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="-3.3333333333333712" ty="-14.59375">
+ <y:Point x="637.1698412698413" y="875.0"/>
+ <y:Point x="725.8904761904762" y="875.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e96" source="n25" target="n36">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="-6.666666666666629" ty="-13.40625">
+ <y:Point x="465.4186507936508" y="885.0"/>
+ <y:Point x="722.5571428571429" y="885.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e97" source="n36" target="n0">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-7.5" sy="12.96875" tx="11.25" ty="-15.0">
+ <y:Point x="721.7238095238096" y="970.0"/>
+ <y:Point x="221.5845238095238" y="970.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e98" source="n36" target="n37">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="7.5" sy="12.96875" tx="0.0" ty="-15.0"/>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e99" source="n13" target="n38">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-2.727272727272748" sy="15.0" tx="9.375" ty="-11.71875">
+ <y:Point x="372.5388888888889" y="785.0"/>
+ <y:Point x="208.4595238095238" y="785.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e100" source="n16" target="n38">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-10.0" sy="15.0" tx="1.875" ty="-15.0">
+ <y:Point x="530.4599206349206" y="220.0"/>
+ <y:Point x="187.06309523809523" y="220.0"/>
+ <y:Point x="187.06309523809523" y="775.0"/>
+ <y:Point x="200.9595238095238" y="775.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e101" source="n11" target="n38">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="5.625" ty="-13.90625">
+ <y:Point x="285.9373015873016" y="775.0"/>
+ <y:Point x="204.7095238095238" y="775.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e102" source="n4" target="n38">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="2.5" sy="15.0" tx="-13.125" ty="-7.28125">
+ <y:Point x="111.71428571428571" y="835.0"/>
+ <y:Point x="185.9595238095238" y="835.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e103" source="n3" target="n38">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="-5.625" ty="-13.90625">
+ <y:Point x="66.36547619047619" y="625.0"/>
+ <y:Point x="136.2234126984127" y="625.0"/>
+ <y:Point x="136.2234126984127" y="700.0"/>
+ <y:Point x="120.46428571428571" y="700.0"/>
+ <y:Point x="120.46428571428571" y="815.0"/>
+ <y:Point x="193.4595238095238" y="815.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e104" source="n13" target="n38">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="13.125" ty="-7.28125">
+ <y:Point x="375.26626984126983" y="805.0"/>
+ <y:Point x="212.2095238095238" y="805.0"/>
+ </y:Path>
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e105" source="n4" target="n38">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="7.5" sy="15.0" tx="-9.375" ty="-11.71875">
+ <y:Point x="116.71428571428571" y="825.0"/>
+ <y:Point x="189.7095238095238" y="825.0"/>
+ </y:Path>
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e106" source="n2" target="n38">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="-1.875" ty="-15.0">
+ <y:Point x="145.46428571428572" y="805.0"/>
+ <y:Point x="197.2095238095238" y="805.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e107" source="n38" target="n0">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="7.5" sy="12.96875" tx="-3.75" ty="-15.0"/>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e108" source="n38" target="n1">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-7.5" sy="12.96875" tx="7.5" ty="-15.0">
+ <y:Point x="191.5845238095238" y="890.0"/>
+ <y:Point x="146.8972222222222" y="890.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ </graph>
+ <data key="d0">
+ <y:Resources/>
+ </data>
+</graphml>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/UmlToRdbmsReducedDataDep.graphml b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/UmlToRdbmsReducedDataDep.graphml
new file mode 100644
index 000000000..12056c1c5
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/extras/UmlToRdbms/UmlToRdbmsReducedDataDep.graphml
@@ -0,0 +1,1916 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
+ <!--Created by yEd 3.12-->
+ <key for="graphml" id="d0" yfiles.type="resources"/>
+ <key for="port" id="d1" yfiles.type="portgraphics"/>
+ <key for="port" id="d2" yfiles.type="portgeometry"/>
+ <key for="port" id="d3" yfiles.type="portuserdata"/>
+ <key attr.name="url" attr.type="string" for="node" id="d4"/>
+ <key attr.name="description" attr.type="string" for="node" id="d5"/>
+ <key for="node" id="d6" yfiles.type="nodegraphics"/>
+ <key attr.name="url" attr.type="string" for="edge" id="d7"/>
+ <key attr.name="description" attr.type="string" for="edge" id="d8"/>
+ <key for="edge" id="d9" yfiles.type="edgegraphics"/>
+ <graph edgedefault="directed" id="G">
+ <node id="n0">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="251.80595238095236" y="555.0"/>
+ <y:Fill color="#99CCFF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="48.021484375" x="-9.0107421875" y="5.6494140625">Schema</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n1">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="135.609126984127" y="903.701171875"/>
+ <y:Fill color="#99CCFF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="34.017578125" x="-2.0087890625" y="5.6494140625">Table</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n2">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="101.85912698412699" y="1368.701171875"/>
+ <y:Fill color="#99CCFF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="45.349609375" x="-7.6748046875" y="5.6494140625">Column</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n3">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="158.109126984127" y="1038.701171875"/>
+ <y:Fill color="#99CCFF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="24.677734375" x="2.6611328125" y="5.6494140625">Key</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n4">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="145.7920634920635" y="1293.701171875"/>
+ <y:Fill color="#99CCFF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="65.365234375" x="-17.6826171875" y="5.6494140625">ForeignKey</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n5">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="888.0869047619047" y="0.0"/>
+ <y:Fill color="#FF00FF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="50.69921875" x="-10.349609375" y="5.6494140625">Package</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n6">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="116.19999999999999" y="105.0"/>
+ <y:Fill color="#FF00FF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="65.365234375" x="-17.6826171875" y="5.6494140625">Association</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n7">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="531.2353174603174" y="150.0"/>
+ <y:Fill color="#FF00FF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="34.005859375" x="-2.0029296875" y="5.6494140625">Class</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n8">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="1244.411111111111" y="150.0"/>
+ <y:Fill color="#FF00FF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="102.02734375" x="-36.013671875" y="5.6494140625">PrimitiveDataType</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n9">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="578.0801587301587" y="555.0"/>
+ <y:Fill color="#FF00FF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="48.689453125" x="-9.3447265625" y="5.6494140625">Attribute</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n10">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="888.0869047619047" y="150.0"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="108.724609375" x="-39.3623046875" y="5.6494140625">PackageToSchema</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n11">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="329.8305555555556" y="555.0"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="78.02734375" x="-24.013671875" y="5.6494140625">ClassToTable</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n12">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="768.8607142857143" y="555.0"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="106.08203125" x="-38.041015625" y="5.6494140625">BooleanToBoolean</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n13">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="1007.293253968254" y="555.0"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="98.04296875" x="-34.021484375" y="5.6494140625">IntegerToNumber</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n14">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="897.5869047619047" y="555.0"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="91.369140625" x="-30.6845703125" y="5.6494140625">StringToVarchar</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n15">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="237.98531746031745" y="903.701171875"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="140.734375" x="-55.3671875" y="5.6494140625">AssociationToForeignKey</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n16">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="622.7813492063492" y="1203.701171875"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="104.04296875" x="-37.021484375" y="5.6494140625">AttributeToColumn</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n17">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="434.37380952380954" y="903.701171875"/>
+ <y:Fill color="#FFCC00" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="94.05859375" x="-32.029296875" y="5.6494140625">NonLeafAttribute</y:NodeLabel>
+ <y:Shape type="rectangle"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n18">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="294.16031746031746" y="450.0"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="132.73046875" x="-51.365234375" y="5.6494140625">packageToSchema_MR</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n19">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="888.0869047619047" y="105.0"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="130.73828125" x="-50.369140625" y="5.6494140625">packageToSchema_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n20">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="1257.4849206349206" y="759.3505859375"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="114.701171875" x="-42.3505859375" y="5.6494140625">stringToVarchar_MR</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n21">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="1257.4849206349206" y="903.701171875"/>
+ <y:Fill color="#CCCCFF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="149.39453125" x="-59.697265625" y="5.6494140625">StringToVarchar.typeName</y:NodeLabel>
+ <y:Shape type="diamond"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n22">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="852.6547619047619" y="759.3505859375"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="130.087890625" x="-50.0439453125" y="5.6494140625">booleanToBoolean_MR</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n23">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="869.6646825396825" y="903.701171875"/>
+ <y:Fill color="#CCCCFF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="164.107421875" x="-67.0537109375" y="5.6494140625">BooleanToBoolean.typeName</y:NodeLabel>
+ <y:Shape type="diamond"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n24">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="1073.0742063492064" y="759.3505859375"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="122.7109375" x="-46.35546875" y="5.6494140625">integerToNumber_MR</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n25">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="1089.7531746031746" y="903.701171875"/>
+ <y:Fill color="#CCCCFF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="156.068359375" x="-63.0341796875" y="5.6494140625">IntegerToNumber.typeName</y:NodeLabel>
+ <y:Shape type="diamond"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n26">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="1150.3630952380952" y="450.0"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="128.095703125" x="-49.0478515625" y="5.6494140625">booleanToBoolean_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n27">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="228.09722222222223" y="759.3505859375"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="100.697265625" x="-35.3486328125" y="5.6494140625">classToTable_MR</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n28">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="144.44206349206348" y="450.0"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="98.705078125" x="-34.3525390625" y="5.6494140625">classToTable_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n29">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="1315.765873015873" y="450.0"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="112.708984375" x="-41.3544921875" y="5.6494140625">stringToVarchar_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n30">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="1447.479761904762" y="450.0"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="120.71875" x="-45.359375" y="5.6494140625">integerToNumber_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n31">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="444.37380952380954" y="759.3505859375"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="152.72265625" x="-61.361328125" y="5.6494140625">classComplexAttributes_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n32">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="659.4230158730159" y="759.3505859375"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="151.375" x="-60.6875" y="5.6494140625">classPrimitiveAttributes_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n33">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="504.15317460317465" y="1038.701171875"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="214.755859375" x="-92.3779296875" y="5.6494140625">complexAttributeComplexAttributes_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n34">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="748.2357142857143" y="1038.701171875"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="213.408203125" x="-91.7041015625" y="5.6494140625">complexAttributePrimitiveAttributes_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n35">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="81.37420634920635" y="759.3505859375"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="162.748046875" x="-66.3740234375" y="5.6494140625">associationToForeignKey_LM</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n36">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="873.2738095238095" y="1293.701171875"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="120.044921875" x="-45.0224609375" y="5.6494140625">attributeColumns_MR</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n37">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="880.7738095238095" y="1368.701171875"/>
+ <y:Fill color="#CCCCFF" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="71.365234375" x="-20.6826171875" y="5.6494140625">Column.type</y:NodeLabel>
+ <y:Shape type="diamond"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <node id="n38">
+ <data key="d6">
+ <y:ShapeNode>
+ <y:Geometry height="30.0" width="30.0" x="225.47936507936507" y="1203.701171875"/>
+ <y:Fill color="#FF6600" transparent="false"/>
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="164.740234375" x="-67.3701171875" y="5.6494140625">associationToForeignKey_MR</y:NodeLabel>
+ <y:Shape type="ellipse"/>
+ </y:ShapeNode>
+ </data>
+ </node>
+ <edge id="e0" source="n0" target="n1">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="7.5" ty="-15.0">
+ <y:Point x="266.80595238095236" y="660.0"/>
+ <y:Point x="308.44603174603174" y="660.0"/>
+ <y:Point x="308.44603174603174" y="864.3505859375"/>
+ <y:Point x="158.109126984127" y="864.3505859375"/>
+ </y:Path>
+ <y:LineStyle color="#0000FF" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e1" source="n1" target="n2">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-12.5" sy="15.0" tx="-3.75" ty="-15.0">
+ <y:Point x="138.109126984127" y="1023.701171875"/>
+ <y:Point x="113.10912698412699" y="1023.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#0000FF" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e2" source="n1" target="n3">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-2.5" sy="15.0" tx="7.5" ty="-15.0">
+ <y:Point x="148.109126984127" y="993.701171875"/>
+ <y:Point x="180.609126984127" y="993.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#0000FF" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e3" source="n1" target="n4">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-7.5" sy="15.0" tx="-7.5" ty="-15.0">
+ <y:Point x="143.109126984127" y="1243.0517578125"/>
+ <y:Point x="153.2920634920635" y="1243.0517578125"/>
+ </y:Path>
+ <y:LineStyle color="#0000FF" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e4" source="n5" target="n6">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-10.0" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="893.0869047619047" y="60.0"/>
+ <y:Point x="131.2" y="60.0"/>
+ </y:Path>
+ <y:LineStyle color="#FF00FF" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e5" source="n5" target="n7">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-3.3333333333333712" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="899.7535714285714" y="90.0"/>
+ <y:Point x="546.2353174603174" y="90.0"/>
+ </y:Path>
+ <y:LineStyle color="#FF00FF" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e6" source="n5" target="n8">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="6.666666666666629" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="909.7535714285714" y="75.0"/>
+ <y:Point x="1259.411111111111" y="75.0"/>
+ </y:Path>
+ <y:LineStyle color="#FF00FF" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e7" source="n7" target="n9">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="10.5" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="556.7353174603174" y="210.0"/>
+ <y:Point x="593.0801587301587" y="210.0"/>
+ </y:Path>
+ <y:LineStyle color="#FF00FF" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e8" source="n10" target="n11">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-4.0" sy="15.0" tx="7.5" ty="-15.0">
+ <y:Point x="899.0869047619047" y="330.0"/>
+ <y:Point x="390.5257936507937" y="330.0"/>
+ <y:Point x="390.5257936507937" y="489.3505859375"/>
+ <y:Point x="352.3305555555556" y="489.3505859375"/>
+ </y:Path>
+ <y:LineStyle color="#FFCC00" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e9" source="n10" target="n12">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-2.0" sy="15.0" tx="-7.5" ty="-15.0">
+ <y:Point x="901.0869047619047" y="345.0"/>
+ <y:Point x="685.8194444444445" y="345.0"/>
+ <y:Point x="685.8194444444445" y="480.0"/>
+ <y:Point x="776.3607142857143" y="480.0"/>
+ </y:Path>
+ <y:LineStyle color="#FFCC00" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e10" source="n10" target="n13">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="4.0" sy="15.0" tx="-7.5" ty="-15.0">
+ <y:Point x="907.0869047619047" y="450.0"/>
+ <y:Point x="1014.793253968254" y="450.0"/>
+ </y:Path>
+ <y:LineStyle color="#FFCC00" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e11" source="n10" target="n14">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="2.0" sy="15.0" tx="-7.5" ty="-15.0"/>
+ <y:LineStyle color="#FFCC00" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e12" source="n11" target="n15">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-5.454545454545439" sy="15.0" tx="7.5" ty="-15.0">
+ <y:Point x="339.3753968253968" y="879.3505859375"/>
+ <y:Point x="260.48531746031745" y="879.3505859375"/>
+ </y:Path>
+ <y:LineStyle color="#FFCC00" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e13" source="n11" target="n16">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="5.454545454545439" sy="15.0" tx="-11.25" ty="-15.0">
+ <y:Point x="350.28492063492064" y="1098.701171875"/>
+ <y:Point x="626.5313492063492" y="1098.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#FFCC00" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e14" source="n11" target="n17">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="8.181818181818187" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="353.0123015873016" y="819.3505859375"/>
+ <y:Point x="449.37380952380954" y="819.3505859375"/>
+ </y:Path>
+ <y:LineStyle color="#FFCC00" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e15" source="n17" target="n16">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-11.25" sy="15.0" tx="-3.75" ty="-15.0">
+ <y:Point x="438.12380952380954" y="948.701171875"/>
+ <y:Point x="396.775" y="948.701171875"/>
+ <y:Point x="396.775" y="1083.701171875"/>
+ <y:Point x="634.0313492063492" y="1083.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#FFCC00" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e16" source="n17" target="n17">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-15.0" sy="0.0" tx="-10.0" ty="-15.0">
+ <y:Point x="418.87380952380954" y="918.701171875"/>
+ <y:Point x="418.87380952380954" y="888.201171875"/>
+ <y:Point x="439.37380952380954" y="888.201171875"/>
+ </y:Path>
+ <y:LineStyle color="#FFCC00" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e17" source="n10" target="n18">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-6.0" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="897.0869047619047" y="315.0"/>
+ <y:Point x="309.16031746031746" y="315.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e18" source="n18" target="n0">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="309.16031746031746" y="495.0"/>
+ <y:Point x="266.80595238095236" y="495.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e19" source="n5" target="n19">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-1.7763568394002505E-15" sy="15.0" tx="0.0" ty="-15.0"/>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e20" source="n19" target="n10">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="0.0" ty="-15.0"/>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e21" source="n14" target="n20">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="11.25" sy="15.0" tx="-7.5" ty="-12.96875">
+ <y:Point x="923.8369047619047" y="615.0"/>
+ <y:Point x="1264.9849206349206" y="615.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e22" source="n10" target="n20">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="10.0" sy="15.0" tx="7.5" ty="-12.96875">
+ <y:Point x="913.0869047619047" y="405.0"/>
+ <y:Point x="1244.411111111111" y="405.0"/>
+ <y:Point x="1244.411111111111" y="585.0"/>
+ <y:Point x="1279.9849206349206" y="585.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e23" source="n20" target="n21">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="0.0" ty="-15.0"/>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e24" source="n10" target="n22">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="7.5" ty="-12.96875">
+ <y:Point x="903.0869047619047" y="360.0"/>
+ <y:Point x="851.9019841269841" y="360.0"/>
+ <y:Point x="851.9019841269841" y="600.0"/>
+ <y:Point x="875.1547619047619" y="600.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e25" source="n12" target="n22">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="11.25" sy="15.0" tx="-7.5" ty="-12.96875">
+ <y:Point x="795.1107142857143" y="615.0"/>
+ <y:Point x="860.1547619047619" y="615.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e26" source="n22" target="n23">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="867.6547619047619" y="804.3505859375"/>
+ <y:Point x="884.6646825396825" y="804.3505859375"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e27" source="n10" target="n24">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="6.0" sy="15.0" tx="7.5" ty="-12.96875">
+ <y:Point x="909.0869047619047" y="435.0"/>
+ <y:Point x="1086.3150793650793" y="435.0"/>
+ <y:Point x="1086.3150793650793" y="585.0"/>
+ <y:Point x="1095.5742063492064" y="585.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e28" source="n13" target="n24">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="11.25" sy="15.0" tx="-7.5" ty="-12.96875">
+ <y:Point x="1033.543253968254" y="600.0"/>
+ <y:Point x="1080.5742063492064" y="600.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e29" source="n24" target="n25">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="1088.0742063492064" y="804.3505859375"/>
+ <y:Point x="1104.7531746031746" y="804.3505859375"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e30" source="n5" target="n26">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="3.3333333333333712" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="906.4202380952381" y="90.0"/>
+ <y:Point x="1165.3630952380952" y="90.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e31" source="n10" target="n26">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="8.0" sy="15.0" tx="-10.0" ty="-11.15625">
+ <y:Point x="911.0869047619047" y="420.0"/>
+ <y:Point x="1155.3630952380952" y="420.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e32" source="n8" target="n26">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-6.0" sy="15.0" tx="10.0" ty="-11.15625">
+ <y:Point x="1253.411111111111" y="390.0"/>
+ <y:Point x="1175.3630952380952" y="390.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e33" source="n26" target="n12">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="7.5" ty="-15.0">
+ <y:Point x="1165.3630952380952" y="495.0"/>
+ <y:Point x="791.3607142857143" y="495.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e34" source="n10" target="n27">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-8.0" sy="15.0" tx="-10.0" ty="-11.15625">
+ <y:Point x="895.0869047619047" y="300.0"/>
+ <y:Point x="227.79484126984127" y="300.0"/>
+ <y:Point x="227.79484126984127" y="600.0"/>
+ <y:Point x="233.09722222222223" y="600.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e35" source="n11" target="n27">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-8.18181818181818" sy="15.0" tx="10.0" ty="-11.15625">
+ <y:Point x="336.6487373737374" y="675.0"/>
+ <y:Point x="253.09722222222223" y="675.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e36" source="n0" target="n27">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-10.0" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="256.80595238095236" y="600.0"/>
+ <y:Point x="243.09722222222223" y="600.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e37" source="n27" target="n2">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-10.0" sy="11.15625" tx="-11.25" ty="-15.0">
+ <y:Point x="233.09722222222223" y="804.3505859375"/>
+ <y:Point x="103.6" y="804.3505859375"/>
+ <y:Point x="103.6" y="1323.701171875"/>
+ <y:Point x="105.60912698412699" y="1323.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e38" source="n27" target="n3">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="-7.5" ty="-15.0">
+ <y:Point x="243.09722222222223" y="819.3505859375"/>
+ <y:Point x="118.6" y="819.3505859375"/>
+ <y:Point x="118.6" y="1008.701171875"/>
+ <y:Point x="165.609126984127" y="1008.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e39" source="n27" target="n1">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="10.0" sy="11.15625" tx="-7.5" ty="-15.0">
+ <y:Point x="253.09722222222223" y="834.3505859375"/>
+ <y:Point x="143.109126984127" y="834.3505859375"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e40" source="n10" target="n28">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-14.0" sy="15.0" tx="10.0" ty="-11.15625">
+ <y:Point x="889.0869047619047" y="255.0"/>
+ <y:Point x="169.44206349206348" y="255.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e41" source="n7" target="n28">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-7.5" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="538.7353174603174" y="240.0"/>
+ <y:Point x="159.44206349206348" y="240.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e42" source="n5" target="n28">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-6.666666666666629" sy="15.0" tx="-10.0" ty="-11.15625">
+ <y:Point x="896.4202380952381" y="75.0"/>
+ <y:Point x="514.2321428571429" y="75.0"/>
+ <y:Point x="514.2321428571429" y="210.0"/>
+ <y:Point x="149.44206349206348" y="210.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e43" source="n28" target="n11">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="-7.5" ty="-15.0">
+ <y:Point x="159.44206349206348" y="510.0"/>
+ <y:Point x="337.3305555555556" y="510.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e44" source="n5" target="n29">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="10.0" sy="15.0" tx="10.0" ty="-11.15625">
+ <y:Point x="913.0869047619047" y="60.0"/>
+ <y:Point x="1325.425" y="60.0"/>
+ <y:Point x="1325.425" y="180.0"/>
+ <y:Point x="1340.765873015873" y="180.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e45" source="n8" target="n29">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="6.0" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="1265.411111111111" y="210.0"/>
+ <y:Point x="1330.765873015873" y="210.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e46" source="n10" target="n29">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="12.0" sy="15.0" tx="-10.0" ty="-11.15625">
+ <y:Point x="915.0869047619047" y="240.0"/>
+ <y:Point x="1320.765873015873" y="240.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e47" source="n29" target="n14">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="7.5" ty="-15.0">
+ <y:Point x="1330.765873015873" y="525.0"/>
+ <y:Point x="920.0869047619047" y="525.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e48" source="n10" target="n30">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="14.0" sy="15.0" tx="-10.0" ty="-11.15625">
+ <y:Point x="917.0869047619047" y="225.0"/>
+ <y:Point x="1452.479761904762" y="225.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e49" source="n8" target="n30">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="12.0" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="1271.411111111111" y="195.0"/>
+ <y:Point x="1462.479761904762" y="195.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e50" source="n5" target="n30">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="13.333333333333371" sy="15.0" tx="10.0" ty="-11.15625">
+ <y:Point x="916.4202380952381" y="45.0"/>
+ <y:Point x="1472.479761904762" y="45.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e51" source="n30" target="n13">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="7.5" ty="-15.0">
+ <y:Point x="1462.479761904762" y="540.0"/>
+ <y:Point x="1029.793253968254" y="540.0"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e52" source="n7" target="n31">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-1.5" sy="15.0" tx="-3.75" ty="-14.53125">
+ <y:Point x="544.7353174603174" y="660.0"/>
+ <y:Point x="455.62380952380954" y="660.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e53" source="n11" target="n31">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="10.90909090909091" sy="15.0" tx="-11.25" ty="-9.90625">
+ <y:Point x="355.7396464646465" y="630.0"/>
+ <y:Point x="448.12380952380954" y="630.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e54" source="n7" target="n31">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="1.5" sy="15.0" tx="3.75" ty="-14.53125">
+ <y:Point x="547.7353174603174" y="675.0"/>
+ <y:Point x="463.12380952380954" y="675.0"/>
+ </y:Path>
+ <y:LineStyle color="#FF0000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e55" source="n9" target="n31">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-12.5" sy="15.0" tx="11.25" ty="-9.90625">
+ <y:Point x="580.5801587301587" y="690.0"/>
+ <y:Point x="470.62380952380954" y="690.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e56" source="n31" target="n17">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="10.0" ty="-15.0"/>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e57" source="n11" target="n32">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="13.636363636363637" sy="15.0" tx="-12.85714285714289" ty="-7.71875">
+ <y:Point x="358.4669191919192" y="615.0"/>
+ <y:Point x="661.565873015873" y="615.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e58" source="n7" target="n32">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="13.5" sy="15.0" tx="-4.285714285714334" ty="-14.34375">
+ <y:Point x="559.7353174603174" y="195.0"/>
+ <y:Point x="670.1373015873016" y="195.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e59" source="n8" target="n32">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-12.0" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="1247.411111111111" y="375.0"/>
+ <y:Point x="700.8194444444445" y="375.0"/>
+ <y:Point x="700.8194444444445" y="585.0"/>
+ <y:Point x="674.4230158730159" y="585.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e60" source="n12" target="n32">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-11.25" sy="15.0" tx="4.285714285714334" ty="-14.34375">
+ <y:Point x="772.6107142857143" y="600.0"/>
+ <y:Point x="678.7087301587302" y="600.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e61" source="n13" target="n32">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-11.25" sy="15.0" tx="12.85714285714289" ty="-7.71875">
+ <y:Point x="1011.043253968254" y="660.0"/>
+ <y:Point x="687.2801587301587" y="660.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e62" source="n14" target="n32">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-11.25" sy="15.0" tx="8.571428571428555" ty="-12.28125">
+ <y:Point x="901.3369047619047" y="630.0"/>
+ <y:Point x="682.9944444444444" y="630.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e63" source="n9" target="n32">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="12.5" sy="15.0" tx="-8.571428571428555" ty="-12.28125">
+ <y:Point x="605.5801587301587" y="600.0"/>
+ <y:Point x="665.8515873015873" y="600.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e64" source="n32" target="n16">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="3.75" ty="-15.0">
+ <y:Point x="674.4230158730159" y="933.701171875"/>
+ <y:Point x="641.5313492063492" y="933.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e65" source="n17" target="n33">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-3.75" sy="15.0" tx="-12.5" ty="-8.28125">
+ <y:Point x="445.62380952380954" y="1023.701171875"/>
+ <y:Point x="506.65317460317465" y="1023.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e66" source="n9" target="n33">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-2.5" sy="15.0" tx="12.5" ty="-8.28125">
+ <y:Point x="590.5801587301587" y="720.0"/>
+ <y:Point x="573.7353174603174" y="720.0"/>
+ <y:Point x="573.7353174603174" y="963.701171875"/>
+ <y:Point x="531.6531746031746" y="963.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e67" source="n9" target="n33">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-7.5" sy="15.0" tx="7.5" ty="-12.96875">
+ <y:Point x="585.5801587301587" y="705.0"/>
+ <y:Point x="568.7353174603174" y="705.0"/>
+ <y:Point x="568.7353174603174" y="948.701171875"/>
+ <y:Point x="526.6531746031746" y="948.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e68" source="n7" target="n33">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="4.5" sy="15.0" tx="2.5" ty="-14.78125">
+ <y:Point x="550.7353174603174" y="933.701171875"/>
+ <y:Point x="521.6531746031746" y="933.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e69" source="n7" target="n33">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-4.5" sy="15.0" tx="-2.5" ty="-14.78125">
+ <y:Point x="541.7353174603174" y="645.0"/>
+ <y:Point x="368.0123015873016" y="645.0"/>
+ <y:Point x="368.0123015873016" y="804.3505859375"/>
+ <y:Point x="516.6531746031746" y="804.3505859375"/>
+ </y:Path>
+ <y:LineStyle color="#FF0000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e70" source="n33" target="n17">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-7.5" sy="-12.96875" tx="3.75" ty="15.0">
+ <y:Point x="511.65317460317465" y="1008.701171875"/>
+ <y:Point x="453.12380952380954" y="1008.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e71" source="n12" target="n34">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="3.75" sy="15.0" tx="5.625" ty="-13.90625">
+ <y:Point x="787.6107142857143" y="978.701171875"/>
+ <y:Point x="768.8607142857143" y="978.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e72" source="n13" target="n34">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-3.75" sy="15.0" tx="13.125" ty="-7.28125">
+ <y:Point x="1018.543253968254" y="675.0"/>
+ <y:Point x="1004.2186507936508" y="675.0"/>
+ <y:Point x="1004.2186507936508" y="1008.701171875"/>
+ <y:Point x="776.3607142857143" y="1008.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e73" source="n14" target="n34">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-3.75" sy="15.0" tx="9.375" ty="-11.71875">
+ <y:Point x="908.8369047619047" y="645.0"/>
+ <y:Point x="981.7186507936508" y="645.0"/>
+ <y:Point x="981.7186507936508" y="993.701171875"/>
+ <y:Point x="772.6107142857143" y="993.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e74" source="n9" target="n34">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="2.5" sy="15.0" tx="-5.625" ty="-13.90625">
+ <y:Point x="595.5801587301587" y="735.0"/>
+ <y:Point x="578.7353174603174" y="735.0"/>
+ <y:Point x="578.7353174603174" y="963.701171875"/>
+ <y:Point x="757.6107142857143" y="963.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e75" source="n7" target="n34">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="7.5" sy="15.0" tx="-9.375" ty="-11.71875">
+ <y:Point x="553.7353174603174" y="978.701171875"/>
+ <y:Point x="753.8607142857143" y="978.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e76" source="n17" target="n34">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="11.25" sy="15.0" tx="-13.125" ty="-7.28125">
+ <y:Point x="460.62380952380954" y="993.701171875"/>
+ <y:Point x="750.1107142857143" y="993.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e77" source="n9" target="n34">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="7.5" sy="15.0" tx="-1.875" ty="-15.0">
+ <y:Point x="600.5801587301587" y="750.0"/>
+ <y:Point x="583.7353174603174" y="750.0"/>
+ <y:Point x="583.7353174603174" y="948.701171875"/>
+ <y:Point x="761.3607142857143" y="948.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#FF0000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e78" source="n8" target="n34">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="1.875" ty="-15.0">
+ <y:Point x="1259.411111111111" y="510.0"/>
+ <y:Point x="715.8194444444445" y="510.0"/>
+ <y:Point x="715.8194444444445" y="615.0"/>
+ <y:Point x="765.1107142857143" y="615.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e79" source="n34" target="n16">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="11.25" ty="-15.0">
+ <y:Point x="763.2357142857143" y="1083.701171875"/>
+ <y:Point x="649.0313492063492" y="1083.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e80" source="n7" target="n35">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-10.5" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="535.7353174603174" y="225.0"/>
+ <y:Point x="95.08928571428571" y="225.0"/>
+ <y:Point x="95.08928571428571" y="585.0"/>
+ <y:Point x="96.37420634920635" y="585.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e81" source="n7" target="n35">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-13.5" sy="15.0" tx="-4.285715208603975" ty="-14.343750000000648">
+ <y:Point x="532.7353174603174" y="195.0"/>
+ <y:Point x="92.08928571428571" y="195.0"/>
+ </y:Path>
+ <y:LineStyle color="#FF0000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e82" source="n6" target="n35">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="-8.571430341951276" ty="-12.281250000000576">
+ <y:Point x="131.2" y="150.0"/>
+ <y:Point x="87.8031746031746" y="150.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e83" source="n5" target="n35">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-13.333333333333371" sy="15.0" tx="-12.857142857142861" ty="-7.71875">
+ <y:Point x="889.7535714285714" y="45.0"/>
+ <y:Point x="83.51706349206349" y="45.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e84" source="n11" target="n35">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-13.636363636363633" sy="15.0" tx="8.57142857142857" ty="-12.28125">
+ <y:Point x="331.19419191919195" y="615.0"/>
+ <y:Point x="104.94563492063492" y="615.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e85" source="n11" target="n35">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-10.909090909090907" sy="15.0" tx="12.857142857142847" ty="-7.71875">
+ <y:Point x="333.92146464646464" y="630.0"/>
+ <y:Point x="109.2313492063492" y="630.0"/>
+ </y:Path>
+ <y:LineStyle color="#FF0000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e86" source="n10" target="n35">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-10.0" sy="15.0" tx="4.285714285714292" ty="-14.34375">
+ <y:Point x="893.0869047619047" y="285.0"/>
+ <y:Point x="225.79484126984127" y="285.0"/>
+ <y:Point x="225.79484126984127" y="600.0"/>
+ <y:Point x="100.65992063492064" y="600.0"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e87" source="n35" target="n15">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="-7.5" ty="-15.0">
+ <y:Point x="96.37420634920635" y="849.3505859375"/>
+ <y:Point x="245.48531746031745" y="849.3505859375"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e88" source="n16" target="n36">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="-6.666666666666629" ty="-13.40625">
+ <y:Point x="637.7813492063492" y="1248.701171875"/>
+ <y:Point x="881.6071428571429" y="1248.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e89" source="n11" target="n36">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="2.727272727272748" sy="15.0" tx="-10.0" ty="-11.15625">
+ <y:Point x="347.5575396825397" y="1263.701171875"/>
+ <y:Point x="878.2738095238095" y="1263.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e90" source="n12" target="n36">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-3.75" sy="15.0" tx="-3.3333328448172574" ty="-14.59375000000029">
+ <y:Point x="780.1107142857143" y="963.701171875"/>
+ <y:Point x="884.9400793650793" y="963.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e91" source="n13" target="n36">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="3.75" sy="15.0" tx="6.666666666666629" ty="-13.40625">
+ <y:Point x="1026.043253968254" y="690.0"/>
+ <y:Point x="1011.7186507936508" y="690.0"/>
+ <y:Point x="1011.7186507936508" y="1248.701171875"/>
+ <y:Point x="894.9404761904761" y="1248.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e92" source="n14" target="n36">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="3.75" sy="15.0" tx="3.3333333333333712" ty="-14.59375">
+ <y:Point x="916.3369047619047" y="630.0"/>
+ <y:Point x="989.2186507936508" y="630.0"/>
+ <y:Point x="989.2186507936508" y="1233.701171875"/>
+ <y:Point x="891.6071428571429" y="1233.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e93" source="n1" target="n36">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="12.5" sy="15.0" tx="-13.333333333333371" ty="-6.84375">
+ <y:Point x="163.109126984127" y="948.701171875"/>
+ <y:Point x="213.109126984127" y="948.701171875"/>
+ <y:Point x="213.109126984127" y="1128.701171875"/>
+ <y:Point x="344.2238095238095" y="1128.701171875"/>
+ <y:Point x="344.2238095238095" y="1278.701171875"/>
+ <y:Point x="874.9404761904761" y="1278.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e94" source="n21" target="n36">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="13.333333333333371" ty="-6.84375">
+ <y:Point x="1272.4849206349206" y="1278.701171875"/>
+ <y:Point x="901.6071428571429" y="1278.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e95" source="n23" target="n36">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="0.0" ty="-15.0">
+ <y:Point x="884.6646825396825" y="948.701171875"/>
+ <y:Point x="888.2738095238095" y="948.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e96" source="n25" target="n36">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="10.0" ty="-11.15625">
+ <y:Point x="1104.7531746031746" y="1263.701171875"/>
+ <y:Point x="898.2738095238095" y="1263.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e97" source="n36" target="n2">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-7.5" sy="12.96875" tx="11.25" ty="-15.0">
+ <y:Point x="880.7738095238095" y="1353.701171875"/>
+ <y:Point x="128.109126984127" y="1353.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e98" source="n36" target="n37">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="7.5" sy="12.96875" tx="0.0" ty="-15.0"/>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e99" source="n1" target="n38">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="7.5" sy="15.0" tx="-1.875" ty="-15.0">
+ <y:Point x="158.109126984127" y="963.701171875"/>
+ <y:Point x="208.109126984127" y="963.701171875"/>
+ <y:Point x="208.109126984127" y="1143.701171875"/>
+ <y:Point x="238.60436507936507" y="1143.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e100" source="n10" target="n38">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-12.0" sy="15.0" tx="-13.125" ty="-7.28125">
+ <y:Point x="891.0869047619047" y="270.0"/>
+ <y:Point x="223.79484126984127" y="270.0"/>
+ <y:Point x="223.79484126984127" y="495.0"/>
+ <y:Point x="0.0" y="495.0"/>
+ <y:Point x="0.0" y="1038.701171875"/>
+ <y:Point x="128.109126984127" y="1038.701171875"/>
+ <y:Point x="128.109126984127" y="1188.701171875"/>
+ <y:Point x="227.35436507936507" y="1188.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e101" source="n0" target="n38">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="10.0" sy="15.0" tx="5.625" ty="-13.90625">
+ <y:Point x="276.80595238095236" y="645.0"/>
+ <y:Point x="324.3753968253968" y="645.0"/>
+ <y:Point x="324.3753968253968" y="894.3505859375"/>
+ <y:Point x="338.35277777777776" y="894.3505859375"/>
+ <y:Point x="338.35277777777776" y="1083.701171875"/>
+ <y:Point x="246.10436507936507" y="1083.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e102" source="n11" target="n38">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="13.125" ty="-7.28125">
+ <y:Point x="344.83015873015876" y="1113.701171875"/>
+ <y:Point x="253.60436507936507" y="1113.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e103" source="n1" target="n38">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="2.5" sy="15.0" tx="-5.625" ty="-13.90625">
+ <y:Point x="153.109126984127" y="978.701171875"/>
+ <y:Point x="203.109126984127" y="978.701171875"/>
+ <y:Point x="203.109126984127" y="1158.701171875"/>
+ <y:Point x="234.85436507936507" y="1158.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#FF0000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e104" source="n15" target="n38">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="1.875" ty="-15.0">
+ <y:Point x="252.98531746031745" y="1068.701171875"/>
+ <y:Point x="242.35436507936507" y="1068.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e105" source="n3" target="n38">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="0.0" sy="15.0" tx="-9.375" ty="-11.71875">
+ <y:Point x="173.109126984127" y="1173.701171875"/>
+ <y:Point x="231.10436507936507" y="1173.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#008000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e106" source="n11" target="n38">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-2.727272727272748" sy="15.0" tx="9.375" ty="-11.71875">
+ <y:Point x="342.10277777777776" y="1098.701171875"/>
+ <y:Point x="249.85436507936507" y="1098.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#FF0000" type="dotted" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e107" source="n38" target="n4">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="-7.5" sy="12.96875" tx="7.5" ty="-15.0">
+ <y:Point x="232.97936507936507" y="1248.701171875"/>
+ <y:Point x="168.2920634920635" y="1248.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ <edge id="e108" source="n38" target="n2">
+ <data key="d9">
+ <y:PolyLineEdge>
+ <y:Path sx="7.5" sy="12.96875" tx="3.75" ty="-15.0">
+ <y:Point x="247.97936507936507" y="1338.701171875"/>
+ <y:Point x="120.60912698412699" y="1338.701171875"/>
+ </y:Path>
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
+ <y:Arrows source="none" target="standard"/>
+ <y:BendStyle smoothed="false"/>
+ </y:PolyLineEdge>
+ </data>
+ </edge>
+ </graph>
+ <data key="d0">
+ <y:Resources/>
+ </data>
+</graphml>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/flattening/InheritanceFlatenning.qvtc b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/flattening/InheritanceFlatenning.qvtc
index 26728a9e6..26728a9e6 100644
--- a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/flattening/InheritanceFlatenning.qvtc
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/flattening/InheritanceFlatenning.qvtc
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/flattening/InheritanceFlatenning.qvtcas b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/flattening/InheritanceFlatenning.qvtcas
new file mode 100644
index 000000000..6d7df245e
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/flattening/InheritanceFlatenning.qvtcas
@@ -0,0 +1,595 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<qvtc:CoreModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:pivot="http://www.eclipse.org/ocl/3.1.0/Pivot" xmlns:qvtb="http://www.eclipse.org/qvt/0.9/QVTbase"
+ xmlns:qvtc="http://www.eclipse.org/qvt/0.9/QVTcore" xmlns:qvtcb="http://www.eclipse.org/qvt/0.9/QVTcoreBase"
+ xsi:schemaLocation="http://www.eclipse.org/ocl/3.1.0/Pivot java://org.eclipse.ocl.examples.pivot.PivotPackage http://www.eclipse.org/qvt/0.9/QVTbase java://org.eclipse.qvtd.pivot.qvtbase.QVTbasePackage http://www.eclipse.org/qvt/0.9/QVTcore java://org.eclipse.qvtd.pivot.qvtcore.QVTcorePackage http://www.eclipse.org/qvt/0.9/QVTcoreBase java://org.eclipse.qvtd.pivot.qvtcorebase.QVTcoreBasePackage"
+ name="InheritanceFlatenning.qvtc" externalURI="platform:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/flattening/InheritanceFlatenning.qvtc">
+ <nestedPackage xsi:type="qvtb:Transformation" xmi:id="T.hierarchyFlatenning" name="hierarchyFlatenning"
+ superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclElement">
+ <ownedOperation xsi:type="qvtb:Function" xmi:id="o.hierarchyFlatenning.getAllSupers..simpleuml.Class"
+ isStatic="true" name="getAllSupers" type="#//@nestedPackage.1/@ownedType.0">
+ <ownedParameter xsi:type="qvtb:FunctionParameter" xmi:id="p0o.hierarchyFlatenning.getAllSupers..simpleuml.Class"
+ name="cls" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <queryExpression xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.asSet">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.1"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Sequence.including..T">
+ <source xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.1"
+ referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.OrderedSet.collect..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.2"
+ referredProperty="../UmlToRdbms/SimpleUML.ecore.oclas#p.simpleuml.Class.general">
+ <source xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#p0o.hierarchyFlatenning.getAllSupers..simpleuml.Class"/>
+ </source>
+ <body xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="#o.hierarchyFlatenning.getAllSupers..simpleuml.Class">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@ownedOperation.0/@queryExpression/@source/@source/@iterator.0"/>
+ </body>
+ <iterator name="gen" isRequired="false" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.OrderedSet.collect..T"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#p0o.hierarchyFlatenning.getAllSupers..simpleuml.Class"/>
+ </source>
+ </queryExpression>
+ </ownedOperation>
+ <modelParameter name="origin" usedPackage="../UmlToRdbms/SimpleUML.ecore.oclas#P.simpleuml"/>
+ <modelParameter name="final" usedPackage="../UmlToRdbms/SimpleUML.ecore.oclas#P.simpleuml"/>
+ <modelParameter usedPackage="SimpleUmlToFlatUml.ecore.oclas#P.simpleumltoflatuml"/>
+ <rule xsi:type="qvtc:Mapping" name="UmlElementToUmlElement" specification="#//@nestedPackage.0/@rule.1 #//@nestedPackage.0/@rule.2 #//@nestedPackage.0/@rule.3">
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="false" isEnforceable="false"
+ typedModel="#//@nestedPackage.0/@modelParameter.0">
+ <guardPattern/>
+ <bottomPattern>
+ <variable name="se" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="false" isEnforceable="true"
+ typedModel="#//@nestedPackage.0/@modelParameter.1">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable name="te" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"
+ referredProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.UmlModelElementT.origin">
+ <source xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.UmlModelElementT"
+ referredVariable="#//@nestedPackage.0/@rule.0/@bottomPattern/@realizedVariable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"
+ referredVariable="#//@nestedPackage.0/@rule.0/@domain.0/@bottomPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"
+ referredProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.UmlModelElementT.final">
+ <source xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.UmlModelElementT"
+ referredVariable="#//@nestedPackage.0/@rule.0/@bottomPattern/@realizedVariable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"
+ referredVariable="#//@nestedPackage.0/@rule.0/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </conditionExpression>
+ </predicate>
+ <realizedVariable name="e2e" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.UmlModelElementT"/>
+ </bottomPattern>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.UmlModelElementT.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="../UmlToRdbms/SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"
+ referredVariable="#//@nestedPackage.0/@rule.0/@domain.0/@bottomPattern/@variable.0"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.UmlModelElementT"
+ referredVariable="#//@nestedPackage.0/@rule.0/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="../UmlToRdbms/SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.UmlModelElementT.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.UmlModelElementT"
+ referredVariable="#//@nestedPackage.0/@rule.0/@bottomPattern/@realizedVariable.0"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"
+ referredVariable="#//@nestedPackage.0/@rule.0/@domain.0/@bottomPattern/@variable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.UmlModelElementT.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="../UmlToRdbms/SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"
+ referredVariable="#//@nestedPackage.0/@rule.0/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.UmlModelElementT"
+ referredVariable="#//@nestedPackage.0/@rule.0/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="../UmlToRdbms/SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.UmlModelElementT.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.UmlModelElementT"
+ referredVariable="#//@nestedPackage.0/@rule.0/@bottomPattern/@realizedVariable.0"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"
+ referredVariable="#//@nestedPackage.0/@rule.0/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.UmlModelElementT.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="../UmlToRdbms/SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"
+ referredVariable="#//@nestedPackage.0/@rule.0/@domain.0/@bottomPattern/@variable.0"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.UmlModelElementT"
+ referredVariable="#//@nestedPackage.0/@rule.0/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="../UmlToRdbms/SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.UmlModelElementT.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.UmlModelElementT"
+ referredVariable="#//@nestedPackage.0/@rule.0/@bottomPattern/@realizedVariable.0"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"
+ referredVariable="#//@nestedPackage.0/@rule.0/@domain.0/@bottomPattern/@variable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.UmlModelElementT.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="../UmlToRdbms/SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"
+ referredVariable="#//@nestedPackage.0/@rule.0/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.UmlModelElementT"
+ referredVariable="#//@nestedPackage.0/@rule.0/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="../UmlToRdbms/SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.UmlModelElementT.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.UmlModelElementT"
+ referredVariable="#//@nestedPackage.0/@rule.0/@bottomPattern/@realizedVariable.0"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"
+ referredVariable="#//@nestedPackage.0/@rule.0/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="PackageToPackage" refinement="#//@nestedPackage.0/@rule.0">
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="false" isEnforceable="false"
+ typedModel="#//@nestedPackage.0/@modelParameter.0">
+ <guardPattern/>
+ <bottomPattern>
+ <variable name="se" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="false" isEnforceable="true"
+ typedModel="#//@nestedPackage.0/@modelParameter.1">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable name="te" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable name="e2e" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.PackageT"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="ClassToClass" refinement="#//@nestedPackage.0/@rule.0">
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="false" isEnforceable="false"
+ typedModel="#//@nestedPackage.0/@modelParameter.0">
+ <guardPattern>
+ <variable name="sp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="../UmlToRdbms/SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.2/@domain.0/@bottomPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#//@nestedPackage.0/@rule.2/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <variable name="se" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="false" isEnforceable="true"
+ typedModel="#//@nestedPackage.0/@modelParameter.1">
+ <guardPattern>
+ <variable name="tp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="../UmlToRdbms/SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.2/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#//@nestedPackage.0/@rule.2/@domain.1/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <realizedVariable name="te" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"
+ referredProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.UmlModelElementT.origin">
+ <source xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.PackageT"
+ referredVariable="#//@nestedPackage.0/@rule.2/@guardPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#//@nestedPackage.0/@rule.2/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"
+ referredProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.UmlModelElementT.final">
+ <source xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.PackageT"
+ referredVariable="#//@nestedPackage.0/@rule.2/@guardPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#//@nestedPackage.0/@rule.2/@domain.1/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <variable name="p2p" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.PackageT"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.PackageT"
+ referredProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.PacakgeElementT.namespaceT">
+ <source xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT"
+ referredVariable="#//@nestedPackage.0/@rule.2/@bottomPattern/@realizedVariable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.PackageT"
+ referredVariable="#//@nestedPackage.0/@rule.2/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.UmlModelElementT.origin">
+ <value xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.2/@domain.0/@bottomPattern/@variable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT"
+ referredVariable="#//@nestedPackage.0/@rule.2/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.UmlModelElementT.final">
+ <value xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.2/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT"
+ referredVariable="#//@nestedPackage.0/@rule.2/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <realizedVariable name="e2e" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="AttributeToAttribute" refinement="#//@nestedPackage.0/@rule.0">
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="false" isEnforceable="false"
+ typedModel="#//@nestedPackage.0/@modelParameter.0">
+ <guardPattern>
+ <variable name="sc" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="../UmlToRdbms/SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.0/@bottomPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <variable name="se" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="false" isEnforceable="true"
+ typedModel="#//@nestedPackage.0/@modelParameter.1">
+ <guardPattern>
+ <variable name="tc" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="../UmlToRdbms/SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <value xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.1/@guardPattern/@variable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <realizedVariable name="te" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"
+ referredProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.UmlModelElementT.origin">
+ <source xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT"
+ referredVariable="#//@nestedPackage.0/@rule.3/@guardPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"
+ referredProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.UmlModelElementT.final">
+ <source xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT"
+ referredVariable="#//@nestedPackage.0/@rule.3/@guardPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.1/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <variable name="c2c" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.AttributeT.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT"
+ referredVariable="#//@nestedPackage.0/@rule.3/@guardPattern/@variable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.AttributeT"
+ referredVariable="#//@nestedPackage.0/@rule.3/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <realizedVariable name="e2e" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.AttributeT"/>
+ </bottomPattern>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="../UmlToRdbms/SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassifierT"
+ referredProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.AttributeT.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.AttributeT"
+ referredVariable="#//@nestedPackage.0/@rule.3/@bottomPattern/@realizedVariable.0"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.AttributeT.type">
+ <value xsi:type="pivot:PropertyCallExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="../UmlToRdbms/SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.0/@bottomPattern/@variable.0"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.AttributeT"
+ referredVariable="#//@nestedPackage.0/@rule.3/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="../UmlToRdbms/SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <value xsi:type="pivot:PropertyCallExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassifierT"
+ referredProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.AttributeT.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.AttributeT"
+ referredVariable="#//@nestedPackage.0/@rule.3/@bottomPattern/@realizedVariable.0"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.0/@bottomPattern/@variable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.AttributeT.type">
+ <value xsi:type="pivot:PropertyCallExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="../UmlToRdbms/SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.AttributeT"
+ referredVariable="#//@nestedPackage.0/@rule.3/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="ClassInheritance">
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="false" isEnforceable="false"
+ typedModel="#//@nestedPackage.0/@modelParameter.0">
+ <guardPattern>
+ <variable name="gc" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.includes..ocl.OclAny">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="#o.hierarchyFlatenning.getAllSupers..simpleuml.Class">
+ <argument xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.4/@domain.0/@bottomPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.4/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <variable name="c" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern/>
+ <bottomPattern/>
+ <local>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"
+ referredProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.UmlModelElementT.origin">
+ <source xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT"
+ referredVariable="#//@nestedPackage.0/@rule.4/@local.0/@guardPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.4/@domain.0/@bottomPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <variable name="c2c" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.ClassTHierarchy.classT">
+ <value xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT"
+ referredVariable="#//@nestedPackage.0/@rule.4/@local.0/@guardPattern/@variable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassTHierarchy"
+ referredVariable="#//@nestedPackage.0/@rule.4/@local.0/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.ClassTHierarchy.general">
+ <value xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.4/@domain.0/@guardPattern/@variable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassTHierarchy"
+ referredVariable="#//@nestedPackage.0/@rule.4/@local.0/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <realizedVariable name="ch" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassTHierarchy"/>
+ </bottomPattern>
+ </local>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="AttributeInheritance">
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="false" isEnforceable="false"
+ typedModel="#//@nestedPackage.0/@modelParameter.0">
+ <guardPattern>
+ <variable name="gc" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="../UmlToRdbms/SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.5/@domain.0/@bottomPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.5/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <variable name="sa" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" isCheckable="false" isEnforceable="true"
+ typedModel="#//@nestedPackage.0/@modelParameter.1">
+ <guardPattern>
+ <variable name="tc" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="../UmlToRdbms/SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <value xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.5/@domain.1/@guardPattern/@variable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.5/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <realizedVariable name="ta" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.ClassTHierarchy.general">
+ <source xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassTHierarchy"
+ referredVariable="#//@nestedPackage.0/@rule.5/@guardPattern/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.5/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:OppositePropertyCallExp" type="#//@nestedPackage.1/@ownedType.3"
+ referredProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.ClassT.general">
+ <source xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassTHierarchy"
+ referredVariable="#//@nestedPackage.0/@rule.5/@guardPattern/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT"
+ referredVariable="#//@nestedPackage.0/@rule.5/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"
+ referredProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.UmlModelElementT.final">
+ <source xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT"
+ referredVariable="#//@nestedPackage.0/@rule.5/@guardPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.5/@domain.1/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <variable name="c2c" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT"/>
+ <variable name="ch" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassTHierarchy"/>
+ </guardPattern>
+ <bottomPattern/>
+ </rule>
+ </nestedPackage>
+ <nestedPackage xmi:id="P.$$" name="$$" nsPrefix="orphanage" nsURI="http://www.eclipse.org/ocl/3.1.0/orphanage">
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.4"
+ elementType="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class ../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SequenceType" name="Sequence" superClass="#//@nestedPackage.1/@ownedType.5"
+ elementType="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Sequence">
+ <parameterSubstitution actual="pivot:Class ../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SequenceT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:OrderedSetType" name="OrderedSet" superClass="#//@nestedPackage.1/@ownedType.5 #//@nestedPackage.1/@ownedType.4"
+ elementType="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedSet">
+ <parameterSubstitution actual="pivot:Class ../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedSetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:BagType" name="Bag" superClass="#//@nestedPackage.1/@ownedType.6"
+ elementType="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Bag">
+ <parameterSubstitution actual="pivot:Class SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..BagT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.7"
+ elementType="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class ../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.7"
+ elementType="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="pivot:Class ../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class ../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ </nestedPackage>
+</qvtc:CoreModel>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/flattening/InheritanceFlatenning.qvtu.qvtcas b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/flattening/InheritanceFlatenning.qvtu.qvtcas
new file mode 100644
index 000000000..e0ecf786d
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/flattening/InheritanceFlatenning.qvtu.qvtcas
@@ -0,0 +1,530 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<qvtc:CoreModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:pivot="http://www.eclipse.org/ocl/3.1.0/Pivot" xmlns:qvtb="http://www.eclipse.org/qvt/0.9/QVTbase"
+ xmlns:qvtc="http://www.eclipse.org/qvt/0.9/QVTcore" xmlns:qvtcb="http://www.eclipse.org/qvt/0.9/QVTcoreBase"
+ xsi:schemaLocation="http://www.eclipse.org/ocl/3.1.0/Pivot java://org.eclipse.ocl.examples.pivot.PivotPackage http://www.eclipse.org/qvt/0.9/QVTbase java://org.eclipse.qvtd.pivot.qvtbase.QVTbasePackage http://www.eclipse.org/qvt/0.9/QVTcore java://org.eclipse.qvtd.pivot.qvtcore.QVTcorePackage http://www.eclipse.org/qvt/0.9/QVTcoreBase java://org.eclipse.qvtd.pivot.qvtcorebase.QVTcoreBasePackage"
+ name="InheritanceFlatenning.qvtu.qvtc" externalURI="platform:/resource/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/flattening/InheritanceFlatenning.qvtu.qvtc">
+ <nestedPackage xsi:type="qvtb:Transformation" xmi:id="T.hierarchyFlatenning" name="hierarchyFlatenning"
+ superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclElement">
+ <ownedComment body="/* Enforce origin to final */"/>
+ <ownedOperation xsi:type="qvtb:Function" xmi:id="o.hierarchyFlatenning.getAllSupers..simpleuml.Class"
+ isStatic="true" name="getAllSupers" type="#//@nestedPackage.1/@ownedType.0">
+ <ownedParameter xsi:type="qvtb:FunctionParameter" xmi:id="p0o.hierarchyFlatenning.getAllSupers..simpleuml.Class"
+ name="cls" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ <queryExpression xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.asSet">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.1"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Sequence.including..T">
+ <source xsi:type="pivot:IteratorExp" type="#//@nestedPackage.1/@ownedType.1"
+ referredIteration="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i.ocl.OrderedSet.collect..T">
+ <source xsi:type="pivot:PropertyCallExp" type="#//@nestedPackage.1/@ownedType.2"
+ referredProperty="../UmlToRdbms/SimpleUML.ecore.oclas#p.simpleuml.Class.general">
+ <source xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#p0o.hierarchyFlatenning.getAllSupers..simpleuml.Class"/>
+ </source>
+ <body xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="#o.hierarchyFlatenning.getAllSupers..simpleuml.Class">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@ownedOperation.0/@queryExpression/@source/@source/@iterator.0"/>
+ </body>
+ <iterator name="gen" isRequired="false" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ representedParameter="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#i0i.ocl.OrderedSet.collect..T"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#p0o.hierarchyFlatenning.getAllSupers..simpleuml.Class"/>
+ </source>
+ </queryExpression>
+ </ownedOperation>
+ <modelParameter name="origin" usedPackage="../UmlToRdbms/SimpleUML.ecore.oclas#P.simpleuml"/>
+ <modelParameter name="final" usedPackage="../UmlToRdbms/SimpleUML.ecore.oclas#P.simpleuml"/>
+ <modelParameter usedPackage="SimpleUmlToFlatUml.ecore.oclas#P.simpleumltoflatuml"/>
+ <rule xsi:type="qvtc:Mapping" name="UmlElementToUmlElement" specification="#//@nestedPackage.0/@rule.1 #//@nestedPackage.0/@rule.2 #//@nestedPackage.0/@rule.3">
+ <domain xsi:type="qvtcb:CoreDomain" name="origin" isCheckable="false" isEnforceable="false"
+ typedModel="#//@nestedPackage.0/@modelParameter.0">
+ <guardPattern/>
+ <bottomPattern>
+ <variable name="se" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="final" isCheckable="false" isEnforceable="true"
+ typedModel="#//@nestedPackage.0/@modelParameter.1">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable name="te" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"
+ referredProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.UmlModelElementT.origin">
+ <source xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.UmlModelElementT"
+ referredVariable="#//@nestedPackage.0/@rule.0/@bottomPattern/@realizedVariable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"
+ referredVariable="#//@nestedPackage.0/@rule.0/@domain.0/@bottomPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"
+ referredProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.UmlModelElementT.final">
+ <source xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.UmlModelElementT"
+ referredVariable="#//@nestedPackage.0/@rule.0/@bottomPattern/@realizedVariable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"
+ referredVariable="#//@nestedPackage.0/@rule.0/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </conditionExpression>
+ </predicate>
+ <realizedVariable name="e2e" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.UmlModelElementT"/>
+ </bottomPattern>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.UmlModelElementT.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="../UmlToRdbms/SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <source xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"
+ referredVariable="#//@nestedPackage.0/@rule.0/@domain.0/@bottomPattern/@variable.0"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.UmlModelElementT"
+ referredVariable="#//@nestedPackage.0/@rule.0/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="../UmlToRdbms/SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.name">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.UmlModelElementT.name">
+ <source xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.UmlModelElementT"
+ referredVariable="#//@nestedPackage.0/@rule.0/@bottomPattern/@realizedVariable.0"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"
+ referredVariable="#//@nestedPackage.0/@rule.0/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.UmlModelElementT.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="../UmlToRdbms/SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <source xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"
+ referredVariable="#//@nestedPackage.0/@rule.0/@domain.0/@bottomPattern/@variable.0"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.UmlModelElementT"
+ referredVariable="#//@nestedPackage.0/@rule.0/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="../UmlToRdbms/SimpleUML.ecore.oclas#p.simpleuml.UMLModelElement.kind">
+ <value xsi:type="pivot:PropertyCallExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.UmlModelElementT.kind">
+ <source xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.UmlModelElementT"
+ referredVariable="#//@nestedPackage.0/@rule.0/@bottomPattern/@realizedVariable.0"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"
+ referredVariable="#//@nestedPackage.0/@rule.0/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="PackageToPackage" refinement="#//@nestedPackage.0/@rule.0">
+ <domain xsi:type="qvtcb:CoreDomain" name="origin" isCheckable="false" isEnforceable="false"
+ typedModel="#//@nestedPackage.0/@modelParameter.0">
+ <guardPattern/>
+ <bottomPattern>
+ <variable name="se" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="final" isCheckable="false" isEnforceable="true"
+ typedModel="#//@nestedPackage.0/@modelParameter.1">
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable name="te" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern/>
+ <bottomPattern>
+ <realizedVariable name="e2e" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.PackageT"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="ClassToClass" refinement="#//@nestedPackage.0/@rule.0">
+ <domain xsi:type="qvtcb:CoreDomain" name="origin" isCheckable="false" isEnforceable="false"
+ typedModel="#//@nestedPackage.0/@modelParameter.0">
+ <guardPattern>
+ <variable name="sp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredProperty="../UmlToRdbms/SimpleUML.ecore.oclas#p.simpleuml.PackageElement.namespace">
+ <source xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.2/@domain.0/@bottomPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#//@nestedPackage.0/@rule.2/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <variable name="se" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="final" isCheckable="false" isEnforceable="true"
+ typedModel="#//@nestedPackage.0/@modelParameter.1">
+ <guardPattern>
+ <variable name="tp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Package"/>
+ </guardPattern>
+ <bottomPattern>
+ <realizedVariable name="te" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"
+ referredProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.UmlModelElementT.origin">
+ <source xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.PackageT"
+ referredVariable="#//@nestedPackage.0/@rule.2/@guardPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#//@nestedPackage.0/@rule.2/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"
+ referredProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.UmlModelElementT.final">
+ <source xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.PackageT"
+ referredVariable="#//@nestedPackage.0/@rule.2/@guardPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Package"
+ referredVariable="#//@nestedPackage.0/@rule.2/@domain.1/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <variable name="p2p" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.PackageT"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" isRequired="false" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.PackageT"
+ referredProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.PacakgeElementT.namespaceT">
+ <source xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT"
+ referredVariable="#//@nestedPackage.0/@rule.2/@bottomPattern/@realizedVariable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.PackageT"
+ referredVariable="#//@nestedPackage.0/@rule.2/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.UmlModelElementT.origin">
+ <value xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.2/@domain.0/@bottomPattern/@variable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT"
+ referredVariable="#//@nestedPackage.0/@rule.2/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.UmlModelElementT.final">
+ <value xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.2/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT"
+ referredVariable="#//@nestedPackage.0/@rule.2/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <realizedVariable name="e2e" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT"/>
+ </bottomPattern>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="AttributeToAttribute" refinement="#//@nestedPackage.0/@rule.0">
+ <domain xsi:type="qvtcb:CoreDomain" name="origin" isCheckable="false" isEnforceable="false"
+ typedModel="#//@nestedPackage.0/@modelParameter.0">
+ <guardPattern>
+ <variable name="sc" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="../UmlToRdbms/SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.0/@bottomPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <variable name="se" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="final" isCheckable="false" isEnforceable="true"
+ typedModel="#//@nestedPackage.0/@modelParameter.1">
+ <guardPattern>
+ <variable name="tc" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="../UmlToRdbms/SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <value xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.1/@guardPattern/@variable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <realizedVariable name="te" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"
+ referredProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.UmlModelElementT.origin">
+ <source xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT"
+ referredVariable="#//@nestedPackage.0/@rule.3/@guardPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"
+ referredProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.UmlModelElementT.final">
+ <source xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT"
+ referredVariable="#//@nestedPackage.0/@rule.3/@guardPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.1/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <variable name="c2c" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.AttributeT.owner">
+ <value xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT"
+ referredVariable="#//@nestedPackage.0/@rule.3/@guardPattern/@variable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.AttributeT"
+ referredVariable="#//@nestedPackage.0/@rule.3/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <realizedVariable name="e2e" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.AttributeT"/>
+ </bottomPattern>
+ <local>
+ <guardPattern/>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="../UmlToRdbms/SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </source>
+ <argument xsi:type="pivot:PropertyCallExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassifierT"
+ referredProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.AttributeT.type">
+ <source xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.AttributeT"
+ referredVariable="#//@nestedPackage.0/@rule.3/@bottomPattern/@realizedVariable.0"/>
+ </argument>
+ </conditionExpression>
+ </predicate>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.AttributeT.type">
+ <value xsi:type="pivot:PropertyCallExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Classifier"
+ referredProperty="../UmlToRdbms/SimpleUML.ecore.oclas#p.simpleuml.Attribute.type">
+ <source xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.3/@domain.0/@bottomPattern/@variable.0"/>
+ </value>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.AttributeT"
+ referredVariable="#//@nestedPackage.0/@rule.3/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ </bottomPattern>
+ </local>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="ClassInheritance">
+ <domain xsi:type="qvtcb:CoreDomain" name="origin" isCheckable="false" isEnforceable="false"
+ typedModel="#//@nestedPackage.0/@modelParameter.0">
+ <guardPattern>
+ <variable name="gc" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.Collection.includes..ocl.OclAny">
+ <source xsi:type="pivot:OperationCallExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredOperation="#o.hierarchyFlatenning.getAllSupers..simpleuml.Class">
+ <argument xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.4/@domain.0/@bottomPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.4/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <variable name="c" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern/>
+ <bottomPattern/>
+ <local>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"
+ referredProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.UmlModelElementT.origin">
+ <source xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT"
+ referredVariable="#//@nestedPackage.0/@rule.4/@local.0/@guardPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.4/@domain.0/@bottomPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <variable name="c2c" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.ClassTHierarchy.classT">
+ <value xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT"
+ referredVariable="#//@nestedPackage.0/@rule.4/@local.0/@guardPattern/@variable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassTHierarchy"
+ referredVariable="#//@nestedPackage.0/@rule.4/@local.0/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.ClassTHierarchy.general">
+ <value xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.4/@domain.0/@guardPattern/@variable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassTHierarchy"
+ referredVariable="#//@nestedPackage.0/@rule.4/@local.0/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <realizedVariable name="ch" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassTHierarchy"/>
+ </bottomPattern>
+ </local>
+ </rule>
+ <rule xsi:type="qvtc:Mapping" name="AttributeInheritance">
+ <domain xsi:type="qvtcb:CoreDomain" name="origin" isCheckable="false" isEnforceable="false"
+ typedModel="#//@nestedPackage.0/@modelParameter.0">
+ <guardPattern>
+ <variable name="gc" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="../UmlToRdbms/SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <source xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.5/@domain.0/@bottomPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.5/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <variable name="sa" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </bottomPattern>
+ </domain>
+ <domain xsi:type="qvtcb:CoreDomain" name="final" isCheckable="false" isEnforceable="true"
+ typedModel="#//@nestedPackage.0/@modelParameter.1">
+ <guardPattern>
+ <variable name="tc" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"/>
+ </guardPattern>
+ <bottomPattern>
+ <assignment xsi:type="qvtcb:PropertyAssignment" isDefault="false" targetProperty="../UmlToRdbms/SimpleUML.ecore.oclas#p.simpleuml.Attribute.owner">
+ <value xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.5/@domain.1/@guardPattern/@variable.0"/>
+ <slotExpression xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Attribute"
+ referredVariable="#//@nestedPackage.0/@rule.5/@domain.1/@bottomPattern/@realizedVariable.0"/>
+ </assignment>
+ <realizedVariable name="ta" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Attribute"/>
+ </bottomPattern>
+ </domain>
+ <guardPattern>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.ClassTHierarchy.general">
+ <source xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassTHierarchy"
+ referredVariable="#//@nestedPackage.0/@rule.5/@guardPattern/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.5/@domain.0/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:OppositePropertyCallExp" type="#//@nestedPackage.1/@ownedType.3"
+ referredProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.ClassT.general">
+ <source xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassTHierarchy"
+ referredVariable="#//@nestedPackage.0/@rule.5/@guardPattern/@variable.1"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT"
+ referredVariable="#//@nestedPackage.0/@rule.5/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="pivot:OperationCallExp" name="=" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredOperation="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#o.ocl.OclAny.%61%..ocl.OclSelf">
+ <source xsi:type="pivot:PropertyCallExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.UMLModelElement"
+ referredProperty="SimpleUmlToFlatUml.ecore.oclas#p.simpleumltoflatuml.UmlModelElementT.final">
+ <source xsi:type="pivot:VariableExp" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT"
+ referredVariable="#//@nestedPackage.0/@rule.5/@guardPattern/@variable.0"/>
+ </source>
+ <argument xsi:type="pivot:VariableExp" type="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ referredVariable="#//@nestedPackage.0/@rule.5/@domain.1/@guardPattern/@variable.0"/>
+ </conditionExpression>
+ </predicate>
+ <variable name="c2c" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT"/>
+ <variable name="ch" type="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassTHierarchy"/>
+ </guardPattern>
+ <bottomPattern/>
+ </rule>
+ </nestedPackage>
+ <nestedPackage xmi:id="P.$$" name="$$" nsPrefix="orphanage" nsURI="http://www.eclipse.org/ocl/3.1.0/orphanage">
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.4"
+ elementType="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class ../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SequenceType" name="Sequence" superClass="#//@nestedPackage.1/@ownedType.5"
+ elementType="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Sequence">
+ <parameterSubstitution actual="pivot:Class ../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SequenceT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:OrderedSetType" name="OrderedSet" superClass="#//@nestedPackage.1/@ownedType.5 #//@nestedPackage.1/@ownedType.4"
+ elementType="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedSet">
+ <parameterSubstitution actual="pivot:Class ../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedSetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:BagType" name="Bag" superClass="#//@nestedPackage.1/@ownedType.6"
+ elementType="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Bag">
+ <parameterSubstitution actual="pivot:Class SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..BagT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.7"
+ elementType="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class ../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="OrderedCollection" superClass="#//@nestedPackage.1/@ownedType.7"
+ elementType="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.OrderedCollection">
+ <parameterSubstitution actual="pivot:Class ../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..OrderedCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class SimpleUmlToFlatUml.ecore.oclas#T.simpleumltoflatuml.ClassT"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class ../UmlToRdbms/SimpleUML.ecore.oclas#T.simpleuml.Class"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ </nestedPackage>
+</qvtc:CoreModel>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/flattening/InheritanceFlatenningConfig.xmi b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/flattening/InheritanceFlatenningConfig.xmi
new file mode 100644
index 000000000..3024695f5
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/flattening/InheritanceFlatenningConfig.xmi
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="ASCII"?>
+<qvtcconfig:Configuration xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:qvtcconfig="http://www.eclipse.org/qvt/examples/0.1/QVTcConfig" inputDirection="//@transformation/@direction.0" outputDirection="//@transformation/@direction.1" mode="enforcement" middle="//@transformation/@direction.2">
+ <transformation name="hierarchyFlatenning">
+ <direction name="origin" imports="//@transformation/@import.0"/>
+ <direction name="final" imports="//@transformation/@import.0"/>
+ <direction imports="//@transformation/@import.1"/>
+ <import name="SimpleUML" metamodel="SimpleUML.ecore" package="simpleuml"/>
+ <import name="UMLtoUML" metamodel="SimpleUmlToFlatUml.ecore" package="simpleumltoflatuml"/>
+ </transformation>
+</qvtcconfig:Configuration>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/flattening/SimpleUmlToFlatUml.ecore b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/flattening/SimpleUmlToFlatUml.ecore
index e7e58f6a1..a59c20e4b 100644
--- a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/flattening/SimpleUmlToFlatUml.ecore
+++ b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/build/etl/tests/flattening/SimpleUmlToFlatUml.ecore
@@ -1,53 +1,53 @@
-<?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="simpleumltoflatuml">
- <eClassifiers xsi:type="ecore:EClass" name="AttributeT" eSuperTypes="#//UmlModelElementT">
- <eStructuralFeatures xsi:type="ecore:EReference" name="type" lowerBound="1" eType="#//ClassifierT"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="owner" lowerBound="1" eType="#//ClassT"
- eOpposite="#//ClassT/attributes"/>
- </eClassifiers>
- <eClassifiers xsi:type="ecore:EClass" name="AssociationT" eSuperTypes="#//PacakgeElementT">
- <eStructuralFeatures xsi:type="ecore:EReference" name="source" lowerBound="1"
- eType="#//ClassT" eOpposite="#//ClassT/forward"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="destination" lowerBound="1"
- eType="#//ClassT" eOpposite="#//ClassT/reverse"/>
- </eClassifiers>
- <eClassifiers xsi:type="ecore:EClass" name="ClassT" eSuperTypes="#//ClassifierT">
- <eStructuralFeatures xsi:type="ecore:EReference" name="general" upperBound="-1"
- eType="#//ClassTHierarchy"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="forward" upperBound="-1"
- eType="#//AssociationT" eOpposite="#//AssociationT/source"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="attributes" upperBound="-1"
- eType="#//AttributeT" eOpposite="#//AttributeT/owner"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="reverse" upperBound="-1"
- eType="#//AssociationT" eOpposite="#//AssociationT/destination"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="generalOpposite" upperBound="-1"
- eType="#//ClassT"/>
- </eClassifiers>
- <eClassifiers xsi:type="ecore:EClass" name="ClassTHierarchy">
- <eStructuralFeatures xsi:type="ecore:EReference" name="classT" lowerBound="1"
- eType="#//ClassT"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="general" lowerBound="1"
- eType="ecore:EClass ../UmlToRdbms/SimpleUML.ecore#//Class"/>
- </eClassifiers>
- <eClassifiers xsi:type="ecore:EClass" name="ClassifierT" abstract="true" eSuperTypes="#//PacakgeElementT">
- <eStructuralFeatures xsi:type="ecore:EReference" name="typeOpposite" upperBound="-1"
- eType="#//AttributeT"/>
- </eClassifiers>
- <eClassifiers xsi:type="ecore:EClass" name="PackageT" eSuperTypes="#//UmlModelElementT">
- <eStructuralFeatures xsi:type="ecore:EReference" name="elementsT" eType="#//PacakgeElementT"
- eOpposite="#//PacakgeElementT/namespaceT"/>
- </eClassifiers>
- <eClassifiers xsi:type="ecore:EClass" name="PacakgeElementT" abstract="true" eSuperTypes="#//UmlModelElementT">
- <eStructuralFeatures xsi:type="ecore:EReference" name="namespaceT" eType="#//PackageT"
- eOpposite="#//PackageT/elementsT"/>
- </eClassifiers>
- <eClassifiers xsi:type="ecore:EClass" name="PrimitiveDataTypeT" eSuperTypes="#//ClassifierT"/>
- <eClassifiers xsi:type="ecore:EClass" name="UmlModelElementT" abstract="true">
- <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="origin" lowerBound="1"
- eType="ecore:EClass ../UmlToRdbms/SimpleUML.ecore#//UMLModelElement"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="final" lowerBound="1" eType="ecore:EClass ../UmlToRdbms/SimpleUML.ecore#//UMLModelElement"/>
- </eClassifiers>
-</ecore:EPackage>
+<?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="simpleumltoflatuml">
+ <eClassifiers xsi:type="ecore:EClass" name="AttributeT" eSuperTypes="#//UmlModelElementT">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" lowerBound="1" eType="#//ClassifierT"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="owner" lowerBound="1" eType="#//ClassT"
+ eOpposite="#//ClassT/attributes"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AssociationT" eSuperTypes="#//PacakgeElementT">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="source" lowerBound="1"
+ eType="#//ClassT" eOpposite="#//ClassT/forward"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="destination" lowerBound="1"
+ eType="#//ClassT" eOpposite="#//ClassT/reverse"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ClassT" eSuperTypes="#//ClassifierT">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="general" upperBound="-1"
+ eType="#//ClassTHierarchy"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="forward" upperBound="-1"
+ eType="#//AssociationT" eOpposite="#//AssociationT/source"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="attributes" upperBound="-1"
+ eType="#//AttributeT" eOpposite="#//AttributeT/owner"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="reverse" upperBound="-1"
+ eType="#//AssociationT" eOpposite="#//AssociationT/destination"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="generalOpposite" upperBound="-1"
+ eType="#//ClassT"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ClassTHierarchy">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="classT" lowerBound="1"
+ eType="#//ClassT"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="general" lowerBound="1"
+ eType="ecore:EClass ../UmlToRdbms/SimpleUML.ecore#//Class"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ClassifierT" abstract="true" eSuperTypes="#//PacakgeElementT">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="typeOpposite" upperBound="-1"
+ eType="#//AttributeT"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PackageT" eSuperTypes="#//UmlModelElementT">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="elementsT" eType="#//PacakgeElementT"
+ eOpposite="#//PacakgeElementT/namespaceT"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PacakgeElementT" abstract="true" eSuperTypes="#//UmlModelElementT">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="namespaceT" eType="#//PackageT"
+ eOpposite="#//PackageT/elementsT"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PrimitiveDataTypeT" eSuperTypes="#//ClassifierT"/>
+ <eClassifiers xsi:type="ecore:EClass" name="UmlModelElementT" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="origin" lowerBound="1"
+ eType="ecore:EClass ../UmlToRdbms/SimpleUML.ecore#//UMLModelElement"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="final" lowerBound="1" eType="ecore:EClass ../UmlToRdbms/SimpleUML.ecore#//UMLModelElement"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/UmlToRdbms/UMLtoRDBMS.ecore b/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/UmlToRdbms/UMLtoRDBMS.ecore
deleted file mode 100644
index 46b056a23..000000000
--- a/tests/org.eclipse.qvtd.build.etl.tests/src/org/eclipse/qvtd/etl/tests/UmlToRdbms/UMLtoRDBMS.ecore
+++ /dev/null
@@ -1,63 +0,0 @@
-<?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="umltordbms" nsURI="http://www.eclipse.org/qvt/examples/0.1/UMLtoRDBMS"
- nsPrefix="umltordbms">
- <eClassifiers xsi:type="ecore:EClass" name="AttributeToColumn" eSuperTypes="#//FromAttribute #//ToColumn">
- <eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//PrimitiveToName"/>
- </eClassifiers>
- <eClassifiers xsi:type="ecore:EClass" name="AssociationToForeignKey" eSuperTypes="#//ToColumn">
- <eStructuralFeatures xsi:type="ecore:EReference" name="referenced" eType="#//ClassToTable"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="owner" eType="#//ClassToTable"
- eOpposite="#//ClassToTable/associationsToForeignKeys"/>
- <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="association" eType="ecore:EClass SimpleUML.ecore#//Association"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="foreignKey" eType="ecore:EClass SimpleRDBMS.ecore#//ForeignKey"/>
- </eClassifiers>
- <eClassifiers xsi:type="ecore:EClass" name="ClassToTable" eSuperTypes="#//FromAttributeOwner #//ToColumn">
- <eStructuralFeatures xsi:type="ecore:EReference" name="owner" eType="#//PackageToSchema"
- eOpposite="#//PackageToSchema/classesToTables"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="associationsToForeignKeys"
- upperBound="-1" eType="#//AssociationToForeignKey" containment="true" eOpposite="#//AssociationToForeignKey/owner"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="umlClass" eType="ecore:EClass SimpleUML.ecore#//Class"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="table" eType="ecore:EClass SimpleRDBMS.ecore#//Table"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="primaryKey" eType="ecore:EClass SimpleRDBMS.ecore#//Key"/>
- <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- </eClassifiers>
- <eClassifiers xsi:type="ecore:EClass" name="FromAttribute" abstract="true">
- <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="owner" eType="#//FromAttributeOwner"
- eOpposite="#//FromAttributeOwner/fromAttributes"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="leafs" ordered="false"
- upperBound="-1" eType="#//AttributeToColumn"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="attribute" eType="ecore:EClass SimpleUML.ecore#//Attribute"/>
- </eClassifiers>
- <eClassifiers xsi:type="ecore:EClass" name="FromAttributeOwner" abstract="true">
- <eStructuralFeatures xsi:type="ecore:EReference" name="fromAttributes" ordered="false"
- eType="#//FromAttribute" containment="true" eOpposite="#//FromAttribute/owner"/>
- </eClassifiers>
- <eClassifiers xsi:type="ecore:EClass" name="NonLeafAttribute" eSuperTypes="#//FromAttributeOwner #//FromAttribute"/>
- <eClassifiers xsi:type="ecore:EClass" name="PackageToSchema">
- <eStructuralFeatures xsi:type="ecore:EReference" name="classesToTables" ordered="false"
- upperBound="-1" eType="#//ClassToTable" containment="true" eOpposite="#//ClassToTable/owner"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="primitivesToNames" ordered="false"
- upperBound="-1" eType="#//PrimitiveToName" containment="true" eOpposite="#//PrimitiveToName/owner"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="umlPackage" lowerBound="1"
- eType="ecore:EClass SimpleUML.ecore#//Package"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="schema" lowerBound="1"
- eType="ecore:EClass SimpleRDBMS.ecore#//Schema"/>
- <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- </eClassifiers>
- <eClassifiers xsi:type="ecore:EClass" name="PrimitiveToName">
- <eStructuralFeatures xsi:type="ecore:EReference" name="owner" eType="#//PackageToSchema"
- eOpposite="#//PackageToSchema/primitivesToNames"/>
- <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- <eStructuralFeatures xsi:type="ecore:EReference" name="primitive" lowerBound="1"
- eType="ecore:EClass SimpleUML.ecore#//PrimitiveDataType"/>
- <eStructuralFeatures xsi:type="ecore:EAttribute" name="typeName" lowerBound="1"
- eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
- </eClassifiers>
- <eClassifiers xsi:type="ecore:EClass" name="ToColumn">
- <eStructuralFeatures xsi:type="ecore:EReference" name="column" eType="ecore:EClass SimpleRDBMS.ecore#//Column"/>
- </eClassifiers>
-</ecore:EPackage>
diff --git a/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/.classpath b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/.classpath
new file mode 100644
index 000000000..613118004
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry excluding="**/*.launch" kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/.gitignore b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/.gitignore
new file mode 100644
index 000000000..ae3c17260
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/.project b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/.project
new file mode 100644
index 000000000..9569f308b
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.qvtd.build.qvtrtoqvtc.tests</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/.settings/org.eclipse.core.resources.prefs b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 000000000..99f26c020
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/.settings/org.eclipse.core.runtime.prefs b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 000000000..5a0ad22d2
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/.settings/org.eclipse.jdt.core.prefs b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..c537b6306
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..f6c4572c9
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,12 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Tests
+Bundle-SymbolicName: org.eclipse.qvtd.build.qvtrtoqvtc.tests
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Require-Bundle: org.eclipse.qvtd.xtext.qvtbase.tests,
+ org.eclipse.qvtd.xtext.qvtrelation,
+ org.eclipse.qvtd.build.qvtrtoqvtc,
+ org.eclipse.qvtd.xtext.qvtcore
+Import-Package: org.eclipse.qvtd.pivot.qvtimperative.evaluation
+Export-Package: org.eclipse.qvtd.build.qvtrtoqvtc.tests
diff --git a/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/build.properties b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/build.properties
new file mode 100644
index 000000000..34d2e4d2d
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .
diff --git a/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/QvtrToQvtcTests.java b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/QvtrToQvtcTests.java
new file mode 100644
index 000000000..7541fc28e
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/QvtrToQvtcTests.java
@@ -0,0 +1,121 @@
+package org.eclipse.qvtd.build.qvtrtoqvtc.tests;
+
+import java.io.File;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.xmi.XMLResource;
+import org.eclipse.ocl.examples.domain.utilities.DomainUtil;
+import org.eclipse.ocl.examples.pivot.manager.MetaModelManager;
+import org.eclipse.ocl.examples.pivot.manager.MetaModelManagerResourceSetAdapter;
+import org.eclipse.ocl.examples.xtext.essentialocl.services.EssentialOCLLinkingService;
+import org.eclipse.qvtd.build.qvtrtoqvtc.QvtrToQvtcTransformation;
+import org.eclipse.qvtd.xtext.qvtbase.tests.LoadTestCase;
+import org.eclipse.qvtd.xtext.qvtcore.QVTcoreStandaloneSetup;
+import org.eclipse.qvtd.xtext.qvtrelation.QVTrelationStandaloneSetup;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+public class QvtrToQvtcTests extends LoadTestCase {
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.qvtd.xtext.qvtbase.tests.LoadTestCase#setUp()
+ */
+ @Before
+ public void setUp() throws Exception {
+
+ EssentialOCLLinkingService.DEBUG_RETRY = true;
+ super.setUp();
+ QVTrelationStandaloneSetup.doSetup();
+ QVTcoreStandaloneSetup.doSetup();
+ metaModelManager = new MetaModelManager();
+ MetaModelManagerResourceSetAdapter.getAdapter(DomainUtil.nonNullState(resourceSet), metaModelManager);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.qvtd.xtext.qvtbase.tests.LoadTestCase#tearDown()
+ */
+ @After
+ public void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ /*@Test
+ public void testAbstractToConcrete() throws Exception {
+ URL projectURL = this.getClass().getResource("abstracttoconcrete/AbstractToConcrete.qvtras");
+ File f = new File(projectURL.getFile());
+ URI qvtrURI = URI.createFileURI(f.toString());
+ Resource qvtrResource = metaModelManager.getASResourceSet().getResource(qvtrURI, true);
+ URI qvtcURI = qvtrURI.trimFileExtension();
+ qvtcURI = qvtcURI.appendFileExtension("qvtcas");
+ Resource qvtcResource = metaModelManager.getASResourceSet().createResource(qvtcURI, null);
+ URI qvtcTraceURI = qvtrURI.trimFileExtension();
+ qvtcTraceURI = qvtcTraceURI.appendFileExtension("ecore.oclas");
+ Resource qvtcTraceResource = metaModelManager.getASResourceSet().createResource(qvtcTraceURI, null);
+ QvtrToQvtcTransformation t = new QvtrToQvtcTransformation(metaModelManager, qvtrResource, qvtcResource, qvtcTraceResource);
+ t.prepare();
+ t.execute();
+ Map<Object, Object> options = new HashMap<Object, Object>();
+ options.put(XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE);
+ t.save(qvtcTraceResource, t.getTraceRoots(), options);
+ assertNoResourceErrors("Trace save", qvtcTraceResource);
+ t.save(qvtcResource, t.getCoreRoots(), options);
+ assertNoResourceErrors("Core save", qvtcResource);
+
+ }*/
+
+ /* @Test
+ public void testClassModelToClassModel() throws Exception {
+ URL projectURL = this.getClass().getResource("classmodeltoclassmodel/ClassModelToClassModel.qvtras");
+ File f = new File(projectURL.getFile());
+ URI qvtrURI = URI.createFileURI(f.toString());
+ Resource qvtrResource = metaModelManager.getASResourceSet().getResource(qvtrURI, true);
+ URI qvtcURI = qvtrURI.trimFileExtension();
+ qvtcURI = qvtcURI.appendFileExtension("qvtcas");
+ Resource qvtcResource = metaModelManager.getASResourceSet().createResource(qvtcURI, null);
+ URI qvtcTraceURI = qvtrURI.trimFileExtension();
+ qvtcTraceURI = qvtcTraceURI.appendFileExtension("ecore.oclas");
+ Resource qvtcTraceResource = metaModelManager.getASResourceSet().createResource(qvtcTraceURI, null);
+ QvtrToQvtcTransformation t = new QvtrToQvtcTransformation(metaModelManager, qvtrResource, qvtcResource, qvtcTraceResource);
+ t.prepare();
+ t.execute();
+ Map<Object, Object> options = new HashMap<Object, Object>();
+ options.put(XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE);
+ t.save(qvtcTraceResource, t.getTraceRoots(), options);
+ assertNoResourceErrors("Trace save", qvtcTraceResource);
+ t.save(qvtcResource, t.getCoreRoots(), options);
+ assertNoResourceErrors("Core save", qvtcResource);
+
+ }*/
+
+ @Test
+ public void testSeqToStm() throws Exception {
+ URL projectURL = this.getClass().getResource("seqtostm/SeqToStm.qvtras");
+ File f = new File(projectURL.getFile());
+ URI qvtrURI = URI.createFileURI(f.toString());
+ Resource qvtrResource = metaModelManager.getASResourceSet().getResource(qvtrURI, true);
+ URI qvtcURI = qvtrURI.trimFileExtension();
+ qvtcURI = qvtcURI.appendFileExtension("qvtcas");
+ Resource qvtcResource = metaModelManager.getASResourceSet().createResource(qvtcURI, null);
+ URI qvtcTraceURI = qvtrURI.trimFileExtension();
+ qvtcTraceURI = qvtcTraceURI.appendFileExtension("ecore.oclas");
+ Resource qvtcTraceResource = metaModelManager.getASResourceSet().createResource(qvtcTraceURI, null);
+ QvtrToQvtcTransformation t = new QvtrToQvtcTransformation(metaModelManager, qvtrResource, qvtcResource, qvtcTraceResource);
+ t.prepare();
+ t.execute();
+ Map<Object, Object> options = new HashMap<Object, Object>();
+ options.put(XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE);
+ t.save(qvtcTraceResource, t.getTraceRoots(), options);
+ assertNoResourceErrors("Trace save", qvtcTraceResource);
+ t.save(qvtcResource, t.getCoreRoots(), options);
+ assertNoResourceErrors("Core save", qvtcResource);
+
+ }
+
+}
diff --git a/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/QvtrToQvtcTests.launch b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/QvtrToQvtcTests.launch
new file mode 100644
index 000000000..1e6d444e7
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/QvtrToQvtcTests.launch
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/QvtrToQvtcTests.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.qvtd.build.qvtrtoqvtc.tests.QvtrToQvtcTests"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.qvtd.build.qvtrtoqvtc.tests"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-ea"/>
+</launchConfiguration>
diff --git a/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/RelToCore.qvtr b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/RelToCore.qvtr
new file mode 100644
index 000000000..945fed8b6
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/RelToCore.qvtr
@@ -0,0 +1,2043 @@
+--------------------------------------------------------------------------------
+-- Copyright (c) 2008 Tata Consultancy Services and others.
+-- All rights reserved. This program and the accompanying materials
+-- are made available under the terms of the Eclipse Public License v1.0
+-- which accompanies this distribution, and is available at
+-- http://www.eclipse.org/legal/epl-v10.html
+--
+-- Contributors:
+-- S.Reddy - Section 10.3 of the OMG MOF-QVT 1.0 specification
+-- E.D.Willink - contributions to drafts of the above
+-- E.D.Willink - adaptation to comply with QVT specification
+--------------------------------------------------------------------------------
+import emof : 'platform:/resource/org.eclipse.qvt/model/ecore/EMOF.ecore'::EMOF;
+import essentialocl : 'platform:/resource/org.eclipse.qvt/model/ecore/EssentialOCL.ecore'::EssentialOCL;
+import qvtbase : 'platform:/resource/org.eclipse.qvt/model/ecore/QVTBase.ecore'::QVTBase;
+import qvttemplate : 'platform:/resource/org.eclipse.qvt/model/ecore/QVTTemplate.ecore'::QVTTemplate;
+import qvtrelation : 'platform:/resource/org.eclipse.qvt/model/ecore/QVTRelation.ecore'::QVTRelation;
+import qvtcore : 'platform:/resource/org.eclipse.qvt/model/ecore/QVTCore.ecore'::QVTCore;
+
+transformation relToCore(relations:{qvtrelation,qvttemplate,qvtbase,essentialocl,emof}, core:{qvtcore,qvtbase,essentialocl,emof})
+{
+
+key qvtcore::Mapping{name, transformation};
+key qvtcore::GuardPattern{area};
+key qvtcore::BottomPattern{area};
+key essentialocl::Variable{name, type};
+key emof::Type{name};
+key emof::Class{name};
+key emof::Property{name, class};
+key qvtcore::CoreDomain{name, rule};
+key qvtbase::TypedModel{name, usedPackage, transformation};
+key emof::Package{name};
+key qvtbase::Transformation{name};
+key emof::Operation{name};
+key qvtbase::Predicate{pattern, conditionExpression};
+
+query getSharedDomainVars(r:qvtrelation::Relation):Set(essentialocl::Variable)
+{
+ r.domain->iterate(d; vars: Set(essentialocl::Variable) = Set{} |
+ if (vars->isEmpty())
+ then
+ vars->union(d.oclAsType(qvtrelation::RelationDomain).pattern.bindsTo)
+ else
+ vars->intersection(d.oclAsType(qvtrelation::RelationDomain).pattern.bindsTo)
+ endif
+ )
+}
+
+query getWhenVars(r:qvtrelation::Relation):Set(essentialocl::Variable)
+{
+ let
+ vs:Set(essentialocl::Variable) = Set{}
+ in
+ r.domain->iterate(d; vars: Set(essentialocl::Variable) = Set{} |
+ if (vars->isEmpty())
+ then
+ vars->union(d.oclAsType(qvtrelation::RelationDomain).pattern.bindsTo)
+ else
+ vars->intersection(d.oclAsType(qvtrelation::RelationDomain).pattern.bindsTo)
+ endif
+ )
+}
+
+-- Get variables occuring in an ocl expression
+-- Note: this function is not complete! It needs to be completed for other expressions
+query getVarsOfExp(e:essentialocl::OclExpression):Set(essentialocl::Variable)
+{
+ -- Walk the expr tree of the OclExpression and
+ -- collect the variables used in those expressions
+ let
+ vs:Set(essentialocl::Variable) = Set{}
+ in
+ if (e.oclIsTypeOf(essentialocl::VariableExp))
+ then
+ vs->including(e.oclAsType(essentialocl::VariableExp).referredVariable)
+ else
+ if (e.oclIsTypeOf(essentialocl::OperationCallExp))
+ then
+ let
+ oc:essentialocl::OperationCallExp = e.oclAsType(essentialocl::OperationCallExp)
+ in
+ vs->union(getVarsOfExp(oc.source))->union(
+ oc.argument->iterate(a; avs:Set(essentialocl::Variable)=Set{} | avs->union(getVarsOfExp(a)))
+ )
+ else
+ if (e.oclIsTypeOf(essentialocl::PropertyCallExp))
+ then
+ vs->union(getVarsOfExp(e.oclAsType(essentialocl::PropertyCallExp).source))
+ else
+ if (e.oclIsTypeOf(qvtrelation::RelationCallExp))
+ then
+ let
+ rc:qvtrelation::RelationCallExp = e.oclAsType(qvtrelation::RelationCallExp)
+ in
+ vs->union(rc.argument->iterate(a; avs:Set(essentialocl::Variable)=Set{} |
+ avs->union(getVarsOfExp(a)))
+ )
+ else
+ vs
+ endif
+ endif
+ endif
+ endif
+}
+
+query filterOutPredicatesThatReferToVars(rpSet:Set(qvtbase::Predicate),
+ ownrdVars:Set(essentialocl::Variable)) :Set(qvtbase::Predicate)
+{
+ rpSet->iterate(p:qvtbase::Predicate; fpSet:Set(qvtbase::Predicate) = Set{}|
+ if (getVarsOfExp(p.conditionExpression)->intersection(ownrdVars)->isEmpty())
+ then
+ fpSet->including(p)
+ else
+ fpSet
+ endif
+ )
+}
+
+--Check if the given variable is bound to any template other than the one to be skipped
+query isVarBoundToSomeOtherTemplate(rootTe:qvttemplate::ObjectTemplateExp,
+ skipTe:qvttemplate::ObjectTemplateExp, v:essentialocl::Variable):Boolean
+{
+ if (rootTe = skipTe)
+ then
+ false
+ else
+ if (rootTe.bindsTo = v)
+ then
+ true
+ else
+ rootTe.part.value->select(pe | pe.oclIsKindOf(qvttemplate::ObjectTemplateExp))->exists(pet |
+ isVarBoundToSomeOtherTemplate(pet.oclAsType(qvttemplate::ObjectTemplateExp), skipTe, v))
+ endif
+
+ endif
+}
+
+top relation RelationalTransformationToMappingTransformation
+{
+ rtn, tmn:String;
+
+ domain relations rt:RelationalTransformation {
+ name = rtn,
+ modelParameter = rtm:TypedModel {
+ name = tmn,
+ usedPackage = up:Package{}
+ }
+ };
+
+ enforce domain core mt:Transformation {
+ name = rtn,
+ modelParameter = mtm:TypedModel {
+ name = tmn,
+ usedPackage = up
+ }
+ };
+}
+
+-- Rule 1: Corresponding to each relation there exists a trace class in core.
+-- The trace class contains a property corresponding to each object node in the
+-- pattern of each domain of the relation.
+--
+top relation RelationToTraceClass
+{
+ rn, vn:String;
+
+ domain relations r:Relation {
+ name = rn,
+ domain = rd:RelationDomain {
+ pattern = rdp:DomainPattern {
+ templateExpression = t:ObjectTemplateExp {
+ bindsTo = tv:Variable {
+ name = vn,
+ type = c:Class {}
+ }
+ }
+ }
+ }
+ };
+ enforce domain core rc:Class {
+ name = 'T'+rn,
+ ownedAttribute = a:Property {
+ name = vn,
+ type = c
+ }
+ };
+ where {
+ SubTemplateToTraceClassProps(t, rc);
+ }
+}
+
+relation SubTemplateToTraceClassProps
+{
+ vn: String;
+
+ domain relations t:ObjectTemplateExp {
+ part = pt:PropertyTemplateItem {
+ value = tp:ObjectTemplateExp {
+ bindsTo = tv:Variable {
+ name = vn,
+ type = c:Class {}
+ }
+ }
+ }
+ };
+ enforce domain core rc:Class {
+ ownedAttribute = a:Property {
+ name=vn,
+ type=c
+ }
+ };
+ where {
+ SubTemplateToTraceClassProps(tp, rc);
+ }
+}
+
+-- For mapping to core we distinguish between two kinds of relations of a transformation:
+-- - top-level relations and invoked relations.
+-- Top-level relations are not invoked by any other relation in the transformation.
+-- There exists a single mapping (with perhaps contained mappings) for a top-level relation,
+-- whereas for an invoked relation there exists a separate mapping for each invoker-invoked
+-- combination.
+
+-- For mapping to core we also distinguish between check-only relations and enforceable
+-- relations. A check-only relation maps to a single core mapping, whereas an enforceable
+-- relation typically maps to a composite hierarchy of mappings in core.
+--
+
+-- Rule 2:
+-- The following are the common translation rules between
+-- a relation and a core mapping.
+-- 2.1: Variables of a RelationDomain that occur in the when clause become
+-- PatternVarables of the core domain guard.
+-- 2.2: All other Variables of a relationDomain become PatternVars
+-- of the core domain bottom pattern.
+-- 2.3: An instance variable corresponding to the trace class of the relation becomes part of
+-- the core mapping bottom pattern with its properties set(assigned or equated) to the
+-- corresponding core domain pattern variables.
+-- 2.4: A property template item in the relation domain pattern becomes an
+-- assignment (or equation in the case of check-only domains) in the core domain bottom pattern.
+-- 2.5: Predicates of the when clause become predicates of the core mapping guard.
+-- 2.6: Non relation invocation predicates of the where clause become predicates of the core
+-- mapping bottom.
+-- 2.6.1: relation invocation predicates of the where clause are ignored in this mapping, but
+-- are reflected in the mapping corresponding to the invoked relation.
+--
+
+-- All Object template expressions (at the top level of the DomainPattern)
+-- become assignments in the core domain bottom. Nested
+-- ObjectTemplateExpressions become assignments in composed mappings.
+--
+
+-- Rule 3 (extends Rule 2):
+-- 3.1: A relation is 'check-only' if it does not have any enforceable domains.
+-- 3.2: Only the trace class variable in the mapping bottom is 'realized'; there are no
+-- other 'realized' variables in any of the mapping areas.
+-- 3.3: A property template item in a relation domain becomes an equation in the core domain
+-- bottom.
+-- 3.4: A property template item in a relation domain that refers to a shared variable
+-- becomes an equation in the mapping bottom.
+-- 3.5: Shared variables referenced in property template items of relation domains become
+-- variables of the mapping bottom.
+--
+top relation TopLevelRelationToMappingForChecking
+{
+ allDomainVars: Set(essentialocl::Variable);
+ sharedDomainVars: Set(essentialocl::Variable);
+ unsharedWhereVars: Set(essentialocl::Variable);
+ whenVars: Set(essentialocl::Variable);
+ whereVars: Set(essentialocl::Variable);
+ rn: String;
+ mbVars:Set(essentialocl::Variable);
+ rt: qvtrelation::RelationalTransformation;
+ mt: qvtbase::Transformation;
+
+ domain relations r:Relation {
+ transformation = rt,
+ isTopLevel = true,
+ name = rn
+ } {
+ not r.domain->exists(d| d.isEnforceable = true)
+ };
+ enforce domain core m:Mapping {
+ transformation = mt,
+ name = rn,
+ guardPattern = mg:GuardPattern {
+ area = m
+ },
+ bottomPattern = mb:BottomPattern {
+ bindsTo = vs:Set(Variable) {
+ tcv:RealizedVariable {} ++ mbVars
+ }
+ }
+ };
+ when {
+ RelationalTransformationToMappingTransformation(rt, mt);
+ }
+ where {
+ allDomainVars = r.domain->iterate(md; acc:Set(qvtrelation::RelationDomain)=Set{} |
+ acc->including(md.oclAsType(qvtrelation::RelationDomain))).pattern.bindsTo->asSet();
+ whenVars = r.when.bindsTo;
+ whereVars = r.where.bindsTo;
+
+ sharedDomainVars = getSharedDomainVars(r);
+ unsharedWhereVars =
+ (whereVars - whenVars - allDomainVars)->union(sharedDomainVars);
+
+ RelationToTraceClassVar(r, tcv);
+ RWhenPatternToMGuardPattern(r, mg);
+ if (unsharedWhereVars->isEmpty())
+ then
+ mbVars = Set{}
+ else
+ RVarSetToMVarSet(unsharedWhereVars->asSequence(), mbVars)
+ endif;
+ -- Only non relation invocation predicates are copied from where clause to mapping
+ -- bottom.
+ RWherePatternToMPattern(r, mb);
+ RDomainToMDomainForChecking(r, m);
+ }
+}
+
+relation RWherePatternToMPattern
+{
+ domain relations r:Relation{
+ where = wherep:Pattern { }
+ };
+ enforce domain core mp:Pattern {};
+ where {
+ RSimplePatternToMPattern(wherep, mp);
+ }
+}
+
+relation UnsharedWhenVarsToMgVars
+{
+ domain relations unsharedWhenVars:Set(Variable) {_++_};
+ enforce domain core mg:GuardPattern {
+ bindsTo = mgVars:Set(Variable) {}
+ };
+ where {
+ RVarSetToMVarSet(unsharedWhenVars->asSequence(), mgVars);
+ }
+}
+
+relation DomainVarsSharedWithWhenToDgVars
+{
+ domain relations domainVarsSharedWithWhen:Set(Variable) {_++_};
+ enforce domain core dg:GuardPattern {
+ bindsTo = dgVars:Set(Variable) {}
+ };
+ where {
+ RVarSetToMVarSet(domainVarsSharedWithWhen->asSequence(), dgVars);
+ }
+}
+
+relation DomainBottomUnSharedVarsToDbVars
+{
+ domain relations domainBottomUnSharedVars:Set(Variable) {_++_};
+ enforce domain core db:BottomPattern {
+ bindsTo = dbVars:Set(Variable) {}
+ };
+ where {
+ RVarSetToMVarSet(domainBottomUnSharedVars->asSequence(), dbVars);
+ }
+}
+
+-- Rule 4 (extends Rule 2):
+-- 4.1: A separate mapping is generated for each enforced domain of the relation.
+-- 4.2: In this mapping only the enforced domain in question is marked as enforced in core;
+-- all its opposite domains are marked in core as checked at most (i.e. either left as
+-- they are or downgraded to checked if marked as enforced).
+-- 4.3: The enforced domain's pattern gets decomposed into nested mappings as follows:
+-- - root pattern object variable becomes a realized variable in the domain bottom
+-- pattern of the current mapping.
+-- - all identifying property template items become assignments in the domain bottom
+-- pattern of the current mapping.
+-- - all non identifying property template items of primitive type become assignments
+-- in the bottom pattern of a nested mapping.
+-- - each non identifying property template item of object type results in a nested
+-- mapping which will have:
+-- - a realized variable in the domain bottom, corresponding to the variable of the
+-- property value object.
+-- - a property assignment from parent object variable to this variable in the
+-- domain bottom.
+-- - and its own nested mappings as above recursively.
+-- 4.4: Predicates of the where clause that refer to variables of the enforced domain get
+-- distributed down to the nested mappings as variable bindings accumulate in the nested
+-- mappings.
+-- 4.5: all other opposite domains are mapped to their respective core domain parts as
+-- described in Rule 3, i.e. their patterns are not decomposed down into nested mappings.
+-- 4.6: A black-box operational implementation, if any, that the relation has for the
+-- enforced domain becomes a pair of enforcement operations (one for creation and one for
+-- deletion) in the domain-bottom pattern, both pointing to the same operation call
+-- expression that takes its arguments from the variables corresponding to the root objects
+-- of the domains of the relation.
+--
+top relation TopLevelRelationToMappingForEnforcement
+{
+ allDomainVars: Set(essentialocl::Variable);
+ oppositeDomainVars: Set(essentialocl::Variable);
+ sharedDomainVars: Set(essentialocl::Variable);
+ predicatesWithVarBindings: Set(qvtbase::Predicate);
+ predicatesWithoutVarBindings: Set(qvtbase::Predicate);
+ unsharedWhenVars: Set(essentialocl::Variable);
+ unsharedWhereVars: Set(essentialocl::Variable);
+ domainVarsSharedWithWhen: Set(essentialocl::Variable);
+ domainBottomUnSharedVars: Set(essentialocl::Variable);
+ rdSeq, rdtSeq, relImplSeq: Sequence(emof::Element);
+ rdSet: Set(emof::Element);
+ rdVarsSeq: Sequence(Set(emof::Element));
+ rdtSet: Set(emof::Element);
+ rdtVarsSeq: Sequence(Set(emof::Element));
+ rn, dn, tmn: String;
+ rOppositeDomains:Set(qvtrelation::RelationDomain);
+ oppDomainSeq:Sequence(emof::Element);
+ whenVars: Set(essentialocl::Variable);
+ whereVars: Set(essentialocl::Variable);
+ mbVars: Set(essentialocl::Variable);
+ rpSet: Set(qvtbase::Predicate);
+ rt: qvtrelation::RelationalTransformation;
+ mt: qvtbase::Transformation;
+
+ domain relations r:Relation {
+ transformation = rt,
+ isTopLevel = true,
+ name = rn,
+ domain = rds:Set(RelationDomain) {
+ rd:RelationDomain {
+ isEnforceable = true,
+ name = dn,
+ typedModel = dir:TypedModel {
+ name = tmn,
+ usedPackage = up:Package{},
+ transformation = rt
+ },
+ pattern = dp:DomainPattern {
+ bindsTo = domainVars:Set(Variable) {},
+ templateExpression = te:ObjectTemplateExp {
+ bindsTo = tev:Variable {}
+ }
+ }
+ } ++ rOppositeDomains
+ }
+ };
+ enforce domain core m:Mapping {
+ transformation = mt,
+ name = rn+'_'+dn,
+ guardPattern = mg:GuardPattern {
+ area = m
+ },
+ bottomPattern = mb:BottomPattern {
+ bindsTo = vs:Set(Variable) {
+ tcv:RealizedVariable {} ++ mbVars
+ }
+ },
+ domain = md:CoreDomain {
+ name = dn,
+ isEnforceable = true,
+ typedModel = mdir:TypedModel {
+ name = tmn,
+ usedPackage = up,
+ transformation = mt
+ },
+ guardPattern = dg:GuardPattern {
+ area = md
+ },
+ bottomPattern = db:BottomPattern {
+ bindsTo = mtev:Variable {}
+ }
+ } --TODO: add var only if tev not in whenVars
+ };
+ when {
+ RelationalTransformationToMappingTransformation(rt, mt);
+ }
+ where {
+ allDomainVars = r.domain->iterate(md; acc:Set(qvtrelation::RelationDomain)=Set{} |
+ acc->including(md.oclAsType(qvtrelation::RelationDomain))).pattern.bindsTo->asSet();
+ whenVars = r.when.bindsTo;
+ whereVars = r.where.bindsTo;
+
+ -- Exclude where clause relation calls.
+ -- The predicate corresponding to a where clause relation call is included not in this
+ -- mapping but in the one corresponding to the invoked relation (refer to rule 2.6.1)
+ rpSet = r.where.predicate->reject(p |
+ p.conditionExpression.oclIsTypeOf(qvtrelation::RelationCallExp));
+
+ oppositeDomainVars = rOppositeDomains->iterate(d; vars: Set(essentialocl::Variable) = Set{} |
+ vars->union(d.oclAsType(qvtrelation::RelationDomain).pattern.bindsTo));
+ sharedDomainVars = getSharedDomainVars(r);
+ domainBottomUnSharedVars = domainVars - whenVars - sharedDomainVars;
+
+ unsharedWhereVars =
+ (whereVars - whenVars - allDomainVars)->union(sharedDomainVars);
+
+ predicatesWithVarBindings =
+ filterOutPredicatesThatReferToVars(rpSet, domainBottomUnSharedVars);
+ predicatesWithoutVarBindings = rpSet - predicatesWithVarBindings;
+ unsharedWhenVars = whenVars - allDomainVars;
+ domainVarsSharedWithWhen = domainVars->intersection(whenVars);
+ rdSeq = Sequence{r, rd};
+ rdSet = Set{r, rd};
+ rdVarsSeq = Sequence{rdSet, oppositeDomainVars};
+ rdtSet = Set{r, rd, te};
+ rdtVarsSeq = Sequence{rdtSet, predicatesWithoutVarBindings, domainBottomUnSharedVars};
+ oppDomainSeq = Sequence{r, rd};
+ relImplSeq = Sequence{r, rd};
+
+ RelationDomainToTraceClassVar(rdSeq, tcv);
+ RWhenPatternToMGuardPattern(r, mg);
+ DomainVarsSharedWithWhenToDgVars(domainVarsSharedWithWhen, dg);
+ RVarToMRealizedVar(tev, mtev);
+ if (unsharedWhereVars->isEmpty())
+ then
+ mbVars = Set{}
+ else
+ RVarSetToMVarSet(unsharedWhereVars->asSequence(), mbVars)
+ endif;
+ RPredicateSetToMBPredicateSet(predicatesWithVarBindings->asSequence(), mb);
+ RDomainToMDBottomForEnforcement(rdtVarsSeq, db);
+ ROppositeDomainVarsToTraceClassProps(rdVarsSeq, mb);
+ TROppositeDomainsToMappingForEnforcement(oppDomainSeq, m);
+ RRelImplToMBottomEnforcementOperation(relImplSeq, mb);
+ }
+}
+
+-- Rule 5 (extends Rule 3):
+-- 5.1: an invoked relation maps to as many core mappings as the relations that invoke it.
+-- i.e. there exists a separate core mapping for each invoker-invoked pair.
+-- 5.2: The guard pattern of the mapping will have a variable corresponding to the trace
+-- class of the invoker relation, with root object variables of all the patterns of all the
+-- domains of the invoked relation being equated with corresponding properties of this
+-- trace class .
+-- 5.3: The root object variable of a relation domain's pattern becomes a pattern variable
+-- in the core domain guard (this is in addition to the variables that occur in the when clause
+-- as per rule 2.1).
+--
+top relation InvokedRelationToMappingForChecking
+{
+ allDomainVars: Set(essentialocl::Variable);
+ sharedDomainVars: Set(essentialocl::Variable);
+ unsharedWhereVars: Set(essentialocl::Variable);
+ seqForInvoker: Sequence(emof::Element);
+ rn, irn: String;
+ mbVars:Set(essentialocl::Variable);
+ rt: qvtrelation::RelationalTransformation;
+ mt: qvtbase::Transformation;
+ whenVars: Set(essentialocl::Variable);
+ whereVars: Set(essentialocl::Variable);
+
+ domain relations r:Relation {
+ transformation = rt,
+ isTopLevel = false,
+ name = rn,
+ relationCallExp = ri:RelationCallExp {
+ predicate = p:Predicate {
+ pattern = pt:Pattern {
+ whereOwner = ir:Relation {name = irn}
+ }
+ }
+ }
+ } {
+ not r.domain->exists(d| d.isEnforceable = true)
+ };
+ enforce domain core m:Mapping {
+ transformation = mt,
+ name = rn+'_'+irn,
+ guardPattern = mg:GuardPattern {
+ area = m
+ },
+ bottomPattern = mb:BottomPattern {
+ bindsTo = vs:Set(Variable) {
+ tcv:RealizedVariable {} ++ mbVars
+ }
+ }
+ };
+ when {
+ RelationalTransformationToMappingTransformation(rt, mt);
+ }
+ where {
+ allDomainVars = r.domain->iterate(md; acc:Set(qvtrelation::RelationDomain)=Set{} |
+ acc->including(md.oclAsType(qvtrelation::RelationDomain))).pattern.bindsTo->asSet();
+ whenVars = r.when.bindsTo;
+ whereVars = r.where.bindsTo;
+ sharedDomainVars = getSharedDomainVars(r);
+ unsharedWhereVars =
+ (whereVars - whenVars - allDomainVars)->union(sharedDomainVars);
+ seqForInvoker = Sequence{ ir, ri, r};
+
+ RelationToTraceClassVar(r, tcv);
+ RWhenPatternToMGuardPattern(r, mg);
+ RInvokerToMGuard(seqForInvoker, mg);
+ if (unsharedWhereVars->isEmpty())
+ then
+ mbVars = Set{}
+ else
+ RVarSetToMVarSet(unsharedWhereVars->asSequence(), mbVars)
+ endif;
+ RWherePatternToMPattern(r, mb);
+ RDomainToMDomainForChecking(r, m);
+ }
+}
+
+-- Rule 6 (extends Rule 4):
+-- 6.1: an invoked relation maps to as many core mappings as the relations that invoke it.
+-- i.e. there exists a separate core mapping for each invoker-invoked pair.
+-- 6.2: The guard pattern of the mapping will have a variable corresponding to the trace
+-- class of the invoker relation, with root object variables of all the patterns of all the
+-- domains of the invoked relation being equated with corresponding properties of this
+-- trace class .
+-- 6.3: The root object variable of a relation domain's pattern becomes a pattern variable
+-- in the core domain guard (this is in addition to the variables that occur in the when clause
+-- as per rule 2.1).
+--
+top relation InvokedRelationToMappingForEnforcement
+{
+ allDomainVars: Set(essentialocl::Variable);
+ oppositeDomainVars: Set(essentialocl::Variable);
+ sharedDomainVars: Set(essentialocl::Variable);
+ predicatesWithVarBindings: Set(qvtbase::Predicate);
+ predicatesWithoutVarBindings: Set(qvtbase::Predicate);
+ unsharedWhenVars: Set(essentialocl::Variable);
+ unsharedWhereVars: Set(essentialocl::Variable);
+ domainTopVars: Set(essentialocl::Variable);
+ domainBottomUnSharedVars: Set(essentialocl::Variable);
+ rdSeq, relImplSeq: Sequence(emof::Element);
+ rdSet: Set(emof::Element);
+ rdVarsSeq: Sequence(Set(emof::Element));
+ rdtSet: Set(emof::Element);
+ rdtVarsSeq: Sequence(Set(emof::Element));
+ seqForInvoker: Sequence(emof::Element);
+ rn, irn, dn, tmn: String;
+ rOppositeDomains:Set(qvtrelation::RelationDomain);
+ oppDomainSeq:Sequence(emof::Element);
+ whenVars: Set(essentialocl::Variable);
+ whereVars: Set(essentialocl::Variable);
+ mbVars: Set(essentialocl::Variable);
+ rpSet: Set(qvtbase::Predicate);
+ rt: qvtrelation::RelationalTransformation;
+ mt: qvtbase::Transformation;
+
+ domain relations r:Relation {
+ transformation = rt,
+ isTopLevel = false,
+ name = rn,
+ relationCallExp = ri:RelationCallExp {
+ predicate = p:Predicate {
+ pattern = pt:Pattern {
+ whereOwner = ir:Relation {name = irn}
+ }
+ }
+ },
+ domain = rds:Set(RelationDomain) {
+ rd:RelationDomain {
+ isEnforceable = true,
+ name = dn,
+ typedModel = dir:TypedModel {
+ name = tmn,
+ usedPackage = up:Package{},
+ transformation = rt
+ },
+ pattern = dp:DomainPattern {
+ bindsTo = domainVars:Set(Variable) {},
+ templateExpression = te:ObjectTemplateExp {
+ bindsTo = tev:Variable {}
+ }
+ }
+ } ++ rOppositeDomains
+ }
+ };
+ enforce domain core m:Mapping {
+ transformation = mt,
+ name = rn+'_'+irn+'_'+dn,
+ guardPattern = mg:GuardPattern {
+ area = m
+ },
+ bottomPattern = mb:BottomPattern {
+ bindsTo = vs:Set(Variable) {
+ tcv:RealizedVariable {} ++ mbVars
+ }
+ },
+ domain = md:CoreDomain {
+ name = dn,
+ isEnforceable = true,
+ typedModel = mdir:TypedModel {
+ name = tmn,
+ usedPackage = up,
+ transformation = mt
+ },
+ guardPattern = dg:GuardPattern {
+ bindsTo = dgVars:Set(Variable) {}
+ },
+ bottomPattern = db:BottomPattern {
+ area = md
+ }
+ }
+ };
+ when {
+ RelationalTransformationToMappingTransformation(rt, mt);
+ }
+ where {
+ allDomainVars = r.domain->iterate(md; acc:Set(qvtrelation::RelationDomain)=Set{} |
+ acc->including(md.oclAsType(qvtrelation::RelationDomain))).pattern.bindsTo->asSet();
+ whenVars = r.when.bindsTo;
+ whereVars = r.where.bindsTo;
+
+ -- Exclude where clause relation calls.
+ -- The predicate corresponding to a where clause relation call is included not in this
+ -- mapping but in the one corresponding to the invoked relation (refer to rule 2.6.1)
+ rpSet = r.where.predicate->reject(p |
+ p.conditionExpression.oclIsTypeOf(qvtrelation::RelationCallExp));
+
+ oppositeDomainVars = rOppositeDomains->iterate(d; vars: Set(essentialocl::Variable) = Set{} |
+ vars->union(d.pattern.bindsTo));
+ sharedDomainVars = getSharedDomainVars(r);
+ domainBottomUnSharedVars =
+ (domainVars - whenVars - sharedDomainVars)->excluding(tev);
+ unsharedWhereVars =
+ (whereVars - whenVars - allDomainVars)->union(sharedDomainVars);
+ predicatesWithVarBindings =
+ filterOutPredicatesThatReferToVars(rpSet, domainBottomUnSharedVars);
+ predicatesWithoutVarBindings = rpSet - predicatesWithVarBindings;
+ unsharedWhenVars = whenVars - allDomainVars;
+ domainTopVars = domainVars->intersection(whenVars)->including(tev);
+ rdSeq = Sequence{r, rd};
+ rdSet = Set{r, rd};
+ rdVarsSeq = Sequence{rdSet, oppositeDomainVars};
+ rdtSet = Set{r, rd, te};
+ rdtVarsSeq = Sequence{rdtSet, predicatesWithoutVarBindings, domainBottomUnSharedVars};
+ oppDomainSeq = Sequence{r, ir, rd};
+ seqForInvoker = Sequence{ir, ri, r};
+ relImplSeq = Sequence{r, rd};
+
+ RelationDomainToTraceClassVar(rdSeq, tcv);
+ if (unsharedWhereVars->isEmpty())
+ then
+ mbVars = Set{}
+ else
+ RVarSetToMVarSet(unsharedWhereVars->asSequence(), mbVars)
+ endif;
+ RPredicateSetToMBPredicateSet(predicatesWithVarBindings->asSequence(), mb);
+ RWhenPatternToMGuardPattern(r, mg);
+ RInvokerToMGuard(seqForInvoker, mg);
+ RVarSetToMVarSet(domainTopVars->asSequence(), dgVars);
+ RDomainToMDBottomForEnforcement(rdtVarsSeq, db);
+ ROppositeDomainVarsToTraceClassProps(rdVarsSeq, mb);
+ IROppositeDomainsToMappingForEnforcement(oppDomainSeq, m);
+ RRelImplToMBottomEnforcementOperation(relImplSeq, mb);
+ }
+}
+
+relation RDomainToMDomainForChecking
+{
+ sharedDomainVars: Set(essentialocl::Variable);
+ domainVarsSharedWithWhen: Set(essentialocl::Variable);
+ domainBottomUnSharedVars: Set(essentialocl::Variable);
+ seqForDomainPtrn: Sequence(emof::Element);
+ whenVars: Set(essentialocl::Variable);
+ dn, tmn: String;
+ rt: qvtrelation::RelationalTransformation;
+ mt: qvtbase::Transformation;
+
+ domain relations r:Relation {
+ domain = rd:RelationDomain {
+ name = dn,
+ isCheckable = true,
+ typedModel = dir:TypedModel {
+ name = tmn,
+ usedPackage = up:Package{},
+ transformation = rt
+ },
+ pattern = dp:DomainPattern {
+ bindsTo = domainVars:Set(Variable){},
+ templateExpression = te:ObjectTemplateExp {}
+ }
+ }
+ };
+ enforce domain core m:Mapping {
+ bottomPattern = mb:BottomPattern {
+ area = m
+ },
+ domain = md:CoreDomain {
+ name = dn,
+ isCheckable = true,
+ typedModel = mdir:TypedModel {
+ name = tmn,
+ usedPackage = up,
+ transformation = mt
+ },
+ guardPattern = dg:GuardPattern {
+ area = md
+ },
+ bottomPattern = db:BottomPattern {
+ area = md
+ }
+ }
+ };
+ when {
+ RelationalTransformationToMappingTransformation(rt, mt);
+ }
+ where {
+ whenVars = r.when.bindsTo;
+ sharedDomainVars = getSharedDomainVars(r);
+ domainVarsSharedWithWhen = domainVars->intersection(whenVars);
+ domainBottomUnSharedVars = domainVars - whenVars - sharedDomainVars;
+ seqForDomainPtrn = Sequence{r, te};
+
+ DomainVarsSharedWithWhenToDgVars(domainVarsSharedWithWhen, dg);
+ DomainBottomUnSharedVarsToDbVars(domainBottomUnSharedVars, db);
+ RDomainPatternToMDBottomPattern(seqForDomainPtrn, db);
+ RDomainVarsToTraceClassProps(rd, mb);
+ }
+}
+
+-- opposite domains of a top-level relation's enforced domain are mapped as per rules
+-- 4.2 and 4.5
+-- In addition, as per rule 6.3 the root object variable of a relation domain's pattern
+-- becomes a pattern variable in the core domain guard (this is in addition to the variables
+-- that occur in the when clause as per rule 2.1).
+--
+relation IROppositeDomainsToMappingForEnforcement
+{
+ sharedDomainVars:Set(essentialocl::Variable);
+ domainTopVars: Set(essentialocl::Variable);
+ domainBottomUnSharedVars: Set(essentialocl::Variable);
+ domainBottomSharedVars: Set(essentialocl::Variable);
+ seqForDomainPtrn: Sequence(emof::Element);
+ dn, tmn: String;
+ c: Boolean;
+ mbVars:Set(essentialocl::Variable);
+ whenVars:Set(essentialocl::Variable);
+ rt: qvtrelation::RelationalTransformation;
+ mt: qvtbase::Transformation;
+ up: emof::Package;
+
+ domain relations oppDomainSeq:Sequence(Element) {
+ r:Relation {
+ domain = rds:Set(RelationDomain) {
+ ord:RelationDomain { -- opposite domain
+ name = dn,
+ typedModel = dir:TypedModel {
+ name = tmn,
+ usedPackage = up,
+ transformation = rt
+ },
+ isCheckable = c,
+ pattern = dp:DomainPattern {
+ bindsTo = domainVars:Set(Variable) {},
+ templateExpression = te:ObjectTemplateExp {
+ bindsTo = tev:Variable {}
+ }
+ }
+ } ++ _
+ }
+ },
+ ir:Relation{},
+ rd:RelationDomain{}
+ ++ _
+ } {
+ ord <> rd
+ };
+ enforce domain core m:Mapping {
+ domain = cd:CoreDomain {
+ name = dn,
+ typedModel = mdir:TypedModel {
+ name = tmn,
+ usedPackage = up,
+ transformation = mt
+ },
+ isCheckable = c,
+ isEnforceable = false,
+ guardPattern = dg:GuardPattern {
+ bindsTo = dgVars:Set(Variable) {}
+ },
+ bottomPattern = db:BottomPattern {
+ bindsTo = dbVars:Set(Variable) {}
+ }
+ },
+ bottomPattern = mb:BottomPattern {
+ area = m
+ }
+ };
+ when {
+ RelationalTransformationToMappingTransformation(rt, mt);
+ }
+ where {
+ whenVars = r.when.bindsTo;
+ domainTopVars = domainVars->intersection(whenVars)->including(tev);
+ sharedDomainVars = getSharedDomainVars(r);
+ domainBottomUnSharedVars = (domainVars - whenVars - sharedDomainVars)->excluding(tev);
+ domainBottomSharedVars =
+ (domainVars - whenVars)->intersection(sharedDomainVars)->excluding(tev);
+ seqForDomainPtrn = Sequence{r, te};
+
+ RVarSetToMVarSet(domainTopVars->asSequence(), dgVars);
+ RVarSetToMVarSet(domainBottomUnSharedVars->asSequence(), dbVars);
+ RVarSetToMBVarSet(domainBottomSharedVars->asSequence(), mb);
+ RDomainPatternToMDBottomPattern(seqForDomainPtrn, db);
+ }
+}
+
+-- opposite domains of an invoked relation's enforced domain are mapped as per rules
+-- 4.2 and 4.5
+--
+relation TROppositeDomainsToMappingForEnforcement
+{
+ sharedDomainVars:Set(essentialocl::Variable);
+ domainTopVars: Set(essentialocl::Variable);
+ domainBottomUnSharedVars: Set(essentialocl::Variable);
+ domainBottomSharedVars: Set(essentialocl::Variable);
+ seqForDomainPtrn: Sequence(emof::Element);
+ dn, tmn: String;
+ c: Boolean;
+ mbVars:Set(essentialocl::Variable);
+ whenVars:Set(essentialocl::Variable);
+ rt: qvtrelation::RelationalTransformation;
+ mt: qvtbase::Transformation;
+ up: emof::Package;
+
+ domain relations oppDomainSeq:Sequence(Element) {
+ r:Relation {
+ domain = rds:Set(RelationDomain) {
+ ord:RelationDomain {
+ name = dn,
+ typedModel = dir:TypedModel {
+ name = tmn,
+ usedPackage = up,
+ transformation = rt
+ },
+ isCheckable = c,
+ pattern = dp:DomainPattern {
+ bindsTo = domainVars:Set(Variable) {},
+ templateExpression = te:ObjectTemplateExp {}
+ }
+ } ++ _
+ }
+ },
+ rd:RelationDomain{}
+ ++ _
+ } {
+ ord <> rd
+ };
+ enforce domain core m:Mapping {
+ domain = cd:CoreDomain {
+ name = dn,
+ typedModel = mdir:TypedModel {
+ name = tmn,
+ usedPackage = up,
+ transformation = mt
+ },
+ isCheckable = c,
+ isEnforceable = false,
+ guardPattern = dg:GuardPattern {
+ bindsTo = dgVars:Set(Variable) {},
+ area = cd
+ },
+ bottomPattern = db:BottomPattern {
+ bindsTo = dbVars:Set(Variable) {}
+ }
+ },
+ bottomPattern = mb:BottomPattern {
+ area = m
+ }
+ };
+ where {
+ whenVars = r.when.bindsTo;
+ domainTopVars = domainVars->intersection(whenVars);
+ sharedDomainVars = getSharedDomainVars(r);
+ domainBottomUnSharedVars = domainVars - whenVars - sharedDomainVars;
+ domainBottomSharedVars =
+ (domainVars - whenVars)->intersection(sharedDomainVars);
+ seqForDomainPtrn = Sequence{r, te};
+
+ RelationalTransformationToMappingTransformation(rt, mt);
+ RVarSetToMVarSet(domainTopVars->asSequence(), dgVars);
+ RVarSetToMVarSet(domainBottomUnSharedVars->asSequence(), dbVars);
+ RVarSetToMBVarSet(domainBottomSharedVars->asSequence(), mb);
+ RDomainPatternToMDBottomPattern(seqForDomainPtrn, db);
+ }
+}
+
+relation RWhenPatternToMGuardPattern
+{
+ allDomainVars: Set(essentialocl::Variable);
+ unsharedWhenVars: Set(essentialocl::Variable);
+
+ domain relations r:Relation{
+ when = whenp:Pattern {
+ bindsTo = whenVars:Set(Variable) {}
+ }
+ };
+ enforce domain core mg:GuardPattern {};
+ where {
+ allDomainVars = r.domain->iterate(md; acc:Set(qvtrelation::RelationDomain)=Set{} |
+ acc->including(md.oclAsType(qvtrelation::RelationDomain))).pattern.bindsTo->asSet();
+ unsharedWhenVars = whenVars - allDomainVars;
+
+ RWhenRelCallToMGuard(whenp, mg);
+ RSimplePatternToMPattern(whenp, mg);
+ UnsharedWhenVarsToMgVars(unsharedWhenVars, mg);
+ }
+}
+
+relation RVarSetToMVarSet
+{
+ rvRest: Sequence(essentialocl::Variable);
+ mvRest: Set(essentialocl::Variable);
+
+ domain relations rvSeq:Sequence(Variable) {rv:Variable {}++rvRest};
+ enforce domain core mvSet:Set(Variable) {mv:Variable {}++mvRest};
+ where {
+ RVarToMVar(rv, mv);
+ if (rvRest->isEmpty())
+ then
+ mvRest = Set{}
+ else
+ RVarSetToMVarSet(rvRest, mvRest)
+ endif;
+ }
+}
+
+relation RVarSetToMBVarSet
+{
+ rvRest: Sequence(essentialocl::Variable);
+ mvRest: Set(essentialocl::Variable);
+
+ domain relations rvSeq:Sequence(Variable) {rv:Variable {}++rvRest};
+ enforce domain core mb:BottomPattern {
+ bindsTo = mv:Variable {}
+ };
+ where {
+ RVarToMVar(rv, mv);
+ RVarSetToMBVarSet(rvRest, mb);
+ }
+}
+
+relation RVarSetToDGVarSet
+{
+ rvRest: Sequence(essentialocl::Variable);
+ mvRest: Set(essentialocl::Variable);
+
+ domain relations rvSeq:Sequence(Variable) {rv:Variable {}++rvRest};
+ enforce domain core dg:GuardPattern {
+ bindsTo = mv:Variable {}
+ };
+ where {
+ RVarToMVar(rv, mv);
+ RVarSetToDGVarSet(rvRest, dg);
+ }
+}
+
+relation RVarToMVar
+{
+ n: String;
+
+ domain relations rv:Variable {name=n, type=t:Type {}};
+ enforce domain core mv:Variable {name=n, type=t};
+}
+
+relation RVarToMRealizedVar
+{
+ n: String;
+
+ domain relations rv:Variable {name=n, type=t:Type {}};
+ enforce domain core mv:RealizedVariable {name=n, type=t};
+}
+
+relation RSimplePatternToMPattern
+{
+ domain relations rp:Pattern {
+ predicate = pd:Predicate {
+ conditionExpression = re:OclExpression {}
+ }
+ }
+ {
+ not re.oclIsTypeOf(RelationCallExp)
+ };
+ enforce domain core mp:Pattern {
+ predicate = mpd:Predicate{
+ conditionExpression = me:OclExpression {}
+ }
+ };
+ where {
+ RExpToMExp(re, me);
+ }
+}
+
+-- Relation invocation in when clause maps to a trace class pattern in mapping guard.
+-- Relation call argument position corresponds to the domain position in the invoked relation.
+-- Domain's root pattern object var gives us the corresponding trace class prop.
+--
+relation RWhenRelCallToMGuard
+{
+ domain relations rp:Pattern {
+ predicate = pd:Predicate {
+ conditionExpression = e:RelationCallExp {
+ referredRelation = r:Relation {
+ domain = dseq:Sequence(RelationDomain) {}
+ },
+ argument = aseq:Sequence(VariableExp) {}
+ }
+ }
+ };
+ enforce domain core mp:GuardPattern {};
+
+ where {
+ aseq->forAll( a | RWhenRelCallArgToMGuardPredicate( Sequence{ r, a, dseq->at(aseq->indexOf(a)) }, mp) );
+ }
+}
+
+relation RWhenRelCallArgToMGuardPredicate
+{
+ tc: emof::Class;
+ dvn: String;
+ mv:essentialocl::Variable;
+
+ domain relations daSeq:Sequence(Element) {
+ r:Relation{},
+ ve:VariableExp {
+ referredVariable = v:Variable {}
+ },
+ d:RelationDomain {
+ rootVariable = dv:Variable {name = dvn}
+ }
+ ++ _
+ };
+ enforce domain core mp:GuardPattern {
+ bindsTo = vd:Variable {
+ name = tc.name+'_v',
+ type = tc
+ },
+ predicate = mpd:Predicate {
+ conditionExpression = ee:OperationCallExp { -- vd.dvn = mv
+ source = pe:PropertyCallExp {
+ source = pve:VariableExp{referredVariable = vd},
+ referredProperty = pep:Property{name = dvn, class = vd.type.oclAsType(emof::Class)}
+ },
+ referredOperation = eo:Operation{name = '='},
+ argument = ave:VariableExp{referredVariable = mv}
+ }
+ }
+ };
+ when {
+ RelationToTraceClass(r, tc);
+ }
+ where {
+ RVarToMVar(v, mv);
+ }
+}
+
+-- invocation argument position corresponds to the domain position in invoked relation.
+-- Invocation argument variable name gives the invoker trace class prop name;
+-- Domain's root pattern object var gives us core domain guard var
+--
+relation RInvokerToMGuard
+{
+ domain relations seqForInvoker:Sequence(Element) {
+ ir:Relation {}, -- invoking relation
+ ri:RelationCallExp {
+ argument = aseq:Sequence(VariableExp) {}
+ },
+ r:Relation { -- invoked relation
+ domain = dseq:Sequence(RelationDomain) {}
+ }
+ ++ _
+ };
+ enforce domain core mg:GuardPattern {};
+ where {
+ aseq->forAll( a | RInvokerToMGuardPredicate( Sequence{ ir, a, dseq->at(aseq->indexOf(a)) }, mg) );
+ }
+}
+
+relation RInvokerToMGuardPredicate
+{
+ vn: String;
+ tc: emof::Class;
+ mdv: essentialocl::Variable;
+
+ domain relations seqForInvoker:Sequence(Element) {
+ ir:Relation {}, -- invoking relation
+ ve:VariableExp {referredVariable = v:Variable {name=vn}},
+ d:RelationDomain { rootVariable = dv:Variable {} }
+ ++ _
+ };
+ enforce domain core mg:GuardPattern {
+ bindsTo = vd:Variable {
+ name = tc.name+'_v',
+ type = tc
+ },
+ predicate = pd:Predicate {
+ conditionExpression = ee:OperationCallExp { -- vd.vn = mdv
+ source = pe:PropertyCallExp {
+ source = mve:VariableExp{referredVariable = vd},
+ referredProperty = pep:Property{name = vn, class = vd.type.oclAsType(emof::Class)}
+ },
+ referredOperation = eo:Operation{name = '='},
+ argument = ave:VariableExp{referredVariable = mdv}
+ }
+ }
+ };
+ when {
+ RelationToTraceClass(ir, tc);
+ }
+ where {
+ RVarToMVar(dv, mdv);
+ }
+}
+
+relation RDomainPatternToMDBottomPattern
+{
+ domain relations seqForDomainPtrn:Sequence(Element) {};
+ enforce domain core db:BottomPattern {
+ area = cd:CoreDomain{
+ rule = m:Mapping {
+ bottomPattern = mb:BottomPattern{area = m}
+ }
+ }
+ }; -- domain bottom
+ where {
+ RDomainPatternToMDBottomPatternComposite(seqForDomainPtrn, db);
+ RDomainPatternToMDBottomPatternSimpleNonVarExpr(seqForDomainPtrn, db);
+ RDomainPatternToMDBottomPatternSimpleUnSharedVarExpr(seqForDomainPtrn, db);
+ RDomainPatternToMDBottomPatternSimpleSharedVarExpr(seqForDomainPtrn, mb);
+ }
+}
+
+relation RDomainToMDBottomForEnforcement
+{
+ remainingUnBoundDomainVars: Set(essentialocl::Variable);
+ predicatesWithVarBindings:Set(qvtbase::Predicate);
+ remainingPredicatesWithoutVarBindings:Set(qvtbase::Predicate);
+ rdSeq, rtSeq, rtdSeq: Sequence(emof::Element);
+ rdtVarsSeqRest: Sequence(Set(emof::Element));
+ predicatesWithoutVarBindings:Set(qvtbase::Predicate);
+ unboundDomainVars:Set(essentialocl::Variable);
+ tcv, mv: essentialocl::Variable;
+
+ domain relations rdtVarsSeq:Sequence(Set(Element)) {
+ rdtSet:Set(Element) {
+ r:Relation{},
+ rd:RelationDomain{},
+ te:ObjectTemplateExp {bindsTo = v:Variable {}}
+ ++ _
+ }
+ ++ _
+ };
+ enforce domain core db:BottomPattern { -- domain bottom
+ area = cd:CoreDomain {
+ rule = m:Mapping {
+ bottomPattern = mb:BottomPattern {
+ area = m
+ }
+ }
+ }
+ };
+ where {
+ rdtVarsSeq->at(2) = predicatesWithoutVarBindings;
+ rdtVarsSeq->at(3) = unboundDomainVars;
+
+ remainingUnBoundDomainVars = unboundDomainVars - Set{v};
+ predicatesWithVarBindings = filterOutPredicatesThatReferToVars(
+ predicatesWithoutVarBindings, remainingUnBoundDomainVars);
+
+ remainingPredicatesWithoutVarBindings =
+ predicatesWithoutVarBindings - predicatesWithVarBindings;
+ rtSeq = Sequence{r, te};
+ rtdSeq = Sequence{r, te, rd};
+ rdtVarsSeqRest = Sequence{rdtSet, remainingPredicatesWithoutVarBindings, remainingUnBoundDomainVars};
+
+ RDomainToMDBottomForEnforcementOfIdentityProp(rtSeq, db);
+ RDomainVarToMDBottomAssignmnetForEnforcement(rdtVarsSeq, mb);
+ --RDomainToMDBottomForEnforcementOfIdentityPropObject(rdtSeq, mb);
+ RDomainToMDBottomForEnforcementOfNonIdentityPropPrimitive(rtdSeq, m);
+ RDomainToMDBottomForEnforcementOfNonIdentityPropObject(rdtVarsSeqRest, m);
+ RDomainToMBottomPredicateForEnforcement(rdtVarsSeq, mb);
+ }
+}
+
+relation RDomainVarToMDBottomAssignmnetForEnforcement
+{
+ rdSeq : Sequence(emof::Element);
+ tcv, mv: essentialocl::Variable;
+
+ domain relations rdtVarsSeq:Sequence(Set(Element)) {
+ rdtSet:Set(Element) {
+ r:Relation{},
+ rd:RelationDomain{},
+ te:ObjectTemplateExp {bindsTo = v:Variable {}}
+ ++ _
+ }
+ ++ _
+ };
+ enforce domain core mb:BottomPattern { -- domain bottom
+ assignment = a:PropertyAssignment {
+ slotExpression = ve1:VariableExp{referredVariable = tcv},
+ targetProperty = tp:Property{name = v.name, class = tcv.type.oclAsType(emof::Class)},
+ value = ve2:VariableExp{referredVariable = mv}
+ }
+ };
+ where {
+ rdSeq = Sequence{r, rd};
+ RelationDomainToTraceClassVar(rdSeq, tcv);
+ RVarToMVar(v, mv);
+ }
+}
+
+relation RDomainToMBottomPredicateForEnforcement
+{
+ remainingUnBoundDomainVars: Set(essentialocl::Variable);
+ predicatesWithVarBindings:Set(qvtbase::Predicate);
+ rdSeq: Sequence(emof::Element);
+ predicatesWithoutVarBindings:Set(qvtbase::Predicate);
+ unboundDomainVars:Set(essentialocl::Variable);
+ tcv, mv: essentialocl::Variable;
+
+ domain relations rdtVarsSeq:Sequence(Set(Element)) {
+ rdtSet:Set(Element) {
+ r:Relation{},
+ rd:RelationDomain{},
+ te:ObjectTemplateExp {bindsTo = v:Variable {}}
+ ++ _
+ }
+ ++ _
+ };
+ enforce domain core mb:BottomPattern {
+ predicate = pd:Predicate {
+ conditionExpression = ee:OperationCallExp { -- tcv.(v.name) = mv
+ source = pe:PropertyCallExp {
+ --source = tcv,
+ source = pve:VariableExp{referredVariable = tcv},
+ referredProperty = pep:Property{
+ name = v.name,
+ class = tcv.type.oclAsType(emof::Class)
+ }
+ },
+ referredOperation = eo:Operation{name = '='},
+ argument = ave:VariableExp{referredVariable = mv}
+ }
+ }
+ };
+ where {
+ rdSeq = let s : Sequence(emof::Element) = Sequence{} in s->append(r)->append(rd);
+ RelationDomainToTraceClassVar(rdSeq, tcv);
+ RVarToMVar(v, mv);
+
+ rdtVarsSeq->at(2) = predicatesWithoutVarBindings;
+ rdtVarsSeq->at(3) = unboundDomainVars;
+
+ remainingUnBoundDomainVars = unboundDomainVars - Set{v};
+ predicatesWithVarBindings = filterOutPredicatesThatReferToVars(
+ predicatesWithoutVarBindings, remainingUnBoundDomainVars);
+
+ RPredicateSetToMBPredicateSet(predicatesWithVarBindings->asSequence(), mb);
+ }
+}
+
+relation RPredicateSetToMBPredicateSet
+{
+ rpRest: Sequence(qvtbase::Predicate);
+
+ domain relations predSeq:Sequence(Predicate) {
+ rp:Predicate {
+ conditionExpression = re:OclExpression {}
+ }
+ ++ rpRest
+ };
+ enforce domain core mb:BottomPattern {
+ predicate = mp:Predicate {
+ conditionExpression = me:OclExpression {}
+ }
+ };
+ where {
+ RExpToMExp(re, me);
+ RPredicateSetToMBPredicateSet(rpRest, mb);
+ }
+}
+
+relation RDomainToMDBottomForEnforcementOfIdentityProp
+{
+ seqForAssignment: Sequence(emof::Element);
+
+ domain relations rtSeq:Sequence(Element) {
+ r:Relation{},
+ te:ObjectTemplateExp {
+ bindsTo = v:Variable {type=c:Class {}},
+ part = pt:PropertyTemplateItem {
+ referredProperty = pp:Property {},
+ value = e:OclExpression {}
+ }
+ } {
+ c.key.part->includes(pp)
+ }
+ ++ _
+ };
+ enforce domain core db:BottomPattern {
+ area = cd:CoreDomain {
+ rule = m:Mapping {
+ bottomPattern = mb:BottomPattern{
+ area = m
+ }
+ }
+ }
+ }; -- domain bottom
+ where {
+ seqForAssignment = Sequence{r, v, pp, e};
+ RDomainPatternExprToMappingDomainAssignment(seqForAssignment, db);
+ RDomainPatternExprToMappingDomainVarAssignment(seqForAssignment, db);
+ RDomainPatternExprToMappingDomainTemplateVarAssignment(seqForAssignment, db);
+ RDomainPatternExprToMappingBottomVarAssignment(seqForAssignment, mb);
+ }
+}
+
+relation RDomainToMDBottomForEnforcementOfIdentityPropObject
+{
+ seqForAssignment: Sequence(emof::Element);
+ mtv, tcv : essentialocl::Variable;
+ rdSeq : Sequence(emof::Element);
+
+ domain relations rtSeq:Sequence(Element) {
+ r:Relation{},
+ rd:RelationDomain{},
+ te:ObjectTemplateExp {
+ bindsTo = v:Variable {type=c:Class {}},
+ part = pt:PropertyTemplateItem {
+ referredProperty = pp:Property {},
+ value = e:ObjectTemplateExp {bindsTo = tv:Variable{}}
+ }
+ } {
+ c.key.part->includes(pp)
+ }
+ ++ _
+ };
+ enforce domain core mb:BottomPattern {
+ assignment = a:PropertyAssignment {
+ slotExpression = ve1:VariableExp{referredVariable = tcv},
+ targetProperty = tp:Property{name = tv.name, class = tcv.type.oclAsType(emof::Class)},
+ value = ve2:VariableExp{referredVariable = mtv}
+ }
+ }; -- domain bottom
+ where {
+ rdSeq = Sequence{r, rd};
+ RelationDomainToTraceClassVar(rdSeq, tcv);
+ RVarToMVar(tv, mtv);
+ }
+}
+
+relation RDomainPatternExprToMappingDomainAssignment
+{
+ pn: String;
+ mv: essentialocl::Variable;
+
+ domain relations seqForAssignment: Sequence(Element) {
+ _,
+ v:Variable {},
+ pp:Property {name = pn},
+ e:OclExpression {} {
+ not e.oclIsTypeOf(VariableExp) and not e.oclIsTypeOf(ObjectTemplateExp)
+ } ++ _
+ };
+ enforce domain core db:BottomPattern {
+ assignment = a:PropertyAssignment {
+ slotExpression = ve:VariableExp{referredVariable = mv},
+ targetProperty = tp:Property{name = pn, class = mv.type.oclAsType(emof::Class)},
+ value = me:OclExpression{}
+ }
+ };
+ where {
+ RVarToMVar(v, mv);
+ RExpToMExp(e, me);
+ }
+}
+
+relation RDomainPatternExprToMappingDomainVarAssignment
+{
+ sharedDomainVars: Set(essentialocl::Variable);
+ rev, mev : essentialocl::Variable;
+ pn: String;
+
+ domain relations seqForAssignment: Sequence(Element) {
+ r:Relation {},
+ v:Variable {},
+ pp:Property {name = pn},
+ e:VariableExp {referredVariable = rev}
+ ++ _
+ } {
+ not sharedDomainVars->includes(e.referredVariable)
+ };
+ enforce domain core db:BottomPattern {
+ realizedVariable = mv:RealizedVariable {},
+ assignment = a:PropertyAssignment {
+ slotExpression = ve:VariableExp{referredVariable = mv},
+ targetProperty = tp:Property{name = pn, class = mv.type.oclAsType(emof::Class)},
+ value = me:VariableExp{referredVariable = mev}
+ }
+ };
+ when {
+ sharedDomainVars = getSharedDomainVars(r);
+ }
+ where {
+ RVarToMRealizedVar(v, mv);
+ RVarToMVar(rev, mev);
+ }
+}
+
+relation RDomainPatternExprToMappingDomainTemplateVarAssignment
+{
+ sharedDomainVars: Set(essentialocl::Variable);
+ rev, mev: essentialocl::Variable;
+ pn: String;
+
+ domain relations seqForAssignment: Sequence(Element) {
+ r:Relation {},
+ v:Variable {},
+ pp:Property {name = pn},
+ e:ObjectTemplateExp {bindsTo = rev}
+ ++ _
+ } {
+ not sharedDomainVars->includes(rev)
+ };
+ enforce domain core db:BottomPattern {
+ realizedVariable = mv:RealizedVariable {},
+ assignment = a:PropertyAssignment {
+ slotExpression = ve:VariableExp{referredVariable = mv},
+ targetProperty = tp:Property{name = pn, class = mv.type.oclAsType(emof::Class)},
+ value = me:VariableExp{referredVariable = mev}
+ }
+ };
+ when {
+ sharedDomainVars = getSharedDomainVars(r);
+ }
+ where {
+ RVarToMRealizedVar(v, mv);
+ RVarToMVar(rev, mev);
+ }
+}
+
+relation RDomainPatternExprToMappingBottomVarAssignment
+{
+ sharedDomainVars: Set(essentialocl::Variable);
+ rev, mev : essentialocl::Variable;
+ pn: String;
+
+ domain relations seqForAssignment: Sequence(Element) {
+ r:Relation {},
+ v:Variable {},
+ pp:Property {name = pn},
+ e:VariableExp {referredVariable = rev}
+ ++ _
+ } {
+ sharedDomainVars->includes(e.referredVariable)
+ };
+ enforce domain core mb:BottomPattern {
+ realizedVariable = mv:RealizedVariable {},
+ assignment = a:PropertyAssignment {
+ slotExpression = ve:VariableExp{referredVariable = mv},
+ targetProperty = tp:Property{name = pn, class = mv.type.oclAsType(emof::Class)},
+ value = me:VariableExp{referredVariable = mev}
+ }
+ };
+ when {
+ sharedDomainVars = getSharedDomainVars(r);
+ }
+ where {
+ RVarToMRealizedVar(v, mv);
+ RVarToMVar(rev, mev);
+ }
+}
+
+relation RDomainToMDBottomForEnforcementOfNonIdentityPropPrimitive
+{
+ pn: String;
+ mv: essentialocl::Variable;
+ rtdeSeq: Sequence(emof::Element);
+
+ domain relations rtdSeq:Sequence(Element) {
+ r:Relation{
+ transformation = rt:RelationalTransformation{}
+ },
+ te:ObjectTemplateExp {
+ bindsTo = v:Variable {type = c:Class {}},
+ part = pt:PropertyTemplateItem {
+ referredProperty = pp:Property {name = pn},
+ value = e:OclExpression {}
+ }
+ } {
+ (not c.key.part->includes(pp)) and (not e.oclIsKindOf(TemplateExp))
+ },
+ rd:RelationDomain {
+ pattern = rdp:DomainPattern {
+ templateExpression = rdt:ObjectTemplateExp {}
+ }
+ }
+ ++ _
+ };
+ enforce domain core m:Mapping {
+ local = cm:Mapping {
+ name = m.name+'_forNonIdentityProp',
+ transformation = mt:Transformation{},
+ bottomPattern = bp:BottomPattern {
+ assignment = a:PropertyAssignment {
+ slotExpression = ve:VariableExp{referredVariable = mv},
+ targetProperty = tp:Property{name = pn, class = mv.type.oclAsType(emof::Class)},
+ value = me:OclExpression{}
+ }
+ }
+ }
+ };
+ when {
+ RelationalTransformationToMappingTransformation(rt, mt);
+ }
+ where {
+ RVarToMVar(v, mv);
+ RExpToMExp(e, me);
+
+ rtdeSeq = Sequence{r, te, rd, e};
+
+ RDomainToMComposedMappingGuard(rtdeSeq, cm);
+ }
+}
+
+relation RDomainToMComposedMappingGuard
+{
+ pn, dn, tmn: String;
+ tcv, mv: essentialocl::Variable;
+ rdSeq: Sequence(emof::Element);
+ mt: qvtbase::Transformation;
+
+ domain relations rtdSeq:Sequence(Element) {
+ r:Relation{
+ transformation = rt:RelationalTransformation{}
+ },
+ te:ObjectTemplateExp {},
+ rd:RelationDomain {
+ name = dn,
+ typedModel = dir:TypedModel {
+ name = tmn,
+ usedPackage = up:Package{},
+ transformation = rt
+ },
+ pattern = rdp:DomainPattern {
+ templateExpression = rdt:ObjectTemplateExp {}
+ }
+ },
+ ve:VariableExp {referredVariable = v:Variable {}}
+ ++ _
+ } {
+ isVarBoundToSomeOtherTemplate(rdt, te, v)
+ };
+ enforce domain core cm:Mapping {
+ guardPattern = mg:GuardPattern {
+ predicate = pd:Predicate {
+ conditionExpression = ee:OperationCallExp { -- vd.vn = mdv
+ source = pe:PropertyCallExp {
+ source = ve1:VariableExp{referredVariable = tcv},
+ referredProperty = tp:Property {
+ name = mv.name,
+ class = mv.type.oclAsType(emof::Class)
+ }
+ },
+ referredOperation = eo:Operation{name = '='},
+ argument = ve2:VariableExp{referredVariable = mv}
+ }
+ }
+ },
+ domain = cd:CoreDomain {
+ name = dn,
+ typedModel = mdir:TypedModel {
+ name = tmn,
+ usedPackage = up,
+ transformation = mt
+ },
+ guardPattern = cmdg:GuardPattern {
+ bindsTo = mv
+ }
+ }
+ };
+ when {
+ RelationalTransformationToMappingTransformation(rt, mt);
+ }
+ where {
+ rdSeq = Sequence{r, rd};
+ RelationDomainToTraceClassVar(rdSeq, tcv);
+ RVarToMVar(v, mv);
+ }
+}
+
+relation RDomainToMDBottomForEnforcementOfNonIdentityPropObject
+{
+ rdtSetNext: Set(emof::Element);
+ rdtVarsSeqRest: Sequence(Set(emof::Element));
+ predicatesWithoutVarBindings:Set(qvtbase::Predicate);
+ unboundDomainVars:Set(essentialocl::Variable);
+ dn, pn, tmn: String;
+ mv: essentialocl::Variable;
+
+ domain relations rdtVarsSeq:Sequence(Set(Element)) {
+ rdtSet:Set(Element) {
+ r:Relation{
+ transformation = rt:RelationalTransformation{}
+ },
+ rd:RelationDomain {
+ name = dn,
+ typedModel = dir:TypedModel {
+ name = tmn,
+ usedPackage = up:Package{},
+ transformation = rt
+ }
+ },
+ te:ObjectTemplateExp {
+ bindsTo = v:Variable {type = c:Class {}},
+ part = pt:PropertyTemplateItem {
+ referredProperty = pp:Property {name = pn},
+ value = pte:ObjectTemplateExp {bindsTo = pv:Variable {}}
+ }
+ } {
+ not c.key.part->includes(pp)
+ }
+ ++ _
+ }
+ ++ _
+ };
+ enforce domain core m:Mapping {
+ local = cm:Mapping {
+ name = m.name+'_for_'+pv.name,
+ transformation = mt:Transformation{},
+ domain = cd:CoreDomain {
+ name = dn,
+ isEnforceable = true,
+ typedModel = mdir:TypedModel {
+ name = tmn,
+ usedPackage = up,
+ transformation = mt
+ },
+ bottomPattern = cmdb:BottomPattern {
+ realizedVariable = mpv:RealizedVariable {},
+ assignment = a:PropertyAssignment {
+ slotExpression = ve1:VariableExp{referredVariable = mv},
+ targetProperty = tp:Property{name = pn, class = mv.type.oclAsType(emof::Class)},
+ value = ve2:VariableExp{referredVariable = mpv}
+ }
+ }
+ },
+ bottomPattern = mb:BottomPattern {
+ area = cm
+ }
+ }
+ };
+ when {
+ RelationalTransformationToMappingTransformation(rt, mt);
+ }
+ where {
+ RVarToMVar(v, mv);
+ RVarToMRealizedVar(pv, mpv);
+
+ rdtVarsSeq->at(2) = predicatesWithoutVarBindings;
+ rdtVarsSeq->at(3) = unboundDomainVars;
+
+ rdtSetNext = Set{r, rd, pte};
+ rdtVarsSeqRest = Sequence{rdtSetNext, predicatesWithoutVarBindings, unboundDomainVars};
+ RDomainToMDBottomForEnforcement(rdtVarsSeqRest, cmdb);
+ }
+}
+
+relation RDomainPatternToMDBottomPatternComposite
+{
+ nextSeqForDomainPtrn: Sequence(emof::Element);
+ sharedDomainVars:Set(essentialocl::Variable);
+ pn: String;
+ mvte, mvpte: essentialocl::Variable;
+
+ domain relations seqForDomainPtrn:Sequence(Element) {
+ r:Relation{},
+ te:ObjectTemplateExp {
+ bindsTo = vte:Variable {},
+ part = pt:PropertyTemplateItem {
+ referredProperty = pp:Property {name = pn},
+ value = pte:ObjectTemplateExp {bindsTo = vpte:Variable {}}
+ }
+ }
+ ++ _
+ };
+ enforce domain core db:BottomPattern {
+ assignment = a:PropertyAssignment {
+ slotExpression = ve1:VariableExp{referredVariable = mvte},
+ targetProperty = tp:Property{name = pn, class = mvte.type.oclAsType(emof::Class)},
+ value = ve2:VariableExp{referredVariable = mvpte}
+ }
+ };
+ where {
+ RVarToMVar(vte, mvte);
+ RVarToMVar(vpte, mvpte);
+ nextSeqForDomainPtrn = Sequence{r, pte};
+ RDomainPatternToMDBottomPattern(nextSeqForDomainPtrn, db);
+ }
+}
+
+relation RDomainPatternToMDBottomPatternSimpleUnSharedVarExpr
+{
+ sharedDomainVars: Set(essentialocl::Variable);
+ pn: String;
+ mvte, mvpte: essentialocl::Variable;
+
+ domain relations seqForDomainPtrn:Sequence(Element) {
+ r:Relation{},
+ te:ObjectTemplateExp {
+ bindsTo = vte:Variable {},
+ part = pt:PropertyTemplateItem {
+ referredProperty = pp:Property {name = pn},
+ value = e:VariableExp {referredVariable = vpte:Variable {}}
+ }
+ }
+ ++ _
+ } {
+ not sharedDomainVars->includes(vpte)
+ };
+ enforce domain core db:BottomPattern {
+ assignment = a:PropertyAssignment {
+ slotExpression = ve1:VariableExp{referredVariable = mvte},
+ targetProperty = tp:Property{name = pn, class = mvte.type.oclAsType(emof::Class)},
+ value = ve2:VariableExp{referredVariable = mvpte}
+ }
+ };
+ when {
+ sharedDomainVars = getSharedDomainVars(r);
+ }
+ where {
+ RVarToMVar(vte, mvte);
+ RVarToMVar(vpte, mvpte);
+ }
+}
+
+relation RDomainPatternToMDBottomPatternSimpleSharedVarExpr
+{
+ sharedDomainVars: Set(essentialocl::Variable);
+ pn: String;
+ mvte, mvpte: essentialocl::Variable;
+
+ domain relations seqForDomainPtrn:Sequence(Element) {
+ r:Relation{},
+ te:ObjectTemplateExp {
+ bindsTo = vte:Variable {},
+ part = pt:PropertyTemplateItem {
+ referredProperty = pp:Property {name = pn},
+ value = e:VariableExp {referredVariable=vpte:Variable {}}
+ }
+ }
+ ++ _
+ } {
+ sharedDomainVars->includes(vpte)
+ };
+ enforce domain core mb:BottomPattern {
+ assignment = a:PropertyAssignment {
+ slotExpression = ve1:VariableExp{referredVariable = mvte},
+ targetProperty = tp:Property{name = pn, class = mvte.type.oclAsType(emof::Class)},
+ value = ve2:VariableExp{referredVariable = mvpte}
+ }
+ };
+ when {
+ sharedDomainVars = getSharedDomainVars(r);
+ }
+ where {
+ RVarToMVar(vte, mvte);
+ RVarToMVar(vpte, mvpte);
+ }
+}
+
+relation RDomainPatternToMDBottomPatternSimpleNonVarExpr
+{
+ pn: String;
+ mvte: essentialocl::Variable;
+
+ domain relations seqForDomainPtrn:Sequence(Element) {
+ _,
+ te:ObjectTemplateExp {
+ bindsTo = vte:Variable {},
+ part = pt:PropertyTemplateItem {
+ referredProperty = pp:Property {name = pn},
+ value = e:OclExpression {}
+ }
+ } ++ _
+ } {
+ not e.oclIsKindOf(TemplateExp) and not e.oclIsTypeOf(VariableExp)
+ };
+ enforce domain core db:BottomPattern {
+ assignment = a:PropertyAssignment {
+ slotExpression = ve:VariableExp{referredVariable = mvte},
+ targetProperty = tp:Property{name = pn, class = mvte.type.oclAsType(emof::Class)},
+ value = me:OclExpression{}
+ }
+ };
+ where {
+ RVarToMVar(vte, mvte);
+ RExpToMExp(e, me);
+ }
+}
+
+relation RDomainVarsToTraceClassProps
+{
+ tcv, mdv: essentialocl::Variable;
+
+ domain relations rd:RelationDomain {
+ rule = r:Relation{},
+ pattern = dp:DomainPattern {
+ bindsTo = domainVars:Set(Variable) {dv:Variable {templateExp = te: TemplateExp{}}++_}
+ }
+ };
+ enforce domain core mb:BottomPattern {
+ assignment = a:PropertyAssignment {
+ slotExpression = ve1:VariableExp{referredVariable = tcv},
+ targetProperty = tp:Property{name = dv.name, class = tcv.type.oclAsType(emof::Class)},
+ value = ve2:VariableExp{referredVariable = mdv}
+ }
+ };
+ where {
+ RelationToTraceClassVar(r, tcv);
+ RVarToMVar(dv, mdv);
+ }
+}
+
+relation ROppositeDomainVarsToTraceClassProps
+{
+ rdSeq: Sequence(emof::Element);
+ tcv, mdv: essentialocl::Variable;
+
+ domain relations rdVarsSeq:Sequence(Set(Element)) {
+ rdSet: Set(Element) {
+ r:Relation {},
+ rd:RelationDomain {} ++ _
+ },
+ domainVars:Set(Variable) {dv:Variable{templateExp = te:TemplateExp{}} ++ _}
+ ++ _
+ };
+ enforce domain core mb:BottomPattern {
+ assignment = a:PropertyAssignment {
+ slotExpression = ve1:VariableExp{referredVariable = tcv},
+ targetProperty = tp:Property{name = dv.name, class = tcv.type.oclAsType(emof::Class)},
+ value = ve2:VariableExp{referredVariable = mdv}
+ }
+ };
+ where {
+ rdSeq = let s : Sequence(emof::Element) = Sequence{} in s->append(r)->append(rd);
+ RelationDomainToTraceClassVar(rdSeq, tcv);
+ RVarToMVar(dv, mdv);
+ }
+}
+
+relation RRelImplToMBottomEnforcementOperation
+{
+ emptySet:Set(qvtcore::EnforcementOperation);
+
+ domain relations repImplSeq:Sequence(Element) {
+ r:Relation {
+ operationalImpl = ri:RelationImplementation {
+ inDirectionOf = tm:TypedModel{},
+ impl = op:Operation{}
+ }
+ },
+ rd:RelationDomain {typedModel = tm:TypedModel{}}
+ ++ _
+ };
+ enforce domain core mb:BottomPattern {
+ enforcementOperation = eoSet:Set(EnforcementOperation) {
+ eoc:EnforcementOperation {
+ enforcementMode = EnforcementMode::Creation,
+ operationCallExp = oce:OperationCallExp {
+ referredOperation = op
+ }
+ },
+ eod:EnforcementOperation {
+ enforcementMode = EnforcementMode::Deletion,
+ operationCallExp = oce
+ }
+ ++ emptySet
+ }
+ }
+ default_values
+ {
+ emptySet = Set{};
+ };
+ where {
+ RRelDomainsToMOpCallArg(r, oce);
+ }
+}
+
+relation RRelDomainsToMOpCallArg
+{
+ domain relations r:Relation {
+ domain = rd:RelationDomain {
+ pattern = p:DomainPattern{bindsTo = rv:Variable{}}
+ }
+ };
+ enforce domain core oce:OperationCallExp {
+ argument = ar:VariableExp {
+ referredVariable = mv:Variable {}
+ }
+ };
+ where {
+ RVarToMVar(rv, mv);
+ }
+}
+
+relation RelationToTraceClassVar
+{
+ rn: String;
+ tc: emof::Class;
+
+ domain relations r:Relation {name = rn};
+ enforce domain core tcv:RealizedVariable {
+ name = rn+'_v',
+ type = tc
+ };
+ when {
+ RelationToTraceClass(r, tc);
+ }
+}
+
+relation RelationDomainToTraceClassVar
+{
+ rn, dn: String;
+ tc: emof::Class;
+
+ domain relations rdSeq:Sequence(Element) {
+ r:Relation {name = rn},
+ d:RelationDomain{name = dn}
+ ++ _
+ };
+ enforce domain core tcv:RealizedVariable {
+ name = rn+'_'+dn+'_v',
+ type = tc
+ };
+ when {
+ RelationToTraceClass(r, tc);
+ }
+}
+
+-- copy an ocl expression
+-- For space reasons this relation is not expanded out here
+relation RExpToMExp
+{
+ domain relations re:OclExpression{};
+ enforce domain core me:OclExpression{} /*implementedby CopyOclExpession(re, me)*/;
+}
+
+} \ No newline at end of file
diff --git a/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/abstracttoconcrete/AbstractToConcrete.qvtras b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/abstracttoconcrete/AbstractToConcrete.qvtras
new file mode 100644
index 000000000..4eb78a911
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/abstracttoconcrete/AbstractToConcrete.qvtras
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<qvtr:RelationModel
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:pivot="http://www.eclipse.org/ocl/3.1.0/Pivot"
+ xmlns:qvtr="http://www.eclipse.org/qvt/0.9/QVTrelation"
+ xmlns:qvtt="http://www.eclipse.org/qvt/0.9/QVTtemplate"
+ xsi:schemaLocation="http://www.eclipse.org/ocl/3.1.0/Pivot java://org.eclipse.ocl.examples.pivot.PivotPackage http://www.eclipse.org/qvt/0.9/QVTrelation java://org.eclipse.qvtd.pivot.qvtrelation.QVTrelationPackage http://www.eclipse.org/qvt/0.9/QVTtemplate java://org.eclipse.qvtd.pivot.qvttemplate.QVTtemplatePackage"
+ name="AbstractToConcrete.qvtr"
+ externalURI="platform:/resource/org.eclipse.qvtd.examples.qvtrelation.modelmorf/qvtrsrc/AbstractToConcrete/AbstractToConcrete.qvtr">
+ <ownedComment
+ body="*****************************************************************************&#xA;Copyright (c) 2007,2008 Tata Consultancy Services and others.&#xA;All rights reserved. This program and the accompanying materials&#xA;are made available under the terms of the Eclipse Public License v1.0&#xA;which accompanies this distribution, and is available at&#xA;http://www.eclipse.org/legal/epl-v10.html&#xA;&#xA;Contributors:&#xA;TCS - initial implementation for ModelMorf&#xA;E.D.Willink - alignment with evolved specification&#xA;*****************************************************************************"/>
+ <nestedPackage
+ xsi:type="qvtr:RelationalTransformation"
+ xmi:id="T.AbstractToConcrete"
+ name="AbstractToConcrete"
+ superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclElement">
+ <modelParameter
+ xmi:id="qT.AbstractToConcrete.uml1"
+ name="uml1"
+ usedPackage="ClassMM_IN.emof.oclas#P.ClassMM"/>
+ <modelParameter
+ xmi:id="qT.AbstractToConcrete.uml2"
+ name="uml2"
+ usedPackage="ClassMM_IN.emof.oclas#P.ClassMM"/>
+ <rule xsi:type="qvtr:Relation"
+ name="AbstractClassToConcreteClass"
+ isTopLevel="true">
+ <domain
+ xsi:type="qvtr:RelationDomain"
+ xmi:id="qD.AbstractToConcrete.AbstractClassToConcreteClass.uml1"
+ isCheckable="true"
+ isEnforceable="false"
+ typedModel="#qT.AbstractToConcrete.uml1"
+ rootVariable="#//@nestedPackage.0/@rule.0/@variable.3">
+ <pattern>
+ <templateExpression
+ xsi:type="qvtt:ObjectTemplateExp"
+ type="ClassMM_IN.emof.oclas#T.ClassMM.Class"
+ bindsTo="#//@nestedPackage.0/@rule.0/@variable.3"
+ referredClass="ClassMM_IN.emof.oclas#T.ClassMM.Class">
+ <part
+ referredProperty="ClassMM_IN.emof.oclas#p.ClassMM.Class.inheritsFrom">
+ <value
+ xsi:type="qvtt:ObjectTemplateExp"
+ type="ClassMM_IN.emof.oclas#T.ClassMM.Class"
+ bindsTo="#//@nestedPackage.0/@rule.0/@variable.4"
+ referredClass="ClassMM_IN.emof.oclas#T.ClassMM.Class">
+ <part
+ referredProperty="ClassMM_IN.emof.oclas#p.ClassMM.Class.isAbstract">
+ <value
+ xsi:type="pivot:BooleanLiteralExp"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ booleanSymbol="true"/>
+ </part>
+ <part
+ referredProperty="ClassMM_IN.emof.oclas#p.ClassMM.Class.operation">
+ <value
+ xsi:type="qvtt:ObjectTemplateExp"
+ type="ClassMM_IN.emof.oclas#T.ClassMM.Operation"
+ bindsTo="#//@nestedPackage.0/@rule.0/@variable.5"
+ referredClass="ClassMM_IN.emof.oclas#T.ClassMM.Operation">
+ <part
+ referredProperty="ClassMM_IN.emof.oclas#p.ClassMM.Operation.name">
+ <value
+ xsi:type="pivot:VariableExp"
+ isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.0/@variable.1"/>
+ </part>
+ <part
+ referredProperty="ClassMM_IN.emof.oclas#p.ClassMM.Operation.parameter">
+ <value
+ xsi:type="qvtt:ObjectTemplateExp"
+ type="ClassMM_IN.emof.oclas#T.ClassMM.Parameter"
+ bindsTo="#//@nestedPackage.0/@rule.0/@variable.6"
+ referredClass="ClassMM_IN.emof.oclas#T.ClassMM.Parameter">
+ <part
+ referredProperty="ClassMM_IN.emof.oclas#p.ClassMM.Parameter.name">
+ <value
+ xsi:type="pivot:VariableExp"
+ isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.0/@variable.2"/>
+ </part>
+ <part
+ referredProperty="ClassMM_IN.emof.oclas#p.ClassMM.Parameter.type">
+ <value
+ xsi:type="pivot:VariableExp"
+ isRequired="false"
+ type="ClassMM_IN.emof.oclas#T.ClassMM.Type"
+ referredVariable="#//@nestedPackage.0/@rule.0/@variable.0"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain
+ xsi:type="qvtr:RelationDomain"
+ xmi:id="qD.AbstractToConcrete.AbstractClassToConcreteClass.uml2"
+ isCheckable="true"
+ isEnforceable="true"
+ typedModel="#qT.AbstractToConcrete.uml2"
+ rootVariable="#//@nestedPackage.0/@rule.0/@variable.3">
+ <pattern>
+ <templateExpression
+ xsi:type="qvtt:ObjectTemplateExp"
+ type="ClassMM_IN.emof.oclas#T.ClassMM.Class"
+ bindsTo="#//@nestedPackage.0/@rule.0/@variable.3"
+ referredClass="ClassMM_IN.emof.oclas#T.ClassMM.Class">
+ <part
+ referredProperty="ClassMM_IN.emof.oclas#p.ClassMM.Class.operation">
+ <value
+ xsi:type="qvtt:ObjectTemplateExp"
+ type="ClassMM_IN.emof.oclas#T.ClassMM.Operation"
+ bindsTo="#//@nestedPackage.0/@rule.0/@variable.7"
+ referredClass="ClassMM_IN.emof.oclas#T.ClassMM.Operation">
+ <part
+ referredProperty="ClassMM_IN.emof.oclas#p.ClassMM.Operation.name">
+ <value
+ xsi:type="pivot:VariableExp"
+ isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.0/@variable.1"/>
+ </part>
+ <part
+ referredProperty="ClassMM_IN.emof.oclas#p.ClassMM.Operation.parameter">
+ <value
+ xsi:type="qvtt:ObjectTemplateExp"
+ type="ClassMM_IN.emof.oclas#T.ClassMM.Parameter"
+ bindsTo="#//@nestedPackage.0/@rule.0/@variable.8"
+ referredClass="ClassMM_IN.emof.oclas#T.ClassMM.Parameter">
+ <part
+ referredProperty="ClassMM_IN.emof.oclas#p.ClassMM.Parameter.name">
+ <value
+ xsi:type="pivot:VariableExp"
+ isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.0/@variable.2"/>
+ </part>
+ <part
+ referredProperty="ClassMM_IN.emof.oclas#p.ClassMM.Parameter.type">
+ <value
+ xsi:type="pivot:VariableExp"
+ isRequired="false"
+ type="ClassMM_IN.emof.oclas#T.ClassMM.Type"
+ referredVariable="#//@nestedPackage.0/@rule.0/@variable.0"/>
+ </part>
+ </value>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable
+ name="t"
+ isRequired="false"
+ type="ClassMM_IN.emof.oclas#T.ClassMM.Type"/>
+ <variable
+ name="acon"
+ isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable
+ name="acopn"
+ isRequired="false"
+ type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable
+ name="cc"
+ type="ClassMM_IN.emof.oclas#T.ClassMM.Class"/>
+ <variable
+ name="ac"
+ type="ClassMM_IN.emof.oclas#T.ClassMM.Class"/>
+ <variable
+ name="aco"
+ type="ClassMM_IN.emof.oclas#T.ClassMM.Operation"/>
+ <variable
+ name="acop"
+ type="ClassMM_IN.emof.oclas#T.ClassMM.Parameter"/>
+ <variable
+ name="cco"
+ type="ClassMM_IN.emof.oclas#T.ClassMM.Operation"/>
+ <variable
+ name="ccop"
+ type="ClassMM_IN.emof.oclas#T.ClassMM.Parameter"/>
+ </rule>
+ <ownedKey
+ identifies="ClassMM_IN.emof.oclas#T.ClassMM.Type"
+ part="ClassMM_IN.emof.oclas#p.ClassMM.Type.name"/>
+ <ownedKey
+ identifies="ClassMM_IN.emof.oclas#T.ClassMM.Operation"
+ part="ClassMM_IN.emof.oclas#p.ClassMM.Operation.name ClassMM_IN.emof.oclas#p.ClassMM.Operation.class"/>
+ <ownedKey
+ identifies="ClassMM_IN.emof.oclas#T.ClassMM.Parameter"
+ part="ClassMM_IN.emof.oclas#p.ClassMM.Parameter.name ClassMM_IN.emof.oclas#p.ClassMM.Parameter.operation ClassMM_IN.emof.oclas#p.ClassMM.Parameter.type"/>
+ </nestedPackage>
+ <unit name="UMLMM"
+ usedPackage="pivot:Package ClassMM_IN.emof.oclas#P.ClassMM">
+ <ownedComment
+ body="*****************************************************************************&#xA;Copyright (c) 2007,2008 Tata Consultancy Services and others.&#xA;All rights reserved. This program and the accompanying materials&#xA;are made available under the terms of the Eclipse Public License v1.0&#xA;which accompanies this distribution, and is available at&#xA;http://www.eclipse.org/legal/epl-v10.html&#xA;&#xA;Contributors:&#xA;TCS - initial implementation for ModelMorf&#xA;E.D.Willink - alignment with evolved specification&#xA;*****************************************************************************"/>
+ </unit>
+</qvtr:RelationModel>
diff --git a/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/abstracttoconcrete/ClassMM_IN.emof b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/abstracttoconcrete/ClassMM_IN.emof
new file mode 100644
index 000000000..ec0f59d57
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/abstracttoconcrete/ClassMM_IN.emof
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<emof:Package xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:emof="http://schema.omg.org/spec/MOF/2.0/emof.xml"
+ xmi:id="ClassMM" name="ClassMM" uri="ClassMM">
+ <ownedType xmi:type="emof:Class" xmi:id="ClassMM.dummy" name="dummy">
+ <ownedAttribute xmi:id="ClassMM.dummy.hasType" name="hasType" upper="*" type="ClassMM.Type"
+ isComposite="true"/>
+ </ownedType>
+ <ownedType xmi:type="emof:Class" xmi:id="ClassMM.Type" name="Type" isAbstract="true">
+ <ownedAttribute xmi:id="ClassMM.Type.name" name="name">
+ <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/MOF/2.0/emof.xml#String"/>
+ </ownedAttribute>
+ </ownedType>
+ <ownedType xmi:type="emof:Class" xmi:id="ClassMM.Class" name="Class" superClass="ClassMM.Type">
+ <ownedAttribute xmi:id="ClassMM.Class.isAbstract" name="isAbstract">
+ <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/MOF/2.0/emof.xml#Boolean"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="ClassMM.Class.operation" name="operation" upper="*" type="ClassMM.Operation"
+ isComposite="true" opposite="ClassMM.Operation.class"/>
+ <ownedAttribute xmi:id="ClassMM.Class.inheritsFrom" name="inheritsFrom" type="ClassMM.Class"/>
+ </ownedType>
+ <ownedType xmi:type="emof:Class" xmi:id="ClassMM.Operation" name="Operation">
+ <ownedAttribute xmi:id="ClassMM.Operation.name" name="name">
+ <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/MOF/2.0/emof.xml#String"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="ClassMM.Operation.class" name="class" type="ClassMM.Class"
+ opposite="ClassMM.Class.operation"/>
+ <ownedAttribute xmi:id="ClassMM.Operation.parameter" name="parameter" upper="*"
+ type="ClassMM.Parameter" isComposite="true" opposite="ClassMM.Parameter.operation"/>
+ </ownedType>
+ <ownedType xmi:type="emof:Class" xmi:id="ClassMM.Parameter" name="Parameter">
+ <ownedAttribute xmi:id="ClassMM.Parameter.name" name="name">
+ <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/MOF/2.0/emof.xml#String"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="ClassMM.Parameter.type" name="type" type="ClassMM.Type"/>
+ <ownedAttribute xmi:id="ClassMM.Parameter.operation" name="operation" type="ClassMM.Operation"
+ opposite="ClassMM.Operation.parameter"/>
+ </ownedType>
+ <ownedType xmi:type="emof:Class" xmi:id="ClassMM.PrimitiveDataType" name="PrimitiveDataType"
+ superClass="ClassMM.Type"/>
+</emof:Package>
diff --git a/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/classmodeltoclassmodel/ClassMM.emof b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/classmodeltoclassmodel/ClassMM.emof
new file mode 100644
index 000000000..a2d3bf5e0
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/classmodeltoclassmodel/ClassMM.emof
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2007,2008 Tata Consultancy Services and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * TCS - initial implementation for ModelMorf
+ * E.D.Willink - alignment with evolved specification
+-->
+<emof:Package xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:emof="http://schema.omg.org/spec/MOF/2.0/emof.xml" xmi:id="ClassMM"
+ name="ClassMM" uri="ClassMM_uri">
+ <ownedType xmi:type="emof:Class" xmi:id="ClassMM.Class" name="Class">
+ <ownedAttribute xmi:id="ClassMM.Class.subs" name="subs" upper="*" type="ClassMM.Class"
+ opposite="ClassMM.Class.supers"/>
+ <ownedAttribute xmi:id="ClassMM.Class.supers" name="supers" upper="*" type="ClassMM.Class"
+ opposite="ClassMM.Class.subs"/>
+ <ownedAttribute xmi:id="ClassMM.Class.name" name="name">
+ <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/MOF/2.0/emof.xml#String"/>
+ </ownedAttribute>
+ </ownedType>
+ <ownedType xmi:type="emof:Class" xmi:id="ClassMM.Dummy" name="Dummy">
+ <ownedAttribute xmi:id="ClassMM.Dummy.hasClass" name="hasClass" upper="*" type="ClassMM.Class"
+ isComposite="true"/>
+ </ownedType>
+</emof:Package>
diff --git a/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/classmodeltoclassmodel/ClassModelToClassModel.qvtr b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/classmodeltoclassmodel/ClassModelToClassModel.qvtr
new file mode 100644
index 000000000..54c208793
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/classmodeltoclassmodel/ClassModelToClassModel.qvtr
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (c) 2007,2008 Tata Consultancy Services and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * TCS - initial implementation for ModelMorf
+ * E.D.Willink - alignment with evolved specification
+ *******************************************************************************/
+import umlMM : 'ClassMM.emof'::ClassMM;
+
+transformation ClassModelToClassModel(uml1:umlMM, uml2:umlMM)
+{
+ key umlMM::Class{name};
+
+ top relation classToClass
+ {
+ cn : String;
+
+ enforce domain uml1
+ c1:Class
+ {
+ name = cn
+ };
+
+ enforce domain uml2
+ c2:Class
+ {
+ name = cn
+ };
+ }
+
+ top relation classToClassHierarchy
+ {
+ cn : String;
+
+ enforce domain uml1
+ c1:Class
+ {
+ supers = c1s:Set(Class){}
+ };
+
+ enforce domain uml2
+ c2:Class
+ {
+ supers = c2s:Set(Class){}
+ };
+
+ when
+ {
+ classToClass(c1, c2);
+ }
+
+ where
+ {
+ classSupersToClassSupers(c1s, c2s);
+ }
+ }
+
+ relation classSupersToClassSupers
+ {
+ cn : String;
+ c1 : umlMM::Class;
+ c2 : umlMM::Class;
+ restC1s : Set(umlMM::Class);
+ restC2s : Set(umlMM::Class);
+
+ enforce domain uml1
+ c1s:Set(Class)
+ {
+ c1 ++ restC1s
+ }
+ default_values
+ {
+ restC1s = Set{};
+ };
+
+ enforce domain uml2
+ c2s:Set(Class)
+ {
+ c2 ++ restC2s
+ }
+ default_values
+ {
+ restC2s = Set{};
+ };
+
+ where
+ {
+ classToClass(c1, c2);
+ classSupersToClassSupers(restC1s, restC2s);
+ }
+ }
+}
diff --git a/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/classmodeltoclassmodel/ClassModelToClassModel.qvtras b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/classmodeltoclassmodel/ClassModelToClassModel.qvtras
new file mode 100644
index 000000000..d020e9163
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/classmodeltoclassmodel/ClassModelToClassModel.qvtras
@@ -0,0 +1,209 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<qvtr:RelationModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:pivot="http://www.eclipse.org/ocl/3.1.0/Pivot" xmlns:qvtr="http://www.eclipse.org/qvt/0.9/QVTrelation"
+ xmlns:qvtt="http://www.eclipse.org/qvt/0.9/QVTtemplate" xsi:schemaLocation="http://www.eclipse.org/ocl/3.1.0/Pivot java://org.eclipse.ocl.examples.pivot.PivotPackage http://www.eclipse.org/qvt/0.9/QVTrelation java://org.eclipse.qvtd.pivot.qvtrelation.QVTrelationPackage http://www.eclipse.org/qvt/0.9/QVTtemplate java://org.eclipse.qvtd.pivot.qvttemplate.QVTtemplatePackage"
+ name="ClassModelToClassModel.qvtr" externalURI="platform:/resource/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/classmodeltoclassmodel/ClassModelToClassModel.qvtr">
+ <ownedComment body="*****************************************************************************&#xA;Copyright (c) 2007,2008 Tata Consultancy Services and others.&#xA;All rights reserved. This program and the accompanying materials&#xA;are made available under the terms of the Eclipse Public License v1.0&#xA;which accompanies this distribution, and is available at&#xA;http://www.eclipse.org/legal/epl-v10.html&#xA;&#xA;Contributors:&#xA;TCS - initial implementation for ModelMorf&#xA;E.D.Willink - alignment with evolved specification&#xA;*****************************************************************************"/>
+ <nestedPackage xsi:type="qvtr:RelationalTransformation" xmi:id="T.ClassModelToClassModel"
+ name="ClassModelToClassModel" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclElement">
+ <modelParameter xmi:id="qT.ClassModelToClassModel.uml1" name="uml1" usedPackage="ClassMM.emof.oclas#P.ClassMM"/>
+ <modelParameter xmi:id="qT.ClassModelToClassModel.uml2" name="uml2" usedPackage="ClassMM.emof.oclas#P.ClassMM"/>
+ <rule xsi:type="qvtr:Relation" name="classToClass" isTopLevel="true">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.ClassModelToClassModel.classToClass.uml1"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.ClassModelToClassModel.uml1"
+ rootVariable="#//@nestedPackage.0/@rule.0/@variable.1">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="ClassMM.emof.oclas#T.ClassMM.Class"
+ bindsTo="#//@nestedPackage.0/@rule.0/@variable.1" referredClass="ClassMM.emof.oclas#T.ClassMM.Class">
+ <part referredProperty="ClassMM.emof.oclas#p.ClassMM.Class.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.0/@variable.0"/>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.ClassModelToClassModel.classToClass.uml2"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.ClassModelToClassModel.uml2"
+ rootVariable="#//@nestedPackage.0/@rule.0/@variable.2">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="ClassMM.emof.oclas#T.ClassMM.Class"
+ bindsTo="#//@nestedPackage.0/@rule.0/@variable.2" referredClass="ClassMM.emof.oclas#T.ClassMM.Class">
+ <part referredProperty="ClassMM.emof.oclas#p.ClassMM.Class.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.0/@variable.0"/>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="cn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="c1" type="ClassMM.emof.oclas#T.ClassMM.Class"/>
+ <variable name="c2" type="ClassMM.emof.oclas#T.ClassMM.Class"/>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="classToClassHierarchy" isTopLevel="true">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.ClassModelToClassModel.classToClassHierarchy.uml1"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.ClassModelToClassModel.uml1"
+ rootVariable="#//@nestedPackage.0/@rule.1/@variable.1">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="ClassMM.emof.oclas#T.ClassMM.Class"
+ bindsTo="#//@nestedPackage.0/@rule.1/@variable.1" referredClass="ClassMM.emof.oclas#T.ClassMM.Class">
+ <part referredProperty="ClassMM.emof.oclas#p.ClassMM.Class.supers">
+ <value xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.0"
+ bindsTo="#//@nestedPackage.0/@rule.1/@variable.2" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.3"
+ rest="#//@nestedPackage.0/@rule.1/@variable.3"/>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.ClassModelToClassModel.classToClassHierarchy.uml2"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.ClassModelToClassModel.uml2"
+ rootVariable="#//@nestedPackage.0/@rule.1/@variable.4">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="ClassMM.emof.oclas#T.ClassMM.Class"
+ bindsTo="#//@nestedPackage.0/@rule.1/@variable.4" referredClass="ClassMM.emof.oclas#T.ClassMM.Class">
+ <part referredProperty="ClassMM.emof.oclas#p.ClassMM.Class.supers">
+ <value xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.0"
+ bindsTo="#//@nestedPackage.0/@rule.1/@variable.5" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.3"
+ rest="#//@nestedPackage.0/@rule.1/@variable.6"/>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="cn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="c1" type="ClassMM.emof.oclas#T.ClassMM.Class"/>
+ <variable name="c1s" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable implicit="true"/>
+ <variable name="c2" type="ClassMM.emof.oclas#T.ClassMM.Class"/>
+ <variable name="c2s" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable implicit="true"/>
+ <when>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.0">
+ <argument xsi:type="pivot:VariableExp" type="ClassMM.emof.oclas#T.ClassMM.Class"
+ referredVariable="#//@nestedPackage.0/@rule.1/@variable.1"/>
+ <argument xsi:type="pivot:VariableExp" type="ClassMM.emof.oclas#T.ClassMM.Class"
+ referredVariable="#//@nestedPackage.0/@rule.1/@variable.4"/>
+ </conditionExpression>
+ </predicate>
+ </when>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.2">
+ <argument xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.1/@variable.2"/>
+ <argument xsi:type="pivot:VariableExp" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.1/@variable.5"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="classSupersToClassSupers">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.ClassModelToClassModel.classSupersToClassSupers.uml1"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.ClassModelToClassModel.uml1"
+ rootVariable="#//@nestedPackage.0/@rule.2/@variable.5">
+ <defaultAssignment variable="#//@nestedPackage.0/@rule.2/@variable.3">
+ <valueExp xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.1"
+ kind="Set"/>
+ </defaultAssignment>
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.0"
+ bindsTo="#//@nestedPackage.0/@rule.2/@variable.5" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.3">
+ <member xsi:type="pivot:VariableExp" referredVariable="#//@nestedPackage.0/@rule.2/@variable.6"/>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.ClassModelToClassModel.classSupersToClassSupers.uml2"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.ClassModelToClassModel.uml2"
+ rootVariable="#//@nestedPackage.0/@rule.2/@variable.7">
+ <defaultAssignment variable="#//@nestedPackage.0/@rule.2/@variable.4">
+ <valueExp xsi:type="pivot:CollectionLiteralExp" type="#//@nestedPackage.1/@ownedType.1"
+ kind="Set"/>
+ </defaultAssignment>
+ <pattern>
+ <templateExpression xsi:type="qvtt:CollectionTemplateExp" type="#//@nestedPackage.1/@ownedType.0"
+ bindsTo="#//@nestedPackage.0/@rule.2/@variable.7" referredCollectionType="http://www.eclipse.org/ocl/3.1.0/orphanage#//@ownedType.3">
+ <member xsi:type="pivot:VariableExp" referredVariable="#//@nestedPackage.0/@rule.2/@variable.8"/>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="cn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="c1" isRequired="false" type="ClassMM.emof.oclas#T.ClassMM.Class"/>
+ <variable name="c2" isRequired="false" type="ClassMM.emof.oclas#T.ClassMM.Class"/>
+ <variable name="restC1s" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="restC2s" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="c1s" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="c1"/>
+ <variable name="c2s" type="#//@nestedPackage.1/@ownedType.0"/>
+ <variable name="c2"/>
+ <where>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.0">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="ClassMM.emof.oclas#T.ClassMM.Class"
+ referredVariable="#//@nestedPackage.0/@rule.2/@variable.1"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="ClassMM.emof.oclas#T.ClassMM.Class"
+ referredVariable="#//@nestedPackage.0/@rule.2/@variable.2"/>
+ </conditionExpression>
+ </predicate>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.2">
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.2/@variable.3"/>
+ <argument xsi:type="pivot:VariableExp" isRequired="false" type="#//@nestedPackage.1/@ownedType.0"
+ referredVariable="#//@nestedPackage.0/@rule.2/@variable.4"/>
+ </conditionExpression>
+ </predicate>
+ </where>
+ </rule>
+ <ownedKey identifies="ClassMM.emof.oclas#T.ClassMM.Class" part="ClassMM.emof.oclas#p.ClassMM.Class.name"/>
+ </nestedPackage>
+ <nestedPackage xmi:id="P.$$" name="$$" nsPrefix="orphanage" nsURI="http://www.eclipse.org/ocl/3.1.0/orphanage">
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.2"
+ elementType="ClassMM.emof.oclas#T.ClassMM.Class">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:Class ClassMM.emof.oclas#T.ClassMM.Class"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:SetType" name="Set" superClass="#//@nestedPackage.1/@ownedType.3"
+ elementType="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Set">
+ <parameterSubstitution actual="pivot:AnyType http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..SetT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.4"
+ elementType="ClassMM.emof.oclas#T.ClassMM.Class">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:Class ClassMM.emof.oclas#T.ClassMM.Class"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="UniqueCollection" superClass="#//@nestedPackage.1/@ownedType.5"
+ elementType="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.UniqueCollection">
+ <parameterSubstitution actual="pivot:AnyType http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..UniqueCollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="ClassMM.emof.oclas#T.ClassMM.Class">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:Class ClassMM.emof.oclas#T.ClassMM.Class"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ <ownedType xsi:type="pivot:CollectionType" name="Collection" superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ elementType="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny">
+ <templateBinding signature="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#s.Collection">
+ <parameterSubstitution actual="pivot:AnyType http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclAny"
+ formal="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#t.ocl..CollectionT"/>
+ </templateBinding>
+ </ownedType>
+ </nestedPackage>
+ <unit name="umlMM" usedPackage="pivot:Package ClassMM.emof.oclas#P.ClassMM">
+ <ownedComment body="*****************************************************************************&#xA;Copyright (c) 2007,2008 Tata Consultancy Services and others.&#xA;All rights reserved. This program and the accompanying materials&#xA;are made available under the terms of the Eclipse Public License v1.0&#xA;which accompanies this distribution, and is available at&#xA;http://www.eclipse.org/legal/epl-v10.html&#xA;&#xA;Contributors:&#xA;TCS - initial implementation for ModelMorf&#xA;E.D.Willink - alignment with evolved specification&#xA;*****************************************************************************"/>
+ </unit>
+</qvtr:RelationModel>
diff --git a/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/seqtostm/SeqMM.emof b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/seqtostm/SeqMM.emof
new file mode 100644
index 000000000..255793de2
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/seqtostm/SeqMM.emof
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2007,2008 Tata Consultancy Services and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * TCS - initial implementation for ModelMorf
+ * E.D.Willink - alignment with evolved specification
+-->
+<emof:Package xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:emof="http://schema.omg.org/spec/MOF/2.0/emof.xml" xmi:id="SeqMM"
+ name="SeqMM" uri="SeqMM">
+ <ownedType xmi:type="emof:Class" xmi:id="SeqMM.Dummy" name="Dummy">
+ <ownedAttribute xmi:id="SeqMM.Dummy.hasInteraction" name="hasInteraction" upper="*"
+ type="SeqMM.Interaction" isComposite="true"/>
+ <ownedAttribute xmi:id="SeqMM.Dummy.containedState" name="containedState" upper="*"
+ type="SeqMM.State" isComposite="true"/>
+ </ownedType>
+ <ownedType xmi:type="emof:Class" xmi:id="SeqMM.Interaction" name="Interaction">
+ <ownedAttribute xmi:id="SeqMM.Interaction.name" name="name">
+ <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/MOF/2.0/emof.xml#String"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="SeqMM.Interaction.lifeline" name="lifeline" upper="*"
+ type="SeqMM.LifeLine" isComposite="true" opposite="SeqMM.LifeLine.interaction"/>
+ <ownedAttribute xmi:id="SeqMM.Interaction.message" name="message" upper="*" type="SeqMM.Message"
+ isComposite="true" opposite="SeqMM.Message.interaction"/>
+ </ownedType>
+ <ownedType xmi:type="emof:Class" xmi:id="SeqMM.LifeLine" name="LifeLine">
+ <ownedAttribute xmi:id="SeqMM.LifeLine.name" name="name">
+ <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/MOF/2.0/emof.xml#String"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="SeqMM.LifeLine.msgEvent" name="msgEvent" upper="*" type="SeqMM.MessageEvent"
+ isComposite="true" opposite="SeqMM.MessageEvent.lifeline"/>
+ <ownedAttribute xmi:id="SeqMM.LifeLine.state" name="state" upper="*" type="SeqMM.State"
+ opposite="SeqMM.State.lifeline"/>
+ <ownedAttribute xmi:id="SeqMM.LifeLine.interaction" name="interaction" lower="1"
+ type="SeqMM.Interaction" opposite="SeqMM.Interaction.lifeline"/>
+ </ownedType>
+ <ownedType xmi:type="emof:Class" xmi:id="SeqMM.Message" name="Message">
+ <ownedAttribute xmi:id="SeqMM.Message.messageId" name="messageId">
+ <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/MOF/2.0/emof.xml#String"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="SeqMM.Message.interaction" name="interaction" lower="1"
+ type="SeqMM.Interaction" opposite="SeqMM.Interaction.message"/>
+ <ownedAttribute xmi:id="SeqMM.Message.event" name="event" lower="1" upper="*"
+ type="SeqMM.MessageEvent" opposite="SeqMM.MessageEvent.message"/>
+ </ownedType>
+ <ownedType xmi:type="emof:Class" xmi:id="SeqMM.State" name="State">
+ <ownedAttribute xmi:id="SeqMM.State.name" name="name">
+ <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/MOF/2.0/emof.xml#String"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="SeqMM.State.messageevent" name="messageevent" upper="*"
+ type="SeqMM.MessageEvent" opposite="SeqMM.MessageEvent.state"/>
+ <ownedAttribute xmi:id="SeqMM.State.lifeline" name="lifeline" lower="1" upper="*"
+ type="SeqMM.LifeLine" opposite="SeqMM.LifeLine.state"/>
+ </ownedType>
+ <ownedType xmi:type="emof:Class" xmi:id="SeqMM.Event" name="Event"/>
+ <ownedType xmi:type="emof:Class" xmi:id="SeqMM.MessageEvent" name="MessageEvent"
+ superClass="SeqMM.Event">
+ <ownedAttribute xmi:id="SeqMM.MessageEvent.type" name="type" type="SeqMM.MessageEventType"
+ default="Send"/>
+ <ownedAttribute xmi:id="SeqMM.MessageEvent.prev" name="prev" type="SeqMM.MessageEvent"/>
+ <ownedAttribute xmi:id="SeqMM.MessageEvent.next" name="next" type="SeqMM.MessageEvent"/>
+ <ownedAttribute xmi:id="SeqMM.MessageEvent.message" name="message" type="SeqMM.Message"
+ opposite="SeqMM.Message.event"/>
+ <ownedAttribute xmi:id="SeqMM.MessageEvent.lifeline" name="lifeline" lower="1"
+ type="SeqMM.LifeLine" opposite="SeqMM.LifeLine.msgEvent"/>
+ <ownedAttribute xmi:id="SeqMM.MessageEvent.state" name="state" type="SeqMM.State"
+ opposite="SeqMM.State.messageevent"/>
+ </ownedType>
+ <ownedType xmi:type="emof:Enumeration" xmi:id="SeqMM.MessageEventType" name="MessageEventType">
+ <ownedLiteral xmi:id="SeqMM.MessageEventType.Send" name="Send"/>
+ <ownedLiteral xmi:id="SeqMM.MessageEventType.Receive" name="Receive">
+ </ownedLiteral>
+ </ownedType>
+</emof:Package>
diff --git a/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/seqtostm/SeqToStm.qvtr b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/seqtostm/SeqToStm.qvtr
new file mode 100644
index 000000000..c36aa83d7
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/seqtostm/SeqToStm.qvtr
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2007,2008 Tata Consultancy Services and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * TCS - initial implementation for ModelMorf
+ * E.D.Willink - alignment with evolved specification
+ *******************************************************************************/
+import SeqMM : 'SeqMM.emof'::SeqMM;
+import StmcMM : 'StmcMM.emof'::StmcMM;
+
+transformation SeqToStm(seqDgm: SeqMM, stm: StmcMM)
+{
+ key StmcMM::StateMachine{name};
+ key StmcMM::State{name,owner};
+ key StmcMM::Transition{name,owner,fromState,toState};
+ key StmcMM::SendMsg{message};
+ key StmcMM::Message{messageId};
+
+
+ top relation InteractionToStateMachine
+ {
+ sn: String;
+
+ domain seqDgm i:Interaction {name = sn};
+ enforce domain stm s:StateMachine {name = sn};
+ }
+
+ top relation StateToState
+ {
+ sn: String;
+
+ domain seqDgm
+ st1:State
+ {
+ name = sn,
+ lifeline = l:LifeLine{interaction = i:Interaction{}}
+ };
+
+ enforce domain stm
+ st2:State
+ {
+ name = sn,
+ owner = s:StateMachine{}
+ };
+
+ when
+ {
+ InteractionToStateMachine(i, s);
+ }
+ }
+
+}
diff --git a/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/seqtostm/SeqToStm.qvtras b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/seqtostm/SeqToStm.qvtras
new file mode 100644
index 000000000..6c586cc99
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/seqtostm/SeqToStm.qvtras
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<qvtr:RelationModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:pivot="http://www.eclipse.org/ocl/3.1.0/Pivot" xmlns:qvtr="http://www.eclipse.org/qvt/0.9/QVTrelation"
+ xmlns:qvtt="http://www.eclipse.org/qvt/0.9/QVTtemplate" xsi:schemaLocation="http://www.eclipse.org/ocl/3.1.0/Pivot java://org.eclipse.ocl.examples.pivot.PivotPackage http://www.eclipse.org/qvt/0.9/QVTrelation java://org.eclipse.qvtd.pivot.qvtrelation.QVTrelationPackage http://www.eclipse.org/qvt/0.9/QVTtemplate java://org.eclipse.qvtd.pivot.qvttemplate.QVTtemplatePackage"
+ name="SeqToStm.qvtr" externalURI="platform:/resource/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/seqtostm/SeqToStm.qvtr">
+ <ownedComment body="*****************************************************************************&#xA;Copyright (c) 2007,2008 Tata Consultancy Services and others.&#xA;All rights reserved. This program and the accompanying materials&#xA;are made available under the terms of the Eclipse Public License v1.0&#xA;which accompanies this distribution, and is available at&#xA;http://www.eclipse.org/legal/epl-v10.html&#xA;&#xA;Contributors:&#xA;TCS - initial implementation for ModelMorf&#xA;E.D.Willink - alignment with evolved specification&#xA;*****************************************************************************"/>
+ <nestedPackage xsi:type="qvtr:RelationalTransformation" xmi:id="T.SeqToStm" name="SeqToStm"
+ superClass="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#T.ocl.OclElement">
+ <modelParameter xmi:id="qT.SeqToStm.seqDgm" name="seqDgm" usedPackage="SeqMM.emof.oclas#P.SeqMM"/>
+ <modelParameter xmi:id="qT.SeqToStm.stm" name="stm" usedPackage="StmcMM.emof.oclas#P.StmcMM"/>
+ <rule xsi:type="qvtr:Relation" name="InteractionToStateMachine" isTopLevel="true">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.SeqToStm.InteractionToStateMachine.seqDgm"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.SeqToStm.seqDgm"
+ rootVariable="#//@nestedPackage.0/@rule.0/@variable.1">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="SeqMM.emof.oclas#T.SeqMM.Interaction"
+ bindsTo="#//@nestedPackage.0/@rule.0/@variable.1" referredClass="SeqMM.emof.oclas#T.SeqMM.Interaction">
+ <part referredProperty="SeqMM.emof.oclas#p.SeqMM.Interaction.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.0/@variable.0"/>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.SeqToStm.InteractionToStateMachine.stm"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.SeqToStm.stm" rootVariable="#//@nestedPackage.0/@rule.0/@variable.2">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="StmcMM.emof.oclas#T.StmcMM.StateMachine"
+ bindsTo="#//@nestedPackage.0/@rule.0/@variable.2" referredClass="StmcMM.emof.oclas#T.StmcMM.StateMachine">
+ <part referredProperty="StmcMM.emof.oclas#p.StmcMM.StateMachine.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.0/@variable.0"/>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="sn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="i" type="SeqMM.emof.oclas#T.SeqMM.Interaction"/>
+ <variable name="s" type="StmcMM.emof.oclas#T.StmcMM.StateMachine"/>
+ </rule>
+ <rule xsi:type="qvtr:Relation" name="StateToState" isTopLevel="true">
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.SeqToStm.StateToState.seqDgm"
+ isCheckable="true" isEnforceable="false" typedModel="#qT.SeqToStm.seqDgm"
+ rootVariable="#//@nestedPackage.0/@rule.1/@variable.1">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="SeqMM.emof.oclas#T.SeqMM.State"
+ bindsTo="#//@nestedPackage.0/@rule.1/@variable.1" referredClass="SeqMM.emof.oclas#T.SeqMM.State">
+ <part referredProperty="SeqMM.emof.oclas#p.SeqMM.State.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.1/@variable.0"/>
+ </part>
+ <part referredProperty="SeqMM.emof.oclas#p.SeqMM.State.lifeline">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="SeqMM.emof.oclas#T.SeqMM.LifeLine"
+ bindsTo="#//@nestedPackage.0/@rule.1/@variable.2" referredClass="SeqMM.emof.oclas#T.SeqMM.LifeLine">
+ <part referredProperty="SeqMM.emof.oclas#p.SeqMM.LifeLine.interaction">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="SeqMM.emof.oclas#T.SeqMM.Interaction"
+ bindsTo="#//@nestedPackage.0/@rule.1/@variable.3" referredClass="SeqMM.emof.oclas#T.SeqMM.Interaction"/>
+ </part>
+ </value>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <domain xsi:type="qvtr:RelationDomain" xmi:id="qD.SeqToStm.StateToState.stm"
+ isCheckable="true" isEnforceable="true" typedModel="#qT.SeqToStm.stm" rootVariable="#//@nestedPackage.0/@rule.1/@variable.4">
+ <pattern>
+ <templateExpression xsi:type="qvtt:ObjectTemplateExp" type="StmcMM.emof.oclas#T.StmcMM.State"
+ bindsTo="#//@nestedPackage.0/@rule.1/@variable.4" referredClass="StmcMM.emof.oclas#T.StmcMM.State">
+ <part referredProperty="StmcMM.emof.oclas#p.StmcMM.State.name">
+ <value xsi:type="pivot:VariableExp" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"
+ referredVariable="#//@nestedPackage.0/@rule.1/@variable.0"/>
+ </part>
+ <part referredProperty="StmcMM.emof.oclas#p.StmcMM.State.owner">
+ <value xsi:type="qvtt:ObjectTemplateExp" type="StmcMM.emof.oclas#T.StmcMM.StateMachine"
+ bindsTo="#//@nestedPackage.0/@rule.1/@variable.5" referredClass="StmcMM.emof.oclas#T.StmcMM.StateMachine"/>
+ </part>
+ </templateExpression>
+ </pattern>
+ </domain>
+ <variable name="sn" isRequired="false" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#String"/>
+ <variable name="st1" type="SeqMM.emof.oclas#T.SeqMM.State"/>
+ <variable name="l" type="SeqMM.emof.oclas#T.SeqMM.LifeLine"/>
+ <variable name="i" type="SeqMM.emof.oclas#T.SeqMM.Interaction"/>
+ <variable name="st2" type="StmcMM.emof.oclas#T.StmcMM.State"/>
+ <variable name="s" type="StmcMM.emof.oclas#T.StmcMM.StateMachine"/>
+ <when>
+ <predicate>
+ <conditionExpression xsi:type="qvtr:RelationCallExp" type="http://www.eclipse.org/ocl/3.1.0/OCL.oclstdlib.oclas#Boolean"
+ referredRelation="#//@nestedPackage.0/@rule.0">
+ <argument xsi:type="pivot:VariableExp" type="SeqMM.emof.oclas#T.SeqMM.Interaction"
+ referredVariable="#//@nestedPackage.0/@rule.1/@variable.3"/>
+ <argument xsi:type="pivot:VariableExp" type="StmcMM.emof.oclas#T.StmcMM.StateMachine"
+ referredVariable="#//@nestedPackage.0/@rule.1/@variable.5"/>
+ </conditionExpression>
+ </predicate>
+ </when>
+ </rule>
+ <ownedKey identifies="StmcMM.emof.oclas#T.StmcMM.StateMachine" part="StmcMM.emof.oclas#p.StmcMM.StateMachine.name"/>
+ <ownedKey identifies="StmcMM.emof.oclas#T.StmcMM.State" part="StmcMM.emof.oclas#p.StmcMM.State.name StmcMM.emof.oclas#p.StmcMM.State.owner"/>
+ <ownedKey identifies="StmcMM.emof.oclas#T.StmcMM.Transition" part="StmcMM.emof.oclas#p.StmcMM.Transition.name StmcMM.emof.oclas#p.StmcMM.Transition.owner StmcMM.emof.oclas#p.StmcMM.Transition.fromState StmcMM.emof.oclas#p.StmcMM.Transition.toState"/>
+ <ownedKey identifies="StmcMM.emof.oclas#T.StmcMM.SendMsg" part="StmcMM.emof.oclas#p.StmcMM.SendMsg.message"/>
+ <ownedKey identifies="StmcMM.emof.oclas#T.StmcMM.Message" part="StmcMM.emof.oclas#p.StmcMM.Message.messageId"/>
+ </nestedPackage>
+ <unit name="SeqMM" usedPackage="pivot:Package SeqMM.emof.oclas#P.SeqMM">
+ <ownedComment body="*****************************************************************************&#xA;Copyright (c) 2007,2008 Tata Consultancy Services and others.&#xA;All rights reserved. This program and the accompanying materials&#xA;are made available under the terms of the Eclipse Public License v1.0&#xA;which accompanies this distribution, and is available at&#xA;http://www.eclipse.org/legal/epl-v10.html&#xA;&#xA;Contributors:&#xA;TCS - initial implementation for ModelMorf&#xA;E.D.Willink - alignment with evolved specification&#xA;*****************************************************************************"/>
+ </unit>
+ <unit name="StmcMM" usedPackage="pivot:Package StmcMM.emof.oclas#P.StmcMM"/>
+</qvtr:RelationModel>
diff --git a/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/seqtostm/StmcMM.emof b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/seqtostm/StmcMM.emof
new file mode 100644
index 000000000..f39c5c42c
--- /dev/null
+++ b/tests/org.eclipse.qvtd.build.qvtrtoqvtc.tests/src/org/eclipse/qvtd/build/qvtrtoqvtc/tests/seqtostm/StmcMM.emof
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2007,2008 Tata Consultancy Services and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * TCS - initial implementation for ModelMorf
+ * E.D.Willink - alignment with evolved specification
+-->
+<emof:Package xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:emof="http://schema.omg.org/spec/MOF/2.0/emof.xml" xmi:id="StmcMM"
+ name="StmcMM" uri="StmcMM">
+ <ownedType xmi:type="emof:Class" xmi:id="StmcMM.Dummy" name="Dummy">
+ <ownedAttribute xmi:id="StmcMM.Dummy.containsStateMachine" name="containsStateMachine"
+ upper="*" type="StmcMM.StateMachine" isComposite="true"/>
+ <ownedAttribute xmi:id="StmcMM.Dummy.containsMessage" name="containsMessage" upper="*"
+ type="StmcMM.Message" isComposite="true"/>
+ </ownedType>
+ <ownedType xmi:type="emof:Class" xmi:id="StmcMM.StateMachine" name="StateMachine">
+ <ownedAttribute xmi:id="StmcMM.StateMachine.name" name="name">
+ <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/MOF/2.0/emof.xml#String"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="StmcMM.StateMachine.state" name="state" upper="*" type="StmcMM.State"
+ isComposite="true" opposite="StmcMM.State.owner"/>
+ <ownedAttribute xmi:id="StmcMM.StateMachine.transition" name="transition" upper="*"
+ type="StmcMM.Transition" isComposite="true" opposite="StmcMM.Transition.owner"/>
+ </ownedType>
+ <ownedType xmi:type="emof:Class" xmi:id="StmcMM.State" name="State">
+ <ownedAttribute xmi:id="StmcMM.State.name" name="name">
+ <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/MOF/2.0/emof.xml#String"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="StmcMM.State.owner" name="owner" lower="1" type="StmcMM.StateMachine"
+ opposite="StmcMM.StateMachine.state"/>
+ <ownedAttribute xmi:id="StmcMM.State.inTransition" name="inTransition" upper="*"
+ type="StmcMM.Transition" opposite="StmcMM.Transition.toState"/>
+ <ownedAttribute xmi:id="StmcMM.State.outTransition" name="outTransition" upper="*"
+ type="StmcMM.Transition" opposite="StmcMM.Transition.fromState"/>
+ </ownedType>
+ <ownedType xmi:type="emof:Class" xmi:id="StmcMM.Transition" name="Transition">
+ <ownedAttribute xmi:id="StmcMM.Transition.name" name="name">
+ <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/MOF/2.0/emof.xml#String"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="StmcMM.Transition.guard" name="guard">
+ <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/MOF/2.0/emof.xml#String"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="StmcMM.Transition.owner" name="owner" lower="1" type="StmcMM.StateMachine"
+ opposite="StmcMM.StateMachine.transition"/>
+ <ownedAttribute xmi:id="StmcMM.Transition.toState" name="toState" lower="1" type="StmcMM.State"
+ opposite="StmcMM.State.inTransition"/>
+ <ownedAttribute xmi:id="StmcMM.Transition.fromState" name="fromState" lower="1"
+ type="StmcMM.State" opposite="StmcMM.State.outTransition"/>
+ <ownedAttribute xmi:id="StmcMM.Transition.trigger" name="trigger" type="StmcMM.Event"
+ isComposite="true"/>
+ <ownedAttribute xmi:id="StmcMM.Transition.action" name="action" type="StmcMM.Action"
+ isComposite="true"/>
+ </ownedType>
+ <ownedType xmi:type="emof:Class" xmi:id="StmcMM.Event" name="Event">
+ <ownedAttribute xmi:id="StmcMM.Event.name" name="name">
+ <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/MOF/2.0/emof.xml#String"/>
+ </ownedAttribute>
+ </ownedType>
+ <ownedType xmi:type="emof:Class" xmi:id="StmcMM.Action" name="Action">
+ <ownedAttribute xmi:id="StmcMM.Action.name" name="name">
+ <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/MOF/2.0/emof.xml#String"/>
+ </ownedAttribute>
+ </ownedType>
+ <ownedType xmi:type="emof:Class" xmi:id="StmcMM.Message" name="Message">
+ <ownedAttribute xmi:id="StmcMM.Message.messageId" name="messageId">
+ <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/MOF/2.0/emof.xml#String"/>
+ </ownedAttribute>
+ </ownedType>
+ <ownedType xmi:type="emof:Class" xmi:id="StmcMM.SendMsg" name="SendMsg" superClass="StmcMM.Action">
+ <ownedAttribute xmi:id="StmcMM.SendMsg.message" name="message" lower="1" type="StmcMM.Message"/>
+ </ownedType>
+</emof:Package>

Back to the top