<!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>Efficient Persistence and Query Techniques for Very Large Models</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Gwendal Daniel</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>AtlanMod Team / SOM Research Group Inria</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Mines Nantes</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>UOC gwendal.daniel@inria.fr</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Model Persistence</institution>
          ,
          <addr-line>Model Query, Scalability, NoSQL</addr-line>
        </aff>
      </contrib-group>
      <abstract>
        <p />
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        The growing use of Model Driven Engineering (MDE) techniques
in industry
        <xref ref-type="bibr" rid="ref18 ref22">(Hutchinson et al. 2011; Mohagheghi et al. 2009)</xref>
        has
emphasized scalability of existing technical solutions to store,
query, and transform large models as a major issue
        <xref ref-type="bibr" rid="ref2 ref20 ref30">(Kolovos et al.
2013; Warmer and Kleppe 2006)</xref>
        . Large models containing up to
several millions of elements typically appear in various engineering
fields, such as civil engineering
        <xref ref-type="bibr" rid="ref1">(Azhar 2011)</xref>
        , automotive
industry
        <xref ref-type="bibr" rid="ref6">(Bergmann et al. 2010)</xref>
        , product lines
        <xref ref-type="bibr" rid="ref26">(Pohjonen and Tolvanen
2002)</xref>
        , and can be generated in model-driven reverse engineering
processes
        <xref ref-type="bibr" rid="ref8">(Bruneliere et al. 2014)</xref>
        , such as software modernization.
      </p>
      <p>
        Since the publication of the XMI standard
        <xref ref-type="bibr" rid="ref23">(OMG 2016)</xref>
        ,
XMLbased serialization has been the preferred format for storing and
sharing models and metamodels. The Eclipse Modeling
Framework (EMF), the de-facto standard for building MDE tools, has
even adopted it as their standard serialization mechanism. However,
XMI-based serialization has two major drawbacks: (i) XMI files are
verbose, favoring human-readability at the expanse of the
compactness and (ii) XMI files have to be entirely parsed to obtain a
navigable model of their contents. The first one decreases efficiency of I/O
accesses, while the second greatly increases the memory needed to
load and navigate a model. Moreover, XMI serializations typically
lack support for advanced features such as transactions or
collaborative edition, and large monolithic model files are challenging
to integrate in existing versioning systems
        <xref ref-type="bibr" rid="ref17 ref2 ref20">(Barmpis and Kolovos
2013)</xref>
        .
      </p>
      <p>
        To overcome these limitations, several research groups have
proposed their own solutions (detailed in Section 5) based on
relational/NoSQL databases
        <xref ref-type="bibr" rid="ref10 ref13 ref14 ref24 ref27 ref28">(Eclipse Foundation 2016a; Paga´n and
Molina 2014; Scheidgen et al. 2012)</xref>
        . They often rely on a
lazyloading mechanism that reduce memory consumption by bringing
objects in memory from the datastore only when they are accessed.
      </p>
      <p>While this evolution of model persistence backends has
improved the support for managing large models, they are just a partial
solution to the scalability problem in current modeling frameworks:
they often provide a single generic way to represent models,
regardless the way they will be used. In particular, most of them are
focused on saving and loading models in an optimized time and
memory consumption, without providing adequate solutions for specific
modeling scenarios, such as interactive editing, query computation,
or model transformations.</p>
      <p>Furthermore, all persistence frameworks are based on the use
of low-level model handling APIs (accessing individual model
element, attribute, or reference) which are then used by most other
MDE tools in the framework ecosystem. This approach is clearly
inefficient when used on top of lazy-loading persistence
frameworks because (i) the API granularity is too fine-grained to
benefit from the advanced query capabilities of the backend and (ii)
an important time and memory overhead is necessary to construct
navigable intermediate objects that can be used to interact with the
API.</p>
      <p>To overcomes these limitations we introduce NEOEMF, a
multi-database persistence framework able to store models in
several NoSQL databases, depending on the expected usage of the
model. NEOEMF is strictly compatible with the EMF API, and
relies on a modular architecture which allows to change underlying
backend transparently. We also present MOGWA¨I, a query
framework that bypasses modeling API to compute OCL queries over
large models in an efficient an scalable way.</p>
      <p>The rest of the paper is structured as follows: Section 2
introduces NEOEMF and gives an overview of its feature and supported
datastores, Section 3 presents the MOGWA¨I, our solution to
compute model queries efficiently. Section 4 provides some insights on
the implementation of the presented tools, and Section 5 reviews
existing works in the fields of model persistence and model query.
Finally, Section 6 summarizes the key points of the paper, draws
conclusions and presents our future work.</p>
    </sec>
    <sec id="sec-2">
      <title>NeoEMF: a Multi-Datastore Persistence</title>
    </sec>
    <sec id="sec-3">
      <title>Framework for EMF</title>
      <p>
        Our previous works and experiments on model persistence
        <xref ref-type="bibr" rid="ref15 ref15 ref16 ref16 ref3 ref4 ref4">(Go´mez
et al. 2015; Benelallam et al. 2014; Go´mez et al. 2015)</xref>
        have shown
that providing a well-suited data store for a specific modeling
scenario can dramatically improve performance of client applications.
For example, a graph database can be the optimal solution to
compute complex model queries, while it would be quite inefficient
for repeated atomic accesses. Based on this observation, we
developed NEOEMF
        <xref ref-type="bibr" rid="ref10 ref11 ref12">(Daniel et al. 2016a)</xref>
        , a scalable model persistence
framework based on a modular architecture enabling model
storage into multiple data stores. It is composed of a transparent
persistence layer integrated into EMF, and a set of database connectors
which are in charge of the serialization of the model into specific
databases. Currently, NeoEMF provides three
implementationsmap, graph, and column–each one optimized for a specific usage
scenario.
      </p>
      <p>In what follows we first introduce the NEOEMF framework
