Currently, our SHACL shapes in edaan-shapes.ttl primarily validate structural existence using minCount (e.g., "A Profile must have metrics"). However, they do not enforce business logic dependent on specific data types.
We need to upgrade our validation layer to support Conditional SHACL (sh:if, sh:then, sh:else) to catch logical inconsistencies.
Proposed Task
Example Implementation
:VectorDataCRSShape a sh:NodeShape ;
sh:targetClass :DataProfile ;
sh:if [
sh:path :declaresDataClass ;
sh:hasValue bigdat:VectorData ;
] ;
sh:then [
sh:path :hasCRS ;
sh:minCount 1 ;
sh:message "Vector Data MUST have a Coordinate Reference System (CRS)."@en ;
] .
Currently, our SHACL shapes in
edaan-shapes.ttlprimarily validate structural existence usingminCount(e.g., "A Profile must have metrics"). However, they do not enforce business logic dependent on specific data types.We need to upgrade our validation layer to support Conditional SHACL (
sh:if,sh:then,sh:else) to catch logical inconsistencies.Proposed Task
edaan-shapes.ttlto include conditional rules.bigdat:VectorData, THENedaan:hasCRSmust be mandatory (minCount 1).bigdat:TabularData, check for relevant tabular metrics (optional but recommended warning).Example Implementation