Skip navigation links

NeoEMF 2.0.0 API

NeoEMF : A Multi-Database Model Persistence Framework.

See: Description

Core 
Package Description
fr.inria.atlanmod.neoemf
The base package of all NeoEMF features.
fr.inria.atlanmod.neoemf.bind
Provides classes related to the binding engine and classpath analysis.
fr.inria.atlanmod.neoemf.config
Provides utility classes to provide modeling and persistence-level configuration.
fr.inria.atlanmod.neoemf.core
Provides the base classes that extends EMF API to enable lazy-loading of model elements.
fr.inria.atlanmod.neoemf.core.internal
Provides helper classes for the base classes, such as lazy collections.
fr.inria.atlanmod.neoemf.core.internal.collect
Provides on-demand collections and iterators related to EObjects content.
fr.inria.atlanmod.neoemf.data
Provides generic classes representing data management operations.
fr.inria.atlanmod.neoemf.data.bean
Provides simple representations of objects used to translate model-level operations in persistence calls.
fr.inria.atlanmod.neoemf.data.bean.serializer
Provides classes related to bean serialization.
fr.inria.atlanmod.neoemf.data.mapping
Provides interfaces for data mapping.
fr.inria.atlanmod.neoemf.data.store
Provides classes that adds preprocessing and postprocessing functionalities during persistence operations.
fr.inria.atlanmod.neoemf.data.store.adapter
Provides classes to map model-level operations into persistence-level operations.
fr.inria.atlanmod.neoemf.data.store.listener
Provides objects able to listen database calls.
fr.inria.atlanmod.neoemf.resource
Provides classes extending EMF resource management to support lazy-loading and database delegation.
fr.inria.atlanmod.neoemf.resource.internal
Provides helper classes for base classes related to Resources.
fr.inria.atlanmod.neoemf.util
Provides miscellaneous utility classes, such as URIs management or models comparison.
fr.inria.atlanmod.neoemf.util.compare
Provides EMF Compare specific implementation classes that allow model comparison involving PersistentEObjects.
I/O 
Package Description
fr.inria.atlanmod.neoemf.io
Provides methods and classes for working with I/O and security.
fr.inria.atlanmod.neoemf.io.listener
Provides objects able to listen an I/O process.
fr.inria.atlanmod.neoemf.io.processor
Provides classes that adds preprocessing and postprocessing functionalities during an I/O process.
fr.inria.atlanmod.neoemf.io.proxy
Provides simple representations of objects used during import/export.
fr.inria.atlanmod.neoemf.io.reader
Provides classes related to data reading.
fr.inria.atlanmod.neoemf.io.util
Provides utility classes to ease reading and writing of files.
fr.inria.atlanmod.neoemf.io.writer
Provides classes related to data writing.
In-memory (default) 
Package Description
fr.inria.atlanmod.neoemf.data.im
Provides classes related to data management specific to the default in-memory implementation.
fr.inria.atlanmod.neoemf.data.im.config
Provides configuration classes to define specific behaviors of the default in-memory database.
fr.inria.atlanmod.neoemf.data.im.util
Provides utility classes related to the default in-memory database.
Blueprints 
Package Description
fr.inria.atlanmod.neoemf.data.blueprints
Provides classes related to data management specific to a Blueprints implementation.
fr.inria.atlanmod.neoemf.data.blueprints.config
Provides configuration classes to define specific behaviors of Blueprints data persistence.
fr.inria.atlanmod.neoemf.data.blueprints.internal.graph
Provides the dedicated graph structure for storing an EMF model.
fr.inria.atlanmod.neoemf.data.blueprints.internal.graph.wrapper
Provides dynamic re-implementations of the Id-based structure of Blueprints.
fr.inria.atlanmod.neoemf.data.blueprints.util
Provides utility classes related to Blueprints.
Blueprints Neo4j 
Package Description
fr.inria.atlanmod.neoemf.data.blueprints.neo4j
Provides classes related to data management specific to a Neo4j implementation, under Blueprints.
fr.inria.atlanmod.neoemf.data.blueprints.neo4j.config
Provides configuration classes to define specific behaviors of Neo4j data persistence.
MapDB 
Package Description
fr.inria.atlanmod.neoemf.data.mapdb
Provides classes related to data management specific to a MapDB implementation.
fr.inria.atlanmod.neoemf.data.mapdb.config
Provides configuration classes to define specific behaviors of MapDB data persistence.
fr.inria.atlanmod.neoemf.data.mapdb.util
Provides utility classes related to MapDB.
BerkeleyDB 
Package Description
fr.inria.atlanmod.neoemf.data.berkeleydb
Provides classes related to data management specific to a BerkeleyDB implementation.
fr.inria.atlanmod.neoemf.data.berkeleydb.config
Provides configuration classes to define specific behaviors of BerkeleyDB data persistence.
fr.inria.atlanmod.neoemf.data.berkeleydb.util
Provides utility classes related to BerkeleyDB.
HBase 
Package Description
fr.inria.atlanmod.neoemf.data.hbase
Provides classes related to data management specific to a HBase implementation.
fr.inria.atlanmod.neoemf.data.hbase.config
Provides configuration classes to define specific behaviors of HBase data persistence.
fr.inria.atlanmod.neoemf.data.hbase.util
Provides utility classes related to HBase.
MongoDB (beta) 
Package Description
fr.inria.atlanmod.neoemf.data.mongodb
Provides classes related to data management specific to a MongoDb implementation.
fr.inria.atlanmod.neoemf.data.mongodb.config
Provides configuration classes to define specific behaviors of MongoDb data persistence.
fr.inria.atlanmod.neoemf.data.mongodb.document
Provides MongoDB documents.
fr.inria.atlanmod.neoemf.data.mongodb.util
Provides utility classes related to MongoDb.

NeoEMF : A Multi-Database Model Persistence Framework.

The figure below describes the integration of NeoEMF in the Eclipse Modeling Framework (EMF) ecosystem, the most popular modeling framework nowadays.

NeoEMF Architecture Overview

EMF Behavior

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. These features internally rely on EMF's Model Access API to navigate models, perform CRUD operations, check constraints, etc.

At its core, EMF delegates the operations to a persistence manager using its Persistence API, which is in charge of the (de)serialization of the model.

NeoEMF Behavior

The NeoEMF core component is defined at this level, and can be registered as a persistence manager for EMF, replacing, for instance, the default XMI persistence manager. This design makes NeoEMF both transparent to the client-application and EMF itself, that simply delegates the calls without taking care of the actual storage.

Once the NeoEMF core component has received the request of the modeling operation to perform, it forwards the operation to the appropriate database driver (MapDB, Blueprints, or HBase), which is in charge of handling the low-level representation of the model. These connectors translate modeling operations into Backend API calls, store the results, and reify database records into EMF EObjects when needed.

NeoEMF also embeds a set of default caching strategies that are used to improve performance of client applications, and can be configured transparently at the EMF API level.

Each backend is provided in a dedicated Eclipse plugin. you can navigate through the documentation to have a complete overview of backend-specific classes and how they interact with the core component.

Provided Adapters

NeoEMF provides 6 database adapters for now:

  • Blueprints
    • TinkerGraph: The default graph database
    • Neo4j: A graph-based database
  • BerkeleyDB: A map-based database
  • MapDB: Another map-based database
  • HBase: A distributed column-based database
  • MongoDB: A document-based database

Sources are available on GitHub. Further informations can be found on NeoEMF website.

Skip navigation links

Copyright © 2013–2019 Atlanmod. All rights reserved.