<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>A Foundation for Multi-Level Modelling</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Tony Clark</string-name>
          <email>t.n.clark@mdx.ac.uk</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Cesar Gonzalez-Perez</string-name>
          <email>cesar.gonzalez-perez@incipit.csic.es</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Brian Henderson-Sellers</string-name>
          <email>brian.henderson-sellers@uts.edu.au</email>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Institute of Heritage Sciences Santiago de Compostela</institution>
          ,
          <country country="ES">Spain</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Middlesex University</institution>
          ,
          <addr-line>London</addr-line>
          ,
          <country country="UK">UK</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>University of Technology</institution>
          ,
          <addr-line>Sydney</addr-line>
          ,
          <country country="AU">Australia</country>
        </aff>
      </contrib-group>
      <fpage>43</fpage>
      <lpage>52</lpage>
      <abstract>
        <p>Multi-level modelling allows types and instances to be mixed in the same model, however there are several proposals for how metamodels can support this. This paper proposes a meta-circular basis for meta-modelling and shows how it supports two leading approaches to multi-level modelling.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        Contemporary and future engineering of information systems place an increasing
emphasis on the use of models, either directly to aid design and implementation,
in a more formal sense for code generation or as the backbone to model-driven
engineering (MDE) [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ]. Models must be described using a language that itself
may be defined in many ways but typically using a meta-model e.g., [
        <xref ref-type="bibr" rid="ref20 ref26">26, 20</xref>
        ].
That meta-model must itself be defined, by a meta-meta-model. Together with
the instances conformant to the model, this leads to an identification of four
abstraction levels of interest to the modeller and meta-modeller. Although in use
for almost two decades, a four-layer architecture like that of the Object
Management Group (OMG) raises some concerns both theoretically and pragmatically;
a prime problem being the use of strict meta-modelling [
        <xref ref-type="bibr" rid="ref4 ref5">5, 4</xref>
        ] that constrains the
instance-of relation to only be permitted between pairs of conterminous layers
and never within a layer (see also [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]). This led several researchers (e.g., [
        <xref ref-type="bibr" rid="ref6 ref7">7, 6</xref>
        ])
to seek a way of describing models and modelling languages without the use of
this ‘strict meta-modelling’ hierarchy of the OMG.
      </p>
      <p>
        A foundation for meta-modelling should be unifying and complete in the
sense that it supports the development of both general-purpose and
domainspecific languages and also integrates their representation so that tools can work
across multiple languages. Leading approaches include: strict meta-modelling:
The OMG strict meta-modelling architecture has been criticized, especially when
applied to processes and methodologies (see summary in [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]) since the
traditional strict meta-modelling approach is unable to support enactment e.g., [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ];
it defines attributes at level M2, thus giving them values at M1 by virtue of the
prevailing type-instance semantics, when what is actually needed is values at
M0. This enactment support is provided by the architecture used by ISO/IEC
24744 but at the expense of relying on power-type patterns, which do not accord
with the philosophy of strict meta-modelling. clabjects: Potency is associated
with the notion of deep instantiation, [
        <xref ref-type="bibr" rid="ref12 ref13 ref8">8, 12, 13</xref>
        ], and introduces the idea of an
