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

Uploaded CPython 3.7+Windows x86-64

pyrudof-0.1.140-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.140-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.140-cp37-abi3-macosx_11_0_arm64.whl (8.4 MB view details)

Uploaded CPython 3.7+macOS 11.0+ ARM64

pyrudof-0.1.140-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.140-cp37-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for pyrudof-0.1.140-cp37-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 2b3be727a0e23054773b50eb436d8e6db2d8a8faffe000e25da7d7528588bd9e
MD5 63fee848ab640d74817c027530049f0d
BLAKE2b-256 21e1a490d1f6d5d641f2575fa8ca2f444445d41bacd39912cef82406ca178e6e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyrudof-0.1.140-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7628d5f263f303e333419497166811f78a1a288956569d56685113eade5621c5
MD5 f0ae4ae2d2ad76fc5c92ef9b0222f418
BLAKE2b-256 6a36d40b54461b65c9da25a38e9c58da6e6cee309d7ed2a4aca86a4156ee3b08

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyrudof-0.1.140-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 fa96e20320dec1d3f34675f18f5d413d36eb2964de15cfb55eed3108462680fe
MD5 9497779ff0637ed5f58193a4e1d3e913
BLAKE2b-256 aaaf325dccdd00c6378ff0de82e2052b7c06bfe18b65454a00ce5228b71b17b5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyrudof-0.1.140-cp37-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b1e234244b2302ed6e32a9957b84fbbd53869b18a3c0593d1102100079b843ef
MD5 03ddf34a3d65b4958c185ce652c27a6a
BLAKE2b-256 b1e6eb5106fc866a35e0d278ca7156c2da6a86d1383b7945bb1e2b4137f5b35c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyrudof-0.1.140-cp37-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4be8c60335ede4f782ef50f73c8d274a4d461ae3977c066395350adf2b6d79b4
MD5 1eafaf713b2434f8fd5d6ded56151b98
BLAKE2b-256 c5640d33566fd648e0e58f970bc654621d2d532362acce487238d079e6300ebf

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