collection-api
Collection API implementation following the recommendations of the RDA Research Data Collections WG
Science Score: 75.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 5 DOI reference(s) in README -
✓Academic publication links
Links to: zenodo.org -
○Academic email domains
-
✓Institutional organization owner
Organization kit-data-manager has institutional domain (www.scc.kit.edu) -
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (12.8%) to scientific vocabulary
Keywords
Repository
Collection API implementation following the recommendations of the RDA Research Data Collections WG
Basic Info
Statistics
- Stars: 3
- Watchers: 4
- Forks: 2
- Open Issues: 7
- Releases: 4
Topics
Metadata Files
README.md
Collection API
This project provides an implementation of the Collection API as it was proposed by the RDA Recommendation on Research Data Collections doi: 10.15497/RDA00022. The Collection API is implemented as Spring Boot-based Microservice and can be used for building collections of digital objects in a generic way independent from any repository managing the digital objects. The implementation is complete with regard to the recommendations supporting pagination, collection sorting, and listing of sub-collections.
Differences and Improvements
As some aspects of the Collection API are not clearly defined by the recommendation, this implementation contains some fixes [FIX], additions [ADD] and restrictions [RES] marked with the according tag. In all other cases the implementation is expected to behave as recommended.
- [FIX] Return type inconsistencies have been fixed, e.g. in /collections/{id}/members/{mid}
- [FIX] Delete operations return status 204 (NO_CONTENT) according to the HTTP specification
- [FIX] Delete operations are realized idempotent following the HTTP specification. This means, that DELETE can be issued multiple times to a resource and returns HTTP 204 in all cases.
- [FIX] Collection operations allow navigation the same way all other operations do, e.g. via prev and next links.
- [RES] Listing a collection recursively does not consider the sorting of child elements.
- [RES] A recursive listing of a collection will also contain member items of expanded collections. The recommendation document was not clear on this.
- [RES] There is currently no build-in PID support. If no PID are provided with a collection or member, a UUID is assigned.
- [ADD] Integrated ETag support in order to avoid concurrent modifications.
- [ADD] Navigation through a result set is realized using default Spring pagination, e.g. supporting page and size query parameters. The cursors (next and prev) of a result set are pointing to the next/prev page link.
How to build
In order to build the Collection API you'll need:
- Java SE Development Kit 11 or higher
After obtaining the sources change to the folder where the sources are located perform the following steps:
user@localhost:/home/user/collection-api$ ./gradlew -Dprofile=minimal build
Running gradle version: 7.4.2
Building collection-api version: 1.2.1-SNAPSHOT
JDK version: 11
Using minimal profile for building collection-api
<-------------> 0% EXECUTING [0s]
[...]
user@localhost:/home/user/collection-api$
The Gradle wrapper will now take care of downloading the configured version of Gradle, checking out all required libraries, build these libraries and finally build the collection-api microservice itself. As a result, a fat jar containing the entire service is created at 'build/jars/collection-api.jar'.
How to start
Prerequisites
- PostgreSQL 9.1 or higher
Setup
Before you are able to start the microservice, you have to provide a configuration file according to your local setup. Therefor, copy the file 'config/application-default.properties' to your project folder, rename it to 'application.properties' and customize it. For the Collection API you just may adapt the properties of spring.datasource and change the server.port property. All other properties can be ignored for the time being.
As soon as you finished modifying 'application.properties', you may start the collection-api microservice by executing the following command inside the project folder, e.g. where the service has been built before:
``` user@localhost:/home/user/collection-api$ ./build/libs/collection-api.jar
. ____ _ __ _ _ /\ / ' __ _ ()_ __ __ _ \ \ \ \ ( ( )_ | '_ | '| | ' \/ ` | \ \ \ \ \/ _)| |)| | | | | || (| | ) ) ) ) ' |__| .|| ||| |_, | / / / / =========||==============|_/=//// :: Spring Boot :: (v2.2.2.RELEASE) [...] 1970-01-01 00:00:00.000 INFO 56918 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8070 (http) with context path ''
```
As soon as the microservice is started, you can browse to
http://localhost:8070/swagger-ui.html
in order to see available RESTful endpoints and their documentation. You may have to adapt the port according to your local settings. Furthermore, you can use this Web interface to test single API calls in order to get familiar with the service.
You may create collections via any REST client or using the Web UI available at
http://localhost:8070/collections
The Collection API offers a graphical web frontend to visualize managed collections, collection items and relationships between them as well as associated metadata. In addition it allows a simple search for elements in order to visualize linked nodes. To access the web frontend, open the following link in your browser:
http://localhost:8070/static/overview.html
More Information
- RDA Recommendation on Research Data Collections (doi: 10.15497/RDA00022)
- Getting Started & Documentation
- API documentation
- Interactive tutorial
- Docker container
- HMC website section and flyer
License
The KIT Data Manager is licensed under the Apache License, Version 2.0.
Owner
- Name: KIT Data Manager
- Login: kit-data-manager
- Kind: organization
- Email: webmaster@datamanger.kit.edu
- Location: Karlsruhe, Germany
- Website: https://www.scc.kit.edu/ueberuns/dem.php
- Repositories: 56
- Profile: https://github.com/kit-data-manager
Generic software and recommendations for FAIR research data management by DEM.
Citation (CITATION.cff)
cff-version: 1.2.0 message: "If you use this software, please cite it as below." authors: - family-names: "Jejkal" given-names: "Thomas" affiliation: Karlsruhe Institute of Technology email: thomas.jejkal@kit.edu orcid: "https://orcid.org/0000-0003-2804-688X" - family-names: "Chelbi" given-names: "Sabrine" affiliation: Karlsruhe Institute of Technology email: sabrine.chelbi@kit.edu orcid: "https://orcid.org/0000-0002-4480-6116" title: "collection-api" type: software abstract: This project contains the collection microservice for the KIT DM infrastructure. The service provides allows to build generic collections of digital resources following the recommendations of the Research Data Alliance on Research Data Collections. date-released: 2020-09-29 url: "https://github.com/kit-data-manager/collection-api" repository-code: "https://github.com/kit-data-manager/collection-api" license: Apache-2.0
GitHub Events
Total
Last Year
Issues and Pull Requests
Last synced: 10 months ago
All Time
- Total issues: 10
- Total pull requests: 141
- Average time to close issues: 15 days
- Average time to close pull requests: 18 days
- Total issue authors: 3
- Total pull request authors: 5
- Average comments per issue: 0.7
- Average comments per pull request: 0.74
- Merged pull requests: 75
- Bot issues: 0
- Bot pull requests: 107
Past Year
- Issues: 0
- Pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Issue authors: 0
- Pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- ThomasJejkal (3)
- VolkerHartmann (2)
- tegx (1)
Pull Request Authors
- dependabot[bot] (62)
- ThomasJejkal (12)
- sabrineChe (5)
- Pfeil (2)
- tegx (1)
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- org.springdoc:springdoc-openapi-data-rest 1.2.31 api
- com.googlecode.json-simple:json-simple 1.1.1 compile
- org.springframework.boot:spring-boot-starter-thymeleaf * compile
- com.h2database:h2 1.4.194 implementation
- com.sun.xml.bind:jaxb-core 2.2.11 implementation
- com.sun.xml.bind:jaxb-impl 2.2.11 implementation
- de.codecentric:spring-boot-admin-starter-client 2.1.6 implementation
- edu.kit.datamanager:service-base 0.2.0 implementation
- javax.activation:activation 1.1.1 implementation
- javax.xml.bind:jaxb-api 2.2.11 implementation
- org.apache.httpcomponents:httpclient 4.5.6 implementation
- org.javassist:javassist 3.23.1-GA implementation
- org.postgresql:postgresql 42.2.1 implementation
- org.springframework.boot:spring-boot-starter-data-jpa * implementation
- org.springframework.boot:spring-boot-starter-data-rest * implementation
- org.springframework.boot:spring-boot-starter-security * implementation
- com.h2database:h2 1.4.194 testImplementation
- org.asciidoctor:asciidoctor-gradle-plugin 1.5.9.2 testImplementation
- org.mockito:mockito-core 2.18.0 testImplementation
- org.powermock:powermock-api-mockito2 2.0.0-beta.5 testImplementation
- org.powermock:powermock-module-junit4 2.0.0-beta.5 testImplementation
- org.springframework.boot:spring-boot-starter-test * testImplementation
- org.springframework.restdocs:spring-restdocs-mockmvc * testImplementation
- org.springframework.restdocs:spring-restdocs-mockmvc 2.0.2.RELEASE testImplementation
- org.springframework.security:spring-security-test * testImplementation
- org.springframework:spring-test * testImplementation
- robvanderleek/create-issue-branch main composite
- actions/checkout v2 composite
- actions/setup-java v2 composite
- crazy-max/ghaction-docker-meta v1 composite
- docker/build-push-action v2 composite
- docker/login-action v1 composite
- docker/setup-buildx-action v1 composite
- docker/setup-qemu-action v1 composite
- actions/checkout v2 composite
- actions/setup-java v2 composite
- codecov/codecov-action v1 composite
- build-env-java latest build
- openjdk 16-bullseye build