ro-crate
ro-crate copied to clipboard
Use Case: Resolve RO-Crate from persistent identifier/DOI with landing page
As a type of user, I want some goal so that some reason.
As a potential programmatic consumer of RO-Crates I want to find the RO-Crate metadata file given a persistent identifier/DOI so that I can index/catalogue potential Crates.
As discussed in RO-Crate call 2021-07-08 and already explored in #154 this should be with a couple of options:
A persistent identifier for a creative work SHOULD for browsers give a human-readable representation like HTML. This MAY be equivalent to the RO-Crate Website, or a more specific rendering that just happens to have a corresponding RO-Crate.
To resolve a persistent identifier to a machine-readable JSON-LD, these approaches are recommended to retrieve its RO-Crate metadata file:
- HTTP Content-negotiation for the RO-Crate media type, for example:
Requestinghttps://w3id.org/ro/profile/paradisec/0.1with HTTP header
Accept: application/ld+json;profile=https://w3id.org/ro/crateredirects to the RO-Crate Metadata filehttps://example.org/ro-profiles/paradisec-0.1.0/ro-crate-metadata.json - FAIR Signposting in HTTP headers response to
HEADrequest, usingrel="describedby"and the RO-Crate media type:Link: <https://example.org/workflows/29/ro-crate-metadata.json>; rel="describedby"; type="application/ld+json;profile=https://w3id.org/ro/crate" - Parse the Landing Page HTML, looking for FAIR Signposting
<link href="…" rel="describedby" type="…">as above, or<script type="application/ld+json">blocks embedding the metadata file as for RO-Crate Website. (Note: The<script>type do not includeprofile) - The above approaches may fail, e.g. for content-delivery networks that do not support content-negotiation. One fallback, following the RO-Crate Structure, is to try resolving the path
./ro-crate-metadata.jsonfrom the resolved URI (after permalink redirects). For example:
If permalinkhttps://w3id.org/ro/profile/paradisec/0.1redirects tohttps://example.org/ro-profiles/paradisec-0.1.0/, then gethttps://example.org/ro-profiles/paradisec-0.1.0/ro-crate-metadata.json
Can we add some recommendations to the main spec with this? For instance, in this RO: https://w3id.org/dgarijo/ro/sepln2022 if you do:
curl -sH "Accept:text/html" -L https://w3id.org/dgarijo/ro/sepln2022
you get an HTML representation, but if you do
curl -sH "Accept:application/ld+json" -L https://w3id.org/dgarijo/ro/sepln2022
you will get the json-ld representation associated with it.
Partially described in How to retrieve a Profile Crate but this should be generalized beyond Profile Crates and also cover more reliable signposting.
@ptsefton to check how we implemented this in a recent pull request.
Fixed by #296 under review.