Skip to main content

pyrudof - Python bindings for Rudof

pyrudof provides Python bindings for rudof, a Rust library for Semantic Web operations.

At a high level it supports:

  • Loading and serializing RDF and PG data.
  • Loading, checking, serializing and validating ShEx schemas.
  • Loading, serializing and validating SHACL shapes.
  • Loading, serializing and validating PGSchemas.
  • Loading, running and serializing SPARQL queries and query results.
  • Converting and comparing schemas between supported formats.
  • Loading and serializing DCTAP and Service Descriptions.
  • Generating synthetic data from schemas.

Installation

Install from PyPI (recommended)

pip install pyrudof

pyrudof is built with PyO3 using abi3 wheels (Python 3.7+ compatible).

Build from source

Building from source requires a working Rust toolchain and Python.

# Clone the repository
git clone https://github.com/rudof-project/rudof.git
cd rudof/python

# Optional but recommended: virtual environment
python -m venv .venv
# Linux/macOS:
source .venv/bin/activate
# Windows PowerShell:
# .\.venv\Scripts\Activate.ps1

# Build and install editable package
pip install maturin
pip install -e .

For a release wheel:

maturin build --release
pip install --force-reinstall target/wheels/pyrudof-*.whl

Architecture and package structure

Package layout

Path Purpose
src/ Rust implementation of the Python bindings (Rudof, RudofConfig, generator APIs, enums, and error mappings).
stubs/pyrudof/ Hand-maintained .pyi type stubs for static type checking and editor support.
examples/ Runnable example scripts organized by category, plus examples.toml manifest metadata.
tests/ Python unittest suite and manifest registry loader for example-based tests.
docs/ Sphinx docs, including the examples page generator (generate_examples_doc.py).
Cargo.toml / pyproject.toml Rust crate and Python build configuration (maturin + PyO3).

Test architecture

Tests are dynamically generated from examples/examples.toml.

Each generated test:

  1. Executes the registered Python example as a subprocess.
  2. Asserts a zero exit code.
  3. Checks configured expected_output substrings (if any).
Component Purpose
tests/test_examples.py Builds dynamic unittest.TestCase classes per category/example.
tests/examples_registry.py Loads and validates examples/examples.toml entries.
examples/examples.toml Single source of truth for metadata and category order.
examples/**/*.py Executable example scripts run by tests and referenced by docs.

Testing

All test commands are run from bindings/python/tests.

Run the full suite

cd bindings/python/tests
python -m unittest discover -vvv

Run a specific category or test

# All ShEx examples
python -m unittest test_examples.TestShexExamples -v

# All SHACL examples
python -m unittest test_examples.TestShaclExamples -v

# All data generation examples
python -m unittest test_examples.TestGenerateExamples -v

# A single example
python -m unittest test_examples.TestShexExamples.test_shex_validate_inline -v

Run skipped examples

Examples marked with skip_test = true in the manifest are skipped by default.

# Linux/macOS
RUN_SKIPPED_EXAMPLES=1 python -m unittest test_examples -v

# Windows PowerShell
$env:RUN_SKIPPED_EXAMPLES="1"; python -m unittest test_examples -v

Examples and documentation

The examples system is intentionally centralized:

  • examples/examples.toml stores metadata (key, source_file, title, description, category, files, expected_output, skip_test).
  • examples/**/*.py stores the executable code.
  • tests/test_examples.py and docs/generate_examples_doc.py both read from that same manifest.

Available categories

Category Description
rdf RDF loading, serialization, node inspection
sparql SELECT / CONSTRUCT query workflows
shex ShEx loading, validation, and serialization
shacl SHACL loading, validation, extraction, serialization
dctap DCTAP profile handling
endpoint Service description examples
generate Synthetic data generation APIs
utility Config, resets, version, module/error helpers

Add a new example

  1. Create a runnable script under bindings/python/examples/ (recommended: place it inside a category subfolder, for example bindings/python/examples/shex/my_example.py).
  2. Register it in bindings/python/examples/examples.toml.
  3. Run tests from bindings/python/tests.
  4. Regenerate and check docs in bindings/python/docs.

Manifest template:

[[example]]
key = "my_example"
source_file = "shex/my_example.py"
title = "My Example"
description = "What this example demonstrates"
category = "shex"  # rdf | sparql | shex | shacl | dctap | endpoint | generate | utility
files = { data = "person.ttl" }  # optional referenced files
expected_output = ["Alice"]       # optional substrings (can be empty list)
# skip_test = true                 # optional (network/special runtime)

Build docs locally

cd bindings/python/docs
python generate_examples_doc.py --update
python generate_examples_doc.py --check
python -m sphinx -b html . _build/html

Then open bindings/python/docs/_build/html/index.html.

Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

pyrudof-0.3.14-cp37-abi3-win_amd64.whl (10.5 MB view details)

Uploaded CPython 3.7+Windows x86-64

pyrudof-0.3.14-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.9 MB view details)

Uploaded CPython 3.7+manylinux: glibc 2.17+ x86-64

pyrudof-0.3.14-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (12.0 MB view details)

