diff --git a/docker/.env.dist b/docker/.env.dist new file mode 100644 index 0000000..612efe5 --- /dev/null +++ b/docker/.env.dist @@ -0,0 +1 @@ +DBA_PASSWORD=changeme diff --git a/docker/README.md b/docker/README.md new file mode 100644 index 0000000..3b050f3 --- /dev/null +++ b/docker/README.md @@ -0,0 +1,14 @@ +Simple template for a Docker Compose setup based on [Virtuoso](https://github.com/openlink/virtuoso-opensource/), providing an RDF store, SPARQL Endpoint, and RDF browser (among other available features) for a quick knowledge base deployment. + +# Localize + +1. Replace `rdf/example.ttl` with your knowledge base +2. Add your namespaces to `initdb.d/setup.sql` +3. Adapt `docker-compose.yml` +4. Copy `.env.dist` to `.env` and change `DBA_PASSWORD` + +# Start to use + +1. Run `docker compose up --build` +2. Test the SPARQL endpoint at [`http://localhost:8890/sparql`](http://localhost:8890/sparql) +2. Test the RDF browser at [`http://localhost:8080/ExInstance`](http://localhost:8080/ExInstance) diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml new file mode 100644 index 0000000..e2da7b3 --- /dev/null +++ b/docker/docker-compose.yml @@ -0,0 +1,29 @@ +services: + + virtuoso: + image: openlink/virtuoso-opensource-7 + environment: + - DBA_PASSWORD=${DBA_PASSWORD} + - VIRT_DATABASE_ERRORLOGLEVEL=3 + - VIRT_SPARQL_DEFAULTGRAPH=http://example.org + - VIRT_SPARQL_DEFAULTQUERY=select distinct * {?s ?p ?o.} LIMIT 100 + - VIRT_PARAMETERS_DIRSALLOWED=., /usr/local/virtuoso-opensource/share/virtuoso/vad, /rdf + - VIRT_PLUGINS_-=- + volumes: + - ./rdf:/rdf:ro + - ./initdb.d:/opt/virtuoso-opensource/initdb.d:ro + ports: + - "127.0.0.1:8890:8890" + restart: unless-stopped + + lodview: + image: ghcr.io/konradhoeffner/lodview:22.05 + environment: + - LodViewendpoint=http://virtuoso:8890/sparql + - LodViewIRInamespace=http://example.org/ + - LodViewhomeUrl=/ExInstance + ports: + - "127.0.0.1:8080:8080" + depends_on: + - virtuoso + restart: unless-stopped diff --git a/docker/initdb.d/setup.sql b/docker/initdb.d/setup.sql new file mode 100644 index 0000000..0409ae8 --- /dev/null +++ b/docker/initdb.d/setup.sql @@ -0,0 +1,9 @@ +log_message('Setup: Activate CORS'); +update DB.DBA.HTTP_PATH set HP_OPTIONS = serialize(vector('browse_sheet', '', 'noinherit', 'yes', 'cors', '*', 'cors_restricted', 0)) where HP_LPATH = '/sparql'; +log_message('Setup: Declare namespaces'); +DB.DBA.XML_SET_NS_DECL ('ex', 'http://example.org/', 2); +log_message('Setup: Load data'); +ld_dir_all ('/rdf/', '*.ttl', 'http://example.org'); +rdf_loader_run(); +log_message('Setup: Finished'); + diff --git a/docker/rdf/example.ttl b/docker/rdf/example.ttl new file mode 100644 index 0000000..44627e7 --- /dev/null +++ b/docker/rdf/example.ttl @@ -0,0 +1,20 @@ +PREFIX rdfs: +PREFIX owl: +PREFIX ex: + +ex:ExClass + a owl:Class ; + rdfs:comment "an example class"@en ; + rdfs:label "example class"@en . + +ex:ExInstance + a ex:ExClass ; + ex:exProperty 5 ; + rdfs:comment "an example instance."@en ; + rdfs:label "example instance"@en . + +ex:exProperty + a owl:DatatypeProperty ; + rdfs:domain ex:ExClass ; + rdfs:label "Beispielproperty"@de , + "example property"@en .