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
<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">
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.
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"
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
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
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
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
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"