Skip to content

v2.0 Query Evaluation

Latest
Compare
Choose a tag to compare
@RoanH RoanH released this 24 Jan 22:58
· 2 commits to master since this release
v2.0
3beab04

The main feature of this major release is the introduction of a complete highly optimised and easily extensible query evaluation pipeline for CPQ and RPQ queries, essentially turning gMark into a simple Graph Database. This pipeline is built on top of the abstract syntax trees (AST), introduced in the previous release and makes use of the theory introduced in: Graph Database & Query Evaluation Terminology.

Some key features:

  • A complete query evaluation pipeline for CPQ and RPQ queries:
    • The pipeline has support for evaluating the following operations: concatenation/join, intersection/conjunction, forward/inverse edge/label traversal, identity, Kleene/transitive closure, and disjunction.
    • Any AST representing a reachability query built from these operations can be evaluated by the evaluation pipeline.
    • In addition, the evaluation pipeline also natively supports bound source and/or target nodes for queries.
    • The evaluation pipeline was also built with performance in mind and uses efficient data structures and algorithms.
  • The CLI interface was extended to handle query evaluation:
    • You can either evaluate a single query or pass an entire workload of queries to evaluate.
    • The existing workload generation CLI client is still available and was cleaned up a bit.
  • The GUI interface was extended for query evaluation:
    • Queries can easily be constructed and evaluated directly in the GUI.
    • Command line instructions for query evaluation are also available in the GUI as well as a small sample graph.
  • Various new internal utilities/changes:
    • Most notably the query evaluation pipeline can be used programmatically.
    • Some additional convenience methods were added to parse queries (optionally with known label sets).
    • The random RPQ generator was updated to not generate directly nested transitive closures (i.e., ((q)*)*).
    • Some additional utility methods were added for RPQ construction.
    • An efficient bit set implementation was added to the utilities.
    • Utilities were added to read graphs and query workloads from files.
    • An adjacency list based directed labelled graph implementation was added to the utilities (with integer based vertices and labels).
    • The internals were also restructured to better fit the current setup of gMark.

Downloads

Requires Java 17 or higher