A library to create and modify valid RO-Crates.

The RO-Crate-Java library

Research-Object-Crate is a flexible research data package format. It allows you to package or link to data and describe it in a machine-readable and human-readable way. It uses Linked Data (JSON-LD) to describe its content. The combination of a file-based package and a possibility to link to data on the Web makes the format useful for a number of use-cases.

Software libraries enable developers and users to create and modify such crates. They have the potential to enable valid crates without knowing the specification perfectly, and can be used to build this functionality into other applications.

Ro-crate-java is such a software library, written in the Java programming language. It has similar functionality as the existing implementations (ro-crate-py, ro-crate-ruby), which are implemented by the RO-Crate project. In contrast to those implementations, ro-crate-java has a strong focus on the correctness of the crates according to the specification, as well as performance. This means that ro-crate-java is especially well suited to create large crates, or large amounts of them. It can therefore, for example, be used to create crates for data in large repositories which are not packaged yet.

In the context of development, we created benchmarks to compare the existing implementations. This allows developers of all implementations to find its weaknesses and strengths, but on the other hand also enables users to decide which implementation to use.



Ro-crate-java has been extensively tested using unit and integration tests and was successfully used in tests with existing crates, as well as examples from the specification. Yet, it is currently not being integrated in other software and has not experienced large amounts of use in practice, which is why we consider it beta software. We encourage you to try it for your project, to change this situation. Of course, we have a certain roadmap to do so ourself.