Release: gds-owl v0.1.0 + Paper Defs 2.5/2.7 bridge#132
Merged
rororowyourboat merged 13 commits intomainfrom Mar 28, 2026
Merged
Release: gds-owl v0.1.0 + Paper Defs 2.5/2.7 bridge#132rororowyourboat merged 13 commits intomainfrom
rororowyourboat merged 13 commits intomainfrom
Conversation
New package providing bidirectional round-trip between GDS Pydantic models and RDF/OWL representations. 155 tests, 95% coverage. Modules: - ontology.py: OWL TBox (class hierarchy, properties) for GDS core - export.py: GDSSpec/SystemIR/CanonicalGDS/VerificationReport -> RDF - import_.py: RDF -> Pydantic (proves lossless round-trip) - shacl.py: SHACL shapes mirroring GDS verification checks - sparql.py: 7 pre-built query templates with runner - serialize.py: to_turtle/to_jsonld/to_ntriples convenience functions Documentation: - representation-gap.md: informal analysis of what each representation captures - formal-representability.md: formal representability classification (R1/R2/R3) proving the canonical form h = f . g is the exact boundary between what ontological formalisms can and cannot express
9 revisions from audit: - Replace linear expressiveness hierarchy with SHACL-core/SPARQL/Turing three-tier ordering that reflects OWA vs CWA distinction - Reclassify G-004 back to R2: WiringIR source/target are datatype properties (string literals), not object property references — requires SPARQL negation-as-failure, not SHACL sh:class - Explain SC-004 R2: Wire.space is also a string literal - Justify SC-006/SC-007 as R1 via SHACL sh:qualifiedMinCount - Narrow SPARQL capability claim: CONSTRUCT can't generate unbounded nodes from a single string value - Qualify category theory claim: "inspired by" not "is" - Remove fragile test count, reference test class names instead - Demote Corollary 6.5 to Remark with practical consequence (sourceLabel) - Add explicit bridge from Remark 1.10 to Definition 2.2 Final counts: R1=4, R2=6, R3=2, Mixed=1
Adds a front-matter overview summarizing the key insights before the formal definitions: the h = f ∘ g boundary, the data/computation duality table, the validation stack (OWL → SHACL-core → SPARQL → Python), and four architectural consequences for the GDS ecosystem.
…fs 2.5, 2.7) Bridge the two most important gaps between Zargham & Shorish (2022) and the software implementation: - AdmissibleInputConstraint (U_x): declares state-dependent input constraints on BoundaryAction blocks. Keyed by name to allow multiple constraints per boundary block. - TransitionSignature (f|_x): declares mechanism read dependencies (which state variables a mechanism reads). Complements Mechanism.updates (writes). Both follow the existing f_struct / f_behav split: dependency graphs are structural (R1, exported to OWL), actual constraint/transition functions are behavioral (R3, lossy in serialization). gds-framework changes: - New gds/constraints.py with frozen Pydantic models - GDSSpec: two new registries, registration methods, validation - SC-008 (check_admissibility_references), SC-009 (check_transition_reads) - CanonicalGDS: admissibility_map and read_map fields - SpecQuery: 3 new dependency analysis methods - spec_to_dict: serialization for both registries - 41 new tests (477 total) gds-owl changes: - OWL classes/properties for both concepts with BNode-based tuple reification - Export/import with documented R3 loss on constraint callable - SHACL structural + semantic shapes - 2 new round-trip tests (157 total) docs: - Paper-implementation gap analysis (docs/guides/paper-implementation-gap.md) - Updated formal-representability.md: 8-tuple GDSSpec, Properties 4.5/4.6, SC-008/SC-009, updated counts (15 checks, 6 R1)
- paper-implementation-gap.md: mark Steps 1-2 as DONE with actual API examples, move U_x/f|_x from "Not Implemented" to "Structurally Implemented", update dependency graph and package placement table - formal-representability.md: already updated in prior commit - CLAUDE.md: SC-001..SC-007 -> SC-001..SC-009
feat: gds-owl package + AdmissibleInputConstraint/TransitionSignature
…ibleInputConstraint in examples StockFlow and Control compilers now emit TransitionSignature for each mechanism during compile_model(), capturing read dependencies that were previously implicit in wiring logic. Insurance and thermostat examples demonstrate AdmissibleInputConstraint as first-class declarations. - StockFlow: stock mechanisms declare reads=[(stock, "level")] with connected flows as depends_on_blocks - Control: state mechanisms declare reads=[(state, "value")] with driving controllers as depends_on_blocks - Insurance example: solvency constraint (claims capped by reserve) - Thermostat example: sensor state dependency (reading depends on temp) - Verification guide and CLAUDE.md updated for SC-008/SC-009
feat: gds-owl package + Paper Defs 2.5/2.7 bridge (Steps 1-2)
- docs/owl/ with index, getting-started, representability guide, formal representability analysis, and API reference pages - mkdocs.yml: OWL section in nav and llmstxt plugin - mkdocs build --strict passes
| def test_custom_base_uri(self, thermostat_spec: GDSSpec) -> None: | ||
| g = spec_to_graph(thermostat_spec, base_uri="https://example.com/") | ||
| ttl = g.serialize(format="turtle") | ||
| assert "example.com" in ttl |
Check failure
Code scanning / CodeQL
Incomplete URL substring sanitization High test
Copilot Autofix
AI 2 days ago
Copilot could not generate an autofix suggestion
Copilot could not generate an autofix suggestion for this alert. Try pushing a new commit or if the problem persists contact support.
added 2 commits
March 28, 2026 06:17
pygments 2.19.2 is the latest version. Transitive dependency from pytest, mkdocs-material, marimo, rich. Will remove suppression when a patched pygments release is available.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Merge dev → main for the gds-owl v0.1.0 release and Paper bridge Steps 1-2.
Test results
Lint and format clean.
mkdocs build --strictpasses.Tag
gds-owl/v0.1.0tagged on dev for PyPI publish.