This page is deprecated and may contain some information that is no longer relevant or accurate.
EMF Index is a proposed open source project under the Eclipse
Modeling Framework Technology Project (EMFT).
This proposal is in the Project Proposal Phase (as defined in the
Eclipse Development Process
document) and is written to declare its intent and scope. This
proposal is written to solicit additional participation and input
from the Eclipse community. You are invited to comment on and/or join
the project. Please send all feedback to the
Many development tools maintain an index on the processed
artifacts to allow fast and scalable queries for elements that match
certain criteria. In the Java Development Toolkit (JDT) for example,
the internal Java models are indexed to quickly find calls of a
method, navigate to the declaration of a field or find all subclasses
of a given class. It also allows to find classes whose names match a
EMF Index will provide an index for modeling tools based on the
Eclipse Modeling Framework (EMF). That index will automatically
collect and synchronize index data on Ecore models and instances. It
will allow fast queries without the need to have EMF resources
instantiated in memory, thereby enabling scalable modeling tools
based on EMF.
The objectives of the EMF Index project are the following:
- Define APIs and implement
components for specifying search scopes, collecting and persisting
index data, synchronization of index data with model changes, and
querying of model elements.
- Increase the usability of
EMF-based modeling tools by providing a JDT-like user interface for
following references, finding elements by type and querying scoped
elements. This can also be the foundation of model refactoring
- Increase the scalability of
modeling tools by enabling queries on models that are not loaded.
This will allow the processing of bigger models and a greater number
of model resources. It will also help to deal with temporarily
unavailable models, e.g. resources fetched from the network.
- Integrate with other Eclipse components, e.g. the searching
- Provide a platform to collect and discuss requirements and
use cases for model indexing.
EMF Index will not cover these issues:
- Deal with models not based on EMF.
- Implement a model repository. Only specific, pre-selected
properties of model elements should be stored in the index.
EMF Index will have to define APIs and provide implementations for
the following functionality:
- Index scope
EMF follows an open-world paradigm, i.e. it is possible to load
every resource that is accessible, locally or from the network.
While that is fine for on-demand loading of referenced elements, a
search operation needs a confined scope. Clients must have a way
define the scope of indexed elements, e.g. as the resources in
Collection of index data
Retrieve index data from a given EMF resource. The index data will
consist of generic data, e.g. the type of an element, as well as
model-specific data, e.g. a collection of attributes that constitute
a fully-qualified name. Any model-specific data can be stored in the
index. There will be a way to specify which data will be retrieved
from the EMF model. This also includes the definition of
model-specific scopes for queries.
Store the collected index data independently from the indexed
resources in such a way that it can be queried easily later.
Synchronization of index data
Whenever it is possible, detect model changes and update the model
Queries should consist of a set of criteria and a query scope. The
results of a query must be descriptors (e.g. EMF proxies or fragment
URIs) of model elements rather than the elements themselves, such
that the client decides whether to load them or not. The descriptors
can carry any additional information on the element available in the
Exchangeable storage backend
The backend to actually store the index data will be exchangeable,
allowing customized implementations for specific storage technologies,
such as pure in-memory or database storage of index data.
Relationship with other Eclipse Projects
- EMF Index will be built on top of EMF.
- As EMF Index will be generic, it will be usable by any
EMF-based framework, not depending on the specific concrete syntax.
- TMF/Xtext is expected to make
strong use of EMF Index. As models are described textually in Xtext,
a common problem is to resolve/find a model element by some
domain-specific textual description. An index taking these
descriptions into account will be a great benefit.
- EMF Index will make contributions to Eclipse search.
- Ed Merks (Macro Modeling, Canada)
- Sven Efftinge (itemis AG, Germany)
Proposed initial committers
- Jan Köhnlein (itemis AG, Germany), lead
- Sven Efftinge (itemis AG, Germany)
- Dennis Hübner (itemis AG, Germany), release engineering
- Bernd Kolb (Independent, Germany)
- Jos Warmer (Ordina, Netherlands)
The need for a model index has been discussed in the Modeling
Symposium at the Eclipse Summit Europe 2009.
Parties indicating interest were
- Macro Modeling (Canada), Ed Merks
- Geensys (France), Stephan Eberle
- paranor (Switzerland), Knut Wannheden
- SAP (Germany), Boris Gruschko
- ikv++ (Germany), Matthias Erche
The initial code contribution will be a set of plug-ins from the
TMF/Xtext Eclipse project.