entity with both a class facet and an object fact, entity given the name clabject
[
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. OCA: Two different kinds of meta-model structures have been identified:
ontological meta-modelling in contrast to the linguistic meta-modelling utilized
in a strict meta-modelling architecture. This was later called the Orthogonal
Classification Architecture (OCA) [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. In [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] we describe these ideas and relate
them to some more recent concerns raised by the application of language use
theory to this approach. More recently, Atkinson and colleagues have extended the
OCA in their description of the Pan Level Model (PLM) and the Level-agnostic
Modeling Language (LML) [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. powertypes: The need to provide access to, and
control over, the meta-types of elements in a model when designing languages led
to proposals for powertypes [
        <xref ref-type="bibr" rid="ref17 ref23">17, 23</xref>
        ]. This is a methodological approach that uses
standard classes both conventionally and as meta-classes by disciplined use of
instance-of associations. The approach allows the modeller to control attribute
definitions at M2 that affect the properties in model elements at M1.
      </p>
      <p>Our claim is that none of the approaches above are complete as a basis
for meta-modelling. In particular, such a basis must achieve the following
features: meta-circularity: Self description is key to achieving virtually all of the
desirable features for language engineering. Just as it is possible to embed a
λ-calculus interpreter in itself and thereby characterize an infinite tower of
operational languages, we seek to construct a self describing basis for an infinite
tower of modelling languages. uniformity: Any basis for meta-modelling that
is self-describing implies a precisely defined relation between representations for
type and instance. A system that achieves the conflation of these representations,
i.e., uses the identity relationship, is minimal in the family of such relationships.
Furthermore, a uniform representation is essential if we are not to encounter
limitations on the type of languages that can be defined, for example where we need
to mix instances and types. Therefore, we seek to provide a single representation
for types and instances at any level. extensibility: We assume that any family
of modelling languages will use type-based extension (sub-classes, inheritance,
etc.), and that new languages are based on extending existing languages.
Metacircularity and extensibility implies that languages can be extended at both type
and meta-type levels and therefore the question arises as to whether there is a
limit to the levels over which extension can be applied. We seek a basis that
places no restriction on the number of levels of both extensibility and
instantiation. views: Languages should support multiple modes of interaction that are
defined at the meta-level. Although we will use multiple language views, we will
not consider this aspect further.</p>
      <p>
        Our approach (subsuming those above) is to use simple objects together
with two simple relations: type A relation that exists between every object
and its class and can be applied an arbitrary number of times to define the
meta-classifications of instance, class and meta-class; extension A relation that
exists between classes that provides a minimal basis for incremental addition of
features. The approach is based on existing proposals for meta-classes provided
by languages such as Smalltalk [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] and ObjVLisp [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. Although Smalltalk was
the first language to introduce meta-classes (and thereby three-levels of
metaclass, class and instance), each meta-class is restricted to having a single instance
which severely limits its use as the basis for language engineering where
metaproperties are reused across multiple languages.
      </p>
      <p>The approach to object classification and
the instance-of relation is shown in Fig. 1
where circles represent sub-sets of the set O
of objects. Consider the set A that denotes
a set of objects representing animals. In
order for an element of A to be well-formed, it
must have an instance-of link to an object in
the set C of all classes. Note that elements of
C are objects (everything is an object), but
they are objects that satisfy some criteria for
class-hood. Since the element of C that
represents the class Animal is itself an object, it
Fig. 1. Object Classifications As must have an instance-of link to an object that
Sub-Sets of Object represents its class. Such an object is a
metaclass and is a member of the set of objects M (perhaps the class called Class). A
meta-class is just an object that satisfies the constraint for membership of M.
This means that it must have an instance-of link to a meta-meta-class in MM. It
should be stressed at this point, that there is no limit to the instance-of regress.
In addition to objects that satisfy Animal-hood. There are objects that are used
to group objects: snapshots that are members of the set S. Snapshots contain
objects that are all instances of related classes: packages that are members of the
set P. Finally, classes can be related by extension so that there are two classes
Animal and Herbivore in C that designate the rules for membership of the sets
A and H. Of course, since every element of M is also in C, the extension relation
can be defined between meta-classes that will designate different sub-sets of C.</p>
      <p>Our basis for meta-modelling is defined as a self-describing object-oriented
kernel. The Kernel is essentially a logic. However, unlike a traditional logic
that consists of boolean valued formulas whose sub-expressions denote values
drawn from a collection of predefined types, the Kernel can only denote
objects. Some objects are designated classes because they conform to a particular
object-interface that includes boolean valued expressions (or constraints) that
characterize objects designated as well-formed instances of the class. Such a
selfdescribing logic might lead to doubts related to Russell’s Paradox, although the
use of types and identities as described below, together with an implementation
of the approach that supports a collection of real-world applications (including
itself), gives us confidence that this is not a problem. Our claim is that this
approach is novel and that it subsumes existing approaches to meta-modelling.
Our contribution is the definition of a meta-circular foundation for model-based
language engineering in the form of a kernel language that is validated in terms
of an implementation as a toolkit that has been used for a variety of real-world
applications. In addition we show that other approaches to multi-level modelling
can be represented in the Kernel.
2</p>
    </sec>
    <sec id="sec-2">
      <title>A Meta-Modelling Kernel</title>
      <p>
        Our proposal is to set up a system whereby everything is an object [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ] and
where a simple set of rules governs the ability to construct configurations of
objects that constitute self-describing languages. The system consists of an
objectrepresentation and then sugarings that are convenient language structures
defined to de-sugar into the basic representation.
      </p>
      <p>
        Figure 2(a) shows the proposed kernel language as a diagram.
Fundamentally, everything is an object and a partial view of the Kernel as a collection of
objects and slots is shown in figure 2(b). An object has a unique id, some slots,
and a type. The type of an object is a class. Classes are organised into packages
whose instances are snapshots that are assemblies of objects. Since classes are
just objects that conform to some structural conditions, packages can be
similarly viewed as snapshots with appropriate conditions. Collections of objects are
organised as sequences in terms of pairs and Null. Since types are always
implemented as classes, there is a special class called Listof whose instances are lists.
There is no need to special types of atomic value such as integers and booleans
because we can designate special objects via their identities as being members
of these data types. Expressions are objects that can be asked to evaluate
themselves in a supplied context. Constraints are special types of expressions that
always return boolean values. Constraints are important because they are used
in classes to classify objects that are considered to be instances. Classes have
operations, that are objects used to handle messages sent to instances of the class.
Note that there is no notion of side-effect, operations are purely functional.
(a) Kernel as a Class Diagram
(b) Kernel as an Object Diagram
Section 1 describes a list of features that we claim to be characteristic for any
language that is used as a basis for meta-modelling. We have introduced such a
language and used it to build a model of itself. This section analyses the Kernel
language with respect to the characteristic features: type: In Kernel everything
is an object and all objects have an intrinsic type property. meta-circularity:
This property is essential for multi-level modelling and in order to be able develop
tools (such as serializers) that are language-level agnostic [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ]. The XModeler
tool can be shown to establish that Kernel.?(Kernel). uniformity: We have used
a single representation (with a small number of externally defined conventions
and rules) for all data in Kernel. extensibility: Extension is supported through
class relationships that are then used by constraints in order to place conditions
class Object {
id : Object ;
type : Class ;
slots : [ Slot ]
constraints { type .?( self ) }
operations {
dot (n) = slots .⇐(
λ(n’ 7→ _)n=n’,λ(_ 7→ v) v, error )
send (n, args ) =
type . ops ().⇐(
λ(n’ 7→ ( Operation )[ args 7→ args ’])
n=n’ and # args = #args ’,
λ(_ 7→ f) f. invoke (self , args ),
error )
}
class Slot { name : Str ; value : Object }
class Operation {
me : Str ;
env : [ Slot ];
args : [ Arg ];
body : Exp
operations {
invoke ( target , values ) =
body . eval ( env +[ ’ self ’ 7→ target ] +
[me 7→ self ] + target . slots +
target . type . ops () +
[a 7→ v | (a,v) ← args * values ])
}
class Listof extends Class {
etype : Class ;
operations {
?(o) = list ?(o) and
      </p>
      <p>o.∀(λ(x) etype .?(x))
}
class Snapshot extends Object {
package : Package ;
objects : [ Object ];
bindings : [ Slot ]
constraints {
package .?( self );
bindings .∀(λ(b) objects .3(b. value ))
}
operations {
::(k,d) = bindings .⇐(
λ(s)s. name =k,λ(s)s. value ,d)
}
}
class Class {
name : Str ;
supers : [ Class ];
attributes : [ Attribute ];
operations : [ Binding ];
constraints : [ Constraint ]
operations {
supers () = [ self ] +
[c | p ← supers ;</p>
      <p>c ← p. supers ()]. remDups ()
⇑(c) = supers ().3(c)
atts () =
[a | c ← supers () ,a ← c. attributes ]
ops () =
[b | c ← supers () ,b ← c.operations]
cond () =</p>
      <p>[a | c ← supers () ,a ← c.constraints]
::(n,d) =
atts ().⇐(λ(n’ 7→ a)n ’=n,λ(n 7→ a)a,</p>
      <p>ops ().⇐(λ(n’ 7→ o)n ’=n,λ(n 7→ o)o,d))
?(o) = o. type .⇑( self ) and
atts ().∀(λ(a)o. slots .∃(λ(s)
s. name = a. name and
a. type .?(s. value ))) and
cond ().∀(λ(c) c. eval ([ self 7→ o] +
[s. name 7→ s. value | s ← o. slots ]))
}
}
class Package extends Snapshot , Class {
constraints {
objects .∀( Class ?);
attributes .∀(λ(a) objects .3(a. atype ));
parents .∀(λ(p) p. type .⇑( Package ))
}
operations {
::(n,d) = obj ().⇐(λ(o)o.n=n,λ(o)o,d)
obj () = objects +
[p. objects | p ← parents ]. flatten ()
⇑(p) = objects .∀(λ(c) obj ().∃(λ(c ’)c.⇑(c ’)))
?(o) = o. type .⇑( Snapshot ) and
o. package .⇑( self ) and
o. objects .∀(λ(o)
objects .∃(λ(c) c.?(o ))) and</p>
      <p>Class ::?( intern (self ,o. slots ))
}
}
class Pair { head : Object ; tail : Object }
class Nulll {}
class Constraint extends Exp {}
class Arg { name : Str }
on objects that are instances of a sub-class. The definitions are Class::? and
Package::? in Fig. 3.</p>
      <p>Our claim is that the Kernel is a suitable basis for multi-level modelling. In
order to validate this claim we present the definition of two different languages,
each based on independent approaches, both defined in the Kernel. Models
written in the languages are shown in Fig. 4.</p>
      <p>
        The model in figure 4(a) shows the use of type facets that allow classes to
have properties. These can be implemented by including a potency as part of
an attribute definition. The potency is an integer value indicating the number
of type-levels (3 are shown in the model) spanned by the relationship between
(a) A Use of Potency (in [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ])
      </p>
      <p>Fig. 4. Two Approaches to Multi-Level Modelling
an attribute and its corresponding slots. The model defines a language (Domain
Metatypes) of engines. The class Engine defines a type facet called max_speed
that results in a slot at the domain type (model) level, and an instance facet
called inertia that becomes a slot at a remove of two type-levels.</p>
      <p>The model in figure 4(b) shows the power-type pattern where a class (in this
case Vehicle) is classified by another class (VehicleKind). Instances of VehicleKind
are used to partition subclasses of Vehicle as shown in the ellipse, forming a
clabject. The result is that an object is contributing to the type-level information in
a class that will eventually affect instances of the class.</p>
      <p>Each language definition takes the form of a package that is both an instance
and an extension of Kernel. By the definition of Package::?, an instance of a
package P should be a snapshot whose contents are all instances of classes in P.
By the definition of Package::extends?, a package P extends a package Q when
every class in P extends some class in (or inherited by) Q. Therefore, by extending
and instantiating Kernel a package is a well-formed language definition in its
own right, that can, by the definition of extension, modify the basic definition
of Class::?. Such a modification might place extra conditions on instance-hood,
or even relax existing conditions.</p>
      <p>Fig. 5 contains the definition for the language and models shown in figure
4(a). The class CAtt extends Attribute with an attribute for potency-level. The
class CClass modifies atts so that it gathers together all attributes that apply
to this level. This is achieved using a counter that is incremented when the
type-level is traversed. A concrete-syntax for potency-level in attributes is used
in the definition of the package DomainMetaTypes, and slots are permitted in
class definitions due to potency-levels becoming 0 in DomainTypes. The snapshot
DomainInstances contains a single object whose slots correspond to attributes
from different type-levels as defined by their respective potency-levels.</p>
      <p>
        Fig. 6 contains the definition for the language and models shown in figure
4(b). The meta-class PowClass defines an attribute classifier and the constraint
on PartClass requires that all its descriptor objects are instances of the
classifier inherited by a parent power-class. The package Vehicles contains a single
power-class Vehicle that is classified by VehicleKind and a partitioned-class Boat
package CKernel : Kernel extends Kernel { package DomainMetaTypes : CKernel {
class CAtt extends Attribute { class Engine : CClass extends CClass {
level : Integer ; inertia [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]: Float ;
max_speed [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]: Integer
}
class CClass extends Class {
operations {
atts () = catts (1 , self )
catts (n,c=(_,c )[]) = []
catts (n,c) =
[a | a ← c. atts () ,
      </p>
      <p>
        ?a. type =CAtt ,a. level =n] +
catts (n+1 ,c. type )
}
constraints { atts .∀(λ(a)a. type = CAtt )}
}
snapshot DomainInstances : DomainTypes {
( DType )[ inertia7→0.28; ECU_version7→7.3]
}
class DieselEngine : CClass extends Engine {
preheat_time [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]: Float
}
class OttoEngine : CClass extends Engine {
ignition_alpha [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]: Float
}
package DomainTypes : DomainMetaTypes {
class DType : DieselEngine {
ECU_version [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]: Float ;
max_speed =5000;
preheat_time =1.5
that includes an instance of VehicleKind as its descriptor. The snapshot ABoat
is governed by the classes defined in the package Vehicles which in turn are
governed by the language PKernel therefore, ABoat is constrained by the clabject
Boat and Boat.descr.
guage engineering. We have reviewed the current proposals for such a basis and
argued that they are not optimal by providing a new language definition that is
self-describing and can be used to embed the competing approaches. The Kernel
language is simple and can be implemented as demonstrated by the XMF and
XModeler toolkit [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] that is capable of both describing and reasoning about
itself. The toolkit was reported as a leading technology for Software Engineering
[
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] and has been used for a variety of applications including modelling languages
for aerospace applications, telecoms applications [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], and is currently being used
to implement aspects of the MEMO enterprise modelling language [
        <xref ref-type="bibr" rid="ref14 ref24">24, 14</xref>
        ].
      </p>
      <p>
        In [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], the authors show how the OMG levels M0-M3 can be represented
on a single object-diagram. This allows OCL constraints to range over all levels
and thereby support clabjects and potency. This is consistent with our approach,
although OCL is just one of the languages that could be used with our approach
(as a view of models and constraints) and the authors of [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] do not claim to be
a foundation for model-based language engineering.
      </p>
      <p>Our intention is that the Kernel language defined in this article provides a
basis for ourselves and others to experiment with language definitions. Because
all such kernel-defined languages are based on a single object representation, it
is feasible to build a collection of tools that work against well defined sub-sets
of objects (as shown in figure 1) and thereby incrementally develop a shared
library.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>Achilleas</given-names>
            <surname>Achilleos</surname>
          </string-name>
          , Nektarios Georgalas, and
          <string-name>
            <given-names>Kun</given-names>
            <surname>Yang</surname>
          </string-name>
          .
          <article-title>An open source domainspecific tools framework to support model driven development of oss</article-title>
          .
          <source>In Model Driven Architecture-Foundations and Applications</source>
          , pages
          <fpage>1</fpage>
          -
          <lpage>16</lpage>
          . Springer,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>Anat</given-names>
            <surname>Aharoni</surname>
          </string-name>
          and
          <string-name>
            <given-names>Iris</given-names>
            <surname>Reinhartz-Berger</surname>
          </string-name>
          .
          <article-title>A domain engineering approach for situational method engineering</article-title>
          .
          <source>In Conceptual Modeling-ER</source>
          <year>2008</year>
          , pages
          <fpage>455</fpage>
          -
          <lpage>468</lpage>
          . Springer,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>Thomas</given-names>
            <surname>Aschauer</surname>
          </string-name>
          , Gerd Dauenhauer, and
          <string-name>
            <given-names>Wolfgang</given-names>
            <surname>Pree</surname>
          </string-name>
          .
          <article-title>Representation and traversal of large clabject models</article-title>
          .
          <source>In Model Driven Engineering Languages and Systems</source>
          , pages
          <fpage>17</fpage>
          -
          <lpage>31</lpage>
          . Springer,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>Colin</given-names>
            <surname>Atkinson</surname>
          </string-name>
          .
          <article-title>Meta-modelling for distributed object environments</article-title>
          .
          <source>In Enterprise Distributed Object Computing Workshop [1997]. EDOC'97. Proceedings. First International</source>
          , pages
          <fpage>90</fpage>
          -
          <lpage>101</lpage>
          . IEEE,
          <year>1997</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>Colin</given-names>
            <surname>Atkinson</surname>
          </string-name>
          .
          <article-title>Supporting and applying the UML conceptual framework</article-title>
          .
          <source>In The Unified Modeling Language. UML 98: Beyond the Notation</source>
          , pages
          <fpage>21</fpage>
          -
          <lpage>36</lpage>
          . Springer,
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>Colin</given-names>
            <surname>Atkinson</surname>
          </string-name>
          , Bastian Kennel, and Bjo¨rn Goß.
          <article-title>Supporting constructive and exploratory modes of modeling in multi-level ontologies</article-title>
          .
          <source>In Procs. 7th Int. Workshop on Semantic Web Enabled Software Engineering, Bonn (October</source>
          <volume>24</volume>
          ,
          <year>2011</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>Colin</given-names>
            <surname>Atkinson</surname>
          </string-name>
          , Bastian Kennel, and Bjo¨rn Goß.
          <article-title>The level-agnostic modeling language</article-title>
          .
          <source>In Software Language Engineering</source>
          , pages
          <fpage>266</fpage>
          -
          <lpage>275</lpage>
          . Springer,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>Colin</given-names>
            <surname>Atkinson</surname>
          </string-name>
          and
          <article-title>Thomas Ku¨hne. The essence of multilevel metamodeling</article-title>
          .
          <source>In UML 2001 The Unified Modeling Language. Modeling Languages, Concepts</source>
          ,
          <source>and Tools</source>
          , pages
          <fpage>19</fpage>
          -
          <lpage>33</lpage>
          . Springer,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>Colin</given-names>
            <surname>Atkinson</surname>
          </string-name>
          and
          <article-title>Thomas Ku¨hne. Concepts for comparing modeling tool architectures</article-title>
          .
          <source>In Model Driven Engineering Languages and Systems</source>
          , pages
          <fpage>398</fpage>
          -
          <lpage>413</lpage>
          . Springer,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Jean-Pierre Briot</surname>
            and
            <given-names>Pierre</given-names>
          </string-name>
          <string-name>
            <surname>Cointe</surname>
          </string-name>
          .
          <article-title>The objvlisp model: Definition of a uniform, reflexive and extensible object oriented language</article-title>
          .
          <source>In ECAI</source>
          , pages
          <fpage>225</fpage>
          -
          <lpage>232</lpage>
          ,
          <year>1986</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <given-names>Tony</given-names>
            <surname>Clark</surname>
          </string-name>
          and
          <string-name>
            <given-names>James</given-names>
            <surname>Willans</surname>
          </string-name>
          .
          <article-title>Software language engineering with xmf and xmodeler</article-title>
          .
          <source>Formal and Practical Aspects of Domain Specific Languages: Recent Developments. IGI Global, USA</source>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12. Juan De Lara and
          <string-name>
            <given-names>Esther</given-names>
            <surname>Guerra</surname>
          </string-name>
          .
          <article-title>Deep meta-modelling with metadepth</article-title>
          . In Objects, Models, Components, Patterns, pages
          <fpage>1</fpage>
          -
          <lpage>20</lpage>
          . Springer,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13. Juan de Lara, Esther Guerra, Ruth Cobos, and
          <string-name>
            <surname>Jaime</surname>
          </string-name>
          Moreno-Llorena.
          <article-title>Extending deep meta-modelling for practical model-driven engineering</article-title>
          .
          <source>The Computer Journal, page bxs144</source>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Ulrich</surname>
          </string-name>
          <article-title>Frank. Multi-perspective enterprise modeling: foundational concepts, prospects and future research challenges</article-title>
          .
          <source>Software and System Modeling</source>
          ,
          <volume>13</volume>
          (
          <issue>3</issue>
          ):
          <fpage>941</fpage>
          -
          <lpage>962</lpage>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Martin</surname>
            <given-names>Gogolla</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jean-Marie Favre</surname>
          </string-name>
          , and Fabian Bu¨ttner.
          <source>On squeezing m0</source>
          ,
          <year>m1</year>
          , m2, and
          <article-title>m3 into a single object diagram</article-title>
          .
          <source>Proceedings Tool-Support for OCL and Related Formalisms-Needs and Trends</source>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <given-names>Adele</given-names>
            <surname>Goldberg</surname>
          </string-name>
          and
          <string-name>
            <given-names>David</given-names>
            <surname>Robson</surname>
          </string-name>
          . Smalltalk-
          <volume>80</volume>
          :
          <article-title>the language and its implementation. Addison-Wesley Longman Publishing Co</article-title>
          ., Inc.,
          <year>1983</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Cesar</surname>
            Gonzalez-Perez and
            <given-names>Brian</given-names>
          </string-name>
          <string-name>
            <surname>Henderson-Sellers</surname>
          </string-name>
          .
          <article-title>A powertype-based metamodelling framework</article-title>
          .
          <source>Software &amp; Systems Modeling</source>
          ,
          <volume>5</volume>
          (
          <issue>1</issue>
          ):
          <fpage>72</fpage>
          -
          <lpage>90</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Cesar</surname>
          </string-name>
          Gonzalez-Perez and
          <article-title>Brian Henderson-Sellers. Metamodelling for software engineering</article-title>
          . Wiley Publishing,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Simon</surname>
            <given-names>Helsen</given-names>
          </string-name>
          , Arthur Ryman, and
          <string-name>
            <given-names>Diomidis</given-names>
            <surname>Spinellis</surname>
          </string-name>
          .
          <article-title>Where's my jetpack? Software</article-title>
          , IEEE,
          <volume>25</volume>
          (
          <issue>5</issue>
          ):
          <fpage>18</fpage>
          -
          <lpage>21</lpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Brian</surname>
          </string-name>
          Henderson-Sellers.
          <article-title>On the mathematics of modelling, metamodelling, ontologies and modelling languages</article-title>
          . Springer,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Brian</surname>
            Henderson-Sellers,
            <given-names>Tony</given-names>
          </string-name>
          <string-name>
            <surname>Clark</surname>
          </string-name>
          , and
          <string-name>
            <surname>Cesar</surname>
          </string-name>
          Gonzalez-Perez.
          <article-title>On the search for a level-agnostic modelling language</article-title>
          . In Camille Salinesi, Moira C. Norrie, and Oscar Pastor, editors,
          <source>CAiSE</source>
          , volume
          <volume>7908</volume>
          of Lecture Notes in Computer Science, pages
          <fpage>240</fpage>
          -
          <lpage>255</lpage>
          . Springer,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Brian</surname>
          </string-name>
          Henderson-Sellers, Owen Eriksson, Cesar Gonzalez-Perez, and Pa¨r J ˚Agerfalk.
          <article-title>Ptolemaic metamodelling? the need for a paradigm shift</article-title>
          . Cueva
          <string-name>
            <surname>Lovelle</surname>
            <given-names>JM</given-names>
          </string-name>
          , Pelayo Garc´
          <string-name>
            <surname>ıa-Bustelo</surname>
            <given-names>C</given-names>
          </string-name>
          ,
          <article-title>Sanjua´n Mart´ınez O (eds) Progressions and innovations in model-driven software engineering</article-title>
          .
          <source>IGI Global</source>
          , Hershey, PA, pages
          <fpage>90</fpage>
          -
          <lpage>146</lpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>Brian</surname>
            Henderson-Sellers and
            <given-names>Cesar</given-names>
          </string-name>
          <string-name>
            <surname>Gonzalez-Perez</surname>
          </string-name>
          .
          <article-title>Connecting powertypes and stereotypes</article-title>
          .
          <source>Journal of Object Technology</source>
          ,
          <volume>4</volume>
          (
          <issue>7</issue>
          ):
          <fpage>83</fpage>
          -
          <lpage>96</lpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <surname>Thomas</surname>
            <given-names>Johanndeiter</given-names>
          </string-name>
          , Anat Goldstein, and
          <string-name>
            <given-names>Ulrich</given-names>
            <surname>Frank</surname>
          </string-name>
          .
          <article-title>Towards business process models at runtime</article-title>
          . In Nelly Bencomo, Robert B. France, Sebastian Go¨tz, and Bernhard Rumpe, editors,
          <source>MoDELS@Run.time</source>
          , volume
          <volume>1079</volume>
          <source>of CEUR Workshop Proceedings</source>
          , pages
          <fpage>13</fpage>
          -
          <lpage>25</lpage>
          . CEUR-WS.org,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          25.
          <string-name>
            <surname>Fabio</surname>
            <given-names>Kon</given-names>
          </string-name>
          , Fabio Costa, Gordon Blair, and Roy H Campbell.
          <article-title>The case for reflective middleware</article-title>
          .
          <source>Communications of the ACM</source>
          ,
          <volume>45</volume>
          (
          <issue>6</issue>
          ):
          <fpage>33</fpage>
          -
          <lpage>38</lpage>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          26.
          <string-name>
            <surname>Thomas</surname>
          </string-name>
          <article-title>Ku¨hne. Matters of (meta-) modeling</article-title>
          .
          <source>Software &amp; Systems Modeling</source>
          ,
          <volume>5</volume>
          (
          <issue>4</issue>
          ):
          <fpage>369</fpage>
          -
          <lpage>385</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          27.
          <string-name>
            <surname>Jesu</surname>
          </string-name>
          <article-title>´s Sa´nchez-</article-title>
          <string-name>
            <surname>Cuadrado</surname>
            , Juan De Lara, and
            <given-names>Esther</given-names>
          </string-name>
          <string-name>
            <surname>Guerra</surname>
          </string-name>
          .
          <article-title>Bottom-up metamodelling: An interactive approach</article-title>
          .
          <source>In Model Driven Engineering Languages and Systems</source>
          , pages
          <fpage>3</fpage>
          -
          <lpage>19</lpage>
          . Springer,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>