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

Introduction to Signposting

bg right

Stian Soiland-Reyes, The University of Manchester, University of Amsterdam

FDO Summit 2024, Berlin, DE

height:1em Creative Commons Attributions 4.0 International


  1. How do PIDs currently resolve to repositories?
  2. Why are the Linked Data practices not enough?
  3. Signposting in HTTP
  4. FDO and Signposting
  5. More “advanced” Signposting

A typical PID resolution


HTTP/1.1 302 Found

Browsers follow the redirection to the repository’s landing page


HTTP/1.1 200 OK 
Content-Type: text/html

  <head> ... </head>


A typical landing page

bg right contain

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?


HTTP/1.1 200 OK
Content-Type: application/json

{ "title": "Data 14",  "download": "" }

Some webby attempts

Accept: application/json

HTTP/1.1 303 See Other

FAIR Signposting

HTTP/1.1 200 OK 
Content-Type: text/html
Link: <>; rel="item"
Link: <>; rel="describedby"
Link: <>; rel="cite-as"
Link: <>; rel="item"


Additional Link headers, just like rel=stylesheet

No need to retrieve the HTML, use HTTP HEAD to only get headers.

bg right contain

rel= FDO concept
cite-as PID
type FDO type
describedby metadata
item bytestream
author (attribute)
license (attribute)

Alternative Signposting methods


<link rel="stylesheet"  href="" />
<link rel="cite-as"     href=""  />
<link rel="item"        href=""  />
<link rel="describedby" href="" />
<link rel="type"        href=""   />


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": "",
    "cite-as": [
      { "href": "" }
    "item": [
      { "href": "" }
    "describedby": [
      { "href": "" }
  { "anchor": "..." }
] }


Specify the content type:

Link: <>; rel="item";

Useful for alternative metadata formats.

For generic types, also specify a profile:

Link: <>; rel="describedby"; type="application/xml";

Useful for JSONs with different schemas

Next steps:


Herbert Van de Sompel