/skohub-vocabs

Primary LanguageJavaScriptApache License 2.0Apache-2.0

Build

https://github.com/hbz/skohub-vocabs/actions?query=workflow%3ABuild

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.

Set up

$ 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

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 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

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.

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:

image

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 monit.

Troubleshooting

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.

Credits

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.