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
9b857f539cb1: Already exists 
e68fe6bf7c37: Pull complete 
e9ce312286b8: Pull complete 
7665ecc65e61: Pull complete 
26d4c62a6730: Pull complete 
ded712c4e36f: Pull complete 
56da1e243b90: Pull complete 
1a1a9b921710: Pull complete 
f8f3696cfbaf: Pull complete 
Digest: sha256:8566e3ba13edd0e1ae039a6f9ccfbb21a5547e828ac26a6bafacd0d5094866af
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            ceac22271dd4   44 minutes ago   3.5GB
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 5431: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
e1346b4947fd8e52495ded8052c1d99ce79e1c90880444e820007d95dd2b7b6f

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 
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java to provide /usr/bin/java (java) in manual mode

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

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(1, 0) workload specification using GeoRDFBench Runtime
> ...
0    [main] INFO  LUBMWorkloadUtil  - {
  "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  .\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  .\n} \n",
        "usePredicate" : false,
        "expectedResults" : 6
      },
      "3" : {
        "label" : "Q4_Properties_Of_Professors_In_Univ0_Depart0",
        "text" : "SELECT ?x ?y1 ?y2 ?y3 WHERE {\n  ?x rdf:type ub:Professor .\n  ?x ub:worksFor  .\n  ?x ub:name ?y1 .\n  ?x ub:emailAddress ?y2 .\n  ?x ub:telephone ?y3 .\n} \n",
        "usePredicate" : false,
        "expectedResults" : 41
      },
     ...
     "13" : {
        "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 N-Triples file, in turn, is used for the creation of the LUBM workload specification. The Maven POM project (GeoRDFBench Samples), amongst other things, contains a BASH script /data/geordfbench_samples/scripts/generateLUBM_1_0_specs.sh which allows the automatic generation of the compact and detailed LUBM(1, 0) specifications to a user-provided target directory which in this case is the GeoRDFBench JSON library location /data/geordfbench/json_defs. This application uses the JSON Spec Generator API of the GeoRDFBench runtime as a maven dependency. All Geographica2 workload and other specifications have been created with the same API, the only difference being that their generation code is included as part of the GeoRDFBench Framework application.

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

...
413062 [main] INFO  PostgreSQLRepSrc  - Deferred mode for PostgreSQLRepSrc was enabled. 24 records were flushed
413069 [main] INFO  GenericExprerimentResultsCollector  - Export statistics in "/data/Results_Store/JenaGeoSPARQLSUT/2025-05-17_JenaGeoSPARQL_RunWL_LUBM_1_0/LUBM/JenaGeoSPARQLSUT-ExperimentWorkload"
413071 [main] INFO  GenericExprerimentResultsCollector  - Created non existing directory
413081 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/JenaGeoSPARQLSUT/2025-05-17_JenaGeoSPARQL_RunWL_LUBM_1_0/LUBM/JenaGeoSPARQLSUT-ExperimentWorkload/00-Q1_GradStudents_Taken_GradCource0_At_Univ0-cold
413087 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/JenaGeoSPARQLSUT/2025-05-17_JenaGeoSPARQL_RunWL_LUBM_1_0/LUBM/JenaGeoSPARQLSUT-ExperimentWorkload/00-Q1_GradStudents_Taken_GradCource0_At_Univ0-cold-long
413088 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/JenaGeoSPARQLSUT/2025-05-17_JenaGeoSPARQL_RunWL_LUBM_1_0/LUBM/JenaGeoSPARQLSUT-ExperimentWorkload/01-Q2_GradStudents_From_Any_Univ_Depart-cold
413088 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/JenaGeoSPARQLSUT/2025-05-17_JenaGeoSPARQL_RunWL_LUBM_1_0/LUBM/JenaGeoSPARQLSUT-ExperimentWorkload/01-Q2_GradStudents_From_Any_Univ_Depart-cold-long
413088 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/JenaGeoSPARQLSUT/2025-05-17_JenaGeoSPARQL_RunWL_LUBM_1_0/LUBM/JenaGeoSPARQLSUT-ExperimentWorkload/02-Q3_Publications_Of_AssistProfessor0_In_Univ0_Depart0-cold
413088 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/JenaGeoSPARQLSUT/2025-05-17_JenaGeoSPARQL_RunWL_LUBM_1_0/LUBM/JenaGeoSPARQLSUT-ExperimentWorkload/02-Q3_Publications_Of_AssistProfessor0_In_Univ0_Depart0-cold-long
413089 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/JenaGeoSPARQLSUT/2025-05-17_JenaGeoSPARQL_RunWL_LUBM_1_0/LUBM/JenaGeoSPARQLSUT-ExperimentWorkload/03-Q4_Properties_Of_Professors_In_Univ0_Depart0-cold
413089 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/JenaGeoSPARQLSUT/2025-05-17_JenaGeoSPARQL_RunWL_LUBM_1_0/LUBM/JenaGeoSPARQLSUT-ExperimentWorkload/03-Q4_Properties_Of_Professors_In_Univ0_Depart0-cold-long
413089 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/JenaGeoSPARQLSUT/2025-05-17_JenaGeoSPARQL_RunWL_LUBM_1_0/LUBM/JenaGeoSPARQLSUT-ExperimentWorkload/00-Q1_GradStudents_Taken_GradCource0_At_Univ0-warm
413089 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/JenaGeoSPARQLSUT/2025-05-17_JenaGeoSPARQL_RunWL_LUBM_1_0/LUBM/JenaGeoSPARQLSUT-ExperimentWorkload/00-Q1_GradStudents_Taken_GradCource0_At_Univ0-warm-long
413090 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/JenaGeoSPARQLSUT/2025-05-17_JenaGeoSPARQL_RunWL_LUBM_1_0/LUBM/JenaGeoSPARQLSUT-ExperimentWorkload/01-Q2_GradStudents_From_Any_Univ_Depart-warm
413090 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/JenaGeoSPARQLSUT/2025-05-17_JenaGeoSPARQL_RunWL_LUBM_1_0/LUBM/JenaGeoSPARQLSUT-ExperimentWorkload/01-Q2_GradStudents_From_Any_Univ_Depart-warm-long
413090 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/JenaGeoSPARQLSUT/2025-05-17_JenaGeoSPARQL_RunWL_LUBM_1_0/LUBM/JenaGeoSPARQLSUT-ExperimentWorkload/02-Q3_Publications_Of_AssistProfessor0_In_Univ0_Depart0-warm
413091 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/JenaGeoSPARQLSUT/2025-05-17_JenaGeoSPARQL_RunWL_LUBM_1_0/LUBM/JenaGeoSPARQLSUT-ExperimentWorkload/02-Q3_Publications_Of_AssistProfessor0_In_Univ0_Depart0-warm-long
413091 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/JenaGeoSPARQLSUT/2025-05-17_JenaGeoSPARQL_RunWL_LUBM_1_0/LUBM/JenaGeoSPARQLSUT-ExperimentWorkload/03-Q4_Properties_Of_Professors_In_Univ0_Depart0-warm
413091 [main] INFO  GenericExprerimentResultsCollector  - Statistiscs printed: /data/Results_Store/JenaGeoSPARQLSUT/2025-05-17_JenaGeoSPARQL_RunWL_LUBM_1_0/LUBM/JenaGeoSPARQLSUT-ExperimentWorkload/03-Q4_Properties_Of_Professors_In_Univ0_Depart0-warm-long
413091 [main] INFO  GenericExprerimentResultsCollector  - Cache COLD
413092 [main] INFO  GenericExprerimentResultsCollector  - 	Query 0
413092 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 0	<COMPLETED-NONE> 7974100 + 156617948 = 164592048 nsecs, 4 results, 0 scan errors
413092 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 1	<COMPLETED-NONE> 984815 + 48876082 = 49860897 nsecs, 4 results, 0 scan errors
413093 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 2	<COMPLETED-NONE> 681062 + 26312502 = 26993564 nsecs, 4 results, 0 scan errors
413093 [main] INFO  GenericExprerimentResultsCollector  - 	Query 1
413093 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 0	<COMPLETED-NONE> 257314 + 36121865432 = 36122122746 nsecs, 0 results, 0 scan errors
413093 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 1	<COMPLETED-NONE> 190163 + 36176994762 = 36177184925 nsecs, 0 results, 0 scan errors
413093 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 2	<COMPLETED-NONE> 139551 + 36620016823 = 36620156374 nsecs, 0 results, 0 scan errors
413093 [main] INFO  GenericExprerimentResultsCollector  - 	Query 2
413093 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 0	<COMPLETED-NONE> 480568 + 30945016 = 31425584 nsecs, 6 results, 0 scan errors
413093 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 1	<COMPLETED-NONE> 106861 + 9946816 = 10053677 nsecs, 6 results, 0 scan errors
413093 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 2	<COMPLETED-NONE> 165790 + 9694927 = 9860717 nsecs, 6 results, 0 scan errors
413093 [main] INFO  GenericExprerimentResultsCollector  - 	Query 3
413093 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 0	<COMPLETED-NONE> 557819 + 4764303 = 5322122 nsecs, 0 results, 0 scan errors
413093 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 1	<COMPLETED-NONE> 330583 + 2247545 = 2578128 nsecs, 0 results, 0 scan errors
413093 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 2	<COMPLETED-NONE> 424095 + 2415642 = 2839737 nsecs, 0 results, 0 scan errors
413093 [main] INFO  GenericExprerimentResultsCollector  - Cache WARM
413093 [main] INFO  GenericExprerimentResultsCollector  - 	Query 0
413094 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 0	<COMPLETED-NONE> 107882 + 4166994 = 4274876 nsecs, 4 results, 0 scan errors
413094 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 1	<COMPLETED-NONE> 104054 + 3967457 = 4071511 nsecs, 4 results, 0 scan errors
413094 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 2	<COMPLETED-NONE> 111219 + 5805772 = 5916991 nsecs, 4 results, 0 scan errors
413094 [main] INFO  GenericExprerimentResultsCollector  - 	Query 1
413094 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 0	<COMPLETED-NONE> 105704 + 36989800701 = 36989906405 nsecs, 0 results, 0 scan errors
413094 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 1	<COMPLETED-NONE> 89513 + 37686762327 = 37686851840 nsecs, 0 results, 0 scan errors
413094 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 2	<COMPLETED-NONE> 110281 + 38867090728 = 38867201009 nsecs, 0 results, 0 scan errors
413094 [main] INFO  GenericExprerimentResultsCollector  - 	Query 2
413094 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 0	<COMPLETED-NONE> 113653 + 8153933 = 8267586 nsecs, 6 results, 0 scan errors
413094 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 1	<COMPLETED-NONE> 111475 + 9238999 = 9350474 nsecs, 6 results, 0 scan errors
413094 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 2	<COMPLETED-NONE> 107298 + 8480653 = 8587951 nsecs, 6 results, 0 scan errors
413094 [main] INFO  GenericExprerimentResultsCollector  - 	Query 3
413094 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 0	<COMPLETED-NONE> 95185 + 540654 = 635839 nsecs, 0 results, 0 scan errors
413094 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 1	<COMPLETED-NONE> 98877 + 462652 = 561529 nsecs, 0 results, 0 scan errors
413094 [main] INFO  GenericExprerimentResultsCollector  - 		Rep 2	<COMPLETED-NONE> 134833 + 542100 = 676933 nsecs, 0 results, 0 scan errors
413095 [main] INFO  RunJenaGeoSPARQLExperimentWorkload  - End LUBM-1_0
Start time = Sat May 17 21:16:48 UTC 2025
End time = Sat May 17 21:23:42 UTC 2025
Verify that the repositories have been created
root@NUC8i7BEH:/data# tree -L 1 RDF4J_4.3.15_Repos/server/repositories/
RDF4J_4.3.15_Repos/server/repositories/
`-- lubm-1_0

root@NUC8i7BEH:/data# tree -L 1 graphdb-10.8.4/data/repositories/
graphdb-10.8.4/data/repositories/
`-- scalability_10K

root@NUC8i7BEH:/data# tree -L 1 JenaGeoSPARQL_4.10.0_Repos/
JenaGeoSPARQL_4.10.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 2219 May 17 21:10 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 11991 May 17 21:13 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 866 May 17 21:16 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 78720 May 17 20:15 geordfbench/RDF4JSUT/scripts/RunTests3/RunWLRDF4JExp_LUBM_1_0.log
root@NUC8i7BEH:/data# ls -lsa geordfbench/GraphDBSUT/scripts/RunTests3/*.log
164 -rw-r--r-- 1 root root 162589 May 17 21:16 geordfbench/GraphDBSUT/scripts/RunTests3/RunWLGraphDBExp_LUBM_1_0.log
root@NUC8i7BEH:/data# ls -lsa geordfbench/JenaGeoSPARQLSUT/scripts/RunTests3/*.log
84 -rw-r--r-- 1 root root 80813 May 17 21:23 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-08-08_RDF4JSUT_RunWL_LUBM_1_0/ Results_Store/RDF4JSUT/2024-08-08_RDF4JSUT_RunWL_LUBM_1_0/ :

root@NUC8i7BEH:/data# tree -L 2 Results_Store/
Results_Store/
|-- GraphDBSUT
|   `-- 2025-05-17_GraphDBSUT_RunWL_LUBM_1_0
|-- JenaGeoSPARQLSUT
|   `-- 2025-05-17_JenaGeoSPARQL_RunWL_LUBM_1_0
`-- RDF4JSUT
    `-- 2025-05-17_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-Q4_Properties_Of_Professors_In_Univ0_Depart0-cold
                |-- 03-Q4_Properties_Of_Professors_In_Univ0_Depart0-cold-long
                |-- 03-Q4_Properties_Of_Professors_In_Univ0_Depart0-warm
                `-- 03-Q4_Properties_Of_Professors_In_Univ0_Depart0-warm-long

root@NUC8i7BEH:/data# more Results_Store/RDF4JSUT/2025-05-17_RDF4JSUT_RunWL_LUBM_1_0/LUBM/RDF4JSUT-ExperimentWorkload/00-Q1_GradStudents_Taken_GradCource0_At_Univ0-cold
4 10646917
root@NUC8i7BEH:/data# more Results_Store/RDF4JSUT/2025-05-17_RDF4JSUT_RunWL_LUBM_1_0/LUBM/RDF4JSUT-ExperimentWorkload/00-Q1_GradStudents_Taken_GradCource0_At_Univ0-cold-long
4 54536291 5564507 60100798
4 4985443 4046964 9032407
4 5895789 4751128 10646917

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:5431, 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: