Static site generator for Simple Knowledge Management Systems (SKOS)
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/
.env file contains configuration details used by the static site generator and the webhook server (like
PORT, see below).
After changes to your
data/* files, make sure to delete the
$ rm -rf .cache
Running the static site generator
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
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.
Running the webhook server
The webhook server allows to trigger a build when vocabularies are updated (i.e. changes are merged into the
master branch) on GitHub.
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:
Connecting to our webhook server
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.
Use start scripts and monit
You may want to use the start scripts in
scripts/ to manage via init and to monitor with
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.