This part of the SkoHub project covers the need to easily publish a controlled vocabulary as a SKOS file, with a basic lookup API and a nice HTML view including links to an inbox for each subject. It consists of two parts: the actual static site generator and a webhook server that allows to trigger a build from GitHub. For usage & implementation details see the blog post.
$ git clone https://github.com/skohub-io/skohub-vocabs.git
$ cd skohub-vocabs
$ npm i
$ cp .env.example .env
$ cp test/data/systematik.ttl data/
The .env
file contains configuration details used by the static site generator and the webhook server (like PORT
, see below).
After changes to your .env
or data/*
files, make sure to delete the .cache
directory:
$ rm -rf .cache
The static site generator will parse all turtle files in ./data
and build the vocabularies it finds:
$ npm run build
The build can be found in public/
and be served e.g. by Apache. The directory structure is derived from the URIs of the SKOS concepts, e.g. https://w3id.org/class/hochschulfaecher/scheme
will be available from public/w3id.org/class/hochschulfaecher/scheme(.html|.json)
.
You can also run the development web server:
$ npm run develop
to serve the build from http://localhost:8000/
. Again, the URL is based on the SKOS URIs, e.g. http://localhost:8000/w3id.org/class/hochschulfaecher/scheme.html
The webhook server allows to trigger a build when vocabularies are updated (i.e. changes are merged into the master
branch) on GitHub.
Running npm run listen
will start the server on the defined PORT
and expose a build
endpoint. In order to wire this up with GitHub, this has to be available to the public. You can then configure the webhook in your GitHub repositories settings:
Feel free to clone https://github.com/literarymachine/skos.git to poke around. Go to https://github.com/YOUR_GITHUB_USER/skos/settings/hooks/new to set up the web hook (get in touch to receive the secret). Edit https://github.com/YOUR_GITHUB_USER/skos/edit/master/hochschulfaecher.ttl and commit the changes to master. This will trigger a build and expose it at https://test.skohub.io/YOUR_GITHUB_USER/skos/w3id.org/class/hochschulfaecher/scheme.
You may want to use the start scripts in scripts/
to manage via init and to monitor with monit
.
Depending on special circumstances you may get errors in the log files, e.g.
EMFILE: too many open files
. Search our issues for solutions or feel encouraged to open a new issue if you can't find a solution.
The project to create a stable beta version of SkoHub has been funded by the North-Rhine Westphalian Library Service Centre (hbz) and carried out in cooperation with graphthinking GmbH in 2019/2020.