Docker Container Example : RDF4J, GraphDB and JenaGeoSPARQL
against LUBM(1, 0) Workload

By Theofilos Ioannidis (tioannid [at] di [dot] uoa [dot] gr), created on , last updated on


Caution

Containers are not ideal for benchmarking purposes similar to the one GeoRDFBench Framework performs, because they do not allow clearing system caches. The reason for this is that:

Therefore, in the following example, although the user can verify that the experiments run properly and results are correctly calculated and reported, the COLD cache response times will not be accurate. However, for experiments that do not require COLD cache response time measurements, e.g., macro benchmark scenarios, response times should be accurate enough for drawing basic conclusions.

Key Features

This example, features:

Docker Image

For this example, we will use a Windows 10 host machine, with 16 GB of memory and Intel i7-9700 CPU and a 1TB HDD 2.5" SATA III 7200rpm for data disk.

Pull the image

The docker image is stored in the Github registry under tioannid/geordfbench/multistore/lubm_1_0:latest. We assume that the current directory is D:\TEMP. Then we issue the following commands, which pull the image from the registry, and verify its presence in the docker image list:

D:\TEMP>docker pull ghcr.io/tioannid/geordfbench/multistore/lubm_1_0:latest
latest: Pulling from tioannid/geordfbench/multistore/lubm_1_0
7021d1b70935: Already exists
1c1f56615597: Already exists
5fdd53028273: Already exists
dc52ed55c67d: Already exists
7e82c8bc9ac5: Already exists
7d227ff284d4: Already exists
dca4348384dc: Already exists
c8177bb09e55: Already exists
1be26de02e53: Already exists
Digest: sha256:2e41eaa23b4030f65898e7169b467d2bc71c761fe1ae9aab91e4508f97d991da
Status: Downloaded newer image for ghcr.io/tioannid/geordfbench/multistore/lubm_1_0:latest
ghcr.io/tioannid/geordfbench/multistore/lubm_1_0:latest

D:\TEMP>D:\TEMP>docker images
REPOSITORY                                               TAG       IMAGE ID       CREATED        SIZE
ghcr.io/tioannid/geordfbench/multistore/lubm_1_0         latest    1dacc6333b04   4 hours ago    3.13GB
Start a container

We start a container named lubm-1_0 from this image with the following command:

D:\TEMP>docker run -d -e POSTGRES_PASSWORD=postgres -p 5430:5432/tcp --hostname NUC8i7BEH --cpus="4" --memory="11g" --memory-swap="11g" \
--mount "type=bind,src=%cd%,target=/src" --name lubm-1_0 ghcr.io/tioannid/geordfbench/multistore/lubm_1_0
48719f77ad00ed799c7ef3a4b70f23cafefdc85f870d8beb9db157eef7bdfbcc

This command, launches the lubm-1_0 container, while defining:

Launch the experiments through a terminal

We start the experiments by connecting to the lubm-1_0 running container with a terminal and issue the command:

D:\TEMP>docker exec -it lubm-1_0 /bin/bash
root@NUC8i7BEH:/data# ./startUpScript.sh 
 * Starting PostgreSQL 14 database server                                                                                                                                                                                                                                [ OK ] 
...
CREATE DATABASE
ALTER DATABASE
You are now connected to database "geographica3" as user "postgres".
...
CREATE TABLE
ALTER TABLE
CREATE SEQUENCE
...
GRANT
GRANT
...
Using Lehigh University Benchmark (LUBM) Generator to generate LUBM(1, 0) dataset
> ...
Started...
/data/Geographica2_Datasets/LUBM/1_0//University0_0.owl generated
CLASS INSTANCE #: 1657, TOTAL SO FAR: 1657
PROPERTY INSTANCE #: 6896, TOTAL SO FAR: 6896
...
/data/Geographica2_Datasets/LUBM/1_0//University0_14.owl generated
CLASS INSTANCE #: 1147, TOTAL SO FAR: 20659
PROPERTY INSTANCE #: 4321, TOTAL SO FAR: 82415

