Python client for FAIR Signposting

This Python library helps client to discover links that follow the signposting conventions, most notably FAIR Signposting. This can then be used to navigate between persistent identifiers, HTML landing pages, file downloads/items, structured metadata. As this example shows, the library works by inspecting the HTTP messages for Link headers from a given URI and categorize them by their Link relation type into a Signposting object with absolute URIs. It is up to the clients of this library to decide how to further navigate or retrieve the associated resources, e.g. using an RDF library like rdflib or retrieving resources using urllib. Future versions of this library may also provide ways to discover FAIR signposting in HTML &;ltlink> elements and in linkset documents.

Ruby Web Link parsing gem

This Ruby gem extracts links found in HTTP Link headers, HTML <link> elements, as well those provided in Link Sets (in both JSON and text format) made discoverable via Link headers and HTML <link> elements. It also handles unusual cases, such as having multiple relation types in a single link and dealing with 204 or 410 response where there is no message body.

Benchmarks for FAIR Signposting

The Apples-to-Apples FAIR Signposting page gives access to a set of benchmarks that clients can use to test their capabilities for extracting Signposting links. The benchmarks cover cases whereby web links are provided in HTTP Link headers, HTML <link> elements, and Link Sets (in both JSON and text format) made discoverable via Link headers and HTML <link> elements. The benchmarks include links that use a subset of FAIR Signposting link relation types, i.e. cite-as, item, and describedby and result from a hackathon that focused on assessing FAIR Signposting compliance.

CKAN Signposting extension

The CKAN extension for Signposting adds FAIR Signposting support to the open source data management system CKAN. The typed links are provided as HTML <link> elements in dataset landing pages. The extension supports adding ORCIDs as CKAN metadata and providing those ORCIDs as author links.

Dataverse FAIR Signposting

Starting with the 06/2023 release v5.14, the Dataverse data repository software supports the FAIR Signposting Profile. It supports exposing links by means of the HTTP Link header as well as using linkset documents. At the time of writing, the Dataverse software is used by nearly 100 data repositories, worldwide.

An example of a typical FAIR Signposting implementation for a Dataverse instance is shown below for a DANS Data Station.

DSpace 7 FAIR Signposting

Starting with release 7.6, the DSpace 7 repository software supports the FAIR Signposting Profile. It supports exposing links using linkset documents.

Digital Repository Ireland

The Digital Repository Ireland supports the FAIR Signposting Profile by exposing links using linkset documents.

Check out an example of FAIR Signposting for the repository object USI Escort Conference 1991. The HTML landing page https://repository.dri.ie/catalog/vm41bk02f for this object contains links to linksets serialized in both the "application/linkset" and "application/linkset+json" media types:

<link href="https://repository.dri.ie/linkset/vm41bk02f/json" rel="linkset" type="application/linkset+json">
<link href= "https://repository.dri.ie/linkset/vm41bk02f/lset" rel="linkset" type="application/linkset">

Now, check out the "application/linkset+json" linkset document by clicking its URL https://repository.dri.ie/linkset/vm41bk02f/json.

Radar (Research Data Repository) FAIR Signposting

The Radar research data repository operated by the FIZ Karlsruhe Leibniz Institute for Information Infrastructure supports FAIR Signposting by providing typed links in the HTTP Link header of landing pages of archived datasets. The below example shows an HTTP GET on a landing page and (a subset of) the resulting HTTP response headers.

curl -I "https://www.radar-service.eu/radar/en/dataset/yHWPudieWdGxmEnU.A%2BT-matrix%2BBased%2BApproach%2BHomogenize%2BArtificial%2BMaterials"

HTTP/1.1 200
Date: Sat, 27 May 2023 07:00:44 GMT
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips
Link: <https://doi.org/10.35097/856>
      ;rel="cite-as"
Link: <https://opensource.org/licenses/MIT>
      ;rel="license"
Link: <https://orcid.org/0000-0002-8173-3761>
      ;rel="author"
Link: <https://www.radar-service.eu/radar-backend/archives/yHWPudieWdGxmEnU/versions/1/content>
      ;rel="item"
      ;type="application/x-tar"
Link: <https://www.radar-service.eu/radar/en/export/yHWPudieWdGxmEnU/exportdatacite>
      ;rel="describedby"
      ;type="application/vnd.datacite.datacite+xml"
Link: <https://www.radar-service.eu/radar/en/export/yHWPudieWdGxmEnU/exportbibtex>
      ;rel="describedby"
      ;type="application/x-bibtex"
Link: <https://www.radar-service.eu/radar/en/export/yHWPudieWdGxmEnU/exportradarmetadata>
      ;rel="describedby"
      ;type="text/xml"
Content-Type: text/html;charset=UTF-8
Content-Language: en

The Open Journal System FAIR Signposting Profile

Version v2.x and v3.x of the Open Journal System software for journal publishing support the FAIR Signposting Profile. They do so by exposing links using linkset documents. At the time of writing, the hosted version of the Open Journal System publishes over 500 journals for publishers worldwide.

Check out an example of FAIR Signposting at for the article On the Contribution of Philosophical and Geoscientific Inquiry to Geoethics (qua Applied Ethics):

curl -I "https://www.annalsofgeophysics.eu/index.php/annals/Journal-sponsorship"

HTTP/1.1 200 OK
Content-Type: text/html;charset=utf-8
Link: <https://www.annalsofgeophysics.eu/index.php/annals/sp-linkset/article/7507>
      ; rel="linkset"
      ; type="application/linkset+json"

Now, check out the linkset document by clicking its URL https://www.annalsofgeophysics.eu/index.php/annals/sp-linkset/article/7507.

Pangaea

Pangaea has implemented the following Signposting patterns:
This example shows the Identifier, Metadata Resources, Content Resources, and Author patterns implemented for the Landing Page URI:

curl -I "https://doi.pangaea.de/10.1594/PANGAEA.867908"

HTTP/1.1 200 OK
Content-length: 8424
Content-type: text/html;charset=UTF-8
Link: <https://doi.org/10.1594/PANGAEA.867908>
      ; rel="cite-as",
      <https://doi.pangaea.de/10.1594/PANGAEA.867908?format=citation_ris>
      ; rel="describedby"
      ; type="application/x-research-info-systems",
      <https://doi.pangaea.de/10.1594/PANGAEA.867908?format=citation_bibtex>
      ; rel="describedby"
      ; type="application/x-bibtex",
      <https://doi.pangaea.de/10.1594/PANGAEA.867908?format=zip>
      ; rel="item"
      ; type="application/zip",
      <http://orcid.org/0000-0003-1291-8524>
      ; rel="author"

UCD Digital Library

The University College Dublin Digital Library has implemented the following Signposting patterns:
This example shows the Identifier, Metadata Resources, and the Author patterns implemented for the Landing Page URI:

curl -I "http://digital.ucd.ie/view/ucdlib:31122"

HTTP/1.1 200 OK
Content-Length: 20
Content-Type: text/html; charset=UTF-8
Link: <https://doi.org/10.7925/drs1.ucdlib_31122>
      ; rel="cite-as",
      <https://doi.org/10.7925/drs1.ucdlib_31122>
      ; rel="describedby"
      ; type="application/vnd.citationstyles.csl+json",
      <https://digital.ucd.ie/citation/ucdlib:31122/ris>
      ; rel="describedby"
      ; type="application/x-research-info-systems",
      <https://digital.ucd.ie/citation/ucdlib:31122/btx>
      ; rel="describedby"
      ; type="application/x-bibtex",
      <http://orcid.org/0000-0001-6092-9741>
      ; rel="author",
      <http://orcid.org/0000-0001-5134-5322>
      ; rel="author"

UNT Digital Library

The University of North Texas Digital Library has implemented the following Signposting patterns:
This example shows the Identifier and Metadata Resources patterns implemented for the Landing Page URI; note the link to an IIIF manifest:

curl -I "https://digital.library.unt.edu/ark:/67531/metadc1477161/"

HTTP/1.1 200 OK
Content-Length: 20
Content-Type: text/html; charset=UTF-8
Link: <https://digital.library.unt.edu/ark:/67531/metadc1477161/>
      ; rel="cite-as",
      <https://digital.library.unt.edu/ark:/67531/metadc1477161/metadata.dc.xml>
      ; rel="describedby"
      ; type="txt/xml"
      ; profile="http://purl.org/dc/elements/1.1/",
      <https://digital.library.unt.edu/ark:/67531/metadc1477161/metadata.untl.xml>
      ; rel="describedby"
      ; type="txt/xml"
      ; profile="http://digital2.library.unt.edu/untl.xsd",
      <https://digital.library.unt.edu/ark:/67531/metadc1477161/manifest/>
      ; rel="describedby"
      ; type="application/json+ld"
      ; profile="http://iiif.io/api/presentation/2.1/"

RIOXX version 3 metadata format

Rioxx has been developed for institutional repositories to share metadata about the scholarly resources they contain. Originally designed to meet the reporting requirements of Research Councils UK (RCUK), RIOXX has also proven to be generally useful as a standard for sharing metadata between repositories and network services such as large-scale metadata aggregators like CORE. RIOXX version 3 recommends using FAIR Signposting to assist machine agents in navigating from the landing page to the relevant resources. But, additionally, it fully aligns with the Signposting perspective, giving the landing page URI a central role by providing it in dc:identifier, and by conveying various metadata elements by means of dc:relation links that are typed in the same way as recommended by Signposting, e.g. cite-as to point at the persistent identifier of the object provided by the institutional repository, item to point at content resources, etc.

