Skip to main content

Python bindings for Rudof

Project description

Rudof Python bindings

The Python bindings for rudof are called pyrudof. They are available at pypi.

For more information, you can access the readthedocs documentation. We keep several tutorials about rudof as Jupyter notebooks in: [https://rudof-project.github.io/tutorials].

After compiling and installing this module, a Python library called pyrudof should be available.

Build the development version

This module is based on pyo3 and maturin.

To build and install the development version of pyrudof you need to clone this git repository, go to the python directory (the one this README is in) and run:

pip install maturin

followed by:

pip install .

If you are using .env, you can do the following:

python3 -m venv .venv

followed by:

source .venv/bin/activate

or

source .venv/bin/activate.fish

and once you do that, you can locally install que package as:

pip install -e .

Running the tests

Go to the tests folder:

cd tests

and run:

python3 -m unittest discover -vvv

Using rudof_generate

The pyrudof package includes bindings for rudof_generate, which allows you to generate synthetic RDF data from ShEx or SHACL schemas.

Basic Example

import pyrudof

# Create configuration
config = pyrudof.GeneratorConfig()
config.set_entity_count(100)
config.set_output_path("output.ttl")
config.set_output_format(pyrudof.OutputFormat.Turtle)

# Create generator
generator = pyrudof.DataGenerator(config)

# Load schema and generate data
generator.run("schema.shex")

Configuration Options

The GeneratorConfig class provides many configuration options:

config = pyrudof.GeneratorConfig()

# Generation parameters
config.set_entity_count(1000)           # Number of entities to generate
config.set_seed(42)                     # Random seed for reproducibility

# Schema format
config.set_schema_format(pyrudof.SchemaFormat.ShEx)  # or SchemaFormat.SHACL

# Output configuration
config.set_output_path("data.ttl")
config.set_output_format(pyrudof.OutputFormat.Turtle)  # or OutputFormat.NTriples
config.set_compress(False)              # Whether to compress output
config.set_write_stats(True)            # Write generation statistics

# Cardinality strategy
config.set_cardinality_strategy(pyrudof.CardinalityStrategy.Balanced)
# Options: Minimum, Maximum, Random, Balanced

# Parallel processing
config.set_worker_threads(4)            # Number of worker threads
config.set_batch_size(100)              # Batch size for processing
config.set_parallel_writing(True)       # Enable parallel file writing
config.set_parallel_file_count(4)       # Number of output files (when parallel)

Loading Schemas

You can load schemas in different ways:

# Load ShEx schema
generator.load_shex_schema("schema.shex")

# Load SHACL schema
generator.load_shacl_schema("shapes.ttl")

# Auto-detect schema format
generator.load_schema_auto("schema_file")

# Then generate data
generator.generate()

Complete Workflow

The run() method provides a convenient way to load a schema and generate data in one step:

# Auto-detect format
generator.run("schema.shex")

# Specify format explicitly
generator.run_with_format("shapes.ttl", pyrudof.SchemaFormat.SHACL)

Configuration Files

You can also load configuration from TOML or JSON files:

# Load from TOML
config = pyrudof.GeneratorConfig.from_toml_file("config.toml")

# Load from JSON
config = pyrudof.GeneratorConfig.from_json_file("config.json")

# Save configuration
config.to_toml_file("saved_config.toml")

Available Enums

  • SchemaFormat: ShEx, SHACL
  • OutputFormat: Turtle, NTriples
  • CardinalityStrategy: Minimum, Maximum, Random, Balanced

For more examples, see the examples/generate_example.py file.

Project details


Release history Release notifications | RSS feed

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

Uploaded CPython 3.7+Windows x86-64

pyrudof-0.1.141-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.5 MB view details)

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

pyrudof-0.1.141-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (11.8 MB view details)

Uploaded CPython 3.7+manylinux: glibc 2.17+ ARM64

pyrudof-0.1.141-cp37-abi3-macosx_11_0_arm64.whl (8.4 MB view details)

Uploaded CPython 3.7+macOS 11.0+ ARM64

pyrudof-0.1.141-cp37-abi3-macosx_10_12_x86_64.whl (8.8 MB view details)

Uploaded CPython 3.7+macOS 10.12+ x86-64

File details

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

File metadata

File hashes

Hashes for pyrudof-0.1.141-cp37-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 da2c7d4d2e77294119acd50d97c279f0b4f6eda1d5e32700afbec3384349db2c
MD5 f8a2197324d27c064dd0977be454293a
BLAKE2b-256 8c1cee1cc517931e382dc8f80008f501d3d178db2a3ce86e0ec480805271ff8f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyrudof-0.1.141-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 211d5d53929a412ae12d422ec9f9d0456d46bedf0cf5f10ec0fe473078ce7f50
MD5 8abda39d68aa59e9b25d42ba1920e9e8
BLAKE2b-256 5a7a5113eebc184a9be33f8995a0ad1797f4663974292913d5c298935032fd69

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyrudof-0.1.141-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 37921069088d40cab46c4d3603c2c98a6144a75024e4ee879baf0c7367b0e10a
MD5 91271312d362bc90574a5a3c1e6b2c9b
BLAKE2b-256 ba93a24d6415e0f4780f0f61a3b0425c24ce99421c8a00628c36bc0e9b8ae3da

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyrudof-0.1.141-cp37-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a9b9624e08c9104a5a5734cde9c3c81d6268257b73a49764862fe556e511e1a3
MD5 027ccdec4d63bd34c08fd9b6364ce3e4
BLAKE2b-256 a3164315ccccd0f98b9bd348092417c836be3e567810bf4537d88ec964d1748f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyrudof-0.1.141-cp37-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 338824881f01f7887f1162bc92460696decb3330a1a12a44c85d8b473013cfd4
MD5 fd1838e88fbb43379ea3f8ae8b39e52e
BLAKE2b-256 8a107ff0d7d3ad7a554fe397a0fdde896619f05e067b088c8f3e7015c95bf735

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