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 andBenchmarkLoaderfor 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 and
--use-production-rohub arguments. The software URL and version are read from
the SoftwareApplication node in the RO-Crate ZIP.
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(...).
Aggregate creation requires subcrate_paths, the exact reporter RO-Crate ZIPs
from completed runs. The CLI accepts one --subcrate-path per run.
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.4.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| semantic_benchmark-0.4.3.tar.gz | 38.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| semantic_benchmark-0.4.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 76.8 kB
Release files / semantic_benchmark-0.4.3.tar.gz
| Download URL | semantic_benchmark-0.4.3.tar.gz |
|---|---|
| Size | 38.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bc28864722475429e576fb4d43369330477bf0ea95bd079955a8cbc7adfc7a50
|
|
BLAKE2b-256 checksum How to use checksums |
74034286f143e54c249ae592bf5291bb7843f065895c7738eb00947c8883dbe7
|
| 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.4.3-py3-none-any.whl
| Download URL | semantic_benchmark-0.4.3-py3-none-any.whl |
|---|---|
| Size | 38.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c481433b0dfc9c9ef6ac6622948e65b2cef236877595b447a61ee1fc3e345894
|
|
BLAKE2b-256 checksum How to use checksums |
39ec7e8f1ec99f434f7069ff93d360afb63477a94b54e2bcb0aef8811b54854f
|
| 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.4.3
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.