and its integration into the EMF ecosystem, then we present the
key features of the software, and we briefly introduce the available
backends and the typical modeling scenario they address.
2.1</p>
      <sec id="sec-3-1">
        <title>Framework Overview</title>
        <p>Figure 1 presents an overview of the NEOEMF framework and its
integration within the EMF environment. Modelers typically access
a model using Model-based Tools, which provide high-level
modeling features such as a graphical interface, interactive console, or
query editor. Model-based Tools internally rely on EMF’s Model
Access API to navigate models, create and delete elements, verify
constraints, etc. In its core, EMF delegates the operations to a
persistence manager using its Persistence API, which is in charge of
the serialization/deserialization of the model. The NEOEMF core
component is defined at this level, and can be registered as a
persistence manager for EMF, same as, for example, the default XMI
persistence manager. This design makes NEOEMF both
transparent to the client-application and EMF itself, that simply delegates
calls without taking care of the actual storage.</p>
        <p>Once the core component has received the modeling operation
to perform, it forwards it to the appropriate database connector
(Map, Graph , or Column), which is in charge of the low-level
mapping of the model. These connectors translate modeling operations
into Backend API calls, store the results, and reify database records
into EMF EObjects when needed. In addition, NEOEMF embeds
a set of default caching strategies that can be configured
transparently at the EMF API level. These caching strategies can be used to
improve performance of client applications, and enabled/disabled
according to specific requirements.</p>
        <p>In addition to this transparent integration into existing EMF
applications, NEOEMF provides its own API, which targets advanced
users / high-performance applications. This API provides utility
methods which overcome EMF limitations, allow fine-grained
tuning of the databases, and access to internal caches.
2.2</p>
      </sec>
      <sec id="sec-3-2">
        <title>Software Features</title>
        <p>An important characteristic of NEOEMF is its compliance with
the EMF API. All classes/interfaces extending existing EMF
ones strictly define all their methods, and ensure that a call to a
NEOEMF method produces the same behavior (including
possible side effects) as standard EMF API calls. As a result, existing
applications can move from EMF to NEOEMF with a very small
“Standard”
Modeling User
“Advanced” User
&amp; Developer</p>
        <sec id="sec-3-2-1">
          <title>Model-Based Tools EMF</title>
          <p>/Graph</p>
        </sec>
        <sec id="sec-3-2-2">
          <title>NeoEMF Core</title>
          <p>/Map /Column
Blueprints MapDB
HBase/
ZooKeeper
Model Access API</p>
          <p>Persistence API</p>
        </sec>
        <sec id="sec-3-2-3">
          <title>Caching</title>
          <p>Backend API
amount of efforts and benefit immediately from its scalability
improvements.</p>
          <p>In particular, NEOEMF supports the following EMF features:
Code generation: NEOEMF embeds a dedicated code
generator that transparently extends the EMF one, and allows client
applications to manipulate models using generated java classes.
Reflexive/Dynamic API: in addition to generated code,
reflexive and dynamic EMF methods can be used on NEOEMF
objects, and behave as their standard implementations.</p>
          <p>Resource API: NEOEMF also implements the resource
specific API, such as getContents, getAllContents, save, and
load.</p>
          <p>
            As other model persistence solutions
            <xref ref-type="bibr" rid="ref10 ref13 ref14 ref24 ref28">(Eclipse Foundation
2016a; Paga´n and Molina 2014)</xref>
            , NeoEMF achieves scalability
using a lazy-loading mechanism, which loads into memory
objects only when they are accessed, overcoming XMI’s limitations.
Lazy-loading is defined at the core component: NEOEMF
implementation of EObject consists of a simple wrapper delegating all
its method calls to the corresponding database driver. Using this
technique, NEOEMF benefits from data store caches, and only
maintains a small amount of elements in memory (the ones that
have not been saved), reducing drastically the memory
consumption of modeling applications.
          </p>
          <p>NeoEMF also contains a set of caching strategies that can be
plugged atop of the data store according to specific needs. Note
that these caches are available for all connectors, unless otherwise
stated.</p>
        </sec>
      </sec>
      <sec id="sec-3-3">
        <title>EStructuralFeaturesCaching: a cache storing loaded objects</title>
        <p>by their accessed feature.</p>
        <p>IsSetCaching: a cache keeping the result of isSet calls to
avoid multiple accesses to the database.</p>
        <p>SizeCaching: a cache storing the size of multi-valued features
to avoid multiple accesses to the database.</p>
        <p>RecordCaches: a set of database-specific caches maintaining
a list of records to improve execution time.</p>
        <p>
          Finally, in our last work
          <xref ref-type="bibr" rid="ref10 ref11 ref12">(Daniel et al. 2016c)</xref>
          we have extended
the cache support in NEOEMF with an integrated
prefetching/caching framework that allows to customize data access in order to
speed-up query computation. The PrefetchML framework is
composed of a DSL that allows designers to specify prefetching and
caching rules with a high-level of abstraction, and an execution
engine that is in charge of triggering the rules and fetching the
elements from the database.
For now, NEOEMF provide three connectors that are able to
represent model into specific data stores. In this section we present these
connectors and the modeling scenario they are optimized for.
2.3.1
        </p>
      </sec>
      <sec id="sec-3-4">
        <title>NEOEMF/MAP</title>
        <p>
          NEOEMF/MAP
          <xref ref-type="bibr" rid="ref15 ref16 ref4">(Go´mez et al. 2015)</xref>
          has been designed to provide
fast access to atomic operations, such as accessing a single
element/attribute, and navigating a single reference. This implementation
is optimized for EMF API-based accesses, which typically generate
atomic and fragmented calls on the model. NEOEMF/MAP embeds
a key-value store, which maintains a set of in-memory/on disk maps
to speed up model element accesses. The benchmarks performed
in previous work
          <xref ref-type="bibr" rid="ref15 ref16 ref4">(Go´mez et al. 2015)</xref>
          show that NEOEMF/MAP is
