Metadata-Version: 2.4
Name: dump-things-service
Version: 6.3.5
Summary: A simple service to store and retrieve schema-conform data records
Project-URL: Documentation, https://dump-things-service.readthedocs.io/
Project-URL: Issues, https://codeberg.org/datalink/dump-things-server/issues
Project-URL: Source, https://hub.psychoinformatics.de/orinoco/dump-things-server
Project-URL: Changelog, https://hub.psychoinformatics.de/orinoco/dump-things-server/src/branch/master/CHANGELOG.md
Author-email: Christian Mönch <christian.moench@web.de>
License-Expression: MIT
License-File: LICENSE
Classifier: Development Status :: 4 - Beta
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Requires-Python: >=3.11
Requires-Dist: aiohttp
Requires-Dist: click
Requires-Dist: datalad-core
Requires-Dist: fastapi-pagination>=0.15.15
Requires-Dist: fastapi[standard]>=0.138.0
Requires-Dist: fsspec
Requires-Dist: linkml>=1.10.0
Requires-Dist: pydantic
Requires-Dist: pyyaml
Requires-Dist: rdflib
Requires-Dist: requests
Requires-Dist: sqlalchemy
Requires-Dist: uvicorn
Provides-Extra: docs
Requires-Dist: myst-parser; extra == 'docs'
Requires-Dist: pytest; extra == 'docs'
Requires-Dist: sphinx; extra == 'docs'
Requires-Dist: sphinx-autodoc-typehints; extra == 'docs'
Requires-Dist: sphinx-rtd-theme; extra == 'docs'
Description-Content-Type: text/markdown

### Dump Things Service

[![PyPI version fury.io](https://badge.fury.io/py/dump-things-service.svg)](https://pypi.python.org/pypi/dump-things-service/)

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](https://pypi.org/project/dump-things-pyclient/).

Dump Things Service serves as backend for [shacl-vue](https://www.psychoinformatics.de/instruments/shacl-vue),
a generic graphical metadata acquisition tool.

For more information on the service, see the [documentation](https://dump-things-service.readthedocs.io/).

### 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](https://linkml.io/).
The service supports schemas that are based on Datalad's *Thing* schema, i.e. on [https://concepts.datalad.org/s/things/v1/](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
