EMF-IncQuery

A year's worth of research in retrospect

It's the end of the year according to both the calendar, as well as my research grant. I have spent some of this past year doing research on the connection of OCL and graph queries. I have also tried to explain and illustrate my research topic in previous posts of this very blog, and let the readers keep tabs on what I was up to all this time. Let's do a quick recap.

Measuring up

My previous blog post demonstrated my OCL to EMF-IncQuery transformation OCL2IQ in action. Here I am presenting my first performance measurements to investigate whether this solution fulfills the original promise of my research: delivering efficient, incremental query evaluation for a subset of OCL expressions by transforming them to graph patterns of equivalent semantics, and applying EMF-IncQuery on them.

It is alive!

In one of my earlier blog posts, I have outlined the basic ideas and transformation patterns that accomplish a translation of (a subset of) OCL expressions into graph patterns. The theory was illustrated by running examples from the school case study, where the purpose of querying was to find classmates with the same name. The good news is that I have managed creating an experimental implementation of this translation that maps OCL expressions to equivalent graph patterns.

Xcore meets IncQuery: How the new generation of DSLs are made - talk at EclipseCon Europe 2013

The EMF-IncQuery Project is proud to announce our talk at this year's EclipseCon Europe conference titled "Xcore meets IncQuery: How the New Generation of DSLs Are Made".

Have you ever got lost in a complex domain-specific model? Are you familiar with Facebook's Graph Search? Ever wished something like this would be available for your favorite EMF-based tool? It is, it's called EMF-IncQuery. In fact, it can do more than Graph Search, because you can create live queries, meaning you get live updates for your search results as the model is being edited. In the talk, we'll show you some of the most powerful features that this technology can be used for in practice.

See you on 31 October between 14:15 - 14:50 in Seminarräume 1-3!

The technology presented in this talk is the result of a collaboration between Ed Merks, Tamas Szabo (itemis AG) and the EMF-IncQuery team. Read the rest of the blog post below for more information regarding the presentation and the live demos.

Providing incremental updates for queries, part II: expression evaluation

After the overview presented in my previous blog post, I am now going to discuss incremental expression evaluation, a.k.a. the eval() language element, which is my most recent contribution to EMF-IncQuery. The examples continue to rely upon the School metamodel introduced here.

Syndicate content

Developers

Contact Information

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