This repository publishes the workflow (both shell and Python-based) for benchmarking Versioned Triple Stores. It provides scripts and workflow definitions to automate dataset generation, transformation, loading, and querying, enabling reproducible and extensible benchmarking experiments.
There are two shell workflows available:
shell/workflow-bsbm.sh
: Runs the workflow using versioned BSBM dataset.shell/workflow-gratte_ciel.sh
: Runs the workflow using the Gratte Ciel dataset.
Each script will:
- Start the required services using Docker Compose.
- Create or download the appropriate dataset.
- Import the dataset into the services for benchmarking.
To execute a workflow, run:
bash ./shell/workflow-bsbm.sh
# or
bash ./shell/workflow-gratte_ciel.sh
# set the environment variables
export POSTGRES_USER="<username>"
export POSTGRES_PASSWORD="<password>"
# print the help
python experiment.py --help
# execute the experiment
python experiment.py --versions 1 10 100 1000 --products 5 20 80 350 --steps 1 5 10 50
flowchart TD
%% Nodes
A("<a rel="noopener" href="https://github.com/argoproj-labs/hera" target="_blank">Hera workflow</a>")
B("<a rel="noopener" href="https://github.com/argoproj/argo-workflows" target="_blank">Argo workflows Server</a>")
C("Argo workflows Controller")
D((iterator))
subgraph Experiment[<a rel="noopener" href="https://github.com/VCityTeam/ConVer-G" target="_blank">ConVer-G</a>]
E(<a rel="noopener" href="https://hub.docker.com/r/vcity/quads-loader" target="_blank">Quads Loader</a>)
I(<a rel="noopener" href="https://hub.docker.com/r/vcity/quads-query" target="_blank">Quads Query</a>)
F(<a rel="noopener" href="https://github.com/VCityTeam/BSBM" target="_blank">Generate dataset</a>)
subgraph Transform[<a rel="noopener" href="https://hub.docker.com/r/vcity/quads-creator" target="_blank">Transform dataset</a>]
H1(Relational transformation)
H2(Theoretical transformation)
end
G(<a rel="noopener" href="https://hub.docker.com/r/vcity/blazegraph-cors" target="_blank">Blazegraph</a>)
J(Query backends)
end
%% Edge connections between nodes
A --> |submit| B --> C --> D
D --> |starts with params| E & G & F & I
D --> |launches queries| J
F --> H1 & H2
H1 --> |Sends dataset| E
H2 --> |Sends dataset| G
J --> |Sends query| G & I
If you would like to contribute to this project, please follow these guidelines:
- Fork the repository.
- Create a new branch:
git checkout -b [branch name]
- Make your changes and commit them:
git commit -m "[commit message]"
- Push to the branch:
git push origin [branch name]
- Create a pull request.
This project is licensed under the GNU Lesser General Public License v2.1. See the LICENSE file for more details.