the most suitable solution to improve performance and scalability
of EMF API-based tools that need to access very large models on a
single machine.
2.3.2
        </p>
      </sec>
      <sec id="sec-3-5">
        <title>NEOEMF/GRAPH</title>
        <p>
          NEOEMF/GRAPH
          <xref ref-type="bibr" rid="ref3">(Benelallam et al. 2014)</xref>
          relies on the rich
traversal features that graph databases usually provide to compute
efficiently complex queries over models. This specific modeling
scenario is further explained in the next Section, where we present
a framework able to compute OCL queries efficiently by
translating them into graph traversals. NEOEMF/GRAPH maps models to
property graphs, where model elements are translated into vertices,
attributes into vertex properties, and references as edges. Note that
to enable complex query computation, metamodel elements are
also persisted as vertices, and are linked to their instances through
a dedicated INSTANCE_OF relationship.
2.3.3
        </p>
      </sec>
      <sec id="sec-3-6">
        <title>NEOEMF/COLUMN</title>
        <p>
          NEOEMF/COLUMN
          <xref ref-type="bibr" rid="ref15 ref16 ref4">(Go´mez et al. 2015)</xref>
          relies on a distributed
column-based data store to enable the development of distributed
MDE-based applications. In contrast with Map and Graph
implementations, NEOEMF/COLUMN offers concurrent read/write
capabilities and guarantees ACID properties at model element level. It
exploits the wide availability of distributed clusters in order to
distribute intensive read/write workloads across datanodes. The
distributed nature of this persistence solution is used in the
ATLMR
          <xref ref-type="bibr" rid="ref15 ref4">(Benelallam et al. 2015)</xref>
          tool, a distributed engine for model
transformations in the ATL language on top of MapReduce.
        </p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Mogwa¨ı: a Framework to Perform OCL</title>
    </sec>
    <sec id="sec-5">
      <title>Queries on Large Models</title>
      <p>In the previous Section we introduced the NEOEMF framework,
that provides a transparent way to store models into NoSQL
databases. While this architecture allows to store very large models
in a scalable way, the presented solution is tailored to the low-level
modeling API, which generates fragmented queries on the data
store, reducing the benefits of advanced database query
capabilities. Furthermore, the EMF API imposes to reify each traversed
element into a navigable EMF object, even if it is not part of the
final result of the query, increasing the memory needed to compute
a query.</p>
      <p>
        To address these issues we propose the MOGWA¨I
        <xref ref-type="bibr" rid="ref10 ref11 ref12">(Daniel et al.
2016b)</xref>
        query framework that is able to handle complex queries
on large models. The MOGWA¨I framework takes benefits of the
advanced query language available on NEOEMF/GRAPH’s internal
data store. The MOGWA¨I framework translates queries expressed
in OCL (Object Constraint Language) into Gremlin
        <xref ref-type="bibr" rid="ref29">(Tinkerpop
2016)</xref>
        , a graph traversal query language. Generated queries are then
sent to the database that is in charge of their computation, bypassing
EMF API limitations.
      </p>
      <p>In this Section we first show an overview of the Gremlin
language, then we present our transformation approach, and we
introduce some experimental results.
3.1</p>
      <sec id="sec-5-1">
        <title>The Gremlin Language</title>
        <p>Gremlin is a Groovy based query language which is part of the
Tinkerpop initiative, a set of tools that aims to uniform graph database
under a common API.It is built on top of Pipes, a data-flow
framework based on process graphs. A process graph is composed of
vertices representing computational units and communication edges
which can be combined to create a complex processing. In the
Gremlin terminology, these complex processing are called
traversals, and are composed of a chain of simple computational units
named steps.</p>
        <p>
          Existing work have shown that Gremlin is an interesting
alternative to Cypher, the pattern matching language used to query Neo4j
graph database
          <xref ref-type="bibr" rid="ref17 ref2">(Holzschuher and Peinl 2013)</xref>
          that can even
outperform the native query language for specific query scenarios.
Gremlin defines four types of steps:
        </p>
        <p>Transform steps: functions mapping inputs of a given type to
outputs of another type. They constitute the core of Gremlin:
they provide access to adjacent vertices, incoming and outgoing
edges, and properties. In addition to built-in navigation steps,
Gremlin defines a generic transformation step that applies a
function to its input and returns the computed results.
Filter steps: functions to select or reject input elements w.r.t.
a given condition. They are used to check property existence,
compare values, remove duplicated results, or retain particular
objects in a traversal.</p>
        <p>Branch steps: functions to split the computation into several
parallelized sub-traversals and merge their results.</p>
        <p>Side-effect steps: functions returning their input values and
applying side-effect operations (edge or vertex creation, property
update, variable definition or assignation).</p>
        <p>In addition, the step interface provides a set of built-in methods
to access meta information: number of objects in a step, output
existence, or first element in a step. These methods can be called
inside a traversal to control its execution or check conditions on
particular elements in a step.</p>
        <p>We chose Gremlin as our target language because its
expressivity allows to map the entire OCL, and because it is to our
knowledge the only one that is supported by several NoSQL databases.
3.2</p>
      </sec>
      <sec id="sec-5-2">
        <title>Framework Overview</title>
        <p>The MOGWA¨I framework is composed of two components: (i) the