Completed!

Using RDF2RDF utility to convert RDF/XML *.owl files to a single N-Triples file
> ...
converting University0_0.owl to lubm-1_0.nt (RDF/XML to N-Triples)
converting University0_1.owl to lubm-1_0.nt (RDF/XML to N-Triples)
converting University0_10.owl to lubm-1_0.nt (RDF/XML to N-Triples)
converting University0_11.owl to lubm-1_0.nt (RDF/XML to N-Triples)
converting University0_12.owl to lubm-1_0.nt (RDF/XML to N-Triples)
converting University0_13.owl to lubm-1_0.nt (RDF/XML to N-Triples)
converting University0_14.owl to lubm-1_0.nt (RDF/XML to N-Triples)
converting University0_2.owl to lubm-1_0.nt (RDF/XML to N-Triples)
converting University0_3.owl to lubm-1_0.nt (RDF/XML to N-Triples)
converting University0_4.owl to lubm-1_0.nt (RDF/XML to N-Triples)
converting University0_5.owl to lubm-1_0.nt (RDF/XML to N-Triples)
converting University0_6.owl to lubm-1_0.nt (RDF/XML to N-Triples)
converting University0_7.owl to lubm-1_0.nt (RDF/XML to N-Triples)
converting University0_8.owl to lubm-1_0.nt (RDF/XML to N-Triples)
converting University0_9.owl to lubm-1_0.nt (RDF/XML to N-Triples)

Generating the LUBM(, ) workload specification using GeoRDFBench Runtime
> ...
0    [main] INFO  WorkloadUtil  - {
  "classname" : "gr.uoa.di.rdf.Geographica3.runtime.workloadspecs.impl.SimpleGeospatialWL",
  "name" : "LUBM-1_0",
  "relativeBaseDir" : "",
  "geospatialDataset" : {
    "name" : "lubm-1_0",
    "relativeBaseDir" : "LUBM",
    "simpleGeospatialDataSetList" : [ {
      "name" : "lubm-1_0",
      "relativeBaseDir" : "1_0",
      "dataFile" : "lubm-1_0.nt",
      "rdfFormat" : "N-TRIPLES",
      "mapUsefulNamespacePrefixes" : {
        "geo" : "<http://www.opengis.net/ont/geosparql#>",
        "rdf" : "<http://www.w3.org/1999/02/22-rdf-syntax-ns#>",
        "owl" : "<http://www.w3.org/2002/07/owl#>",
        "geof" : "<http://www.opengis.net/def/function/geosparql/>",
        "xsd" : "<http://www.w3.org/2001/XMLSchema#>",
        "rdfs" : "<http://www.w3.org/2000/01/rdf-schema#>",
        "geo-sf" : "<http://www.opengis.net/ont/sf#>"
      }
    } ],
    "mapDataSetContexts" : {
      "lubm-1_0" : ""
    },
    "n" : 1
  },
  "geospatialQueryset" : {
    "classname" : "gr.uoa.di.rdf.Geographica3.runtime.querysets.partofworkload.impl.StaticTempParamQS",
    "name" : "lubm-1_0",
    "relativeBaseDir" : "",
    "hasPredicateQueriesAlso" : false,
    "mapQueries" : {
      "0" : {
        "label" : "Q1_GradStudents_Taken_GradCource0_At_Univ0",
        "text" : "SELECT ?x WHERE { \n ?x rdf:type ub:GraduateStudent . \n ?x ub:takesCourse <http://www.Department0.University0.edu/GraduateCourse0> .\n} \n",
        "usePredicate" : false,
        "expectedResults" : 4
      },
      "1" : {
        "label" : "Q2_GradStudents_From_Any_Univ_Depart",
        "text" : "SELECT ?x ?y ?z WHERE { \n ?x rdf:type ub:GraduateStudent .\n ?y rdf:type ub:University .\n ?z rdf:type ub:Department .\n ?x ub:memberOf ?z .\n ?z ub:subOrganizationOf ?y .\n ?x ub:undergraduateDegreeFrom ?y .\n} \n",
        "usePredicate" : false,
        "expectedResults" : 0
      },
      "2" : {
        "label" : "Q3_Publications_Of_AssistProfessor0_In_Univ0_Depart0",
        "text" : "SELECT ?x WHERE { \n ?x rdf:type ub:Publication .\n ?x ub:publicationAuthor <http://www.Department0.University0.edu/AssistantProfessor0> .\n} \n",
        "usePredicate" : false,
        "expectedResults" : 6
      },
      "3" : {
        "label" : "Q14_UndergradStudents_From_Any_Univ_Depart",
        "text" : "SELECT ?x WHERE { \n ?x rdf:type ub:UndergraduateStudent .\n} \n",
        "usePredicate" : false,
        "expectedResults" : 5916
      }
    },
    "mapUsefulNamespacePrefixes" : {
      "ub" : "<https://swat.cse.lehigh.edu/onto/univ-bench.owl#>"
    },
    "executionSpec" : {
      "execTypeReps" : {
        "COLD" : 3,
        "WARM" : 3
      },
      "maxDurationSecsPerQueryRep" : 1800,
      "maxDurationSecs" : 3600,
      "action" : "RUN",
      "avgFunc" : "QUERY_MEDIAN",
      "onColdFailure" : "SKIP_REMAINING_ALL_QUERY_EXECUTIONS",
      "clearCacheDelaymSecs" : 5000
    },
    "mapTemplateParams" : { },
    "mapGraphPrefixes" : { }
  }
}
...

