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.8-cp37-abi3-win_amd64.whl (9.8 MB view details)

Uploaded CPython 3.7+Windows x86-64

pyrudof-0.3.8-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.1 MB view details)

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

pyrudof-0.3.8-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (11.1 MB view details)

Uploaded CPython 3.7+manylinux: glibc 2.17+ ARM64

pyrudof-0.3.8-cp37-abi3-macosx_11_0_arm64.whl (10.0 MB view details)

Uploaded CPython 3.7+macOS 11.0+ ARM64

pyrudof-0.3.8-cp37-abi3-macosx_10_12_x86_64.whl (10.3 MB view details)

Uploaded CPython 3.7+macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for pyrudof-0.3.8-cp37-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 51fd0cd8c5696b3349ceb30938b3c08b35f838ba6bcd74a68baadd8aea43e344
MD5 d2c4cb035c86bf3a3004b592dc1c3f29
BLAKE2b-256 525e8769357e6cf5af77f09fc62c4c99b4474ca9e70e3e7b225da42f83f9030d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyrudof-0.3.8-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 83c11259faac6de4039512524a47244f0994158af0c0ca9892236dfda21febaf
MD5 cd92f4f1c096a80c04536dc3f5575019
BLAKE2b-256 d8e15d825fe73d24c14ec42b0c09309e274de89ee1cd3260e8f0547850d7b27d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyrudof-0.3.8-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6db0dad626e38d943b660d9eaafb0ce7f41d1a331489bd873984964b05e672b3
MD5 21536b84ce6c425f6fc8124b8ee29aa4
BLAKE2b-256 c06ac237e078d87e1bfd29bfcb9297e83d452204e8bc6849421ea7896bc20cc3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyrudof-0.3.8-cp37-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c062e9b5a96c0d0d045a69016facbbed068ff6373ea01b1bd4d2b5b71c51393c
MD5 b5290bf885642c82a5f9dd83b5e0436a
BLAKE2b-256 588da98a03de3289dc4d2a9096f109c10c3831d01b7ac1ac29a9ad9f2b355ae4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyrudof-0.3.8-cp37-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 06b9e536880e2688c1071f646da88089bf5d8a06f75f174c36ddd8c3dfdc2c68
MD5 c8def075ff0b41ff1dc65f031c7995d5
BLAKE2b-256 5a769ac58966cb3a2910f977ec4ef018b3ff9afff3ff3eaa7a752bd199d754c6

See more details on using hashes here.

Release history Release notifications | RSS feed

0.3.14

5 files

0.3.12

5 files

0.3.11

5 files

0.3.10

5 files

0.3.9

5 files

This release

0.3.8 This release

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