Manage dataspaces

Step by step guide to creating a new dataspace backed by SPARQL services

Manage dataspaces

Dataspaces are configured in config/system.trig. TriG RDF syntax is used.

The configuration uses the Application domain ontology. A dataspace is comprised of an end-user application and an administrative application, both of them are backed by each own SPARQL service. Each application can also specify its own XSLT stylesheet.

Application base URIs need to be relative to the system base URI configured in the .env file. A change of system base URI currently requires a change of application base URIs, otherwise they will not be reachable.

Change base URI(s)

Lets say we want to use as the new base URI of our dataspaces. The easiest way is to simple replace occurences of the default https://localhost:4443/ base URI with the new value. It can be done using the following shell command:

sed -i 's/https:\/\/localhost:4443\//https:\/\/\/linkeddatahub\//g' config/system.trig

Note that sed requires to escape forward slashes / with backslashes \.

Create a dataspace

Add instances of lapp:EndUserApplication, lapp:AdminApplication and their corresponding sd:Services following the default dataspace in config/system.trig.

Use URIs (for example in the urn: scheme) to identify apps and services, not blank nodes. Make sure the file's syntax is valid Turtle, otherwise the setup will not work. You can use Turtle Validator to check the syntax.

Change stylesheet

Change the value of ac:stylesheet to the URI of your XSLT stylesheet. Add the property if it is absent.

The stylesheet can either be uploaded as a file or mounted in docker-compose.yml, in the volumes section of the linkeddatahub service. Mounting is useful while developing.

You will need to restart LinkedDataHub's Docker service for the new stylesheet to take effect.

It is rarely necessary to change the stylesheet of an admin application.

Manage services

LinkedDataHub service as well as the default SPARQL services fuseki-end-user and fuseki-admin are defined in docker-compose.yml and run as Docker containers.