OCL2Gremlin model-to-model transformation, which maps OCL
expressions on to Gremlin traversals, and (ii) the NeoEMF/Mogwa
persistence layer, an extension of NEOEMF/GRAPH that provides
an advanced query API for graph databases. We choose OCL as
our input language because it is a well-known OMG standard used
to complement graphical (meta) modeling languages with textual
descriptions of invariants, operation contracts, derivation rules, and
query expressions. Gremlin is a NoSQL query language designed
to query databases implementing the Blueprints API, an abstraction
layer on top of graph stores which has been implemented by several
databases. Therefore, we choose Gremlin as our target language,
because it is the most mature and generic solution to query a wider
variety of NoSQL databases.</p>
        <p>Figure 2 shows the overall query process of (a) the MOGWA¨I
query framework and compares it with (b) standard EMF API
based approaches. An initial textual OCL expression is parsed and
transformed into an OCL query model. This model constitutes the
input of the OCL2Gremlin MOGWA¨I component, which consists
of a model-to-model transformation generating the corresponding
Gremlin traversal model.</p>
        <p>This transformation is composed of a mapping from OCL on
to Gremlin and a translation algorithm that implements this
mapping and merge the created steps into a single query. The
Gremlin model is then converted to a textual expression and sent to
the NeoEMF/Mogwa component, that computes it on the database
side. Query results are then reified as standard EMF objects by
NeoEMF/Mogwa , making them usable in any EMF-based scenario.</p>
        <p>Compared to existing query frameworks, MOGWA¨I does not
rely on the EMF API to perform a query. In general, API based
query frameworks translate OCL queries into a sequence of
lowlevel API calls, which are then performed one after another on the
persistence layer (in this example NeoEMF/Graph). While this
approach has the benefit to be compatible with every EMF-based
application, it does not take full advantage of the database structure
and query optimizations. Furthermore, each object fetched from the
database has to be reified to be navigable, even if it is not going to
be part of the end result. Therefore, execution time of the
EMFbased solutions strongly depends on the number of intermediate
objects fetched from the database while for the MOGWA¨I
framework, execution time does not depend on the number of
intermediate objects, making it more scalable over large models.
3.3</p>
      </sec>
      <sec id="sec-5-3">
        <title>Experimental Results</title>
        <p>
          Experimental results presented in
          <xref ref-type="bibr" rid="ref10 ref11 ref12">(Daniel et al. 2016b)</xref>
          show
that using the MOGWA¨I framework to perform complex queries
over large models can dramatically improve performances both in
terms of memory consumption and execution time. In particular,
allInstances based queries computed with the MOGWA¨I are up
to 20 times faster and up to 75 times better in terms of memory
consumption than the Eclipse OCL interpreter and the EMF-Query
framework, two state of the art tools in EMF-based model queries.
        </p>
        <p>Instead, if the query traverses a small part of the model, or if
an important part of the intermediate results are needed anyway the
benefits of using the MOGWA¨I framework are reduced. In
particular, the overhead implied by the transformation engine may not
be worthwhile when dealing with relatively small models or simple
queries.</p>
        <p>The main disadvantage of the MOGWA¨I framework concerns its
integration to an EMF environment. To benefit from the MOGWA¨I,
other Eclipse plug-ins need to be explicitly instructed to use it.
Integration with the MOGWA¨I framework is straighforward but must be
explicitly done. Instead, other solutions based on the standard EMF
API provide benefits in a transparent manner to all tools using that
API.</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>Tool Support</title>
      <p>
        NEOEMF is composed of a set of open source Eclipse plugins
distributed under the EPL license. Available components are
actively developed and maintained, and the source code repository
is fully available on GitHub (https://github.com/atlanmod/
NeoEMF). The NEOEMF website1 presents an overview of the
supported datastores, the key features, and current ongoing work.
NEOEMF has been released as part of the MONDO platform
        <xref ref-type="bibr" rid="ref21">(Kolovos
et al. 2015)</xref>
        .
      </p>
      <p>NEOEMF/GRAPH relies on Blueprints, a high-level
interface designed to unify graph databases under a common API.
Blueprints has been implemented by several datastores such
as Neo4j, OrientDB, and Titan. Using this abstraction layer,
client applications can choose the graph store of their choice to
persist models through NEOEMF/GRAPH. For now, NEOEMF
1 www.neoemf.com</p>
      <p>NEOEMF/COLUMN persists models in Apache HBase
0.98.12hadoop2, a wide column database providing distributed data
storage on top of HDFS. HBase is designed to handle very large
tables atop clusters of commodity hardware. The distribution of
the model on the cluster is hidden from client applications,
which accesses them transparently through the EMF API.</p>
      <p>A prototype of the MOGWA¨I framework has been developed as
part of NEOEMF (https://github.com/atlanmod/Mogwai ).
It extends the standard EMF API provided by NEOEMF by
defining additional query methods at the Resource level. The query
API accepts a textual OCL expression or an URI to an OCL file
containing the expressions to compute. In addition, it is possible to
provide input values that represents self and parameter variables.
The framework also provides an OCL console (see Figure 3)
integrated into Eclipse that allows to query NEOEMF/GRAPH models
interactively.</p>
      <p>
        OCL queries are parsed using Eclipse MDT OCL, and the core
transformation creating the Gremlin model from the OCL one is
composed of a set of 70 ATL
        <xref ref-type="bibr" rid="ref19">(Jouault et al. 2008)</xref>
        rules and helpers.
The created Gremlin model is then expressed using its textual
syntax and sent to an embedded Gremlin engin, which executes
the query and returns the results. The reification of these results
into model elements is delegated to NEOEMF/GRAPH, that is in
charge of the mapping between graph and model elements.
5.
      </p>
    </sec>
    <sec id="sec-7">
      <title>Related Work</title>
      <p>In this Section we present existing solutions that aims to tackle
scalability issues to store and query large models and we compare
them with NEOEMF on the persistence side, and the MOGWA¨I
framework on the query one.
5.1</p>
      <sec id="sec-7-1">
        <title>Scalable Model Persistence</title>
        <p>
          The CDO model repository
          <xref ref-type="bibr" rid="ref10 ref13 ref14 ref28">(Eclipse Foundation 2016a)</xref>
          is a
scalable model persistence framework based on a client-server
architecture to handle large model in a collaborative environment. It
provides some advanced features such as transaction support or
basic prefetching, and provides a lazy-loading mechanism to reduce
memory consumption. CDO can be plugged with several database
(a) The Mogwa¨ı Query Framework
OCL Query Model
        </p>
        <p>OCL Interpreter</p>
        <p>NeoEMF/Graph</p>
        <p>Database
EMF API Call1</p>
        <p>
          …
connectors to store a model, but in practice only relational ones are
used. In addition, different experiences have shown that CDO faces
scalability issues when dealing with very large models
          <xref ref-type="bibr" rid="ref24 ref27">(Paga´n and
Molina 2014; Scheidgen et al. 2012)</xref>
          .
        </p>
        <p>
          Morsa
          <xref ref-type="bibr" rid="ref24 ref25">(Paga´n et al. 2011; Paga´n and Molina 2014)</xref>
          is one of
the first approaches that use NoSQL databases to handle very large
EMF models. It relies on a client-server architecture based on
MongoDB2 and aims to manage scalability issues using
documentoriented database facilities and a lazy-loading mechanism. Morsa
model persistence is available through the standard EMF
mechanisms, making its integration transparent in existing EMF based
applications. NEOEMF is similar to Morsa in several aspects, but
aims to provide multiple backends that can be chosen according to
a specific modeling scenario.
        </p>
        <p>
          EMF fragments
          <xref ref-type="bibr" rid="ref27">(Scheidgen et al. 2012)</xref>
          is another
NoSQLbased persistence layer for EMF aimed at achieving fast storage
of new data and fast navigation of persisted models. Supported
backends are MongoDB, Apache Hbase and regular files on the
file system. EMF fragments is based on the proxy mechanism used
by EMF for inter-document relationships: models are automatically
partitioned in several chunks (fragments) using metamodel
annotations, and linked together using the standard EMF proxy
mechanism. Unlike our approach, CDO, and Morsa, all data from a
single fragment is loaded at a time. Only links to another fragments
are loaded on demand. Another characteristic of this approach is
that metamodels have to be modified to indicate where the
partitions should be made to get the partitioning capabilities, whereas
NEOEMF can be plugged directly into existing EMF-based
applications.
5.2
        </p>
      </sec>
      <sec id="sec-7-2">
        <title>Model Query</title>
        <p>
          There are several frameworks to query models, specially targeting
the EMF framework (including one or more of the EMF backends
mentioned before). The main ones are Eclipse MDT OCL
          <xref ref-type="bibr" rid="ref13 ref14 ref28">(Eclipse
Foundation 2016b)</xref>
          , EMF-Query
          <xref ref-type="bibr" rid="ref13 ref14 ref28 ref29">(The Eclipse Foundation 2016)</xref>
          and IncQuery
          <xref ref-type="bibr" rid="ref5">(Bergmann et al. 2009)</xref>
          .
        </p>
        <p>Eclipse MDT OCL provides an execution environment to
evaluate OCL invariants and queries over models. It relies on the EMF
API to navigate the model, and stores allInstances results in a
cache to speed up their computation.</p>
        <p>EMF-Query is a framework that provides an abstraction layer on
top of the EMF API to query a model. It includes a set of tools to
ease the definition of queries and manipulate results. Compared to
the Mogwa¨ı framework, these two solutions are strongly dependent
on the EMF API, providing on the one hand an easy integration in
existing EMF applications, but on the other hand they are unable to
2 http://www.mongodb.org
benefit from all performance advantages of NoSQL databases due
to this API dependency.</p>
        <p>
          EMF-IncQuery
          <xref ref-type="bibr" rid="ref5">(Bergmann et al. 2009)</xref>
          is an incremental pattern
matcher framework to query EMF models. It bypasses API
limitations using a persistence-independent index mechanism to
improve model access performance. It is based on an adaptation of a
RETE algorithm, and query results are cached and incrementally
updated using the EMF notification mechanism to improve
performance. While EMF-IncQuery shows great execution time
performances
          <xref ref-type="bibr" rid="ref7">(Bergmann et al. 2011)</xref>
          when repeating a query multiple
times on a model, the results presented in this article show
mitigated performances for single evaluation of queries. This is not the
case for our framework. Caches and indexes must be built for each
query, implying a non-negligible memory overhead compared to
the Mogwa¨ı framework. In addition, the initialization of the index
needs a complete resource traversal, based on EMF API, which can
be costly for lazy-loading persistence frameworks.
6.
        </p>
      </sec>
    </sec>
    <sec id="sec-8">
      <title>Conclusion</title>
      <p>In this article we have presented NEOEMF, our solution to store
and access very large models using a multi-datastore model
persistence framework. NEOEMF relies on a lazy-loading
capability allowing very large model navigation in a reduced amount of
memory, by loading elements from the datastore only when they
are accessed. NEOEMF has been designed to be fully compatible
with existing EMF-based applications by providing a complete
implementation of the EMF API. Datastores’ behavior and internal
caches can be tuned by providing options to the standard save and
load EMF methods. Currently, NEOEMF provides three
implementations (graph, map, and column) that can be plugged
transparently to provide an optimized solution to different modeling use
cases: frequent and repeated atomic accesses, complex query
computation, and cloud-based model transformation.</p>
      <p>
        In addition to the persistence layer itself, we have introduce the
MOGWA¨I framework that generates Gremlin traversals from OCL
queries in order to maximize the benefits of using a graph
backend to store large models. MOGWA¨I is integrated in the NEOEMF
infrastructure, extending NEOEMF/GRAPH with custom query
capabilities. OCL queries are translated using model-to-model
transformation into Gremlin traversals that are then computed on the
database side, reducing the overhead implied by modeling API and
the reification of intermediate. Experiments detailed in previous
work
        <xref ref-type="bibr" rid="ref10 ref11 ref12">(Daniel et al. 2016b)</xref>
        have shown that using this approach
brings a significant improvement both in terms of execution time
and memory consumption. NEOEMF and MOGWA¨I are developed
as open-source Eclipse plugins and available online.
      </p>
      <p>
        Model transformations intensively use model queries to
navigate the model to transform, match source elements, or set target
values. Integrating the MOGWA¨I framework in model
transformation engines (such as ATL
        <xref ref-type="bibr" rid="ref19">(Jouault et al. 2008)</xref>
        ) to compute these
queries could drastically reduce the execution time and memory
consumption implied by the transformation of large models.
Another possible approach would be to extend the MOGWA¨I to
translate the transformation itself into database queries and compute it
entirely on the database side.
      </p>
      <p>As future work we plan to study the interest of other
datastores that could be beneficial for specific use cases. For example,
we want to study if a document-based representation could provide
some performance gains. We also want to study how datastores can
be combined to optimize a set of modeling activities (for
example a map/graph backend that would speed-up both query
computation and atomic accesses). Finally, we plan to integrate into
NEOEMF advanced features which are typically needed by
modeling processes, such as model versioning, or collaborative edition.
The later could for example benefit of the distributed architecture
provided by NEOEMF/COLUMN.</p>
      <p>
        Another ongoing work is to study the integration of the MOGWA¨I
framework into model persistence solutions that do not rely on a
Gremlin compatible database. For example, we plan to adapt
existing work on EOL to SQL translation
        <xref ref-type="bibr" rid="ref9">(Carlos et al. 2014)</xref>
        to
test our model-to-model transformation-based approach over SQL
databases. Generating SQL queries would also enable to use the
Spark-SQL connector for HBase in order to improve query
execution time and memory consumption over NEOEMF/COLUMN.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <string-name>
            <given-names>S.</given-names>
            <surname>Azhar</surname>
          </string-name>
          .
          <article-title>Building information modeling (BIM): Trends, benefits, risks, and challenges for the AEC industry</article-title>
          . Leadership and Management in Engineering, pages
          <fpage>241</fpage>
          -
          <lpage>252</lpage>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <string-name>
            <given-names>K.</given-names>
            <surname>Barmpis</surname>
          </string-name>
          and
          <string-name>
            <given-names>D.</given-names>
            <surname>Kolovos</surname>
          </string-name>
          . Hawk:
          <article-title>Towards a scalable model indexing architecture</article-title>
          .
          <source>In Proc. of BigMDE'13</source>
          , pages
          <fpage>6</fpage>
          -
          <lpage>9</lpage>
          . ACM,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <string-name>
            <given-names>A.</given-names>
            <surname>Benelallam</surname>
          </string-name>
          ,
          <string-name>
            <surname>A</surname>
          </string-name>
          . Go´mez, G. Sunye´,
          <string-name>
            <given-names>M.</given-names>
            <surname>Tisi</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Launay</surname>
          </string-name>
          .
          <article-title>Neo4EMF, a Scalable Persistence Layer for EMF Models</article-title>
          .
          <source>In Proc. of the 10th ECMFA</source>
          , pages
          <fpage>230</fpage>
          -
          <lpage>241</lpage>
          . Springer,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <string-name>
            <given-names>A.</given-names>
            <surname>Benelallam</surname>
          </string-name>
          ,
          <string-name>
            <surname>A</surname>
          </string-name>
          . Go´mez, M. Tisi, and
          <string-name>
            <given-names>J.</given-names>
            <surname>Cabot</surname>
          </string-name>
          .
          <article-title>Distributed Model-toModel Transformation with ATL on MapReduce</article-title>
          .
          <source>In Proc. of the 8th SLE Conference</source>
          , pages
          <fpage>37</fpage>
          -
          <lpage>48</lpage>
          . ACM,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          <string-name>
            <given-names>G.</given-names>
            <surname>Bergmann</surname>
          </string-name>
          ,
          <string-name>
            <surname>A</surname>
          </string-name>
          ´.
          <source>Horva´th, I. Ra´th, and D. Varro´</source>
          .
          <article-title>Efficient model transformations by combining pattern matching strategies</article-title>
          .
          <source>In Proc. of the 2nd ICMT</source>
          , pages
          <fpage>20</fpage>
          -
          <lpage>34</lpage>
          , Zurich, Switzerland,
          <year>2009</year>
          . URL http://dx.doi. org/10.1007/978-3-
          <fpage>642</fpage>
          -02408-
          <issue>5</issue>
          _
          <fpage>3</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <string-name>
            <given-names>G.</given-names>
            <surname>Bergmann</surname>
          </string-name>
          ,
          <string-name>
            <surname>A</surname>
          </string-name>
          ´.
          <source>Horva´th, I. Ra´th</source>
          , D. Varro´,
          <string-name>
            <given-names>A.</given-names>
            <surname>Balogh</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Balogh</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <surname>A.</surname>
          </string-name>
          <article-title>O¨ kro¨s. Incremental evaluation of model queries over EMF models</article-title>
          .
          <source>In Proc. of the 13th MoDELS Conference</source>
          , pages
          <fpage>76</fpage>
          -
          <lpage>90</lpage>
          . Springer,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          <string-name>
            <given-names>G.</given-names>
            <surname>Bergmann</surname>
          </string-name>
          ,
          <string-name>
            <surname>A.</surname>
          </string-name>
          <article-title>Horva´th, I. Ra´th, and D. Varro´. Incremental evaluation of model queries over EMF models: A tutorial on EMF-IncQuery</article-title>
          .
          <source>In Proc. of the 7th ECMFA</source>
          , pages
          <fpage>389</fpage>
          -
          <lpage>390</lpage>
          , Berlin, Heidelberg,
          <year>2011</year>
          .
          <source>ISBN 978-3-642-21469-1</source>
          . URL http://dl.acm.org/citation.cfm?id=
          <volume>2023522</volume>
          .
          <fpage>2023565</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          <string-name>
            <given-names>H.</given-names>
            <surname>Bruneliere</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Cabot</surname>
          </string-name>
          , G. Dupe´, and
          <string-name>
            <given-names>F.</given-names>
            <surname>Madiot</surname>
          </string-name>
          .
          <article-title>MoDisco: A model driven reverse engineering framework</article-title>
          .
          <source>IST</source>
          , pages
          <fpage>1012</fpage>
          -
          <lpage>1032</lpage>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          <string-name>
            <surname>X. D. Carlos</surname>
            , G. Sagardui, and
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Trujillo</surname>
          </string-name>
          .
          <article-title>Mqt, an approach for run-time query translation: From EOL to SQL</article-title>
          .
          <source>In Proc. of OCL 2014 co-located with MoDELS</source>
          <year>2014</year>
          , pages
          <fpage>13</fpage>
          -
          <lpage>22</lpage>
          , Valencia, Spain,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          <string-name>
            <given-names>G.</given-names>
            <surname>Daniel</surname>
          </string-name>
          , G. Sunye´,
          <string-name>
            <given-names>A.</given-names>
            <surname>Benelallam</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Tisi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Vernageau</surname>
          </string-name>
          ,
          <string-name>
            <surname>A.</surname>
          </string-name>
          <article-title>Go´mez, and</article-title>
          <string-name>
            <given-names>J.</given-names>
            <surname>Cabot</surname>
          </string-name>
          .
          <article-title>Neoemf: a multi-database model persistence framework for very large models</article-title>
          .
          <source>In Proc. of the MoDELS 2016</source>
          Tool Demonstration Session [To appear].
          <source>CEUR-WS</source>
          ,
          <year>2016a</year>
          . Available Online at http: //tinyurl.com/jhkqoyx.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          <string-name>
            <given-names>G.</given-names>
            <surname>Daniel</surname>
          </string-name>
          , G. Sunye´, and
          <string-name>
            <given-names>J.</given-names>
            <surname>Cabot</surname>
          </string-name>
          .
          <article-title>Mogwa¨ı: a framework to handle complex queries on large models</article-title>
          .
          <source>In Proc. of the 10th RCIS Conference</source>
          [To appear]. IEEE,
          <year>2016b</year>
          . Available Online at http://tinyurl.com/ zx6cfam.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          <string-name>
            <given-names>G.</given-names>
            <surname>Daniel</surname>
          </string-name>
          , G. Sunye´, and
          <string-name>
            <given-names>J.</given-names>
            <surname>Cabot</surname>
          </string-name>
          .
          <article-title>Prefetchml: a framework for prefetching and caching models</article-title>
          .
          <source>In Proc. of the 19th MoDELS Conference</source>
          [To appear]. ACM/IEEE, 2016c. Available Online at http://tinyurl. com/huc55hl.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          <string-name>
            <given-names>Eclipse</given-names>
            <surname>Foundation. The CDO Model</surname>
          </string-name>
          <article-title>Repository (CDO), 2016a</article-title>
          . URL http://www.eclipse.org/cdo/ . URL: http://www.eclipse. org/cdo/.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          <string-name>
            <given-names>Eclipse</given-names>
            <surname>Foundation</surname>
          </string-name>
          .
          <source>MDT OCL</source>
          ,
          <year>2016b</year>
          . URL www.eclipse. org/modeling/mdt/?project=ocl . URL: www.eclipse.org/ modeling/mdt/?project=ocl .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          <string-name>
            <given-names>A.</given-names>
            <surname>Go</surname>
          </string-name>
          <article-title>´mez, A</article-title>
          . Benelallam, and
          <string-name>
            <given-names>M.</given-names>
            <surname>Tisi</surname>
          </string-name>
          .
          <article-title>Decentralized Model Persistence for Distributed Computing</article-title>
          .
          <source>In Proc. of the 3rd BigMDE Workshop</source>
          , pages
          <fpage>42</fpage>
          -
          <lpage>51</lpage>
          . CEUR-WS.org,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          <string-name>
            <given-names>A.</given-names>
            <surname>Go</surname>
          </string-name>
          ´mez, G. Sunye´,
          <string-name>
            <given-names>M.</given-names>
            <surname>Tisi</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Cabot</surname>
          </string-name>
          .
          <article-title>Map-based transparent persistence for very large models</article-title>
          .
          <source>In Proc. of the 18th FASE Conference</source>
          . Springer,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          <string-name>
            <given-names>F.</given-names>
            <surname>Holzschuher</surname>
          </string-name>
          and
          <string-name>
            <given-names>R.</given-names>
            <surname>Peinl</surname>
          </string-name>
          .
          <article-title>Performance of graph query languages: Comparison of cypher, gremlin and native access in neo4j</article-title>
          .
          <source>In Proc. of the Joint EDBT/ICDT 2013 Workshops</source>
          , pages
          <fpage>195</fpage>
          -
          <lpage>204</lpage>
          , New York, NY, USA,
          <year>2013</year>
          . ISBN 978-1-
          <fpage>4503</fpage>
          -1599-9. doi:
          <volume>10</volume>
          .1145/2457317.2457351. URL http://doi.acm.
          <source>org/10</source>
          .1145/2457317.2457351 .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          <string-name>
            <given-names>J.</given-names>
            <surname>Hutchinson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Rouncefield</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Whittle</surname>
          </string-name>
          .
          <article-title>Model-driven engineering practices in industry</article-title>
          .
          <source>In Software Engineering (ICSE)</source>
          ,
          <year>2011</year>
          33rd International Conference on, pages
          <fpage>633</fpage>
          -
          <lpage>642</lpage>
          . IEEE,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          <string-name>
            <given-names>F.</given-names>
            <surname>Jouault</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Allilaire</surname>
          </string-name>
          , J. Be´zivin,
          <string-name>
            <surname>and I. Kurtev.</surname>
          </string-name>
          <article-title>ATL: A model transformation tool</article-title>
          . SCP, pages
          <fpage>31</fpage>
          -
          <lpage>39</lpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          <string-name>
            <given-names>D. S.</given-names>
            <surname>Kolovos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L. M.</given-names>
            <surname>Rose</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Matragkas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. F.</given-names>
            <surname>Paige</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Guerra</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. S.</given-names>
            <surname>Cuadrado</surname>
          </string-name>
          ,
          <string-name>
            <surname>J. De Lara</surname>
            , I. Ra´th, D. Varro´,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Tisi</surname>
          </string-name>
          , et al.
          <article-title>A research roadmap towards achieving scalability in model driven engineering</article-title>
          .
          <source>In Proc. of BigMDE'13</source>
          , pages
          <fpage>1</fpage>
          -
          <lpage>10</lpage>
          . ACM,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          <string-name>
            <given-names>D. S.</given-names>
            <surname>Kolovos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L. M.</given-names>
            <surname>Rose</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. F.</given-names>
            <surname>Paige</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Guerra</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. S.</given-names>
            <surname>Cuadrado</surname>
          </string-name>
          , J. de Lara, I. Ra´th, D. Varro´, G. Sunye´, and
          <string-name>
            <given-names>M.</given-names>
            <surname>Tisi</surname>
          </string-name>
          . MONDO:
          <article-title>Scalable Modelling and Model Management on the Cloud</article-title>
          .
          <source>In Proc. of the Projects Showcase</source>
          ,
          <source>(STAF</source>
          <year>2015</year>
          ), pages
          <fpage>44</fpage>
          -
          <lpage>53</lpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          <string-name>
            <given-names>P.</given-names>
            <surname>Mohagheghi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. A.</given-names>
            <surname>Fernandez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. A.</given-names>
            <surname>Martell</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Fritzsche</surname>
          </string-name>
          , and
          <string-name>
            <given-names>W.</given-names>
            <surname>Gilani</surname>
          </string-name>
          .
          <article-title>MDE adoption in industry: challenges and success criteria</article-title>
          .
          <source>In Proc. of Workshops at MoDELS</source>
          <year>2008</year>
          , pages
          <fpage>54</fpage>
          -
          <lpage>59</lpage>
          . Springer,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          OMG.
          <source>OMG MOF 2 XMI Mapping Specification version 2.5.1</source>
          ,
          <year>2016</year>
          . URL http://www.omg.org/spec/XMI/2.5.1/ .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          <string-name>
            <given-names>J. E.</given-names>
            <surname>Paga</surname>
          </string-name>
          <article-title>´n and</article-title>
          <string-name>
            <given-names>J. G.</given-names>
            <surname>Molina</surname>
          </string-name>
          .
          <article-title>Querying large models efficiently</article-title>
          .
          <source>IST</source>
          ,
          <year>2014</year>
          . ISSN 0950-
          <fpage>5849</fpage>
          . doi: http://dx.doi.org/10.1016/j.infsof.
          <year>2014</year>
          .
          <volume>01</volume>
          .005. URL http://dx.doi.org/10.1016/j.infsof.
          <year>2014</year>
          .
          <volume>01</volume>
          .005 .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          <string-name>
            <given-names>J. E.</given-names>
            <surname>Paga</surname>
          </string-name>
          <article-title>´n</article-title>
          ,
          <string-name>
            <given-names>J. S.</given-names>
            <surname>Cuadrado</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J. G.</given-names>
            <surname>Molina. Morsa</surname>
          </string-name>
          :
          <article-title>A scalable approach for persisting and accessing large models</article-title>
          .
          <source>In Proc. of the 14th MoDELS Conference</source>
          , pages
          <fpage>77</fpage>
          -
          <lpage>92</lpage>
          . Springer,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          <string-name>
            <given-names>R.</given-names>
            <surname>Pohjonen</surname>
          </string-name>
          and
          <string-name>
            <given-names>J.-P.</given-names>
            <surname>Tolvanen</surname>
          </string-name>
          .
          <article-title>Automated production of family members: Lessons learned</article-title>
          .
          <source>In Proc. of PLEES'02</source>
          , pages
          <fpage>49</fpage>
          -
          <lpage>57</lpage>
          . IESE,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          <string-name>
            <given-names>M.</given-names>
            <surname>Scheidgen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Zubow</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Fischer</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T.</given-names>
            <surname>Kolbe</surname>
          </string-name>
          .
          <source>Automated and Transparent Model Fragmentation for Persisting Large Models. In Proc. of the 15th MoDELS Conference</source>
          , pages
          <fpage>102</fpage>
          -
          <lpage>118</lpage>
          . Springer,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          <article-title>The Eclipse Foundation</article-title>
          .
          <source>EMF Query</source>
          ,
          <year>2016</year>
          . URL https://projects. eclipse.org/projects/modeling.emf.query .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          <string-name>
            <surname>Tinkerpop. The Gremlin Language</surname>
          </string-name>
          ,
          <year>2016</year>
          . URL www.
          <source>gremlin. tinkerpop.com. URL: gremlin.tinkerpop.com.</source>
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          <string-name>
            <given-names>J.</given-names>
            <surname>Warmer</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Kleppe</surname>
          </string-name>
          .
          <article-title>Building a flexible software factory using partial domain specific models</article-title>
          .
          <source>In Proc. of the 6th DSM Workshop</source>
          , pages
          <fpage>15</fpage>
          -
          <lpage>22</lpage>
          . University of Jyvaskyla,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>