ResearchObject / ro-crate

Research Object Crate
https://w3id.org/ro/crate/
Apache License 2.0
79 stars 34 forks source link

Use Case: Use With BD-Bag #78

Open ThomasThelen opened 4 years ago

ThomasThelen commented 4 years ago

As a person creating and using crates, I want to use BD-Bag's fetch.txt so that I can efficiently transport Crates that are linked to external data.

There are of course a few different ways to achieve the goal above without using BD-Bag (for example this). I did some exploratory work on seeing what it would take for BD-Bag to support RO-Crate. I'll summarize them in this issue for anyone else that finds it useful. Note that I left out references to the optional RO-Crate files. Also note that this isn't an actual use case of mine.

BD-Bag RO-Crate Format

Base BagIt

Before anything can be set in stone, one of the different BagIt formats should be accepted (see #13). That issue is about achieving harmony between BagIt and RO-Crate, which ultimately boils down to where the RO-Crate Root is defined.

BD-Bag Additions

BD-Bag adds fetch.txt to the bag root.

RO-Crate Additions

Implicit though the Base BagIt integration

Final Structure

This ultimately comes down to what the outcome of #13 is with the addition of fetch.txt.

BD-Bag tooling

Profile

BD-Bag extends support for other standards via BagIt profiles. The first step is creating a new profile for RO-Crate. I've mostly done this here. Note that I chose to make the data/ directory the Crate Root. The reason for this is purely because the bd-bag library places it there.

The main area of interest is

   "Tag-Files-Required":[
     "data/ro-crate-metadata.jsonld"
   ],

BD-Bag Library

I'm not entirely sure what the capabilities are, but it looks like it should be able to parse the canonical metadata file defined in the profile (ro-crate-metadata.jsonld in our case) and create the fetch.txt from it. It should also be able to validate them and presumably work in the GUI.

stain commented 8 months ago

https://www.researchobject.org/ro-crate/1.1/appendix/implementation-notes.html#adding-ro-crate-to-bagit specifies how to use RO-Crate in BagIt.

I've raised https://github.com/bagit-profiles/bagit-profiles-specification/issues/36 as Tag-Files-Required can't address data/ files from a bagit profile, so you would need Payload-Files-Required instead (See https://github.com/bagit-profiles/bagit-profiles-specification/pull/42 )