βοΈ Introduction
This project aims to provide a comprehensive cross-platform toolkit to sign, publish, and verify Nanopublications.
Whether you’re a developer looking to integrate nanopub functionalities into your application or a researcher seeking an efficient way to handle nanopublications, nanopub-rs
offers a suite of tools tailored to meet your needs.
πͺ Nanopub management
- βοΈ Sign & Publish nanopublications RDF using a RSA private key. Support for user profile defined in a
profile.yml
file. - π Verify: ensure the integrity of nanopubs by checking their validity, whether they are signed or unsigned.
- π₯ Fetch nanopubs from the network using their URI.
π¦οΈ Packaged for multiple interfaces
This library is packaged for easy use across various interfaces and languages:
- π¦ Rust developers: available as a Rust crate
nanopub
. - π Python programmers: available as a Python pip package
nanopub-sign
. - π Web developers: available as a NPM package
@nanopub/sign
, compiled to WebAssembly, for browser integrations with JavaScript, or NodeJS. - β¨οΈ Terminal enthusiasts: binary with a Command Line Interface (CLI) for straightforward terminal operations.
βοΈ Cross-platform support
It runs seamlessly on:
- π¦ Web browsers
- π§ Linux
- π MacOS
- πͺ Windows
𧩠RDF serialization support
The library handles most RDF serializations supporting quads, including TriG, Nquads, and JSON-LD.
π Automated metadata creation
When you sign a nanopub some metadata is added, if it has not already been defined in the pubinfo graph:
- π Automatic timestamp: the
dct:created
attribute is used to add the date and time of creation. - πͺͺ Creator identification: if an ORCID is provided in the profile, it’s added using
dct:creator
. The library also checks for ORCID already set withprov:wasAttributedTo
orpav:createdBy
.
π Interactive playground
Experience nanopub-rs
in action! Visit the playground page to sign Nanopublications, or generate and register a new key pair, directly in your browser using the NPM version of this library.
π‘ Facing a bug or have suggestions? We welcome your input and feedback! If you encounter any issues or have ideas to enhance this tool, please create an issue on our GitHub repository.