<!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>Approach to Define Highly Scalable Metamodels Based on JSON</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Markus Gerhart</string-name>
          <email>mgerhart@htwg-konstanz.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Julian Bayer</string-name>
          <email>jubayer@htwg-konstanz.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jan Moritz Ho¨fner</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Marko Boger</string-name>
          <email>marko.boger@htwg-konstanz.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>University of Applied Sciences Konstanz, ProGraMof</institution>
          ,
          <addr-line>Brauneggerstraße 55, 78462 Konstanz</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Domain-specific modelling is increasingly adopted in the software development industry. While open source metamodels like Ecore have a wide impact, they still have some problems. The independent storage of nodes (classes) and edges (references) is currently only possible with complex, specific solutions. Furthermore the developed models are stored in the extensible markup language (XML) data format, which leads to problems with large models in terms of scaling. In this paper we describe an approach that solves the problem of independent classes and references in metamodels and we store the models in the JavaScript Object Notation (JSON) data format to support high scalability. First results of our tests show that the developed approach works and classes and references can be defined independently. In addition, our approach reduces the amount of characters per model by a factor of approximately two compared to Ecore. The entire project is made available as open source under the name MoDiGen. This paper focuses on the description of the metamodel definition in terms of scaling.</p>
      </abstract>
      <kwd-group>
        <kwd>Metamodel definition</kwd>
        <kwd>JavaScript Object Notation</kwd>
        <kwd>JSON</kwd>
        <kwd>Model scalability</kwd>
        <kwd>Metamodel scalability</kwd>
        <kwd>Model storage</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Tools for creating Domain-Specific Modeling Languages (DSML) are becoming
more accepted in the software development industry to develop specific solutions
for specific problems. These solutions are developed with tools such as Xtext[
        <xref ref-type="bibr" rid="ref5">5</xref>
        ],
Meta Programming System (MPS)[
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], MetaEdit+ Modeler[
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], Kybele[
        <xref ref-type="bibr" rid="ref8">8</xref>
        ],
