open-standards/map/vocab/v1.shapes.ttl
Transaction Science b7fda4f20f map: point at maps.transaction.science (the only site) everywhere
There is no separate map.transaction.science — maps.transaction.science is the
single public face of the Map standard. Fix the root README Site line and align
the RDF vocabulary namespace (v1.ttl / v1.jsonld / v1.shapes.ttl + the vocab
docs) from the phantom map.transaction.science host to maps.transaction.science.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-06-07 19:40:49 -04:00

35 lines
1.9 KiB
Turtle

@prefix map: <https://maps.transaction.science/vocab/v1#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
# SHACL shapes for the Map standard (v1). A conforming document validates
# against these in addition to round-tripping the conformance vectors.
map:CellKeyShape a sh:NodeShape ;
sh:targetClass map:CellKey ;
sh:property [ sh:path map:s2 ; sh:datatype xsd:unsignedLong ; sh:minCount 1 ; sh:maxCount 1 ] ;
sh:property [ sh:path map:altBand ; sh:datatype xsd:integer ; sh:minCount 1 ; sh:maxCount 1 ] ;
sh:property [ sh:path map:timeStart ; sh:datatype xsd:long ; sh:minCount 1 ; sh:maxCount 1 ] ;
sh:property [ sh:path map:timeWidth ; sh:datatype xsd:unsignedLong ; sh:minCount 1 ; sh:maxCount 1 ] ;
sh:property [ sh:path map:lod ; sh:datatype xsd:unsignedByte ; sh:minCount 1 ; sh:maxCount 1 ] .
map:ManifestShape a sh:NodeShape ;
sh:targetClass map:Manifest ;
sh:property [ sh:path map:dirRoot ; sh:datatype xsd:hexBinary ; sh:minCount 1 ; sh:maxCount 1 ] ;
sh:property [ sh:path map:publisher ; sh:minCount 1 ; sh:maxCount 1 ] .
map:RevisionShape a sh:NodeShape ;
sh:targetClass map:Revision ;
sh:property [ sh:path map:prevRoot ; sh:datatype xsd:hexBinary ; sh:minCount 1 ; sh:maxCount 1 ] ;
sh:property [ sh:path map:newRoot ; sh:datatype xsd:hexBinary ; sh:minCount 1 ; sh:maxCount 1 ] .
# The receipt provenance ↔ measured coupling (SPEC §6): an Estimator receipt
# MUST NOT carry a measured figure.
map:ReceiptShape a sh:NodeShape ;
sh:targetClass map:Receipt ;
sh:property [ sh:path map:estimatedUj ; sh:datatype xsd:unsignedLong ; sh:minCount 1 ; sh:maxCount 1 ] ;
sh:property [ sh:path map:tier ; sh:minCount 1 ; sh:maxCount 1 ] ;
sh:not [ sh:and (
[ sh:path map:provenance ; sh:hasValue map:Estimator ]
[ sh:path map:measuredUj ; sh:minCount 1 ]
) ] .