DSP is a server application for storing, sharing, and working with primary sources and data in the humanities.
It is developed by the Swiss National Data and Service Center for the Humanities at the University of Basel, and is supported by the Swiss Academy of Humanities and Social Sciences and the Swiss National Science Foundation.
DSP-API is free software, released under the Apache License, Version 2.0.
Each developer machine should have the following prerequisites installed:
Follow the steps described on https://sdkman.io/ to install SDKMAN. Then, follow these steps:
sdk ls java # choose the latest version of Temurin 21
sdk install java 21.x.y-tem
SDKMAN will take care of the environment variable JAVA_HOME.
See docs/Readme.md.
Create a test repository, load some test data into the triplestore, and start DSP-API:
just stack-init-test
Open http://localhost:4200/ in a web browser.
On first installation, errors similar to the following can come up:
error decoding 'Volumes[0]': invalid spec: :/fuseki:delegated: empty section between colons
To solve this, you need to deactivate Docker Compose V2. This can be done in Docker Desktop either by unchecking the "Use Docker Compose V2" flag under "Preferences > General" or by running
docker-compose disable-v2
Shut down DSP-API:
just stack-stop
Automated tests are split into different source sets into slow running integration tests (i.e. tests which do IO or are using Testcontainers) and fast running unit tests.
Run unit tests:
sbt test
Run integration tests:
make integration-test
Run all tests:
make test-all
The DSP-API release versioning follows the Semantic Versioning convention:
Given a version number MAJOR.MINOR.PATCH, increment the:
- MAJOR version when you make incompatible API changes,
- MINOR version when you add functionality in a backwards-compatible manner, and
- PATCH version when you make backwards-compatible bug fixes.
Additionally, we will also increment the MAJOR version in the case when any kind of changes to existing data would be necessary, e.g., any changes to the knora-base ontology which are not backwards compatible.