After the database creation, the LUBM Generaton (UBA) is called through the /data/Geographica2_Datasets/LUBM/LUBM_DSGen.sh script and generates 15 *.owl files serialized as RDF/XML. These files are converted to a single N-Triples file using the rdf2rdf-1.0.1-2.3.1.jar utility. This file, in turn, is used for the creation of the LUBM workload specification. The Maven POM project (GeoRDFBench Samples), amongst other things, contains a Java class gr.uoa.di.rdf.geordfbench.createlubmworkload.WorkloadUtil which demonstrates the process of creating custom benchmark workloads (more specifically the LUBM) using the GeoRDFBench Runtime API. All Geographica2 workload and other specifications have been created with the same API, however, the corresponding code is included as part of the Runtime, the JSON Spec Generator.

The default terminal will act as a log window and after some time all experiments (3 stores * 1 workloads = 3) will end with:

...
162667 [main] INFO  JDBCRepSrc  - Deferred mode for JDBCRepSrc was enabled. 18 records were flushed
162667 [main] INFO  GenericExprerimentResultsCollector  - Export statistics in "/data/Results_Store/JenaGeoSPARQLSUT/2024-04-23_JenaGeoSPARQL_RunWL_LUBM_1_0/LUBM/JenaGeoSPARQLSUT-ExperimentWorkload"
162667 [main] INFO  GenericExprerimentResultsCollector  - Created non existing directory
162668 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/JenaGeoSPARQLSUT/2024-04-23_JenaGeoSPARQL_RunWL_LUBM_1_0/LUBM/JenaGeoSPARQLSUT-ExperimentWorkload/00-Q1_GradStudents_Taken_GradCource0_At_Univ0-cold
162668 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/JenaGeoSPARQLSUT/2024-04-23_JenaGeoSPARQL_RunWL_LUBM_1_0/LUBM/JenaGeoSPARQLSUT-ExperimentWorkload/00-Q1_GradStudents_Taken_GradCource0_At_Univ0-cold-long
162669 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/JenaGeoSPARQLSUT/2024-04-23_JenaGeoSPARQL_RunWL_LUBM_1_0/LUBM/JenaGeoSPARQLSUT-ExperimentWorkload/01-Q2_GradStudents_From_Any_Univ_Depart-cold
162669 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/JenaGeoSPARQLSUT/2024-04-23_JenaGeoSPARQL_RunWL_LUBM_1_0/LUBM/JenaGeoSPARQLSUT-ExperimentWorkload/01-Q2_GradStudents_From_Any_Univ_Depart-cold-long
162669 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/JenaGeoSPARQLSUT/2024-04-23_JenaGeoSPARQL_RunWL_LUBM_1_0/LUBM/JenaGeoSPARQLSUT-ExperimentWorkload/02-Q3_Publications_Of_AssistProfessor0_In_Univ0_Depart0-cold
162669 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/JenaGeoSPARQLSUT/2024-04-23_JenaGeoSPARQL_RunWL_LUBM_1_0/LUBM/JenaGeoSPARQLSUT-ExperimentWorkload/02-Q3_Publications_Of_AssistProfessor0_In_Univ0_Depart0-cold-long
162669 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/JenaGeoSPARQLSUT/2024-04-23_JenaGeoSPARQL_RunWL_LUBM_1_0/LUBM/JenaGeoSPARQLSUT-ExperimentWorkload/03-Q14_UndergradStudents_From_Any_Univ_Depart-cold
162670 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/JenaGeoSPARQLSUT/2024-04-23_JenaGeoSPARQL_RunWL_LUBM_1_0/LUBM/JenaGeoSPARQLSUT-ExperimentWorkload/03-Q14_UndergradStudents_From_Any_Univ_Depart-cold-long
162670 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/JenaGeoSPARQLSUT/2024-04-23_JenaGeoSPARQL_RunWL_LUBM_1_0/LUBM/JenaGeoSPARQLSUT-ExperimentWorkload/00-Q1_GradStudents_Taken_GradCource0_At_Univ0-warm
162670 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/JenaGeoSPARQLSUT/2024-04-23_JenaGeoSPARQL_RunWL_LUBM_1_0/LUBM/JenaGeoSPARQLSUT-ExperimentWorkload/00-Q1_GradStudents_Taken_GradCource0_At_Univ0-warm-long
162670 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/JenaGeoSPARQLSUT/2024-04-23_JenaGeoSPARQL_RunWL_LUBM_1_0/LUBM/JenaGeoSPARQLSUT-ExperimentWorkload/01-Q2_GradStudents_From_Any_Univ_Depart-warm
162670 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/JenaGeoSPARQLSUT/2024-04-23_JenaGeoSPARQL_RunWL_LUBM_1_0/LUBM/JenaGeoSPARQLSUT-ExperimentWorkload/01-Q2_GradStudents_From_Any_Univ_Depart-warm-long
162670 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/JenaGeoSPARQLSUT/2024-04-23_JenaGeoSPARQL_RunWL_LUBM_1_0/LUBM/JenaGeoSPARQLSUT-ExperimentWorkload/02-Q3_Publications_Of_AssistProfessor0_In_Univ0_Depart0-warm
162671 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/JenaGeoSPARQLSUT/2024-04-23_JenaGeoSPARQL_RunWL_LUBM_1_0/LUBM/JenaGeoSPARQLSUT-ExperimentWorkload/02-Q3_Publications_Of_AssistProfessor0_In_Univ0_Depart0-warm-long
162671 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/JenaGeoSPARQLSUT/2024-04-23_JenaGeoSPARQL_RunWL_LUBM_1_0/LUBM/JenaGeoSPARQLSUT-ExperimentWorkload/03-Q14_UndergradStudents_From_Any_Univ_Depart-warm
162671 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/JenaGeoSPARQLSUT/2024-04-23_JenaGeoSPARQL_RunWL_LUBM_1_0/LUBM/JenaGeoSPARQLSUT-ExperimentWorkload/03-Q14_UndergradStudents_From_Any_Univ_Depart-warm-long
162671 [main] INFO  GenericExprerimentResultsCollector  - Cache COLD
162671 [main] INFO  GenericExprerimentResultsCollector  -       Query 0
162671 [main] INFO  GenericExprerimentResultsCollector  -               Rep 0    19579200 + 58311600 = 77890800 nsecs, 4 results, 0 scan errors
162671 [main] INFO  GenericExprerimentResultsCollector  -               Rep 1    1017700 + 6436700 = 7454400 nsecs, 4 results, 0 scan errors
162671 [main] INFO  GenericExprerimentResultsCollector  -               Rep 2    324500 + 1704200 = 2028700 nsecs, 4 results, 0 scan errors
162671 [main] INFO  GenericExprerimentResultsCollector  -       Query 1
162671 [main] INFO  GenericExprerimentResultsCollector  -               Rep 0    445000 + 76387800 = 76832800 nsecs, 0 results, 0 scan errors
162671 [main] INFO  GenericExprerimentResultsCollector  -               Rep 1    362200 + 24787200 = 25149400 nsecs, 0 results, 0 scan errors
162671 [main] INFO  GenericExprerimentResultsCollector  -               Rep 2    314000 + 15738200 = 16052200 nsecs, 0 results, 0 scan errors
162671 [main] INFO  GenericExprerimentResultsCollector  -       Query 2
162671 [main] INFO  GenericExprerimentResultsCollector  -               Rep 0    253900 + 1733900 = 1987800 nsecs, 6 results, 0 scan errors
162671 [main] INFO  GenericExprerimentResultsCollector  -               Rep 1    279700 + 1155100 = 1434800 nsecs, 6 results, 0 scan errors
162671 [main] INFO  GenericExprerimentResultsCollector  -               Rep 2    563800 + 1438600 = 2002400 nsecs, 6 results, 0 scan errors
162671 [main] INFO  GenericExprerimentResultsCollector  -       Query 3
162671 [main] INFO  GenericExprerimentResultsCollector  -               Rep 0    274300 + 8970500 = 9244800 nsecs, 5916 results, 0 scan errors
162671 [main] INFO  GenericExprerimentResultsCollector  -               Rep 1    574000 + 4017400 = 4591400 nsecs, 5916 results, 0 scan errors
162671 [main] INFO  GenericExprerimentResultsCollector  -               Rep 2    357500 + 3263300 = 3620800 nsecs, 5916 results, 0 scan errors
162671 [main] INFO  GenericExprerimentResultsCollector  - Cache WARM
162671 [main] INFO  GenericExprerimentResultsCollector  -       Query 0
162671 [main] INFO  GenericExprerimentResultsCollector  -               Rep 0    272800 + 955200 = 1228000 nsecs, 4 results, 0 scan errors
162671 [main] INFO  GenericExprerimentResultsCollector  -               Rep 1    387900 + 1391500 = 1779400 nsecs, 4 results, 0 scan errors
162671 [main] INFO  GenericExprerimentResultsCollector  -               Rep 2    466400 + 853600 = 1320000 nsecs, 4 results, 0 scan errors
162671 [main] INFO  GenericExprerimentResultsCollector  -       Query 1
162671 [main] INFO  GenericExprerimentResultsCollector  -               Rep 0    666600 + 14456400 = 15123000 nsecs, 0 results, 0 scan errors
162671 [main] INFO  GenericExprerimentResultsCollector  -               Rep 1    406300 + 13084200 = 13490500 nsecs, 0 results, 0 scan errors
162671 [main] INFO  GenericExprerimentResultsCollector  -               Rep 2    235700 + 12869000 = 13104700 nsecs, 0 results, 0 scan errors
162671 [main] INFO  GenericExprerimentResultsCollector  -       Query 2
162671 [main] INFO  GenericExprerimentResultsCollector  -               Rep 0    310300 + 637400 = 947700 nsecs, 6 results, 0 scan errors
162671 [main] INFO  GenericExprerimentResultsCollector  -               Rep 1    212900 + 636700 = 849600 nsecs, 6 results, 0 scan errors
162671 [main] INFO  GenericExprerimentResultsCollector  -               Rep 2    236400 + 572100 = 808500 nsecs, 6 results, 0 scan errors
162671 [main] INFO  GenericExprerimentResultsCollector  -       Query 3
162671 [main] INFO  GenericExprerimentResultsCollector  -               Rep 0    283800 + 2956500 = 3240300 nsecs, 5916 results, 0 scan errors
162671 [main] INFO  GenericExprerimentResultsCollector  -               Rep 1    239700 + 3175100 = 3414800 nsecs, 5916 results, 0 scan errors
162671 [main] INFO  GenericExprerimentResultsCollector  -               Rep 2    283300 + 2974900 = 3258200 nsecs, 5916 results, 0 scan errors
162671 [main] INFO  RunJenaGeoSPARQLExperimentWorkload  - End LUBM-1_0
Start time = Tue Apr 23 09:33:43 UTC 2024
End time = Tue Apr 23 09:36:26 UTC 2024
Verify that the repositories have been created
root@NUC8i7BEH:/data# tree -L 1 RDF4J_3.7.7_Repos/server/repositories/
RDF4J_3.7.7_Repos/server/repositories/
`-- lubm-1_0

root@NUC8i7BEH:/data# tree -L 1 graphdb-free-9.11.1/data/repositories/
graphdb-free-9.11.1/data/repositories/
`-- lubm-1_0

