Introduction to Signposting
Presented as part of the Practical web-based FDOs with RO-Crate and FAIR Signposting tutorial session at FDO Summit 2024, Berlin, DE, 2024-03-19
- Introduction to Signposting (HTML slides)
- Introduction to Signposting (PDF slides)
- Introduction to Signposting (PPTX slides)
Related resources
- https://signposting.org/FAIR/
- https://github.com/stain/signposting-tutorial
- https://signposting.org/adopters/
Introduction to Signposting
Stian Soiland-Reyes, The University of Manchester, University of Amsterdam
https://orcid.org/0000-0001-9842-9718
FDO Summit 2024, Berlin, DE
2024-03-19
Creative Commons Attributions 4.0 International
Overview
- How do PIDs currently resolve to repositories?
- Why are the Linked Data practices not enough?
- Signposting in HTTP
- FDO and Signposting
- More “advanced” Signposting
A typical PID resolution
GET https://doi.org/10.abcd/j.mystery.14
HTTP/1.1 302 Found
Location: http://www.example.com/repo/item/14
Browsers follow the redirection to the repository’s landing page
GET http://www.example.com/repo/item/14
HTTP/1.1 200 OK
Content-Type: text/html
<html>
<head> ... </head>
<body>
A typical landing page
HTML for human readability and human navigation
A preview of the resource
Metadata (e.g. title, abstract, author) listed as text
Link to download (e.g. a .pdf
)
… and many unrelated links
What about the machines?
- Site-specific JSON – schema must be already known
- “Secret” API – do some URL rewriting
- API documented as URL patterns
http://api.example.com/items/{item}.json
- – but what is the
{item}
?
- – but what is the
GET http://api.example.com/items/14.json
HTTP/1.1 200 OK
Content-Type: application/json
{ "title": "Data 14", "download": "http://cdn.example.net/item14.zip" }
Some webby attempts
- Content negotiation can redirect to alternative content representation – if format is known
GET http://www.example.com/repo/item/14
Accept: application/json
HTTP/1.1 303 See Other
Location: http://api.example.com/items/14.json
- … but which JSON schema is used?
- What about those download links?
- What was the persistent identifier? Type?
FAIR Signposting
HTTP/1.1 200 OK
Content-Type: text/html
Link: <http://cdn.example.net/item14.zip>; rel="item"
Link: <http://api.example.com/items/14.json>; rel="describedby"
Link: <https://doi.org/10.abcd/j.mystery.14>; rel="cite-as"
Link: <https://schema.org/TrainingMaterial>; rel="item"
<html>...
Additional Link
headers, just like rel=stylesheet
No need to retrieve the HTML, use HTTP HEAD
to only get headers.
https://doi.org/10.17487/RFC8288
Link relations
rel= |
FDO concept |
---|---|
cite-as |
PID |
type |
FDO type |
describedby |
metadata |
item |
bytestream |
author |
(attribute) |
license |
(attribute) |
Alternative Signposting methods
<html>
<head>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap..." />
<link rel="cite-as" href="https://doi.org/10.abcd/j.mystery.14" />
<link rel="item" href="http://cdn.example.net/item14.zip" />
<link rel="describedby" href="http://api.example.com/items/14.json" />
<link rel="type" href="https://schema.org/TrainingMaterial" />
</head>
<body>
...
HTML signposting with <link>
can be used if you don’t have control over the HTTP server, e.g. content delivery network (CDN).
Linkset JSON (rel="linkset"
)
{ "linkset": [
{ "anchor": "http://www.example.com/repo/item/14",
"cite-as": [
{ "href": "https://doi.org/10.abcd/j.mystery.14" }
],
"item": [
{ "href": "http://cdn.example.net/item14.zip" }
],
"describedby": [
{ "href": "http://api.example.com/items/14.json" }
]
},
{ "anchor": "..." }
] }
<https://doi.org/10.17487/RFC9264
Make the links meaningful
Specify the content type
:
Link: <http://cdn.example.net/item14.zip>; rel="item";
type="application/zip"
Useful for alternative metadata formats.
For generic types, also specify a profile
:
Link: <http://api.example.com/marc/14>; rel="describedby"; type="application/xml";
profile="http://www.loc.gov/MARC21/slim"
Useful for JSONs with different schemas
Next steps:
- https://signposting.org/FAIR/
- https://github.com/stain/signposting-tutorial
- https://signposting.org/adopters/
Acknowledgements
Herbert Van de Sompel https://orcid.org/0000-0002-0715-6126
FAIR-IMPACT https://doi.org/10.3030/101057344
BY-COVID https://doi.org/10.3030/101046203