Skip to main content

semantic-benchmark

Reusable Python helpers for semantic benchmark descriptions, aggregate RO-Crate creation, and RoHub provenance workflows.

Install

pip install semantic-benchmark

Install optional features with extras:

pip install "semantic-benchmark[rocrate]"
pip install "semantic-benchmark[rohub]"
pip install "semantic-benchmark[all]"

To install the latest unreleased version directly from GitHub:

pip install "semantic-benchmark[all] @ git+https://github.com/Simulation-Benchmarks/semantic-benchmark.git"

Provided Modules

  • semantic_benchmark.semantics: dataclasses and BenchmarkLoader for JSON-LD benchmark descriptions.
  • semantic_benchmark.rohub: RoHub configuration, upload, download, annotation, and query helpers.
  • semantic_benchmark.rocrate: aggregate RO-Crate creation and validation helpers.
  • semantic_benchmark.runner: shared parameter-file, workspace, resource staging, archive, logging, and aggregate RO-Crate helpers for project benchmark runners.

semantic_benchmark.semantics is available from the base installation. semantic_benchmark.rocrate requires the rocrate extra. semantic_benchmark.rohub requires the rohub extra.

The root semantic_benchmark package re-exports the semantic classes for backwards compatibility. The legacy semantic_benchmark.semantic module also remains as a compatibility shim.

Loaded numerical variables and parameters expose both unit (the original JSON-LD value) and unit_iri (the full IRI expanded through the document's namespace bindings). Consumers should use unit_iri when creating links.

semantic_benchmark.rohub.download_benchmark_resources(...) downloads the requested benchmark resources from a RoHub research object. The semantic file is selected from the Annotation Collection resource in list_resources(). Passing path="benchmark" (CLI: --path benchmark) exports the complete research object using ros_export_to_rocrate(..., use_format="zip") and extracts its contents directly into benchmark/. If path / --path is omitted, the crate is extracted into the current directory. The directory is created if needed, and the temporary ZIP is removed afterward. The returned mapping contains the research object identifier under RO-Crate and the annotation resource identifier under Annotation Collection for the requested downloads. The package also exposes the download-semantic-benchmark CLI.

upload-semantic-benchmark calls upload_provenance_rocrate(...) directly. It accepts --provenance_folderpath (the RO-Crate ZIP), --benchmark-name, --username, --password, and optional --code-repository-url, --used-software-url, and --use-production-rohub arguments.

semantic_benchmark.rocrate.create_main_ro(...) can validate the generated aggregate crate by passing validation_profile. The package writes the RO-Crate zip, unpacks it to a validation directory, and runs validate_rocrate(...).

Repository-specific projects can override the packaged RoHub defaults with:

import semantic_benchmark.rohub as rohub

rohub.configure_repository_settings(
    rohub_config={...},
)

Parameter sweeps with JSON-LD arrays

A parameter's has numerical value or has string value may be a scalar or an array of alternatives. For example, reference both of these nodes from the same parameter set's has part property:

[
  {
    "@id": "local:cell_type",
    "label": "cell_type",
    "has string value": ["triangle", "quadrilateral"]
  },
  {
    "@id": "local:degree",
    "label": "isoparametric_element_degree",
    "has numerical value": [1, 2]
  }
]

Use a JSON-LD context mapping these value properties to m4i:hasStringValue and m4i:hasNumericalValue, as in the existing examples. BenchmarkLoader.load() expands each parameter set independently into the Cartesian product: this example produces four configurations. Scalars are repeated in every combination. All loaded configuration parts contain scalar values, so solvers and runner.create_parameter_files() continue to receive ordinary scalar parameters. Processing-step configuration references expand identically for provenance.

A template identified as sweep produces identifiers sweep--1, sweep--2, etc., and corresponding parameters_sweep--1.json files. Its node IDs receive the same suffixes. Scalar-only sets and arrays with one distinct choice retain the original IDs and identifiers. Identifier collisions raise an error instead of overwriting output files.

JSON-LD arrays represent unordered RDF alternatives, so duplicate RDF values collapse. Expansion sorts parameter IRIs and RDF value spellings to give stable identifiers regardless of array order (this is lexical, not numerical ordering). Empty arrays have no value and are rejected for runtime parameters. The lower-level build_parameter_set() returns a template whose values may be lists; build_parameter_sets() and load() return expanded scalar configurations.

When testing this feature from a local checkout, install the modified package into the Python environment used by the benchmark runner:

python -m pip install -e ../semantic-benchmark

Run that command from a sibling benchmark repository. Add [all] to the local package path if the workflow also needs the optional provenance dependencies.

See the complete array example, which combines two radii, two cell types, and two element degrees into eight runs.

Metadata

Release files for semantic-benchmark 0.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for semantic-benchmark 0.3.1
File Size Uploaded Provenance
semantic_benchmark-0.3.1.tar.gz 35.0 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for semantic-benchmark 0.3.1
File Interpreter ABI Platform
semantic_benchmark-0.3.1-py3-none-any.whl Python 3 none any Details

Total release size: 72.3 kB

Release files / semantic_benchmark-0.3.1.tar.gz

Download URL semantic_benchmark-0.3.1.tar.gz
Size 35.0 kB
Tags Source
SHA-256 checksum
How to use checksums
3d5ef6bad3f91586a87593912fb5919af3f3ec267af8b07678cdd72dcd852bbc
BLAKE2b-256 checksum
How to use checksums
25d7c4d61091c4fd2381761198274d3c4adf3d8b129a948ecff1f2760adae13f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / semantic_benchmark-0.3.1-py3-none-any.whl

Download URL semantic_benchmark-0.3.1-py3-none-any.whl
Size 37.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2d7f4c8b48ee020051066efe386d6f89a94c185f3dde91174398d4c778bae80e
BLAKE2b-256 checksum
How to use checksums
cd6992c425ad8faf562f34bf062802f212a5318064602f61244e049163432a15
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Security for semantic-benchmark 0.3.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page