<?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="test" nsURI="http://de.ubt.ai1.mvmt.test.graph/test/" nsPrefix="de.ubt.ai1.mvmt.test.graph">
<eClassifiers xsi:type="ecore:EClass" name="Graph">
<eStructuralFeatures xsi:type="ecore:EReference" name="nodes" upperBound="-1"
eType="#//Node" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Node"/>
</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="graph" nsURI="http://de.ubt.ai1.mvmt.test.graph/test/" nsPrefix="de.ubt.ai1.mvmt.test.graph">
<eClassifiers xsi:type="ecore:EClass" name="Graph">
<eStructuralFeatures xsi:type="ecore:EReference" name="nodes" upperBound="-1"
eType="//@eClassifiers.1" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Node"/>
</ecore:EPackage>
import ecoreMM : 'Ecore.ecore'::ecore;
import sqlMM : 'SQL.ecore'::sql;
/**
* Transform a hierarchical StateMachine into a flat StateMachine.
*/
transformation ecore2sql::Ecore2SQL(ecore:ecoreMM, sql:sqlMM) {
-- Package
top relation Package2Schema {
domain ecore ecorePackage : EPackage {
name = ePackageName: String{}
};
enforce domain sql sqlSchema : Schema {
name = ePackageName
};
}
-- Class
top relation Class2Table {
domain ecore ecoreClass : EClassifier {
name = eClassName : String{},
ePackage = ePackage : ecore::EPackage{}
};
enforce domain sql sqlTable : Table {
name = eClassName,
owningSchema = owningSchema : sql::Schema{}
};
when {
Package2Schema(ePackage, owningSchema);
}
}
}