Uploaded CPython 3.7+manylinux: glibc 2.17+ ARM64

pyrudof-0.3.14-cp37-abi3-macosx_11_0_arm64.whl (10.7 MB view details)

Uploaded CPython 3.7+macOS 11.0+ ARM64

pyrudof-0.3.14-cp37-abi3-macosx_10_12_x86_64.whl (11.1 MB view details)

Uploaded CPython 3.7+macOS 10.12+ x86-64

File details

Details for the file pyrudof-0.3.14-cp37-abi3-win_amd64.whl.

File metadata

  • Download URL: pyrudof-0.3.14-cp37-abi3-win_amd64.whl
  • Upload date:
  • Size: 10.5 MB
  • Tags: CPython 3.7+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.15.0

File hashes

Hashes for pyrudof-0.3.14-cp37-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 142f01302ed694594347fd14343588dbc2d760da3f17114b77d3d024cb8e88b5
MD5 100da3e379be304d5153d24b7656a9d8
BLAKE2b-256 7907ca125a49fc181c75939a69bab51fe2678a0bc85c124a172a3ebd1572d054

See more details on using hashes here.

File details

Details for the file pyrudof-0.3.14-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyrudof-0.3.14-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ade3e13b07c72c12e2ba7bc9c8baf8992f1bce8be6544cb5cb7fcabddb261aea
MD5 9d308e4acf6091f5e52cb0fd2f948e72
BLAKE2b-256 069c6e270d30844a50df01b8b693a3bad6fcf29b3baa052238bb63d87110a3b3

See more details on using hashes here.

File details

Details for the file pyrudof-0.3.14-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyrudof-0.3.14-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2f6ca510eb50a372312542399ef5dfd18d403d221704192a1bdf833022beab5e
MD5 a8639f9136b200107734934945817214
BLAKE2b-256 60b56f69a055aee592e6a7cf41b3769dc1f9426457a798a9a429b141c0a6f2cb

See more details on using hashes here.

File details

Details for the file pyrudof-0.3.14-cp37-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyrudof-0.3.14-cp37-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d6b148d363a5c8ce1cf89a19af28829fea06f49a03bed528248d76161cd940c2
MD5 0954b315d04dc5babc63811d825145b3
BLAKE2b-256 046c5196e337e782b3bce875b1833979f53c0603d224cfc55a6bad031233a043

See more details on using hashes here.

File details

Details for the file pyrudof-0.3.14-cp37-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for pyrudof-0.3.14-cp37-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6f3a444b3c8e125f50e5473c7a346ad99959ec45a91d5b39b041dc85c9e172a8
MD5 45df471535d7f29e472a488934cc254f
BLAKE2b-256 7a7da6c1138f31964eb1e8256aebb547039c25a8d88e379c58b68000c7fc5137

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.3.14 This release

5 files

0.3.12

5 files

0.3.11

5 files

0.3.10

5 files

0.3.9

5 files

0.3.8

5 files

0.3.7

5 files

0.3.6

5 files

0.3.5

5 files

0.3.3

5 files

0.3.2

5 files

0.3.1

5 files

0.2.20

5 files

0.2.19

5 files

0.2.18

5 files

0.2.17

5 files

0.2.16

5 files

0.2.15

5 files

0.2.14

5 files

0.2.12

5 files

0.2.9

5 files

0.2.7

5 files

0.2.6

5 files

0.2.2

5 files

0.1.142

5 files

0.1.141

5 files

0.1.140

5 files

0.1.138

5 files

0.1.137

5 files

0.1.136

5 files

0.1.135

5 files

0.1.134

5 files

0.1.132

5 files

0.1.131

5 files

0.1.130

5 files

0.1.129

5 files

0.1.128

5 files

0.1.127

5 files

0.1.126

5 files

0.1.125

5 files

0.1.124

5 files

0.1.121

5 files

0.1.120

5 files

0.1.119

5 files

0.1.118

5 files

0.1.117

5 files

0.1.116

5 files

0.1.115

5 files

0.1.114

5 files

0.1.113

5 files

0.1.108

5 files

0.1.106

5 files

0.1.102

5 files

0.1.101

4 files

0.1.100

4 files

0.1.99

4 files

0.1.96

4 files

0.1.95

4 files

0.1.94

4 files

0.1.93

4 files

0.1.92

4 files

0.1.90

4 files

0.1.86

4 files

0.1.83

6 files

0.1.82

6 files

0.1.79

6 files

0.1.60

6 files

0.1.58

6 files

0.1.57

6 files

0.1.56

7 files

0.1.55

6 files

0.1.54

6 files

0.1.53

6 files

0.1.52

6 files

0.1.51

6 files

0.1.50

6 files

0.1.49

6 files

0.1.48

6 files

0.1.47

6 files

0.1.46

6 files

0.1.45

6 files

0.1.44

6 files

0.1.41

6 files

0.1.40

6 files

0.1.39

6 files

0.1.36

6 files

0.1.30

6 files

0.1.26

6 files

0.1.20

6 files

0.1.19

6 files

0.1.17

6 files

0.1.16

6 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page