Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "VIATRA/Query"

(Contributors Guide)
(16 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 
= EMF-IncQuery Wiki Documentation =
 
= EMF-IncQuery Wiki Documentation =
  
These are the (work-in-progress) wiki pages for the EMF-IncQuery project. At the moment, much of the EMF-IncQuery documentation resides on IncQuery.net, this will change as the development of this wiki progresses.
+
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 based on the Rete algorithm.
 +
 
 +
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.
 +
 
  
 
== EMF-IncQuery User Documentation ==
 
== EMF-IncQuery User Documentation ==
Line 7: Line 22:
 
** [[EMFIncQuery/UserDocumentation/Installation|Installing EMF-IncQuery]]
 
** [[EMFIncQuery/UserDocumentation/Installation|Installing EMF-IncQuery]]
 
** [[EMFIncQuery/UserDocumentation/QueryLanguage|A Short Introduction to the Query Language]]
 
** [[EMFIncQuery/UserDocumentation/QueryLanguage|A Short Introduction to the Query Language]]
 +
** [[ EMFIncQuery/UserDocumentation/QueryDevelopment|Getting started with Query Development]]
 
** [[EMFIncQuery/UserDocumentation/RETE_Visualizer|RETE Visualizer]]
 
** [[EMFIncQuery/UserDocumentation/RETE_Visualizer|RETE Visualizer]]
 +
** [[EMFIncQuery/UserDocumentation/LocalSearch_DebuggerTooling|Local Search Debugger Tooling]]
 +
** [[EMFIncQuery/UserDocumentation/DebuggerTooling|EMF-IncQuery Debugger Tooling]] (since 0.8.0)
 
* Using the EMF-IncQuery Runtime library
 
* Using the EMF-IncQuery Runtime library
 
** [[EMFIncQuery/UserDocumentation/HeadlessExecution|Headless (standalone) execution of EMF-IncQuery queries and unit tests]]
 
** [[EMFIncQuery/UserDocumentation/HeadlessExecution|Headless (standalone) execution of EMF-IncQuery queries and unit tests]]
Line 21: Line 39:
 
** [[EMFIncQuery/UserDocumentation/IncQuery_Viewers|IncQuery Viewers]]
 
** [[EMFIncQuery/UserDocumentation/IncQuery_Viewers|IncQuery Viewers]]
 
* [[EMFIncQuery/UserDocumentation/Examples|Examples]]
 
* [[EMFIncQuery/UserDocumentation/Examples|Examples]]
 +
* [[EMFIncQuery/UserDocumentation/Build|EMF-IncQuery in CI Environments (Maven artifacts)]] (since 0.8.0)
 +
* Reporting bugs or requesting new features
 +
** [[EMFIncQuery/UserDocumentation/IssueTracking|Issue tracking]]
  
The original version of these guides were maintained in [http://incquery.net/incquery/documentation incquery.net]. Most content is already migrated to the Eclipse wiki.
+
== Contributor's Guide ==
 
+
== Contributors Guide ==
+
  
 
* Developer's Documentation
 
* Developer's Documentation
Line 30: Line 49:
 
** [[EMFIncQuery/DeveloperDocumentation/BuildConfig|The EMF-IncQuery Build Configuration]]
 
** [[EMFIncQuery/DeveloperDocumentation/BuildConfig|The EMF-IncQuery Build Configuration]]
 
** [[EMFIncQuery/DeveloperDocumentation/IssueTracking|Issue Reporting and Management]]
 
** [[EMFIncQuery/DeveloperDocumentation/IssueTracking|Issue Reporting and Management]]
 +
** [[EMFIncQuery/DeveloperDocumentation/FeatureSetAndTesting|Feature Set and Testing]]
 
* Documentation
 
* Documentation
 
** [[EMFIncQuery/DeveloperDocumentation/Model_connectors|Model Connectors]]
 
** [[EMFIncQuery/DeveloperDocumentation/Model_connectors|Model Connectors]]
Line 36: Line 56:
 
** [[EMFIncQuery/DeveloperDocumentation/Builder|Builder Architecture]]
 
** [[EMFIncQuery/DeveloperDocumentation/Builder|Builder Architecture]]
 
** [[EMFIncQuery/DeveloperDocumentation/IncQueryXcore|Notes on IncQuery & Xcore integration]]
 
** [[EMFIncQuery/DeveloperDocumentation/IncQueryXcore|Notes on IncQuery & Xcore integration]]
** [[EMFIncQuery/DeveloperDocumentation/DebuggerTooling|EMF-IncQuery Debugger Tooling]]
+
** [[EMFIncQuery/DeveloperDocumentation/QueryProcessing|Query Processing]]
 
* Developer Meeting Minutes
 
* Developer Meeting Minutes
 
** [[EMFIncQuery/DeveloperMeetingMinutes|Meeting minutes]]
 
** [[EMFIncQuery/DeveloperMeetingMinutes|Meeting minutes]]
 
The original version of these guides were maintained in [http://incquery.net/incquery/devguide incquery.net]. Most content is already migrated to the Eclipse wiki.
 
  
 
== Releases ==
 
== Releases ==
* Version 0.7.0
+
* Version 0.7.0 ([https://www.eclipse.org/incquery/javadoc/releases/0.7.0/ Javadoc])
 
** [[EMFIncQuery/Releases/MigrateTo0.7|Migration guide]]
 
** [[EMFIncQuery/Releases/MigrateTo0.7|Migration guide]]
** [[EMFIncQuery/Releases/KnownIssuesFor0.7.1|Known issues affecting version 0.7.1]]
+
** Known issues affecting version 0.7.1 [[EMFIncQuery/Releases/KnownIssuesFor0.7.1|fixed in 0.7.2]]
* Version 0.8.0
+
* Version 0.8.0 ([https://www.eclipse.org/incquery/javadoc/releases/0.8.0/ Javadoc])
 
** [[EMFIncQuery/Releases/NewAndNoteWorthy0.8|New and Noteworthy]]
 
** [[EMFIncQuery/Releases/NewAndNoteWorthy0.8|New and Noteworthy]]
 
** [[EMFIncQuery/Releases/MigrateTo0.8|Migration guide]]
 
** [[EMFIncQuery/Releases/MigrateTo0.8|Migration guide]]
 
+
** Known issues affecting version 0.8.1 [[EMFIncQuery/Releases/KnownIssuesFor0.8.1|fixed in 0.8.2]]
 +
* Version 0.9.0 ([https://www.eclipse.org/incquery/javadoc/releases/0.9.0/ Javadoc])
 +
** [[EMFIncQuery/Releases/NewAndNoteWorthy0.9|New and Noteworthy]]
 
[[Category:EmfIncQuery]]
 
[[Category:EmfIncQuery]]
 +
* Version 1.0.0
 +
** [[EMFIncQuery/Releases/NewAndNoteWorthy1.0|New and Noteworthy]]

Revision as of 18:28, 26 March 2015

EMF-IncQuery Wiki Documentation

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 based on the Rete algorithm.

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.


EMF-IncQuery User Documentation

Contributor's Guide

Releases

Back to the top