Experimental Metamodel Clause Samples
Experimental Metamodel. This section contains an experimental formalisation of a metamodel of ordered class models, as a means of answering the question, “what exactly is an ordered class model?” The graph and set theoretical definitions above are unable to answer this question because they elide certain information. As the reader will see, an ordered class model is simply an object of a particular type. Recall that a metamodel is a language for describing the structure and behaviour of particular kinds of models. In this case, the metamodel is a “model of ordered class models”. The metamodel of ordered class models is shown in Figure 3.22, and comprises five de- pendent types: Model(Mo), Class(Cl), Attribute(At), Type(Ty) and Relation(Re). Briefly, an ordered class model is rooted at a particular class; a class has zero or more attributes; an attribute has a type; a class also has zero or more relations; and a relation targets a class. Define the metamodel to be mutually inductive, so that there are no loops at the model level. The formation and introduction rules of each type are given below. The elimination and computation rules are intentionally undefined (they serve no purpose here). Type Type(Ty) The introduction rule asserts that @Ty X is an encoding of type X. X : U0 (Ty F ) X : U0 (Ty I) Ty X : U1 @Ty X : Ty X Model(Mo) X : U0 root : ▇▇ ▇ Class(Cl) X : U0 attributes : [ At X ] relations : [ Re X ] Attribute(At) X : U0 Y : U Relation(Re)† X : U0 Y : U0 attribute : X → Y relation[@1 ] : X → Y type : Ty Y relation[@2 ] : X → [ Y ] target : Cl Y Type(Ty) X : U0 Type Attribute(At) The introduction rule asserts that @At X Y attribute type is an en- coding of an attribute of class X whose type is Y , if attribute is a function that takes X to Y , and type is an encoding of type Y . X : U0 (A F ) X : U0 Y : U0 attribute : X → Y type : Ty Y (A I) At X : U1 t @At X Y attribute type : At X t Type Class(Cl) The introduction rule asserts that @Cl X attributes relations is an en- coding of class X, if attributes is a list of encodings of attributes of X, and relations is a list of encodings of relations originating from X. X : U0 (C F ) X : U0 attributes : [ At X ] relations : [ Re X ] (C I) Cl X : U1 l @Cl X attributes relations : Cl X l Re Type Relation(Re) The first introduction rule asserts that @1 encoding of a one-valued relation between X and Y , if relation is a function that takes X to Y , and target is an encoding of target class Y . The second introduction rule asserts some...
