Package: signposting
Finding signposting in FAIR resourcesSummaryThis library helps client to discover links that follow thesignpostingconventions, most notablyFAIR Signposting.This can then be used to navigate between:Persistent identifiersHTML landing pagesFile downloads/itemsStructured metadataMethodThe library works by inspecting the HTTP messages forLinkheaders from a given URI withfind_signposting_http, which
which categorize them by theirrelLink relationinto aSignpostingobject 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 likerdflibor retrieving resources usingurllib.Future versions of this library may also provide ways to discover
FAIR signposting in HTML<link>annotations and inlinksetdocuments.MotivationFAIR Signpostinghas 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 likedescribedby,cite-asanditem.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 athttp://www.apache.org/licenses/LICENSE-2.0Unless 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.0See theauthorspage for a full list of contributors.How to use this repositoryThedocumentationpages explain briefly how to use this library including a listing of modules and methods.Issues and DiscussionsAs usual in any GitHub based project, raise anissueif you find any bug or have other suggestions; or open adiscussionif you want to discuss or talk :-)Versionv0.9.7Changelogv0.9.7 (2024-02-25)v0.9.6 (2024-01-08)v0.9.5 (2024-01-08)Updated changelog and codemeta contributorsv0.9.4 (2023-11-16)permit relative URIsv0.9.3 (2023-09-21)Fix error in text (contributed by Vincent Emonet)v0.9.2 (2023-07-03)AddedCITATION.cffAllow#fragmentsin profile URIs (e.g. for JSON-LD)v0.9.1 (2022-10-03)Addedcodemeta.jsonand contributorsv0.9.0 (2022-10-03)DeprecatedSignposting.context_url, useSignposting.contextinsteadRemoved deprecatedfind_signpostingmethod, usefind_signposting_http_linkv0.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 coverageSignposting.linksetsnow included in iterationv0.8.1 (2022-09-29)Documentation markup fixes.Indicated Development Status raised to Alphav0.8.0 (2022-09-29)Addedwarn_duplicateoption toSignpostingconstructorstr() onSignpostingnow includesLinkfrom other contextsSignpostingadded support for+(add) and|(merge) operationsAddedSignpostandSignpostingsupport for==andhash()str() onSignpostcorrectly shows context asanchor=AddedSignpost.with_contextto change a signpost’s for_contextv0.7.3 (2022-09-29)Prototyped operators forSignpostingandSignpostRevised API documentation and cross-linksFurther code coverage by testsv0.7.2 (2022-09-26)Prototyped Signpost/Signposting support for==andhash()PrototypedSignpost.with_contextto change a signpost’s for_contextv0.7.1 (2022-08-22)README updatesv0.7.0 (2022-08-20)Support multiple context inSignposting– users offind_signposting_linksetshould take particularly care to look up usingfor_contextRFC7231 update: Don’t resolve context according toContent-Locationheaderv0.6.1 (2022-08-19)find_signposting_linksetlisted in modulev0.6.0 (2022-08-14)Linkset parsing exposed asfind_signposting_linksetOptional explicit content-negotiate for linksetsIntegration tests for linksets using a2a-fair-metrics benchmarksv0.5.2 (2022-08-14)Handle missing Content-Type headerv0.5.1 (2022-08-14)Unit tests compatible with Python 3.7v0.5.0 (2022-08-13)Add experimental RFC9264 linkset parsing (text and json)v0.4.0 (2022-08-13)Renamed deprecatedfind_signposting, renamed tofind_signposting_http_linkMore unit tests forsignposting.htmllinksv0.3.3 (2022-08-12)Documentation updatev0.3.2 (2022-08-12)Unit tests forsignposting.htmllinksv0.3.1 (2022-08-11)Refactorsignposting.htmllinksmodulev0.3.0 (2022-08-09)Exposefind_signposting_htmlin public APIv0.2.6 (2022-08-09)Improved type safety inhtmllinksv0.2.5 (2022-08-08)Further documentation improvementsInitial HTML parsing of <link> elements (importsignposting.htmllinksfor now)Added str/repr forSignpostingandSignpostclasses.str(s)return HTTP link headers.AddedSignposting.signpostspropertySignpostingis now iterablev0.2.4 (2022-07-08)Documentation improvementsv0.2.3 (2022-07-08)Documentation updatev0.2.2 (2022-06-07)Tidy up__init__.pypublic APIv0.2.1 (2022-06-05)API Change: Refactored to newSignpostingclasses
to avoid exposing theParsedLinkimplementation.Note:Signpostingattributes like.authorsare now
sets to indicate order is not (very) important.Removed rdflib dependencyv0.1.3 (2022-05-17)Hide for now draft implementationv0.1.2 (2022-05-17)Draft implementation ofSignpostingclassesv0.1.1 (2022-04-13)Build improvementsv0.1.0 (2022-04-13)First 0.1 releasev0.0.15 (2022-04-13)Documentation improvementsv0.0.14 (2022-04-13)Documentation improvementsv0.0.13 (2022-04-13)Documentation improvementsv0.0.12 (2022-04-13)Documented examplev0.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 versionsv0.0.8 (2022-04-11)Command line tool testedv0.0.7 (2022-04-11)Command line tool functionalv0.0.6 (2022-04-11)Initial draft of command line toolv0.0.5 (2022-04-10)Handle 410 Gone and 203 Non-Authorative as warningsTests against HTTP aspects of <https://s11.no/2022/a2a-fair-metrics/> for #1–#26v0.0.4 (2022-04-06)API Documentation draftedfind_landing_pagerenamedfind_signposting_httpv0.0.3 (2022-04-06)README updatesMore tests until a2a-fair-metrics test #17v0.0.2 (2022-04-06)Initial HTTP Link header parsingv0.0.1 (2022-04-01)Generated from joaomcteixeira/python-project-skeleton