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

Uploaded CPython 3.7+Windows x86-64

pyrudof-0.1.138-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.4 MB view details)

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

pyrudof-0.1.138-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (11.7 MB view details)

Uploaded CPython 3.7+manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.7+macOS 11.0+ ARM64

pyrudof-0.1.138-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.138-cp37-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for pyrudof-0.1.138-cp37-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 5b8f5e604191edb63ff02e03d7266e7d7afcc40e7d08d2f14f08f647b2d12abf
MD5 3016917f3f9b5d9c0f7d427445609d78
BLAKE2b-256 dd17863b616bf69ccefd499f29856f9fbce6ce98d2ab7f6790d9920e61869adc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyrudof-0.1.138-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 777066af4a1b3a656f648fbb2beafe89ddd331cb8d05ee146e1a3bc2b1c7cfee
MD5 886f2611745e8bc79fe47ae3a6ea08b8
BLAKE2b-256 14ac0bd86234d621a06ca0c1513b5a6b28efb14b0842ceb75db124b931d6a2aa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyrudof-0.1.138-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8df0f2386531a56e5081990b994971633ddf4eb8e414cb976b20c033ed087788
MD5 5aca4d1b4fe8a448b383dbe67a8993ba
BLAKE2b-256 a00881e92729165a1d36b02a2a8b6c621bddcac25f0e2de62abffaf9e13aa570

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyrudof-0.1.138-cp37-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0f95357321ba95e816a2ac6ac4be948e05327e613a8fa362a5a18d6d739ef5c7
MD5 97f45e3efa5082f809660f8e7d539089
BLAKE2b-256 c97861fda8bc49dd26bacb70f3ef640e2823c9997fe16c940e59f4164ccd9321

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyrudof-0.1.138-cp37-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d6798eaa0e29312225ce45c61249e6979c14c11678691e479c817973d3a8c7ad
MD5 733c85eb4ff37c6e5449eb6ee51e8eb5
BLAKE2b-256 12f99ce822ea811867995eb46b4a0d2fb4d8dd41ff730a97953d38bcf6780a5d

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