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

Uploaded CPython 3.7+Windows x86-64

pyrudof-0.1.136-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.3 MB view details)

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

pyrudof-0.1.136-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (11.6 MB view details)

Uploaded CPython 3.7+manylinux: glibc 2.17+ ARM64

pyrudof-0.1.136-cp37-abi3-macosx_11_0_arm64.whl (8.3 MB view details)

Uploaded CPython 3.7+macOS 11.0+ ARM64

pyrudof-0.1.136-cp37-abi3-macosx_10_12_x86_64.whl (8.7 MB view details)

Uploaded CPython 3.7+macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: pyrudof-0.1.136-cp37-abi3-win_amd64.whl
  • Upload date:
  • Size: 7.8 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.136-cp37-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 750a84cbe0c7ef9dea5cc067c90421bbb0fc7a034a3503fca0bef43543730099
MD5 934746dd6ffdf8398a8fdda8b8b034f9
BLAKE2b-256 001fd3e05f9b3244af206ae7ee2f9a0441ed364f17e53bcd26ffe131b41f633d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyrudof-0.1.136-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2442c649279d32daf28a1bb45b70927cb377de00fc0b39fbc1847894caba3c5a
MD5 c35dd9183d0ebd581f605ea7aae400ab
BLAKE2b-256 a509d8fd5f011d73fe3d26dc50df90d2525081c4e125741b4d103eb583cfd65d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyrudof-0.1.136-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ec1f55a8eba6484980110e6065fe3dfe3653ee2ca294b3d30f36ce0e263b71c5
MD5 cd437f495e4f4d0eb5f1b94808a8baef
BLAKE2b-256 b7e0b46665524f3de195e5ab6703fbf2c259859d951ad1ccbad4b83e7efcb1c3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyrudof-0.1.136-cp37-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5339f1c82933fad67d63e7e20ad9af44ccec630761e589effdd3e839df8e6b3e
MD5 3e99903ec68f57d2377c220772990536
BLAKE2b-256 6e3bd5a340cc2157aae3f57729a82d0423b80f287d60e30c436ab5e833124815

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyrudof-0.1.136-cp37-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 00d533b0a87b98e6e3ee0b61562e2920c45f736d1044e0d913603c912c592397
MD5 e2247bfc243925b67211a4e5fb92529e
BLAKE2b-256 1274cc493d8a7a88a637a2cffc4eb9d3b6242b0170deaca281cb4eefab9d9118

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