dump-things-service/README.md
Christian Monch 769e322b5c
Some checks failed
Codespell / Check for spelling errors (pull_request) Failing after 36s
Codespell / Check for spelling errors (push) Failing after 39s
Ruff / Code linting (pull_request) Successful in 48s
Ruff / Code linting (push) Successful in 49s
Test execution / Test-all (push) Successful in 1m23s
update README and readthedocs project name
For consistency, the project name on readthedocs
is now: `dump-things-service`.
2026-07-16 09:21:33 +02:00

2.4 KiB

Dump Things Service

PyPI version fury.io

This is an implementation of a Dump Things Service (DTS). The Dump Things Service is a central component of a self-hostable research information infrastructure, which contains tools to collect, organize, validate, visualize, and serve structured research (meta)data.

It provides a REST API for storing and retrieving records that are structured according to a schema (defined in LinkML). The service supports multiple storage backends, flexible authentication sources, and a curation workflow for distributed data acquisition.

It is complemented by a client library and command line tool, which provide convenient access to the service from Python code and the shell dump-things-pyclient.

Dump Things Service serves as backend for shacl-vue, a generic graphical metadata acquisition tool.

For more information on the service, see the documentation.

Overview of the service architecture

Data is stored in collections. Each collection has a name and an associated schema. All data records in the collection have to adhere to the given schema.

The canonical format for schemas is LinkML. The service supports schemas that are based on Datalad's Thing schema, i.e. on https://concepts.datalad.org/s/things/v1/. It assumes that the classes of stored records are subclasses of Thing, and inherit the properties pid and schema_type from the Thing-baseclass.

The general workflow in the service is as follows. We distinguish between two areas of a collection, an incoming area (aka inbox) and a curated area. Data written to a collection is stored in a collection-specific incoming area. A curation process, which is outside the scope of the service, moves data from the incoming area of a collection to the curated area of the collection.

Acknowledgements

This work was funded, in part, by

  • Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) under grant TRR 379 (546006540, Q02 project)

  • MKW-NRW: Ministerium für Kultur und Wissenschaft des Landes Nordrhein-Westfalen under the Kooperationsplattformen 2022 program, grant number: KP22-106A