Skip to main content

Python client for Nanopublications

Project description

nanopub Tests and update docs Publish to PyPI Coverage Status PyPI version CII Best Practices fair-software.eu DOI

nanopub-py

The nanopub-py library provides a high-level, user-friendly Python interface for searching, publishing and retracting nanopublications.

Nanopublications are a formalized and machine-readable way of communicating the smallest possible units of publishable information. See the documentation for more information.

Documentation

Checkout the user documentation 📖

Setup

Install using pip:

pip install nanopub

To publish to the nanopublication network you need to setup your profile. This allows the nanopublication services to identify you. Run the following command in the terminal:

np setup

This will ask you a few questions, then it will use that information to add and store RSA keys to sign your nanopublications with, (optionally) publish a nanopublication with your name and ORCID iD to declare that you are using these RSA keys, and store your ORCID iD to automatically add as author to the provenance of any nanopublication you will publish using this library.

Quick Start

Publishing nanopublications

from rdflib import Graph
from nanopub import Nanopub, NanopubConf, load_profile

# 1. Create the config
np_conf = NanopubConf(
    use_test_server=True,
    profile=load_profile(),  # Loads the user profile that was created with `np setup`
    add_prov_generated_time=True,
    attribute_publication_to_profile=True,
)

# 2. Construct a desired assertion (a graph of RDF triples) using rdflib
my_assertion = Graph()
my_assertion.add((
    rdflib.URIRef('www.example.org/timbernerslee'),
    rdflib.RDF.type,
    rdflib.FOAF.Person
))

# 2. Make a Nanopub object with this assertion
np = Nanopub(
    conf=np_conf,
    assertion=my_assertion
)

# 3. Publish the Nanopub object
np.publish()
print(np)

Searching for nanopublications

from nanopub import NanopubClient

# Search for all nanopublications containing the text 'fair'
client = NanopubClient()
results = client.find_nanopubs_with_text('fair')
print(results)

Fetching nanopublications and inspecting them

# Fetch the nanopublication at the specified URI
publication = client.fetch('http://purl.org/np/RApJG4fwj0szOMBMiYGmYvd5MCtRle6VbwkMJUb1SxxDM')

# Print the RDF contents of the nanopublication
print(publication)

# Iterate through all triples in the assertion graph
for s, p, o in publication.assertion:
    print(s, p, o)

Development

See the development page on the documentation website.

Tests

To run tests:

Install dependencies (if not already installed):

poetry install

Run tests:

poetry run pytest

Test coverage

Run the tests with coverage tracking:

poetry run pytest --cov

View a terminal summary:

poetry run coverage report

Or generate a detailed HTML report

poetry run coverage html

License

nanopub-py is free software under the Apache License. See LICENSE.

Copyright

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nanopub-2.1.0.tar.gz (39.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nanopub-2.1.0-py3-none-any.whl (54.5 kB view details)

Uploaded Python 3

File details

Details for the file nanopub-2.1.0.tar.gz.

File metadata

  • Download URL: nanopub-2.1.0.tar.gz
  • Upload date:
  • Size: 39.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.12.4 Linux/6.11.0-1018-azure

File hashes

Hashes for nanopub-2.1.0.tar.gz
Algorithm Hash digest
SHA256 0f21025d4a676e74173263425c521c3b3e2feb23f133ad0b4ca75397c875d7b0
MD5 b6faa1226ae82edf2f5f77e8c31b1b02
BLAKE2b-256 55c4cd50761740091d3ea81a8e540e9277115354830f913aa9a3b4132217e4a7

See more details on using hashes here.

File details

Details for the file nanopub-2.1.0-py3-none-any.whl.

File metadata

  • Download URL: nanopub-2.1.0-py3-none-any.whl
  • Upload date:
  • Size: 54.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.12.4 Linux/6.11.0-1018-azure

File hashes

Hashes for nanopub-2.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 09fdabe7bc06472faa5b8ca173347e33f522f0e650578ff07cd5808d463021f9
MD5 9a5b580cdaadfccbd7502f08e6ca1d1a
BLAKE2b-256 bca6b6399084dada05cdc74b1635ba6c74a0f6af01a17ad7e54c70db7cce6853

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page