COAR Notify Protocol

The COAR Notify Protocol is a standard-based decentralized approach (using Linked Data Notifications with profiled ActivityStreams2 payloads) to link research outputs hosted in the distributed network of repositories with resources from external services, such as overlay-journals and open peer review services. It is a specific implementation of the generic patterns described by the Event Notifications in Value-Adding Networks specification. The COAR Notify Protocol recommends that repositories support FAIR Signposting in order to be able to send nimble notifications across the wire that, essentially, only contain URIs of objects and actors involved in a request/response conversation. Further information pertaining to those can then be obtained via the FAIR Signposting and WebID auto-discovery approaches, respectively. But, additionally, it fully aligns with the Signposting perspective, giving the landing page URI a central role by providing it as the id of the object used to represent a scholarly object in the ActivityStreams2 JSON-LD payloads and by providing the persistent identifier using a cite-as statement.

DANS Data Stations

DANS was a Signposting pioneer, implementing the Identifier and Metadata Resources patterns for its meanwhile retired DANS EASY repository. EASY has been replaced by several discipline-oriented Dataverse-based Data Stations that support FAIR Signposting out of the box.

This example shows the FAIR Signposting implementation, which is typical of all Dataverse repositories starting with version 5.14. Links are provided both in the HTTP Link header of the Landing Page URI and in a Link Set linked from it.

curl -I "https://ssh.datastations.nl/dataset.xhtml?persistentId=doi:10.17026/SS/L8MCKA"

HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Link: <https://0000-0003-2962-5234> ; rel="author",
      <https://doi.org/10.17026/SS/L8MCKA> ; rel="cite-as",
      <https://schema.org/AboutPage> ; rel="type",
      <https://schema.org/Dataset> ; rel="type",
      <http://creativecommons.org/licenses/by-nc/4.0> ; rel="license",
      <https://ssh.datastations.nl/api/access/datafile/203710>
      ; rel="item" ; type="application/pdf",
      <https://ssh.datastations.nl/api/access/datafile/203711>
      ; rel="item" ; type="application/pdf",
      <https://doi.org/10.17026/SS/L8MCKA>
      ; rel="describedby" ; type="application/vnd.citationstyles.csl+json",
      <https://ssh.datastations.nl/api/datasets/export?exporter=schema.org&persistentId=doi:10.17026/SS/L8MCKA>
      ; rel="describedby" ; type="application/ld+json",
      <https://ssh.datastations.nl/api/datasets/:persistentId/versions/2.1/linkset?persistentId=doi:10.17026/SS/L8MCKA>
      ; rel="linkset" ; type="application/linkset+json"

DSpace-CRIS

Starting with version 5.8.2, the open source DSpace-CRIS system has built-in support for the following Signposting patterns:
This example shows the Author and Content Resources patterns implemented for the Landing Page URI, which is identical to the Identifying HTTP URI, of a repository object:

curl -I "http://ktisis.cut.ac.cy/handle/10488/4268"

HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 30731
Link: <http://orcid.org/0000-0002-9452-3018>
      ; rel="author"
Link: <http://ktisis.cut.ac.cy/bitstream/10488/4268/2/Climate%20Change%20in%20Cyprus.pdf>
      ; rel="item"
      ; type="application/pdf"

This example shows the PDF file that is a constituent resource of the object linking back to the Landing Page URI using the collection relation type of the Content Resources pattern.

curl -I "http://ktisis.cut.ac.cy/bitstream/10488/4268/2/Climate%20Change%20in%20Cyprus.pdf"

HTTP/1.1 200 OK
Content-Length: 227215
Content-Type: application/pdf
Link: <http://ktisis.cut.ac.cy/handle/10488/4268>
      ; rel="collection"

WorkflowHub

WorkflowHub is registry for describing, sharing and publishing scientific computational workflows. It facilitates discovery and re-use of workflows in an accessible and interoperable way by leveraging open standards and tools, including RO-Crate and Signposting. The following Signposting patterns are used::
This example shows these patterns implemented for a WorkflowHub Landing Page URI; note the use of the profile attribute to specify that the ZIP file at the end of the item link complies with the RO-Crate specification:

curl -I "https://workflowhub.eu/workflows/419"

HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 30731
Link: <https://workflowhub.eu/workflows/419?version=1> ;
      ; rel="describedby" ;
      type="application/vnd.datacite.datacite+xml",
<https://workflowhub.eu/workflows/419?version=1> ;
      rel="describedby" ;
      type="application/ld+json",
<https://workflowhub.eu/workflows/419/ro_crate?version=1> ;
      rel="item" ;
      type="application/zip" ;
      profile="https://w3id.org/ro/crate"