MagicDraw[
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] or Eugenia[
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. The underlying metamodel of the tools is of crucial
importance, because it serves as basis for all subsequent steps like code
generation or programatic manipulation of the model data. Therefore, access to the
metamodel has to be very simple and the memory consumption should be as
low as possible.
      </p>
      <p>
        Only if the metamodel is maintained at a high abstraction level, the
subsequent programmatic processing can be implemented simple, clean, and clear like
it is suggested by the KISS-principle (”Keep it simple, stupid”). However,
existing open source tools cover only the needs of specific subject areas such as the
software development industry. Requirements of very complex metamodels for
instance the statics of buildings can currently only be fulfilled through complex
detours. Not considering commercial solutions, because they do not give insight
into the structure of their metamodel and storage solution, another common
problem is the storage consumption of very large models. Furthermore, a great
weakness of existing open source solutions such as Ecore[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] is, that they do not
scale well to very large models.
      </p>
      <p>
        Our suggested approach allows the definition of metamodels in a simple and
clear way. We offer the possibility, that nodes (classes) and edges (references) can
exist independently and with equal rights. This leads to a variety of possibilities
in the creation of metamodels. In addition, the data of metamodels and models is
held in the JavaScript Object Notation (JSON)[
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] file format. This allows the
smooth scaling of the model data using existing solutions such as CouchDB[
        <xref ref-type="bibr" rid="ref14">14</xref>
        ],
MongoDB[
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], and RavenDB[
        <xref ref-type="bibr" rid="ref16">16</xref>
        ].
      </p>
      <p>We demonstrate, that the storage of metamodels and models is possible
without problems, even when involving well over 10,000 elements (classes and
references).</p>
      <p>The paper first reviews related work in the field in section 2, which is mostly
other tools and techniques for the definition of meta models. Our general
approach for the definition of meta-models based on JSON for high scalability is
described in section 3. The core contribution of this publication is the developed
metamodel with independent classes and connections and the data structure
using JSON to store models for high scalability. Section 4 illustrates the results of
our approach from different angles. Finally, we summarise the limitations of our
research and draw conclusions in section 5.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Related Work</title>
      <p>
        The Ecore metamodel of the Eclipse Modeling Framework (EMF) stores edges
as parts of nodes. An EReference actually models one end of an edge [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. This
is also true for the Generic Modeling Environment (GME) [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] and WebGME
[
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. The disadvantages of this approach were already discussed in [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. Storing
edges as parts of nodes does not scale well for large numbers of edges. Accessing,
loading and saving individual edges requires linear time and may pose a
problem in terms of heap memory. As an alternative, [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] proposes storing edges as
relations like a relational database, separating the edge from the node. That is
the same basic principle we follow. Instead of an SQL-like structure as proposed
in [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], we introduce the edge as a first-level-object that is stored in a NoSQL
database.
      </p>
      <p>
        The Ecore metamodel uses an Extensible Markup Language (XML) based
format for model serialization [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. The need for a model serialization format that
is not based on XML was formulated in [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. While our approach does not satisfy
all the criteria for model storage set forth in that paper, we believe that JSON
as the basic format for model storage will simplify implementing these criteria.
A diagram is stored as a collection of JSON objects which can be addressed
through an identifier. Instead of loading large models all at once, objects could
be loaded as needed using their identifier. The partial loading of model data
based on JSON is covered by databases like CouchDB or MongoDB. An
XMLbased format would always have to be loaded in full apart from approaches such
as partial parsing which significantly increases the runtime.
      </p>
      <p>
        Approaches such as GEMSjax [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] or EMF-REST [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] provide Representational
State Transfer (REST) access to Ecore models and translate them into either
JSON or XML. Compared to a method that stores JSON data in a document
oriented database, these approaches require additional overhead, as the Ecore
model has to be serialised into the target format on each call to the REST
interface.
3
      </p>
    </sec>
    <sec id="sec-3">
      <title>Approach</title>
      <p>In this section we will give a detailed explanation of our approach. First we
discuss and reason about the architecture of our metamodel and its components
and then present an example.
3.1</p>
      <sec id="sec-3-1">
        <title>Architecture</title>
        <p>An overview of the MoDiGen metamodel architecture is given in Figure 1. The
design is focused on universality and simplicity. We utilise standard conform
JSON to store both model and instance data. This helps us to achieve
programming language agnosticism and scalability. In the following paragraphs we will
discuss the architecture depicted in Figure 1 and the corresponding metamodel
components in detail.</p>
        <p>&lt;&lt;abstract&gt;&gt;</p>
        <p>M_OBJ
+ name: String
&lt;&lt;abstract&gt;&gt;</p>
        <p>M_BOUNDS
+ upperBound: Int
+ lowerBound: Int
+ valuMes_:ELNisUt[MSkalar] ++++ isoanuubpptsuptetrursaTt:csyLt::pMiLseBi_tss[oCMt:o[MLLl_iALs_ItSL[NMISNK_K_CD_LDEAEFS]FS]] ++++ ttssaaoorruuggrreeccttee:D:DLeLMielseilst_et[tiMRt[oiMonE_n_DLFDLIeENIelNReKletKEe_te_NsDsDSCEToEEFauF]rrg]ceet:: BBooooll +++++ lcsgdoiolenconfagbMasllaueUt_allAUtAnn:sinTtTqs:iTyuqiBgpReuone:eIomBB:lUBeonooTltoE:lBool</p>
        <p>attributes ++ teyxpper:eSssciaolna:r S|tMrin_gENUM
attributes ++ torradnesrieedn:t:BBooooll</p>
        <p>M_LINK_DEF
+ type: M_CLASS | M_REFERENCE
+ deleteIfLower: Bool</p>
        <p>M Obj is the abstract base class of most of the metamodel’s components. Its
use is to provide a name attribute to all components that need to be identifiable.
The name attribute is guaranteed to be unique on a model scope.</p>
        <p>M Bounds is abstract and defines upperBound and lowerBound attributes.
Bound values can either be zero, a positive Integer, or -1 for infinity. By defining
an upper as well as a lower bound, one can model maxima, minima, as well as
ranges. By default lowerBounds are set to 0 and upperBounds to -1.</p>
        <p>The modelling of attributes in nodes and edges is done using M Attribute.
It extends M Bounds so it can be defined to either be single-valued or an array
with an optional maximum and/or minimum length. To further define its
behaviour a number of mandatory attributes exist which will be discussed now. If
uniqueLocal is set to true the M Attribute behaves much like a Set data structure,
for it is a collection which can not contain any duplicate values. The uniqueGlobal
flag in contrast, guarantees that the attribute’s values are unique on a model
scope. This may be useful for modelling attributes like Social Security
Numbers. The default attribute is a value of type and defines the initial value of the
M Attribute. Using expression one can define a simple arithmetic formula to
derive the value of the attribute. This renders the attribute read only and can
be useful in cases where one attribute depends on other attributes. Whether the
M Attribute is a String, Integer, Double, or Enum is defined by setting the type
attribute. The ordered flag defines whether the attribute’s values are ordered in
some fashion. The attribute transient determines whether the attribute is
transient. If set to true the attribute’s value won’t be stored when the model is being
saved to a database. This might be useful for attributes which are the result of
an expression. Single Assignment behaviour can be modelled by setting the
singleAssignment flag, this causes the value to be settable exactly once. Constant
on the other hand means that the value is default and may never be changed.</p>
        <p>Nodes are modelled using M Classes, which in addition to a number of
mandatory attributes may contain an arbitrary number of user defined
attributes. The mandatory attributes are defined in the following manner.
Abstract denotes whether the M Class is declared as abstract, meaning it may not
be instantiated but only be used as a base for other M Classes. Inheritance
between M Classes is modelled using the superTypes attribute. It contains all direct
predecessors. By defining superTypes as a list we explicitly allow multiple
inheritance. The inputs attribute is a list of all incoming M Link Defs and outputs
is a list of all outgoing M Link Defs. On the other side M Reference also has a
target and source attribute which behaves like inputs and outputs.</p>
        <p>M Link Def is used to define one endpoint of a connection and has a type
attribute which is either M Class or M Reference as well as an upper- and
lowerbound. The flag deleteIfLower defines whether the M Class and M Reference
which contains the M Link Def should be deleted in case the number of values of
the M Link Def drops to its lower bound. This means one can model a minimum
count of Output/Input or Source/Target values a certain Class or Reference must
have of any type.</p>
        <p>An M Reference denotes an edge between two M Classes. By defining
references as first-level classes our metamodel gains a couple of powerful modelling
possibilities. For example edges may have an arbitrary number of custom
attributes and allow n:m relationships. A set of standard attributes also exists
which will be defined now. With sourceDeletionDeletesTarget set, in case the
source of the M Reference is deleted, the target, and the reference itself is also
deleted. Accordingly targetDeletionDeletesSource deletes the source and the
reference in case the target is deleted. This can be useful to model containments
and similar constructs where one end of a reference can not exist without the
other end. The source attribute is a list of sources and the target attribute is a
list of targets of the M Reference. Both have the Type M Link Def, therefore
M References can be defined to be valid for a number of different source- and
target-classes with dedicated bounds for each class in both directions. For
example one can define an edge to be valid from A to B or C and further specify
separate bounds for the number of edges from A to B or A to C as well as
separate bounds for the number of Bs, Cs, and As involved in those edges.</p>
        <p>Finally M Enum is a simple Enum of a scalar type and might be used as a
type for attributes.
3.2</p>
      </sec>
      <sec id="sec-3-2">
        <title>Example</title>
        <p>To demonstrate the capabilities of our metamodel, we will consider the following
(oversimplified) family tree model. Three M Classes, Person, Male, and Female
exist, where Male and Female inherit from Person and Person is abstract. The
following relationships exist between these classes: The Relationship isHusband
has a Male source and a Female target, while the reverse relationship isWife
has a Female source and a Male target. The Male class also has a relationship
isFather, directed at Person and the Female class has the corresponding isMother
relationship, also directed at Person. Figure 2 illustrates the setup.
isFather
1
Male</p>
        <p>Person
* + FirstName: String
+ SocialSecurityNumber: String
+ Birthday: String</p>
        <p>*
1
0…1
isHusband
isWife
0…1</p>
        <p>1</p>
        <p>Listing 1.1 is taken from the compressed familytree model and represents the
M Class Male. The mtype property is necessary because JSON has no type
system and so this property is needed to declare that this is an M Class. The inputs
and outputs properties are M Link Defs linking to the respective M Reference
and indicating that at most one such relationship is allowed for one instance of
this M Class. Because Male inherits all its attributes from Person mAttributes
is empty.
An M Reference is given in listing 1.2. This is the isHusband M Reference
linking the Male source to the Female target. The isHusband reference links
exactly one Male object to one Female object.
1 " isHusband ": {
2 " mType ": " mRef ",
3 " name ": " isHusband ",
4 " mAttributes ": [],
5 " source ": [
6 { " type ":" Male ",
7 " upperBound ": 1,
8 " lowerBound ": 1
9 }
10 ],
11 " target ": [
12 { " type ":" Female ",
13 " upperBound ": 1,
14 " lowerBound ": 1,
15 }
16 ]
17 }</p>
        <p>Listing 1.2. The isHusband M Reference taken from the Family Tree example model</p>
        <p>We instantiate this model with three persons. A Male instance and a
Female instance, who are married to each other (using the isHusband and isWife
references) and another Male, who is the child of the other two.</p>
        <p>
          Listing 1.3 shows part of the JSON of an instance of the family tree model.
Specifically it shows one instance of the Male class and one of the isHusband
Reference. The complete JSON source for both the model and the instance can
be found at MoDiGen[
          <xref ref-type="bibr" rid="ref13">13</xref>
          ].
        </p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4 Evaluation</title>
      <p>The presented approach makes it possible to create nodes and edges with equal
rights. This results from the revised metamodel definition which is crucial for
programmatic processing of the model data. The storage of metamodel and model
information is done using JSON. This allows for easy integration and processing
by conventional programming languages and web technologies. Furthermore, the
number of characters and therefore the storage consumption for metamodel
definitions and model instances was reduced, compared to the XML data structure
of Ecore, by separating edges and nodes, and by using JSON.</p>
      <p>The change of the number of characters based on the metamodel definition
of the familytree example is shown in Figure 3. It turns out that the number
12 ww//oo dwehfiateusltpvaacleues
-39%
-58%
-2%</p>
      <p>Ecore
MoDiGen
-36%</p>
      <p>Ecore/MoDiGen Ecore/MoDiGen 1 Ecore/MoDiGen 2 Ecore/MoDiGen 1,2
of characters were consistently reduced when compared to Ecore. The biggest
difference can be revealed by removing white spaces. This comes at the expense of
human readability but is irrelevant for machine processing. By removing default
values a further reduction was achieved. Ecore applies these measures by default.</p>
      <p>The development of the number of characters based on the model instance,
depending on the number of nodes is shown in Figure 4. This is based on the
smallest possible model instances (without whitespace and default values) for a
model where all nodes are interconnected. It can be seen, that for smaller models
the Ecore approach is more appropriate, but for larger models the presented
approach has advantages. This is mainly caused by the changed handling of
connections between objects. If only few connections are present in a model
the advantage of our approach relativizes. We generated model instances with
10,000 interconnected nodes for Ecore as well as MoDiGen and found that the
storage consumption of Ecore was 5,58 Gigabyte and the storage consumption
of MoDiGen was 3,6 Megabytes.</p>
      <p>Our approach has advantages regarding the scalability of big models. This
is mainly due to the used data structure implemented in JSON. Data formats
like JSON can easily be horizontally scaled using existing database solutions like
CouchDB, MongoDB or RavenDB. This is additionally favoured by the lower
memory consumption of the developed metamodel. In contrast to XML-based</p>
      <p>MoDiGen</p>
      <p>ECore
0
0
5</p>
      <p>10
Nodes
15
20
data structures the JSON based data structure offers the possibility to access
just parts of the stored model.
5</p>
    </sec>
    <sec id="sec-5">
      <title>Conclusion and future work</title>
      <p>We have introduced the MoDiGen metamodel and shown how its approach differs
from other metamodels for DSMLs, such as Ecore or GME. Treating edges as
first level objects instead of features of nodes allows for easy programmatic access
to the edges. The use of JSON yields more compact models than XML, allows
for seamless integration into web applications using JavaScript, and opens the
door for improvements regarding scalability.</p>
      <p>In comparison to Ecore, the MoDiGen metamodel lacks the possibility to
define operations. While in the Ecore itself, EOperation is more of a placeholder, it
can be given an implementation in the context of the Eclipse Modeling
Framework. Edges as first level objects give easier access to references and permit the
existence of stand-alone edges. However, this also means that the modeller has to
explicitly state whether an edge must be automatically deleted upon the deletion
of one of the connected nodes. This is not a problem in Ecore where references
are deleted when the containing class is deleted. In its current form, the JSON
representation of MoDiGen models still contains code that could be removed.
For example, attributes that have their default value or empty properties are
still in the JSON. The JSON representation could be significantly compressed
by removing that code.</p>
      <p>
        In the future, we plan to implement a complete modeling framework on the
basis of this metamodel and work on improving the JSON representation in
terms of size. We will also use the MoDiGen metamodel for code generation
projects. Furthermore, we plan on extending the metamodel to allow
specification of constraints using the Object Constraint Language (OCL)[
        <xref ref-type="bibr" rid="ref18">18</xref>
        ].
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Steinberg</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Budinsky</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Paternostro</surname>
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Merks</surname>
            <given-names>E.: EMF</given-names>
          </string-name>
          <string-name>
            <surname>Eclipse Modeling</surname>
            <given-names>Framework</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>Second</given-names>
            <surname>Edition</surname>
          </string-name>
          . Addison-Wesley
          <string-name>
            <surname>Professional</surname>
          </string-name>
          (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Ledeczi</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Maroti</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bakay</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Karsai</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Garrett</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Thomason</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nordstrom</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sprinkle</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Volgyesi</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>The Generic Modeling Environment</article-title>
          .
          <source>In: Proceedings of WISP'</source>
          <year>2001</year>
          , IEEE, Budapest (
          <year>2001</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3. Mar´oti, M. Keresk´enyi, R, Kecsk´es, T., V¨olgyesi, P., L´edecyi, A´ .
          <article-title>: Online Collaborative Environment for Designing Complex Computational Systems</article-title>
          .
          <source>Procedia Computer Science</source>
          , Volume
          <volume>29</volume>
          , pp.
          <fpage>2432</fpage>
          -
          <lpage>2441</lpage>
          (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Farwick</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Agreiter</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>White</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Forster</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lanzanasto</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Breu R.: A WebBased Collaborative Metamodeling</surname>
          </string-name>
          <article-title>Environment with Secure Remote Model Access</article-title>
          .
          <source>ICWE</source>
          <year>2010</year>
          , LNCS 6189, pp.
          <fpage>278</fpage>
          -
          <lpage>291</lpage>
          . Springer-Verlag, Heidelberg (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Itemis</surname>
            <given-names>AG</given-names>
          </string-name>
          , http://www.eclipse.org/Xtext
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>MPS</given-names>
            <surname>Meta Programming</surname>
          </string-name>
          <string-name>
            <surname>System</surname>
          </string-name>
          , https://www.jetbrains.com/mps/, Accessed 2015-
          <volume>01</volume>
          -22
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7. MetaEdit+ Modeler, http://www.metacase.com/mep/, Accessed 2015-
          <volume>01</volume>
          -22
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Kybele GMF Generator</surname>
          </string-name>
          <article-title>a tool for developing GMF editors in a few steps</article-title>
          , http://www.kybele.etsii.urjc.es/kyb kybelegmfgen/, Accessed 2015-
          <volume>01</volume>
          -22.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9. No Magic Inc.: MagicDraw, https://www.magicdraw.com/, Accessed 2015-
          <volume>01</volume>
          -22.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Eugenia</surname>
          </string-name>
          <article-title>a tool to automatically generate a GMF editor</article-title>
          , http://eclipse.org/epsilon/doc/eugenia/, Accessed 2015-
          <volume>01</volume>
          -22
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Scheidgen</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Reference Representation Techniques for Large Models</article-title>
          . In: BigMDE'13,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , Budapest (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Kolovos</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rose</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Matragkas</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Paige</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Guerra</surname>
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cuadrado</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>De Lara</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <source>Ra´th, I.</source>
          , Varr´o,
          <string-name>
            <given-names>D.</given-names>
            ,
            <surname>Tisi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Cabot</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.: A Research</given-names>
            <surname>Roadmap</surname>
          </string-name>
          <article-title>Towards Achieving Scalability in Model Driven Engineering</article-title>
          . In: BigMDE'13,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , Budapest (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>13. MoDiGen, http://www.modigen.de/publications/</mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>14. CouchDB, http://couchdb.apache.org/</mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>15. MongoDB, https://www.mongodb.org/</mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>16. RavenDB, http://ravendb.net/</mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>17. Java Script Object Notation, https://tools.ietf.org/html/rfc7159</mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18. OMG Object Management Group:
          <article-title>Object Constraint Language Version 2</article-title>
          .4, http://www.omg.org/spec/OCL/2.4/ (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>EMF-REST</surname>
          </string-name>
          , http://www.emf-rest.com
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>