Background

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
wildcard pattern.

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.

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
support.

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
support.

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.

Description

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
their workspace.

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.

Persistence

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
index automatically.

Queries

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
index.

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.

Organization

Mentors

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)

Interested parties

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

Code contributions

The initial code contribution will be a set of plug-ins from the
TMF/Xtext Eclipse project.