open-standards/aac/vocab/v1.shapes.ttl
Transaction Science ba1212361f Add aac, map, sandbox standards; catalog the standards family
Commit the previously-untracked standard directories and catalog them in the
root README alongside proof:

- aac/    — communication cargo class: portable boards + a ten-level
            offline-first cascade (Apache-2.0 code / CC-BY-4.0 spec).
- map/    — geospatial cargo class: range-requestable signed tilesets +
            an F0–F4 fidelity cascade (Apache-2.0 code / CC-BY-4.0 spec).
- sandbox/— isolated, metered, attested execution across the heterogeneous
            compute fabric (Apache-2.0 code / CC-BY-4.0 spec).
- jouleclaw-otel-authz, jouleclaw-trust — new jouleclaw reference crates.

Root README now lists aac, map, sandbox, and proof in the catalog, the tree,
and the contribution guide.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-06-07 17:04:36 -04:00

41 lines
2.3 KiB
Turtle

@prefix aac: <https://aac.transaction.science/vocab/v1#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
# SHACL shapes for the AAC standard (v1). A conforming document validates
# against these in addition to round-tripping the conformance vectors.
aac:BoardShape a sh:NodeShape ;
sh:targetClass aac:Board ;
sh:property [ sh:path aac:boardType ; sh:minCount 1 ; sh:maxCount 1 ] ;
sh:property [ sh:path aac:rows ; sh:datatype xsd:unsignedShort ; sh:minCount 1 ; sh:maxCount 1 ] ;
sh:property [ sh:path aac:cols ; sh:datatype xsd:unsignedShort ; sh:minCount 1 ; sh:maxCount 1 ] .
# A cell MUST carry a position (SPEC §2). Row and column are the immutable
# motor coordinates (SPEC §3) — required here; immutability is enforced by the
# round-trip conformance check, not expressible in SHACL.
aac:CellShape a sh:NodeShape ;
sh:targetClass aac:Cell ;
sh:property [ sh:path aac:row ; sh:datatype xsd:unsignedShort ; sh:minCount 1 ; sh:maxCount 1 ] ;
sh:property [ sh:path aac:col ; sh:datatype xsd:unsignedShort ; sh:minCount 1 ; sh:maxCount 1 ] ;
sh:property [ sh:path aac:locked ; sh:datatype xsd:boolean ; sh:maxCount 1 ] .
# Every cascade level carries an energy floor and an offline flag. The offline
# flag is true for exactly L0-L2 (SPEC §6.2); monotonicity of energyUj across
# the ten levels is checked by conformance suite C2.
aac:CascadeLevelShape a sh:NodeShape ;
sh:targetClass aac:CascadeLevel ;
sh:property [ sh:path aac:energyUj ; sh:datatype xsd:unsignedLong ; sh:minCount 1 ; sh:maxCount 1 ] ;
sh:property [ sh:path aac:offline ; sh:datatype xsd:boolean ; sh:minCount 1 ; sh:maxCount 1 ] .
# The receipt provenance <-> measured coupling (SPEC §9): an Estimator reading
# MUST NOT carry a measured figure. (The never-billed invariant is a behavioural
# constraint on implementations, not a document shape.)
aac:ReceiptShape a sh:NodeShape ;
sh:targetClass aac:Receipt ;
sh:property [ sh:path aac:estimatedUj ; sh:datatype xsd:unsignedLong ; sh:minCount 1 ; sh:maxCount 1 ] ;
sh:property [ sh:path aac:provenance ; sh:minCount 1 ; sh:maxCount 1 ] ;
sh:not [ sh:and (
[ sh:path aac:provenance ; sh:hasValue aac:Estimator ]
[ sh:path aac:measuredUj ; sh:minCount 1 ]
) ] .