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

Uploaded CPython 3.7+Windows x86-64

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

Uploaded CPython 3.7+macOS 11.0+ ARM64

pyrudof-0.1.137-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.137-cp37-abi3-win_amd64.whl.

File metadata

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

File hashes

Hashes for pyrudof-0.1.137-cp37-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 0ccd0c0295efbbe3894b03d78b4c338ebb2d4d0435156ab607e441547b5c1f72
MD5 4bbcb47b1be7fe6eea14e163fbfb5346
BLAKE2b-256 cfc834ada8962894dcba606f87b36bf8c824d030d0174fed2e8dceb663892376

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyrudof-0.1.137-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5e6144a23a61f0e8fd2579b9e9f7e4d3140e00a4ebbee9b83b36369d30da9e3e
MD5 951c41bef8530dca70d525fcab7e937f
BLAKE2b-256 1e33dfeda0444ea0f6e68d1ad291326eee0734ff94cad8123a76260178a3171b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyrudof-0.1.137-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7f80b6fe7dd2401c0125aa7a789f81fc1c38410e10c45855789950bbfbab9669
MD5 a75735d27cb032da6a02089b05d2cd4a
BLAKE2b-256 0b1357cb1ac359003cb5b1f3c770601016fff343d85ba5d81183537e8ee16e82

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyrudof-0.1.137-cp37-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6cb5807dcfaa39b3d1778e74a65bff6e88fe96e2ff926618f544ba5cd0b612db
MD5 c5ec28fc500816a570a339f9f123f260
BLAKE2b-256 d68d6c959e087df5c44b0943a3217eb715e4f6cb637001875e4c06ed7aa612f2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyrudof-0.1.137-cp37-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4e838834bfa5ce5379288720cdea6c80e89c742d32ecb3784506da3b45ca1e93
MD5 d510fcfbb97b613f720717ef6e3957c4
BLAKE2b-256 23faed89b6855aabfb5448d451c751e0d20ccd23e382b4c3ea22bae3c7e8de00

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