Expand description
§⚔️ 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.ymlfile. - 🔍 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:createdattribute 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:wasAttributedToorpav: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.
Re-exports§
pub use error::NpError;pub use nanopub::create_base_dataset;pub use nanopub::Nanopub;pub use profile::NpProfile;pub use profile::ProfileBuilder;pub use utils::get_np_server;