root@NUC8i7BEH:/data# tree -L 1 JenaGeoSPARQL_3.17.0_Repos/
JenaGeoSPARQL_3.17.0_Repos/
`-- lubm-1_0
Verify that the repository creation logs have been generated
root@NUC8i7BEH:/data# ls -lsa geordfbench/RDF4JSUT/scripts/CreateRepos/*.log
4 -rw-r--r-- 1 root root 1731 Apr 23 09:25 geordfbench/RDF4JSUT/scripts/CreateRepos/logCreateRepos_LUBM_1_0_RDF4J.log
root@NUC8i7BEH:/data# ls -lsa geordfbench/GraphDBSUT/scripts/CreateRepos/*.log
12 -rw-r--r-- 1 root root 11368 Apr 23 09:29 geordfbench/GraphDBSUT/scripts/CreateRepos/logCreateRepo_LUBM_1_0_GraphDB.log
root@NUC8i7BEH:/data# ls -lsa geordfbench/JenaGeoSPARQLSUT/scripts/CreateRepos/*.log
4 -rw-r--r-- 1 root root 1340 Apr 23 09:33 geordfbench/JenaGeoSPARQLSUT/scripts/CreateRepos/logCreateRepo_LUBM_1_0_JenaGeoSPARQL.log
Verify that the experiment logs have been generated

Experiment run logs may be quite long, therefore the user can click the links below to view the details of the execution.

root@NUC8i7BEH:/data# ls -lsa geordfbench/RDF4JSUT/scripts/RunTests3/*.log
84 -rw-r--r-- 1 root root 80592 Apr 23 09:28 geordfbench/RDF4JSUT/scripts/RunTests3/RunWLRDF4JExp_LUBM_1_0.log
root@NUC8i7BEH:/data# ls -lsa geordfbench/GraphDBSUT/scripts/RunTests3/*.log
92 -rw-r--r-- 1 root root 89771 Apr 23 09:33 geordfbench/GraphDBSUT/scripts/RunTests3/RunWLGraphDBExp_LUBM_1_0.log
root@NUC8i7BEH:/data# ls -lsa geordfbench/JenaGeoSPARQLSUT/scripts/RunTests3/*.log
88 -rw-r--r-- 1 root root 82565 Apr 23 09:36 geordfbench/JenaGeoSPARQLSUT/scripts/RunTests3/RunWLJenaGeoSPARQLExp_LUBM_1_0.log
Verify that the experiment results have been generated in the Default Location

Experiment results are stored by default in the file system. For this demonstration the base location for all results was /data/Results_Store. The output of the following command has been modified to fully expand the last entry only, with the result of tree -L 4 Results_Store/RDF4JSUT/2024-04-23_RDF4JSUT_RunWL_LUBM_1_0/ :

root@NUC8i7BEH:/data# tree -L 2 Results_Store/
Results_Store/
|-- GraphDBSUT
|   `-- 2024-04-23_GraphDBSUT_RunWL_LUBM_1_0
|-- JenaGeoSPARQLSUT
|   `-- 2024-04-23_JenaGeoSPARQL_RunWL_LUBM_1_0
`-- RDF4JSUT
    `-- 2024-04-23_RDF4JSUT_RunWL_LUBM_1_0
        `-- LUBM
            `-- RDF4JSUT-ExperimentWorkload
                |-- 00-Q1_GradStudents_Taken_GradCource0_At_Univ0-cold
                |-- 00-Q1_GradStudents_Taken_GradCource0_At_Univ0-cold-long
                |-- 00-Q1_GradStudents_Taken_GradCource0_At_Univ0-warm
                |-- 00-Q1_GradStudents_Taken_GradCource0_At_Univ0-warm-long
                |-- 01-Q2_GradStudents_From_Any_Univ_Depart-cold
                |-- 01-Q2_GradStudents_From_Any_Univ_Depart-cold-long
                |-- 01-Q2_GradStudents_From_Any_Univ_Depart-warm
                |-- 01-Q2_GradStudents_From_Any_Univ_Depart-warm-long
                |-- 02-Q3_Publications_Of_AssistProfessor0_In_Univ0_Depart0-cold
                |-- 02-Q3_Publications_Of_AssistProfessor0_In_Univ0_Depart0-cold-long
                |-- 02-Q3_Publications_Of_AssistProfessor0_In_Univ0_Depart0-warm
                |-- 02-Q3_Publications_Of_AssistProfessor0_In_Univ0_Depart0-warm-long
                |-- 03-Q14_UndergradStudents_From_Any_Univ_Depart-cold
                |-- 03-Q14_UndergradStudents_From_Any_Univ_Depart-cold-long
                |-- 03-Q14_UndergradStudents_From_Any_Univ_Depart-warm
                `-- 03-Q14_UndergradStudents_From_Any_Univ_Depart-warm-long

root@NUC8i7BEH:/data# more Results_Store/RDF4JSUT/2024-04-23_RDF4JSUT_RunWL_LUBM_1_0/LUBM/RDF4JSUT-ExperimentWorkload/00-Q1_GradStudents_Taken_GradCource0_At_Univ0-cold
4 11520900
root@NUC8i7BEH:/data# more Results_Store/RDF4JSUT/2024-04-23_RDF4JSUT_RunWL_LUBM_1_0/LUBM/RDF4JSUT-ExperimentWorkload/00-Q1_GradStudents_Taken_GradCource0_At_Univ0-cold-long
4 33837000 9004700 42841700
4 4278700 3338300 7617000
4 8842000 2678900 11520900

For each query and execution type (warm, cold) there are two files, a short and a long version. The long version has 4 columns (noOfResults, evaluationTime, scanTime, totalTime) and one row for each execution iteration performed. The short version has 2 columns (noOfResults, totalTime) and only one row which represents the average or median totalTime of the execution iterations from the long version. All times are in nano seconds.

Verify that the experiment results have been generated in the PostgreSQL database

Experiment results are also stored in a custom location, a PostgreSQL database. Each experiment details are recorded, with a unique ID, in a row of the EXPERIMENTS table. Each query execution iteration details are in a similar manner recorded in the QUERYEXECUTIONS table. A set of views can provide aggregation for the totalTime and calculation of the Average and Median value of totalTime for each query and execution type (warm, cold). All times are in milli seconds. In the figures below we can see the actual snapshots from the PgAdmin v4 interface with the experiment details on the left and the report results on the right side. The results database will be accessible to the host PgAdmin4 client at localhost:5430, due to the docker container port mapping.

Experiment Entries
Fig.1 - Experiment entries
Experiment report results
Fig.2 - Experiment report results

Explanation of what happened?

The more interested user, can look at the simple Bash script, /data/startUpScript.sh, which launched the experiments. The actions taken by this script are: