Parse and navigate FAIR Signposting Link headers
Project description
Finding signposting in FAIR resources
Summary
This 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
Method
The library works by inspecting the HTTP messages for Link headers from a given URI with find_signposting_http, which which categorize them by their rel Link relation 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 a RDF library like rdflib or retrieving resources using urllib.
Future versions of this library may also provide ways to discover FAIR signposting in HTML <link> annotations and in linkset documents.
Motivation
FAIR Signposting has been proposed as a mechanism for automated clients to find metadata and persistent identifiers for FAIR data residing in repositories that follow the traditional PID-to-landing-page metaphor.
This avoids the need for client guesswork with content-negotiation, and allows structured metadata to be provided by the repository rather than just PID providers like DataCite.
The main idea of FAIR Signposting is to re-use the existing HTTP mechanism for links, using existing relations like describedby, cite-as and item.
The aim of this library is to assist such clients to find and consume FAIR resources for further processing. It is out of scope for this code to handle parsing of the structured metadata files.
Acknowledgments
Contributors:
Stian Soiland-Reyes <https://orcid.org/0000-0001-9842-9718>
Acknowledgements to Mark Wilkinson, Herbert van de Sompel, Finn Bacall.
How to use this repository
The documentation pages explain briefly how to use this library including a listing of modules and methods.
Issues and Discussions
As usual in any GitHub based project, raise an issue if you find any bug or have other suggestions; or open a discussion if you want to discuss or talk :-)
Version
v0.3.1
Changelog
v0.3.1 (2022-08-11)
Refactor signposting.htmllinks module
v0.3.0 (2022-08-09)
Expose find_signposting_html in public API
v0.2.6 (2022-08-09)
Improved type safety in htmllinks
v0.2.5 (2022-08-08)
Further documentation improvements
Initial HTML parsing of <link> elements (import signposting.htmllinks for now)
Added str/repr for Signposting and Signpost classes. str(s) return HTTP link headers.
Added Signposting.signposts property
Signposting is now iterable
v0.2.4 (2022-07-08)
Documentation improvements
v0.2.3 (2022-07-08)
Documentation update
v0.2.2 (2022-06-07)
Tidy up __init__.py public API
v0.2.1 (2022-06-05)
API Change: Refactored to new Signposting classes to avoid exposing the ParsedLink implementation.
Note: Signposting attributes like .authors are now sets to indicate order is not (very) important.
Removed rdflib dependency
v0.1.3 (2022-05-17)
Hide for now draft implementation
v0.1.2 (2022-05-17)
Draft implementation of Signposting classes
v0.1.1 (2022-04-13)
Build improvements
v0.1.0 (2022-04-13)
First 0.1 release
v0.0.15 (2022-04-13)
Documentation improvements
v0.0.14 (2022-04-13)
Documentation improvements
v0.0.13 (2022-04-13)
Documentation improvements
v0.0.12 (2022-04-13)
Documented example
v0.0.11 (2022-04-13)
Fix integration test for PID typo <https://w3id.org/a2a-fair-metrics/11-http-describedby-iri-wrong-type/>
v0.0.10 (2022-04-12)
Fix integration tests for PID typos <https://w3id.org/a2a-fair-metrics/24-http-citeas-204-no-content/> <https://w3id.org/a2a-fair-metrics/25-http-citeas-author-410-gone/> <https://w3id.org/a2a-fair-metrics/26-http-citeas-203-non-authorative/>
Added rudimentary tests for <https://w3id.org/a2a-fair-metrics/27-http-linkset-json-only/> and <https://w3id.org/a2a-fair-metrics/28-http-linkset-txt-only/>
Added tests for <https://w3id.org/a2a-fair-metrics/30-http-citeas-describedby-item-license-type-author-joint/>
v0.0.9 (2022-04-11)
Documented changelog for old versions
v0.0.8 (2022-04-11)
Command line tool tested
v0.0.7 (2022-04-11)
Command line tool functional
v0.0.6 (2022-04-11)
Initial draft of command line tool
v0.0.5 (2022-04-10)
Handle 410 Gone and 203 Non-Authorative as warnings
Tests against HTTP aspects of <https://s11.no/2022/a2a-fair-metrics/> for #1–#26
v0.0.4 (2022-04-06)
API Documentation drafted
find_landing_page renamed find_signposting_http
v0.0.3 (2022-04-06)
README updates
More tests until a2a-fair-metrics test #17
v0.0.2 (2022-04-06)
Initial HTTP Link header parsing
v0.0.1 (2022-04-01)
Generated from joaomcteixeira/python-project-skeleton
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for signposting-0.3.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 860f59da2b32cfabe1966f2577e5c20939ebd39dfa90ec25e5ea7481eb867c17 |
|
MD5 | 045ff2473056641550dbb46bbab375a6 |
|
BLAKE2b-256 | 0792fc6300340b1f55eb45e3fea52277e75fe58bdd209ffe7a61a8ec87ce8aca |