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