# sdata_experiments **Repository Path**: mirrors_lepy/sdata_experiments ## Basic Information - **Project Name**: sdata_experiments - **Description**: sdata experiment definitions - **Primary Language**: Unknown - **License**: CC-BY-4.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-12-22 - **Last Updated**: 2026-09-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # sdata-testdata Monorepo fuer modulare SData-Ontologien zu mechanischen Pruefdaten. ## Quickstart ```bash make sync make test make ttl-check make docs-build ``` Oder mit `uv` direkt: ```bash uv sync --python 3.12 --group dev --group docs uv run --python 3.12 pytest uv run --python 3.12 python scripts/check_ttl.py uv run --group docs mkdocs build --strict ``` ## Projektstruktur ```text sdata-testdata/ ├── README.md ├── LICENSE ├── pyproject.toml ├── .python-version ├── Makefile ├── mkdocs.yml ├── .github/workflows/deploy-docs.yml ├── scripts/ │ └── check_ttl.py ├── core/ │ ├── sdata-testdata.ttl │ └── CHANGELOG.md ├── tensiletest/ │ ├── sdata-tensile.ttl │ ├── sdata-tensile-specimens.ttl │ ├── examples/ │ └── CHANGELOG.md ├── compressiontest/ │ ├── sdata-compression.ttl │ ├── sdata-compression-specimens.ttl │ └── CHANGELOG.md ├── bendingtest/ │ ├── sdata-bending.ttl │ ├── sdata-bending-specimens.ttl │ ├── examples/ │ └── CHANGELOG.md ├── fatiguetest/ │ ├── sdata-fatigue.ttl │ ├── sdata-fatigue-specimens.ttl │ └── CHANGELOG.md ├── shapes/ │ ├── sdata-shapes.ttl │ ├── sdata-core-shapes.ttl │ ├── sdata-tensile-shapes.ttl │ ├── sdata-compression-shapes.ttl │ ├── sdata-bending-shapes.ttl │ ├── sdata-fatigue-shapes.ttl │ └── CHANGELOG.md ├── vocabularies/ │ ├── iso6892-1-skos.ttl │ ├── material-models.ttl │ ├── test-standards.ttl │ └── CHANGELOG.md ├── src/ │ ├── query_flat_tensile_specimens.py │ └── list_din50125_specimens.py ├── docs/ │ ├── index.md │ ├── getting-started.md │ ├── architecture.md │ ├── validation.md │ └── modules/ └── tests/ └── test_smoke.py ``` ## Namespaces - `core/sdata-testdata.ttl` -> `https://w3id.org/sdata/testdata/` - `sdata-core` (extern, `sdata-ontology`) -> `https://w3id.org/sdata/core/` - `sdata-quantities` (extern, `sdata-ontology`) -> `https://w3id.org/sdata/quantities/` - `sdata-measurements` (extern, `sdata-ontology`) -> `https://w3id.org/sdata/measurements` - `sdata-equipment` (extern, `sdata-ontology`) -> `https://w3id.org/sdata/equipment` - `sdata-protocols` (extern, `sdata-ontology`) -> `https://w3id.org/sdata/protocols` - `sdata-specimens` (extern, `sdata-ontology`) -> `https://w3id.org/sdata/specimens` - `sdata-processes` (extern, `sdata-ontology`) -> `https://w3id.org/sdata/processes` - `sdata-materials` (extern, `sdata-ontology`) -> `https://w3id.org/sdata/materials` - `tensiletest/sdata-tensile.ttl` -> `https://w3id.org/sdata/tensile/` - `tensiletest/sdata-tensile-specimens.ttl` -> `https://w3id.org/sdata/tensile/specimens/` - `compressiontest/sdata-compression.ttl` -> `https://w3id.org/sdata/compression/` - `compressiontest/sdata-compression-specimens.ttl` -> `https://w3id.org/sdata/compression/specimens/` - `bendingtest/sdata-bending.ttl` -> `https://w3id.org/sdata/bending/` - `bendingtest/sdata-bending-specimens.ttl` -> `https://w3id.org/sdata/bending/specimens/` - `fatiguetest/sdata-fatigue.ttl` -> `https://w3id.org/sdata/fatigue/` - `fatiguetest/sdata-fatigue-specimens.ttl` -> `https://w3id.org/sdata/fatigue/specimens/` - `shapes/sdata-core-shapes.ttl` -> `https://w3id.org/sdata/shapes/core/` - `shapes/sdata-tensile-shapes.ttl` -> `https://w3id.org/sdata/shapes/tensile/` - `shapes/sdata-compression-shapes.ttl` -> `https://w3id.org/sdata/shapes/compression/` - `shapes/sdata-bending-shapes.ttl` -> `https://w3id.org/sdata/shapes/bending/` - `shapes/sdata-fatigue-shapes.ttl` -> `https://w3id.org/sdata/shapes/fatigue/` - `shapes/sdata-shapes.ttl` -> `https://w3id.org/sdata/shapes/` ## Import-Kette ```text MIN -> sdata-core -> sdata-quantities -> sdata-measurements / equipment / protocols -> sdata-specimens / processes / materials -> sdata-testdata -> sdata-tensile / compression / bending / fatigue ``` Hinweis: Die generische Mittelschicht kommt aus `sdata-ontology`. `sdata-testdata` ist darauf nur noch das mechanische Testprofil mit Serienlogik, testartspezifischen Rollen und Provenienzmustern. ## Modellprinzip `core/sdata-testdata.ttl` ist die gemeinsame Profilschicht fuer mechanische Versuche. Generische Begriffe werden aus `sdata-ontology` importiert und in `sdata-testdata` nur noch als Kompatibilitaetsfassaden oder testspezifische Zuspitzungen genutzt. Die Aufteilung ist: - generische Mittelschicht aus `sdata-ontology`: `sdata:Material`, `sdata:Specimen`, `sdata:TestingMachine`, `sdata:TestMethod`, `sdata:MeasurementSeries`, `sdata:MeasurementChannel`, `sdata:ResultGenerationActivity` - Testschicht in `sdata-testdata`: `TestProgram -> TestSeries -> MechanicalTest`, `Operator`, `Laboratory`, `TestCondition`, `TestResult` Die Testmodule (`tensiletest`, `compressiontest`, `bendingtest`, `fatiguetest`) erweitern darauf fachspezifisch. Probekoerpergeometrien werden je Testtyp in separaten Dateien verwaltet: `sdata-tensile-specimens.ttl`, `sdata-compression-specimens.ttl`, `sdata-bending-specimens.ttl`, `sdata-fatigue-specimens.ttl`. `sdata-quantities` wird extern im `sdata-ontology`-Repo gepflegt. Die Result-Properties in den Testmodulen sind darauf per `owl:equivalentProperty` gemappt. ## Batches (Chargen) Fuer Batch-/Chargenorganisation im Versuchskontext gilt im aktuellen Modell: - `TestSeries` entspricht einem Batch (gemeinsame Rahmenbedingungen und Methodik) - einzelne Versuche im Batch sind `MechanicalTest`-Instanzen - Batch-ID wird ueber `seriesId` vergeben - optional kann die Materialcharge zusaetzlich ueber `identifier` am `Material`- oder `Specimen`-Knoten dokumentiert werden ## MIN FORMA (exemplarisch im Core) `core/sdata-testdata.ttl` importiert zusaetzlich `https://w3id.org/min/1.1.0` (MIN v1.1.0) und nutzt den FORMA-Zweig sowie die neue epistemische Schicht ueber sdata-Fassaden fuer versuchsrelevante Semantik: - `sdt:TestFormalModel` als `sdata:Structura` - `sdt:TestAcceptanceCriterion` als `sdata:Norma` - `sdt:TestGoverningLaw` als `sdata:Lex` - `sdt:TestHypothesis` als `sdata:Epistemicum` Brueckenrelationen (ueber sdata-Fassaden): - `sdt:methodEncodesFormalModel` `rdfs:subPropertyOf sdata:encodes` - `sdt:formalModelFormalizesTest` `rdfs:subPropertyOf sdata:formalizes` - `sdt:acceptanceCriterionEvaluatesResult` `rdfs:subPropertyOf sdata:evaluates` - `sdt:governingLawGovernsTest` `rdfs:subPropertyOf sdata:governs` Epistemisches Muster: - `sdata:holds` - `sdata:about` - `sdata:supportedBy` - `sdata:hasEpistemicStatus` - `sdata:hasConfidenceType` - `sdata:hasConfidence` ## PMDco Alignment (optional) Optionale Alignment-Module fuer Interoperabilitaet mit der Platform MaterialDigital Core Ontology (PMDco v3.0.0): - `alignment/sdata-testdata-pmdco.ttl`: Testdata-Kern -> PMDco/OBO (8 Klassen, 6 Properties) - `alignment/sdata-tensile-pmdco.ttl`: Testtyp-Module -> PMDco/OBI (11 Klassen) - `alignment/sdata-quantities-pmdco.ttl`: Quantities -> OBI value specification (2 Klassen) - `shapes/sdata-pmdco-compat.shacl.ttl`: PMDco-Kompatibilitaetspruefung Voraussetzung: die Basis-Alignments aus `sdata-ontology`, insbesondere `alignment/sdata-pmdco.ttl` sowie die neuen Modul-Alignments fuer measurements/equipment/protocols/specimens/processes/materials. Dokumentation: `docs/alignment-pmdco.md`. ## Integriertes Modulbeispiel `examples/tensile-quality-loop.ttl` zeigt den neuen `v0.2.0`-Layer aus `sdata-ontology` in einem zusammenhaengenden Testkontext: - Gefuege (`Microstructure`, `Phase`, `Inclusion`, `Interface`) - Schaden (`Pit`, `CorrosionProductLayer`) - Befund und Massnahme (`Nonconformity`, `DefectRecord`, `CorrectiveAction`) - Nachhaltigkeit (`WasteStream`, `RecoveryRoute`, `EnergyUseRecord`, `CarbonFootprint`, `LCAResult`) Das Beispiel ist im Round-Trip-Test enthalten und dient als kompakter Integrationsbeleg fuer die neue Modullayer. Es zeigt jetzt zusaetzlich ein epistemisches Testmuster: - `sdt:TestGoverningLaw` als physikalische Regel - `sdt:TestHypothesis` als epistemische Haltung zu dieser Regel - Evidenzstuetzung ueber `sdata:supportedBy` auf den Test-Resultknoten - agentische Zuschreibung ueber `sdata:holds` ## Tensile / ISO 6892-1 `tensiletest/sdata-tensile.ttl` ist auf notation-nahe ISO-Kennwerte ausgerichtet (`Rm`, `ReH`, `ReL`, `Rp`, `Rt`, `Rr`, `A`, `Ae`, `Ag`, `Agt`, `At`, `E`, `Z`, `Su`, `Fm`) und mit `iso6892-1-skos.ttl` verknuepft. ## SHACL - `shapes/sdata-core-shapes.ttl`: Basiskonsistenz (IDs, Kardinalitaeten, Datentypen) - `shapes/sdata-*-shapes.ttl`: testtypspezifische KPI-Regeln - `shapes/sdata-shapes.ttl`: Sammelgraph fuer alle Shape-Module - Result-KPI-Regeln validieren `sq:*`-Properties aus `https://w3id.org/sdata/quantities/` TTL-Validation mit Parser: ```bash make ttl-check ``` ## Python-Setup - Python: `==3.12.*` - Runtime-Dependency: `rdflib` - Dev: `pytest` - Docs: `mkdocs` ## Makefile Targets ```bash make help ``` Wichtige Targets: - `make venv` - `.venv` mit Python 3.12 erzeugen - `make sync` - Runtime + dev + docs installieren - `make test` - `pytest` ausfuehren - `make ttl-check` - alle `.ttl` mit `rdflib` parsen - `make docs-serve` - MkDocs lokal starten - `make docs-build` - statische Doku bauen - `make check` - `test + ttl-check + docs-build` ## MkDocs + Deployment - Lokale Doku: `mkdocs.yml` + `docs/` - GitHub Action: `.github/workflows/deploy-docs.yml` - Deploy-Ziel: GitHub Pages ueber `actions/upload-pages-artifact` + `actions/deploy-pages` Voraussetzung im Repo: GitHub Pages auf `Source: GitHub Actions` aktivieren.