Skip to main content
Jump to: navigation, search

Difference between revisions of "VIATRA/Query"

m (Add link to Query Test Framework page)
(VIATRA Query User Documentation)
Line 29: Line 29:
 
*** [[VIATRA/Query/UserDocumentation/DebuggerTooling|VIATRA Query Debugger Tooling]] (since 0.8.0)
 
*** [[VIATRA/Query/UserDocumentation/DebuggerTooling|VIATRA Query Debugger Tooling]] (since 0.8.0)
 
*** [[VIATRA/Query/UserDocumentation/SDK/QueryHotspotTesting|Finding query evaluation hotspots]] (since 1.0.0)
 
*** [[VIATRA/Query/UserDocumentation/SDK/QueryHotspotTesting|Finding query evaluation hotspots]] (since 1.0.0)
*** [[VIATRA/Query/UserDocumentation/PureWhitelist|Pure whitelist]] (since 1.0.0)
 
 
*** [[VIATRA/Query/UserDocumentation/AdvancedPatterns|Advanced pattern language constructs]]  
 
*** [[VIATRA/Query/UserDocumentation/AdvancedPatterns|Advanced pattern language constructs]]  
 
*** [[VIATRA/Query/UserDocumentation/QueryTestFramework|Query Test Framework]]
 
*** [[VIATRA/Query/UserDocumentation/QueryTestFramework|Query Test Framework]]
Line 38: Line 37:
 
** [[VIATRA/Query/UserDocumentation/API/RunOnce|Run once querying API documentation]]
 
** [[VIATRA/Query/UserDocumentation/API/RunOnce|Run once querying API documentation]]
 
** [[VIATRA/Query/UserDocumentation/API/BaseIndexer|VIATRA Query Base Indexer]]
 
** [[VIATRA/Query/UserDocumentation/API/BaseIndexer|VIATRA Query Base Indexer]]
 +
* Query language extensibility
 +
** [[VIATRA/Query/UserDocumentation/PureWhitelist|Pure whitelist]] (since 1.0.0) for custom code in <code>check()</code> or <code>eval()</code>
 +
** [[VIATRA/Query/UserDocumentation/CustomAggregators|Custom aggregation operators]] (since 1.4.0)
 
* [[VIATRA/Query/UserDocumentation/Examples|Examples]]
 
* [[VIATRA/Query/UserDocumentation/Examples|Examples]]
 
* [[VIATRA/UserDocumentation/Build|VIATRA Query in CI Environments (Maven artifacts)]] (since 0.8.0)
 
* [[VIATRA/UserDocumentation/Build|VIATRA Query in CI Environments (Maven artifacts)]] (since 0.8.0)
 
* [[VIATRA/Query/FAQ|Frequently Asked Questions]]
 
* [[VIATRA/Query/FAQ|Frequently Asked Questions]]

Revision as of 12:35, 19 September 2016

VIATRA Incremental Query 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 VIATRA Query 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.


VIATRA Query User Documentation

Back to the top