signposting

Python library for parsing FAIR Signposting links

https://github.com/stain/signposting

Science Score: 77.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 4 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Committers with academic emails
    1 of 5 committers (20.0%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.9%) to scientific vocabulary

Keywords

fair http links linkset rfc8288 rfc9264 signposting
Last synced: 4 months ago · JSON representation ·

Repository

Python library for parsing FAIR Signposting links

Basic Info
Statistics
  • Stars: 7
  • Watchers: 2
  • Forks: 5
  • Open Issues: 1
  • Releases: 6
Topics
fair http links linkset rfc8288 rfc9264 signposting
Created over 3 years ago · Last pushed over 1 year ago
Metadata Files
Readme Contributing License Citation Codemeta

README.rst

===============================
Signposting link parser library
===============================
*Finding signposting in FAIR resources*

.. image:: https://img.shields.io/pypi/v/signposting
    :target: https://pypi.org/project/signposting/
    :alt: pypi install signposting

.. image:: https://img.shields.io/pypi/pyversions/signposting
    :target: https://pypi.org/project/signposting/
    :alt: Python

.. image:: https://img.shields.io/github/license/stain/signposting
    :target: https://www.apache.org/licenses/LICENSE-2.0
    :alt: Apache License v.2.0

.. image:: https://github.com/stain/signposting/workflows/Tests/badge.svg?branch=main
    :target: https://github.com/stain/signposting/actions?workflow=Tests
    :alt: Test Status

.. image:: https://github.com/stain/signposting/workflows/Package%20Build/badge.svg?branch=main
    :target: https://github.com/stain/signposting/actions?workflow=Package%20Build
    :alt: Package Build

.. image:: https://codecov.io/gh/stain/signposting/branch/main/graph/badge.svg
    :target: https://codecov.io/gh/stain/signposting
    :alt: Codecov

.. image:: https://img.shields.io/readthedocs/signposting/latest?label=Read%20the%20Docs
    :target: https://signposting.readthedocs.io/en/latest/index.html
    :alt: Read the Docs

.. image:: https://zenodo.org/badge/DOI/10.5281/zenodo.6815412.svg
   :target: https://doi.org/10.5281/zenodo.6815412
   :alt: DOI 10.5281/zenodo.6815412



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 ```` 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

    http://www.apache.org/licenses/LICENSE-2.0

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

.. _GitHub Actions: https://github.com/features/actions
.. _PyPI: https://pypi.org
.. _bump2version: https://github.com/c4urself/bump2version
.. _discussion: https://github.com/stain/signposting/discussions
.. _documentation: https://signposting.readthedocs.io/
.. _issue: https://github.com/stain/signposting/issues
.. _main branch: https://github.com/stain/signposting/tree/main
.. _pdb-tools: https://github.com/haddocking/pdb-tools
.. _project's documentation: https://signposting.readthedocs.io/en/latest/index.html
.. _pytest: https://docs.pytest.org/en/stable/git
.. _test.pypi.org: https://test.pypi.org
.. _ReadTheDocs: https://readthedocs.org/
.. _signposting: https://signposting.org/conventions/
.. _FAIR Signposting: https://signposting.org/FAIR/
.. _Link Relation: https://www.iana.org/assignments/link-relations/
.. _rdflib: https://rdflib.readthedocs.io/en/stable/
.. _urllib: https://docs.python.org/3/library/urllib.html
.. _linkset: https://signposting.org/FAIR/#linksetrec
.. _authors: https://signposting.readthedocs.io/en/latest/authors.html

Owner

  • Name: Stian Soiland-Reyes
  • Login: stain
  • Kind: user
  • Location: Manchester, UK
  • Company: eScience lab, University of Manchester

Open Source research software engineer with interests in Linked Data, RESTful web services, provenance, annotations, open science, reproducible research

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
abstract: "This library helps client to discover links that follow the FAIR Signposting conventions."
authors:
  - family-names: Soiland-Reyes
    given-names: Stian
    orcid: https://orcid.org/0000-0001-9842-9718
  - family-names: Kinoshita
    given-names: Bruno P. 
    orcid: https://orcid.org/0000-0001-8250-4074
  - family-names: Emonet
    given-names: Vincent
    orcid: https://orcid.org/0000-0002-1501-1082
title: "Signposting link parser library"
doi: 10.5281/zenodo.6815412
version: 0.9.9
license: Apache-2.0
repository-code: "https://github.com/stain/signposting/"
keywords:
 - "FAIR"
 - "signposting"
 - "linkset"
 - "http"
 - "links"
 - "RFC8288"
 - "RFC9264"

CodeMeta (codemeta.json)

