package dbtoxmlweavingmm { -- Model class. Distinguish between left and right references class DBModel extends WModel { reference leftModel container subsets wovenModel: ModelRefXMILeft; reference rightModel container subsets wovenModel: ModelRefXMIRight; } -- Model references. To keep track of woven models abstract class ModelRefXMI extends WModelRef{ attribute type : String; reference ownedElementRef[0-*] container : ElementRefXMI oppositeOf modelRef; } class ModelRefXMILeft extends ModelRefXMI { } class ModelRefXMIRight extends ModelRefXMI { } -- references to each woven element class ElementRefXMI extends WElementRef{ reference modelRef: WModelRef oppositeOf ownedElementRef; } class RootElement extends WLink { } ------------------------------------------- -- indicates the base element link. It will be used class ElementLink extends WLink { } ------------------------------------------- -- equality semantics class Equals extends WLink { } class Left extends WLinkEnd{ } class Right extends WLinkEnd{ } ------------------------------------------- -- nested semantics class Nested extends WLink { } class Parent extends WLinkEnd{ } class Child extends WLink{ } ------------------------------------------- -- foreign key semantics class FK extends WLinkEnd { reference sourceElement container : source; reference FKAttribute container : FKAttr; reference IDAttribute container : IDAttr; } class source extends WLinkEnd{ } class FKAttr extends WLinkEnd{ } class IDAttr extends WLinkEnd{ } }