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.
Copyright and license
© Copyright 2022 The University of Manchester, UK.
Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
SPDX-License-Identifier: Apache-2.0
See the authors page for a full list of contributors.
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.9.9
Changelog
v0.9.9 (2024-03-23)
CLI outputs Describes if present
v0.9.8 (2024-03-23)
CLI by default now looks up all HTTP and HTML links combined
Added CLI options –html –html –linkset –distinct to control above
Added CLI options –any-context to also report links from other contexts
Added experimental parsing of URI-based link relations (–extensions)
Added link relation rel=”describes”
v0.9.7 (2024-02-25)
Experimental CLI support for HTTP and HTML links added
v0.9.6 (2024-01-08)
Typo in CITATION.cff
v0.9.5 (2024-01-08)
Updated changelog and codemeta contributors
v0.9.4 (2023-11-16)
permit relative URIs
v0.9.3 (2023-09-21)
Fix error in text (contributed by Vincent Emonet)
v0.9.2 (2023-07-03)
Added CITATION.cff
Allow #fragments in profile URIs (e.g. for JSON-LD)
v0.9.1 (2022-10-03)
Added codemeta.json and contributors
v0.9.0 (2022-10-03)
Deprecated Signposting.context_url, use Signposting.context instead
Removed deprecated find_signposting method, use find_signposting_http_link
v0.8.3 (2022-10-02)
Fix typos, unused imports, missing docstring, and other small issues (contributed by Bruno P. Kinoshita)
v0.8.2 (2022-09-29)
Improved code coverage
Signposting.linksets now included in iteration
v0.8.1 (2022-09-29)
Documentation markup fixes.
Indicated Development Status raised to Alpha
v0.8.0 (2022-09-29)
Added warn_duplicate option to Signposting constructor
str() on Signposting now includes Link from other contexts
Signposting added support for + (add) and | (merge) operations
Added Signpost and Signposting support for == and hash()
str() on Signpost correctly shows context as anchor=
Added Signpost.with_context to change a signpost’s for_context
v0.7.3 (2022-09-29)
Prototyped operators for Signposting and Signpost
Revised API documentation and cross-links
Further code coverage by tests
v0.7.2 (2022-09-26)
Prototyped Signpost/Signposting support for == and hash()
Prototyped Signpost.with_context to change a signpost’s for_context
v0.7.1 (2022-08-22)
README updates
v0.7.0 (2022-08-20)
Support multiple context in Signposting – users of find_signposting_linkset should take particularly care to look up using for_context
RFC7231 update: Don’t resolve context according to Content-Location header
v0.6.1 (2022-08-19)
find_signposting_linkset listed in module
v0.6.0 (2022-08-14)
Linkset parsing exposed as find_signposting_linkset
Optional explicit content-negotiate for linksets
Integration tests for linksets using a2a-fair-metrics benchmarks
v0.5.2 (2022-08-14)
Handle missing Content-Type header
v0.5.1 (2022-08-14)
Unit tests compatible with Python 3.7
v0.5.0 (2022-08-13)
Add experimental RFC9264 linkset parsing (text and json)
v0.4.0 (2022-08-13)
Renamed deprecated find_signposting, renamed to find_signposting_http_link
More unit tests for signposting.htmllinks
v0.3.3 (2022-08-12)
Documentation update
v0.3.2 (2022-08-12)
Unit tests for signposting.htmllinks
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
File details
Details for the file signposting-0.9.9.tar.gz
.
File metadata
- Download URL: signposting-0.9.9.tar.gz
- Upload date:
- Size: 39.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.12.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 193b5f912290e7763782e7e8d1e423edb9cf6cca80f2864f45a4a3c67f8c5b87 |
|
MD5 | cecb0d4b2f37c255f16f05d8b03e0c5a |
|
BLAKE2b-256 | 75683697204ad23a2654793a75a8d1fb386be9f2a8c1219771716742b46801c1 |
File details
Details for the file signposting-0.9.9-py3-none-any.whl
.
File metadata
- Download URL: signposting-0.9.9-py3-none-any.whl
- Upload date:
- Size: 35.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.12.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8e9575ddbac52a0acbec9aeaf83edeadb3a4ff512f4563ec8903f7616a38eaaa |
|
MD5 | 6040434907aa2dd10252b3a1a85769cc |
|
BLAKE2b-256 | 88bcabc7f282b7cf809bb3f9cc43e599c02c2a645682cdd9fcabc72cab82ace1 |