{
  "@context": "https://doi.org/10.5063/schema/codemeta-2.0",
  "@type": "SoftwareSourceCode",
  "license": "https://spdx.org/licenses/Apache-2.0",
  "codeRepository": "git+https://github.com/stain/signposting.git",
  "contIntegration": "https://github.com/stain/signposting/issues",
  "dateCreated": "2022-04-01",
  "datePublished": "2022-04-13",
  "downloadUrl": "https://github.com/stain/signposting/releases",
  "issueTracker": "https://github.com/stain/signposting/issues",
  "name": "Signposting link parser library",
  "version": "0.9.9",
  "identifier": "10.5281/zenodo.6815412",
  "applicationCategory": "Web",
  "funding": [
    {
      "@id": "https://doi.org/10.3030/101057344",
      "@type": "Grant",
      "name": "FAIR-IMPACT",
      "url": "https://fair-impact.eu/"
    },
    {
      "@id": "https://doi.org/10.3030/823830",
      "@type": "Grant",
      "name": "BioExcel-2",
      "url": "https://bioexcel.eu/"
    }
  ],
  "developmentStatus": "active",
  "keywords": [
    "FAIR",
    "signposting",
    "linkset",
    "http",
    "links",
    "RFC8288",
    "RFC9264"
  ],
  "programmingLanguage": [
    "Python 3"
  ],
  "relatedLink": [
    "https://pypi.org/project/signposting",
    "https://signposting.readthedocs.io/en/latest/index.html",
    "https://app.codecov.io/gh/stain/signposting",
    "https://signposting.org/FAIR/"
  ],
  "author": [
    {
      "@type": "Person",
      "@id": "https://orcid.org/0000-0001-9842-9718",
      "givenName": "Stian",
      "familyName": "Soiland-Reyes",
      "email": "stain@apache.org",
      "affiliation": [
        {
          "@type": "Organization",
          "name": "Department of Computer Science, The University of Manchester",
          "@id": "https://www.cs.manchester.ac.uk/",
          "@reverse": {
            "department": {
              "@id": "https://ror.org/027m9bs27",
              "name": "The University of Manchester"
            }
          }
        },
        {
          "@type": "Organization",
          "name": "Informatics Institute, University of Amsterdam",
          "@id": "https://ivi.uva.nl/",
          "@reverse": {
            "department": {
              "@id": "https://ror.org/04dkp9463",
              "name": "University of Amsterdam"
            }
          }
        }
      ]
    }
  ],
  "contributor": [
    {
      "@type": "Person",
      "@id": "https://orcid.org/0000-0001-8250-4074",
      "givenName": "Bruno P.",
      "familyName": "Kinoshita"
    },
    {
      "@type": "Person",
      "@id": "https://orcid.org/0000-0002-1501-1082",
      "familyName": "Emonet",
      "givenName": "Vincent"
    }
  ]
}

GitHub Events

Total
  • Watch event: 3
Last Year
  • Watch event: 3

Committers

Last synced: about 1 year ago

All Time
  • Total Commits: 298
  • Total Committers: 5
  • Avg Commits per committer: 59.6
  • Development Distribution Score (DDS): 0.185
Past Year
  • Commits: 17
  • Committers: 2
  • Avg Commits per committer: 8.5
  • Development Distribution Score (DDS): 0.353
Top Committers
Name Email Commits
Stian Soiland-Reyes s****s@m****k 243
stain s****n 52
Stian Soiland-Reyes s****n@a****g 1
Vincent Emonet v****t@g****m 1
Bruno P. Kinoshita k****w 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 1
  • Total pull requests: 7
  • Average time to close issues: N/A
  • Average time to close pull requests: 9 days
  • Total issue authors: 1
  • Total pull request authors: 3
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.86
  • Merged pull requests: 7
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 1
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 1
  • Pull request authors: 0
  • Average comments per issue: 0.0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • B3J4y (1)
Pull Request Authors
  • stain (5)
  • vemonet (1)
  • kinow (1)
Top Labels
Issue Labels
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 199 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 1
  • Total versions: 40
  • Total maintainers: 1
pypi.org: signposting

Parse and navigate FAIR Signposting Link headers

  • Versions: 40
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 199 Last month
Rankings
Dependent packages count: 10.0%
Forks count: 15.3%
Downloads: 15.8%
Average: 17.6%
Dependent repos count: 21.7%
Stargazers count: 25.0%
Maintainers (1)
Last synced: 4 months ago

Dependencies

devtools/docs_requirements.txt pypi
  • CommonMark * development
  • mock * development
  • sphinx >=2.2 development
  • sphinx-argparse * development
  • sphinx-py3doc-enhanced-theme * development
devtools/requirements.txt pypi
  • coverage * development
  • coveralls * development
  • pip >=19.1.1 development
  • setuptools >=18.0.1 development
  • virtualenv >=16.6.0 development
setup.py pypi
  • beautifulsoup4 >=4.10
  • httplink ==0.2.0
  • requests >=2.28.1
  • rfc3987 >=1.3.8
.github/workflows/ci-testing.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
  • codecov/codecov-action v1 composite
.github/workflows/lint.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
.github/workflows/pr.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
.github/workflows/version-bump-and-package.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite