| <!-- |
| This document is provided as a template along with some guidance for creating |
| your project proposal. This is just a template. Feel free to change it as |
| you see fit (add sections, remove section). We feel, however, that the |
| suggestions represented in this document represent the reasonable minimum |
| amount of information to move forward. |
| |
| Please keep the formatting in this document simple. Please do not edit |
| this document in Microsoft Word as it adds huge piles of markup that make |
| it difficult to restyle. |
| |
| More information is available here: |
| |
| http://wiki.eclipse.org/Development_Resources/HOWTO/Pre-Proposal_Phase |
| |
| Direct any questions about this template to emo@eclipse.org |
| --> |
| |
| <html> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> |
| <!-- |
| Include the title here. We will parse it out of here and include it on the |
| rendered webpage. Do not duplicate the title within the text of your page. |
| --> |
| |
| <title>EMF-IncQuery</title> |
| </head> |
| |
| <!-- |
| We make use of the 'classic' HTML Definition List (dl) tag to specify |
| committers. I know... you haven't seen this tag in a long while... |
| --> |
| |
| <style> |
| dt { |
| display: list-item; |
| list-style-position:outside; |
| list-style-image:url(/eclipse.org-common/themes/Phoenix/images/arrow.gif); |
| margin-left:16px; |
| } |
| dd { |
| margin-left:25px; |
| margin-bottom:5px; |
| } |
| </style> |
| |
| <body> |
| <p>The EMF-IncQuery project is a proposed open source project under the <a href="http://www.eclipse.org/projects/project_summary.php?projectid=modeling.emft">Eclipse Modeling Framework Technology (EMFT) Container Project</a>.</p> |
| |
| <!-- |
| The communication channel must be specified. Typically, this is the |
| "Proposals" forum. In general, you don't need to change this. |
| --> |
| <p>This proposal is in the Project Proposal Phase (as defined in the |
| Eclipse Development Process) and is written to declare its intent and |
| scope. We solicit additional participation and input from the Eclipse |
| community. Please send all feedback to the |
| <a href="http://www.eclipse.org/forums/eclipse.proposals">Eclipse Proposals</a> |
| Forum.</p> |
| |
| <h2>Background</h2> |
| |
| <!-- |
| Optionally provide the background that has lead you to creating this project. |
| --> |
| |
| <p> |
| The EMF-IncQuery project supports (1) the declarative and reusable specification of queries over EMF models and (2) the efficient search and retrieval of EMF model elements by maintaining an incremental cache of query results. The motivation for EMF-IncQuery is simple: while the EMF API already provides basic functionality, it lacks several features that are crucial both from the functionality as well as the performance viewpoints. As a result, such features are frequently implemented on an ad-hoc, case-by-case basis in today's EMF-based applications. |
| </p> |
| |
| <p> |
| From a technical viewpoint, EMF-IncQuery addresses three key challenges: |
| <ul> |
| <li><b>Simple backward getters are missing</b> from the EMF API, which are essential in many modeling applications.</li> |
| <li>There is <b>no standard way to define complex queries</b> that concern multi-object configurations.</li> |
| <li><b>Existing EMF query technologies</b> are not specifically optimized for in-memory scalability, and thus <b>have performance issues</b> when used with complex queries and large instance models.</li> |
| </ul> |
| |
| <p>As queries are frequently called in many applications (such as UI back-ends, model transformations), an incremental, online evaluation approach is desirable to provide fast response times even for large models.</p> |
| |
| <p> |
| EMF-IncQuery provides a light-weight framework built on an adaptation of the RETE algorithm that is well-known from expert systems. The key contributions of EMF-IncQuery are the following: |
| <ul> |
| <li>It provides <b>efficient, incremental support for evaluating backward getters</b> over EMF models, aligned with existing types and conventions of EMF's APIs. With the IncQuery API, the enumeration of instances of a specific type or reverse navigation along references are instant, O(1) operations with minimal model modification overhead.</li> |
| <li>It features a <b>high performance incremental query engine for complex queries</b>. As a key advantage, the evaluation times are practically independent of the complexity of the query and the size of the model. As a result, EMF-IncQuery can scale up to handling models containing millions of model elements with fast response times, even for very complex queries.</li> |
| <li>It provides a <b>user friendly, declarative graph pattern-based query language</b> and tools for easy definition of queries. The query language is built on Xtext2 and can be integrated into a hierarchy of such DSLs.</li> |
| </ul> |
| </p> |
| |
| <p> |
| EMF-IncQuery conceptually builds upon the research and development on incremental graph pattern matching carried out within the scope of the <a href="http://eclipse.org/gmt/VIATRA2/">VIATRA2 Eclipse GMT subproject</a>, which project started back in 2004 and has been continuously maintained since then. |
| </p> |
| |
| |
| <h2>Scope</h2> |
| |
| <!-- |
| All projects must have a well-defined scope. Describe, concisely, what |
| is in-scope and (optionally) what is out-of-scope. An Eclipse project |
| cannot have an open-ended scope. |
| --> |
| |
| <p> |
| EMF-IncQuery provides a new API for querying EMF models, an implementation of the API that leverages an incremental cache for fast retrieval, and a DSL and tools for specifying and testing queries. The emphasis is on scalability, which means fast (re-)execution even for complex queries and large models. EMF-IncQuery is intended to be a technological enabler, to provide a robust and scalable infrastructure on which higher level features such as well-formedness validation, view maintenance, or model synchronization can be built. |
| </p> |
| |
| |
| |
| |
| <!-- old stuff that I only left in for reference : |
| <p>The specific objectives of the EMF-IncQuery project are the following: |
| |
| <ul> |
| <li>Develop queries for EMF models |
| <ul> |
| <li>Expressive language (reusable queries, derived features)</li> |
| <li>Advanced tools for query development</li> |
| </ul> |
| </li> |
| <li>Efficiently execute queries over EMF models |
| <ul> |
| <li>Low-level incremental query API and high-level graph pattern query API</li> |
| <li>Complexity and model size-agnostic performance characteristics thanks to the RETE engine</li> |
| </ul> |
| </li> |
| <li>Seemlessly integrate with EMF applications |
| <ul> |
| <li>Deep integration with Ecore tools</li> |
| <li>Easy-to-use APIs and extension points</li> |
| </ul> |
| </li> |
| </ul> |
| |
| <p>EMF-IncQuery does not cover these issues: |
| <ul> |
| <li>Dealing with models not based on EMF</li> |
| <li>Querying not actively loaded (in-memory) EMF models</li> |
| <li>Supporting OCL or any other query language</li> |
| </ul> |
| </p> |
| --> |
| |
| |
| <h2>Description</h2> |
| |
| <!-- |
| Describe the project here. Be concise, but provide enough information that |
| somebody who doesn't already know very much about your project idea or domain |
| has at least a fighting chance of understanding its purpose. |
| --> |
| <p>The architecture of the <a href="http://viatra.inf.mit.bme.hu/incquery/">EMF-IncQuery framework</a> and tools is shown in Figure 1.</p> |
| |
| |
| <div> |
| <img src="incquery_arch.png" width="800"/> |
| <div><b>Figure 1: The EMF-IncQuery architecture</b></div> |
| </div> |
| |
| <h3>Runtime and API</h3> |
| |
| <p>The complex query evaluator of the EMF-IncQuery framework is built on a graph pattern matching engine that uses the <a href="http://dl.acm.org/citation.cfm?doid=1402947.1402953">RETE algorithm</a>, adapted from expert systems to facilitate the efficient storage and retrieval of partial views of graph-like models. EMF-IncQuery also features the <a href="http://viatra.inf.mit.bme.hu/incquery/base">Base</a> component that provides incremental support for backward getters as well as transitive closures for the efficient computation of e.g. reachability regions. EMF-IncQuery relies on the EMF Notification facility to incrementally update its internal cache to guarantee the consistency of the result set with respect to the actual contents of the model.</p> |
| |
| <p>As an interface over the core algorithms, the IncQuery runtime consists of: |
| <ul> |
| <li>a query / pattern matching API that provides a typesafe wrapper for instantiating and executing queries over EMF Notifiers (Resources, ResourceSets and EObject hierarchies)</li> |
| <li>add-ons such as the <a href="http://viatra.inf.mit.bme.hu/incquery/examples/umlvalidation">Validation Framework</a> (for the specification and live checking of well-formedness rules that correspond to Eclipse Resource Markers) or <a href="http://viatra.inf.mit.bme.hu/incquery/examples/derivedfeatures">Derived feature support</a> (for the efficient evaluation of derived EAttributes and EReferences with IncQuery queries as back-ends)</li> |
| </ul> |
| </p> |
| |
| <p>The runtime is designed to be compatible with standard Eclipse-EMF configurations as well as a headless, <a href="http://viatra.inf.mit.bme.hu/incquery/examples/standalone">standalone</a> execution mode. The efficiency of the execution engine has been <a href="http://viatra.inf.mit.bme.hu/publications/models10">demonstrated</a> in an industrial setting as well as in several academic research case studies.</p> |
| |
| <h3>Query language and tools</h3> |
| |
| <p>The IncQuery tools consist of an Xtext-based pattern language editor, and a development UI that can be used to execute, test and debug queries within the Eclipse IDE. The tools can make use of the interpretative runtime API for on-the-fly query execution and testing, while it can also generate type-safe wrappers that ease the integration of queries into application code. The tools also interfacee with IncQuery's add-ons to generate feature-specific adapter code.</p> |
| |
| <p>IncQuery's declarative queries can be evaluated over EMF models without manual (programmed) traversal. The <a href="https://viatra.inf.mit.bme.hu/incquery/language">query language</a> is built upon the concepts of graph patterns (which is a key concept in many transformation tools) to provide a concise, reusable and easy way to specify complex structural model queries. The key features are: |
| <ul> |
| <li><b>complex interconnections</b> of EMF objects can be easily formulated as a graph pattern,</li> |
| <li>the language is <b>highly expressive</b> and provides powerful features such as negation or counting,</li> |
| <li>queries can be evaluated with great freedom, i.e. <b>input and output parameters can be bound freely</b> at evaluation time,</li> |
| <li>graph patterns are <b>composable</b>, making it possible to <b>build reusable query libraries</b>.</li> |
| </ul> |
| </p> |
| |
| <p>Available documentation already discusses numerous demonstrative <a href="http://viatra.inf.mit.bme.hu/incquery/examples">examples</a> as well as <a href="https://viatra.inf.mit.bme.hu/incquery/advanced">advanced issues</a>.</p> |
| |
| <h2>Why Eclipse?</h2> |
| |
| <!-- |
| Answer these two questions: What value does this project bring to the Eclipse |
| community? What value do you expect to obtain from hosting your project at Eclipse? |
| |
| What value do you get by having your project at Eclipse over and above the value |
| of hosting at Eclipse Labs? |
| --> |
| |
| |
| <p>With EMF-IncQuery, our aim is to gain access to a much wider audience by designing the technology around the EMF ecosystem from the ground up. Based on OptXware's experience gained in a number of industrial tool development projects, we believe that IncQuery can add significant value to the foundation layer, that is, EMF itself. Additionally, many other EMF technologies can consume IncQuery technology, including: |
| <ul> |
| <li><a href="http://wiki.eclipse.org/EMF_Search">EMF Search</a>, <a href="http://wiki.eclipse.org/EMF/Query2">EMF Query 2</a> and <a href="http://wiki.eclipse.org/MDT-OCL">Eclipse OCL</a>: using IncQuery as an efficient back-end and index provider;</li> |
| <li><a href="http://wiki.eclipse.org/EMF/Validation">EMF Validation</a>: interfacing with IncQuery's validation engine to provide more expressive and faster well-formedness rules;</li> |
| <li><a href="http://wiki.eclipse.org/EEF">EEF</a>: using IncQuery as a back-end for UI components such as views, forms and editors.</li> |
| </ul> |
| </p> |
| |
| <h2>Relation to Other Eclipse Projects</h2> |
| |
| <p>EMF-IncQuery builds on the foundations developed in another Eclipse.org project, the <a href="http://eclipse.org/gmt/VIATRA2/">VIATRA2 model transformation framework</a>. Our experience with VIATRA2, both in BUTE's academic research as well as OptXware's industrial projects, has already proven the values and benefits of open sourcing a versatile, enabling framework, under the EPL with Eclipse.org's guarantee of being IP risk free.</p> |
| |
| <p>EMF-IncQuery's key distinguishing features compared to existing EMF model query technologies are: |
| <ul> |
| <li>EMF-IncQuery focuses on high-performance queries of <b>in-memory models</b>, whereas EMF Query and Query2 are concerned with querying workspace files or models persisted in databases;</li> |
| <li>EMF-IncQuery features a unique, <b>graph pattern-based, fully declarative query language</b> that is more expressive than the languages of Query and Query2; its expressive power is comparable to OCL, but IncQuery supports query reuse and dynamic parameterization, making it better suited for general purpose queries;</li> |
| <li>In contrast with both Query/Query2 and OCL, EMF-IncQuery is an <b>incremental query evaluation engine</b>, which means that once the results of a query have been computed, these are stored in a cache and continuously updated as the model changes, so that the consecutive result retrievals are instant operations.</li> |
| </ul> |
| </p> |
| |
| <h2>Initial Contribution</h2> |
| |
| <!-- |
| Projects are expected to arrive at Eclipse with existing code. |
| |
| Describe the existing code that will be contributed to the project. Please provide |
| a couple of paragraphs describing the code with modest detail, including important |
| information like code ownership (who holds the copyright?), and some consideration |
| of community that exists around the code. Include a listing of third-party libraries |
| and associated licenses. |
| --> |
| |
| <p>The initial contribution will be a set of plug-ins already under the EPL, consisting of the components and features described in the Description section (no external dependencies).</p> |
| |
| <p>These are currently available at two sites and described in detail <a href="http://viatra.inf.mit.bme.hu/incquery/new">here</a>: |
| <ul> |
| <li>the official EMF-IncQuery website hosted by the Budapest University of Technolgy and Economics, <a href="http://viatra.inf.mit.bme.hu/incquery">http://viatra.inf.mit.bme.hu/incquery</a> and its corresponding SVN repository <a href="https://viatra.inf.mit.bme.hu/svn/incquery">https://viatra.inf.mit.bme.hu/svn/incquery</a> (archived for technical purposes at <a href="https://github.com/ujhelyiz/EMF-IncQuery-Old/">https://github.com/ujhelyiz/EMF-IncQuery-Old/</a>)</li> |
| <li>The Git repository at GitHub, currently used for development: <a href="https://github.com/ujhelyiz/EMF-IncQuery/">https://github.com/ujhelyiz/EMF-IncQuery/</a></li> |
| </ul> |
| </p> |
| |
| <h2>Legal Issues</h2> |
| |
| <!-- |
| Please describe any potential legal issues in this section. Does somebody else |
| own the trademark to the project name? Is there some issue that prevents you |
| from licensing the project under the Eclipse Public License? Are parts of the |
| code available under some other license? Are there any LGPL/GPL bits that you |
| absolutely require? |
| --> |
| |
| <p>There are no outstanding legal issues concerning EMF-IncQuery. |
| <ul> |
| <li>The core IP (that is, the RETE implementation) stems directly from VIATRA2, which is already part of Eclipse and thus has been IP checked thoroughly.</li> |
| <li>Other components have been developed from scratch, and licensed under the EPL from the start. We have a proven track record (<a href="http://viatra.inf.mit.bme.hu/incquery/publications">peer reviewed academic publications</a>) of the entire research and development process.</li> |
| <li>All previous and current contributors have obtained Eclipse-compatible employer permissions.</li> |
| </ul> |
| </p> |
| |
| <h2>Committers</h2> |
| |
| <!-- |
| List any initial committers that should be provisioned along with the |
| new project. Include affiliation, but do not include email addresses at |
| this point. |
| --> |
| |
| <p>The following individuals are proposed as initial committers to the project:</p> |
| |
| <dl> |
| <dt>Dr. István Ráth (rath@mit.bme.hu), Budapest University of Technology and Economics</dt><dd>He has provided significant contributions both the GMT/VIATRA2 project and the existing code base of EMF-IncQuery. He will be the development and technical lead in this new project.</dd> |
| <dt>Dr. Dániel Varró (varro@mit.bme.hu), Budapest University of Technology and Economics</dt><dd>He is already a committer on the GMT/VIATRA2 project where he has made significant contributions over many years. He will be the research lead in this new project.</dd> |
| <dt>Ákos Horváth (ahorvath@mit.bme.hu), Budapest University of Technology and Economics.</dt><dd>He has provided significant contributions both to VIATRA2 and the existing codebase. He will contribute as an architect and researcher.</dd> |
| <dt>Gábor Bergmann (bergmann@mit.bme.hu), Budapest University of Technology and Economics.</dt><dd>He has provided significant contributions both to VIATRA2 and to the existing codebase, developed the RETE implementation of both VIATRA2 and IncQuery, and is going to work on further core query evaluation engine improvements.</dd> |
| <dt>Zoltán Ujhelyi (ujhelyiz@mit.bme.hu), Budapest University of Technology and Economics.</dt><dd>He has provided significant contributions to the existing codebase of EMF-IncQuery, and is already a committer in the GEF/Zest project. He will be primarily responsible for developing the query language and the Xtext-based tools.</dd> |
| <dt>Ábel Hegedüs (hegedusa@mit.bme.hu), Budapest University of Technology and Economics.</dt><dd>He has provided significant contributions to the existing codebase of EMF-IncQuery, and he will primarily work on IncQuery add-ons such as the Validation Engine and derived feature integration.</dd> |
| <dt>Zoltán Balogh (zoltan.balogh@optxware.com), OptXWare Research and Development Ltd.</dt><dd>He has provided significant contributions to the existing codebase, and he will primarily work on tools, core APIs and testing.</dd> |
| <dt>András Ökrös (andras.okros@optxware.com), OptXWare Research and Development Ltd.</dt><dd>He has provided significant contributions to the existing codebase, and he will primarily work performance-oriented optimization and testing.</dd> |
| </dl> |
| |
| <p>We welcome additional committers and contributions.</p> |
| |
| <!-- |
| Describe any initial contributions of code that will be brought to the |
| project. If there is no existing code, just remove this section. |
| --> |
| |
| <h2>Mentors</h2> |
| |
| <!-- |
| New Eclipse projects require a minimum of two mentors from the Architecture |
| Council. You need to identify two mentors before the project is created. The |
| proposal can be posted before this section is filled in (it's a little easier |
| to find a mentor when the proposal itself is public). |
| --> |
| |
| <p>The following Architecture Council members will mentor this |
| project:</p> |
| |
| <ul> |
| <li>Ed Merks</li> |
| <li>Cédric Brun</li> |
| </ul> |
| |
| <h2>Interested Parties</h2> |
| |
| <!-- |
| Provide a list of individuals, organisations, companies, and other Eclipse |
| projects that are interested in this project. This list will provide some |
| insight into who your project's community will ultimately include. Where |
| possible, include affiliations. Do not include email addresses. |
| --> |
| |
| <p>The following individuals, organisations, companies and projects have expressed interest in this project:</p> |
| |
| <ul> |
| <li>Dr. András Pataricza, professor, Budapest University of Technology and Economics, Department of Measurement and Information Systems, Fault Tolerant Systems Research Group (Hungary)</li> |
| <li>Dr. György Csertán, CEO. OptXware Research and Development Ltd. (Hungary)</li> |
| <li>Jose Ricardo Parizi Negrão, Technology Development Engineer, Embraer (Brazil)</li> |
| <li>Dr. Zsolt Szepessy and Zoltán Theisz, EvoPro Informatics and Automation Ltd. (Hungary)</li> |
| </ul> |
| |
| <h2>Project Scheduling</h2> |
| |
| <!-- |
| Describe, in rough terms, what the basic scheduling of the project will |
| be. You might, for example, include an indication of when an initial contribution |
| should be expected, when your first build will be ready, etc. Exact |
| dates are not required. |
| --> |
| <ul> |
| <li>June 2012: initial contribution, core components</li> |
| <li>August 2012: first build</li> |
| <li>June 2013: 1.0</li> |
| </ul> |
| |
| <h2>Changes to this Document</h2> |
| |
| <!-- |
| List any changes that have occurred in the document here. |
| You only need to document changes that have occurred after the document |
| has been posted live for the community to view and comment. |
| --> |
| |
| <table> |
| <tr> |
| <th>Date</th> |
| <th>Change</th> |
| </tr> |
| <tr> |
| <td>30-May-2012</td> |
| <td>Updated schedule.</td> |
| </tr> |
| <tr> |
| <td>08-February-2012</td> |
| <td>István Ráth: Document created</td> |
| </tr> |
| </table> |
| </body> |
| </html> |