EMF-IncQuery 0.4
This page is relevant for EMF-IncQuery version 0.4 and before! For the current version, go here!
What is EMF-IncQuery?
EMF-IncQuery is a framework for defining declarative queries over EMF models, and executing them efficiently without manual coding.
For the query language, we reuse the concepts of graph patterns (which is a key concept in many graph transformation tools) as a concise and easy way to specify complex structural model queries. High runtime performance is achieved by adapting incremental graph pattern matching techniques.
We believe the average programmer using EMF models will like EMF-IncQuery for the following reasons:
- declarative queries can be evaluated over EMF without manually traversing the models,
- complex interrelated constellations of EMF objects can be easily formulated as a graph pattern,
- the language is expressive and provides powerful features such as negation or counting,
- graph patterns are composable and reusable,
- queries can be evaluated with great freedom, i.e. input and output parameters can be selected at run-time,
- some frequently encountered shortcomings of EMF’s interfaces are addressed:
- easy and efficient enumeration of all instances of a class regardless of location,
- simple backwards navigation along all kinds of references (even without eOpposite)
- finding objects based on attribute value,
- the incremental query evaluation mechanism offers a significant performance boost when frequently querying complex structural patterns with a moderate amount of modifications in-between (e.g. during continuous validation),
- from the declarative representation of queries, pattern matcher code is generated which can be distributed as Eclipse plug-ins with very few depenedencies.
For more information on the newest EMF-IncQuery developments, please look here.
How to obtain
The followings apply to the "old" (0.4.x) IncQuery. For the new generation (0.6.x onward), please look here.
- Requires Eclipse 3.6 (recommended distribution: Eclipse Modeling Tools)
- Nightly builds can be installed from this update site: http://incquery.net/update/archive/incquery-0.4/
- It is recommended to also get the source bundles to enjoy Javadoc for the API. Currently, you may need to disable "Group by category" in your Eclipse installer in order to make these source bundles visible.
- Alternatively, with an SVN client plug-in integrated in your Eclipse, you can get the source code from Subversion by importing (File/Import/Team/Team Project Set) a downloaded copy of the .psf file available from the following URL:
https://viatra.inf.mit.bme.hu/svn/releng/trunk/org.eclipse.viatra2.releng/projects/incquery.psf- Or check out manually from https://viatra.inf.mit.bme.hu/svn/incquery/trunk (folders tooling/ and runtime/) and https://viatra.inf.mit.bme.hu/svn/importers/trunk/emf/org.eclipse.viatra2.emf.importer.generic
Documentation
- Getting started
- documentation for beginners is not ready yet, but you should consult the very helpful Cheat Sheet we provide (look under Help/Cheat Sheets...) as a first tutorial in using EMF-IncQuery.
- Query language
- Advanced issues
- Educational examples
Events and presentations
Look here: publications