gMark

gMark is a domain- and query language-independent framework targeting highly tunable generation of both graph instances and graph query workloads based on user-defined schemas.

For more details about gMark, please refer to our technical report: http://arxiv.org/abs/1511.08386

gMark was demonstrated in VLDB 2016. The gMark research paper was published in the TKDE journal.

If you use gMark, please cite:

@article{BBCFLA17,
  author = {Bagan, G. and Bonifati, A. and Ciucanu, R. and Fletcher, G. H. L. and Lemay, A. and Advokaat, N.},
  title = {{gMark}: Schema-Driven Generation of Graphs and Queries},
  journal = {IEEE Transactions on Knowledge and Data Engineering},
  volume = {29},
  number = {4},
  pages = {856--869},
  year = {2017}
}

and/or

@article{BBCFLA16,
  author = {Bagan, G. and Bonifati, A. and Ciucanu, R. and Fletcher, G. H. L. and Lemay, A. and Advokaat, N.},
  title = {Generating Flexible Workloads for Graph Databases},
  journal = {PVLDB},
  volume = {9},
  number = {13},
  pages = {1457--1460},
  year = {2016}
}

How to use gMark

To compile the code:

cd demo/scripts
./compile-all.sh

In the rest of the readme, suppose that we are in demo/scripts.

To generate an entire workflow, use the prepared script play.sh:

./play.sh

This executes the following three steps:

1. Generation of the graph and query workload in internal format, and html reports for both

cd ../../src
./test -c ../use-cases/test.xml -g ../demo/play/play-graph.txt -w ../demo/play/play-workload.xml -r ../demo/play/

where the parameters are:

and optionally

The provided configuration files in the directory use-cases are:

2. Translation of the queries into the four concrete syntaxes

cd querytranslate
./test -w ../../demo/play/play-workload.xml -o ../../demo/play/play-translated

where the parameters are:

3. Generation of the query workload interface

cd ../queryinterface
./test -w ../../demo/play/play-workload.xml -t ../../demo/play/play-translated -o ../../demo/play/play-interface

where the parameters are:

Provided examples

We provide several examples of generated graphs, query workloads in internal format, html reports, translated queries, and query workload interfaces.

You can find them in the directory demo, subdirectories test, test-a, shop, shop-a, social, social-a, uniprot, uniprot-a.

These scenarios basically correspond to the aforementioned four configuration files from use-cases, and for each of them we generated versions without or with aliases (i.e., using integers as predicates or using real-world predicates specified in the configuration file, respectively).