Skip to content

Commit

Permalink
test: valid annotations
Browse files Browse the repository at this point in the history
  • Loading branch information
tpluscode committed Sep 27, 2024
1 parent abfab69 commit 400a1fb
Show file tree
Hide file tree
Showing 11 changed files with 853 additions and 176 deletions.
4 changes: 2 additions & 2 deletions meta/core.md
Original file line number Diff line number Diff line change
Expand Up @@ -132,8 +132,8 @@ applies to, namely:
4. `sh:minExclusive` - to select values greater than a specific value
5. `sh:maxExclusive` - to select values smaller than a specific value

In case of temporal dimensions, the constraint values are expected to be literals with one of types `xsd:date`,
`xsd:dateTime` or `xsd:gYear`, or the IRIs of a [temporal entity](https://lindas.admin.ch/governance/core-entities/).
In case of temporal dimensions, the constraint values are expected to be literals with datatypes `xsd:date`,
`xsd:dateTime` or `xsd:gYear`, or the IRIs of [temporal entities](https://lindas.admin.ch/governance/core-entities/).

<aside class='example' title='Dimension with a continuous limit on a temporal dimension'>

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
PREFIX ex: <http://example.org/>
PREFIX dcterms: <http://purl.org/dc/terms/>
@prefix relation: <https://cube.link/relation/> .
@prefix meta: <https://cube.link/meta/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix cube: <https://cube.link/> .
@prefix observation: <https://environment.ld.admin.ch/foen/nfi/observation/max_min_undefined> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix schema: <http://schema.org/> .
@base <https://example.org/> .

<cube> a cube:Cube ;
cube:observationConstraint <shape> ;
cube:observationSet <observationSet> .

<observationSet> cube:observation <observationA> .

<observationA> a cube:Observation ;
cube:observedBy <observer> ;
<measure> 4.9 ;
<year> <https://ld.admin.ch/time/year/2020> ;
.

<shape> a cube:Constraint ;
sh:targetClass cube:Observation ;
sh:closed true ;
sh:property
[
sh:path rdf:type ;
sh:nodeKind sh:IRI ;
sh:minCount 1 ;
sh:maxCount 1
] ;
sh:property
[
sh:path cube:observedBy ; ;
sh:nodeKind sh:IRI ;
sh:minCount 1 ;
sh:maxCount 1
] ;
sh:property
[
a cube:MeasureDimension ;
sh:datatype xsd:decimal ;
sh:path <measure> ;
schema:name "measure" ;
sh:minCount 1 ;
sh:maxCount 1 ;
meta:annotation
[
a meta:Limit ;
schema:value 97 ;
schema:name "Target 2020+" ;
meta:annotationContext
[
sh:path <year> ;
sh:minInclusive <https://ld.admin.ch/time/year/2020> ;
sh:minExclusive <https://ld.admin.ch/time/year/2022> ;
] ;
] ;
] ;
sh:property
[
a meta:KeyDimension ;
sh:path <year> ;
schema:name "year" ;
sh:minCount 1 ;
sh:maxCount 1 ;
sh:nodeKind sh:IRI ;
] ;
sh:property
[
a meta:KeyDimension ;
sh:path <station> ;
schema:name "station" ;
sh:minCount 1 ;
sh:maxCount 1 ;
sh:nodeKind sh:IRI ;
] ;
.
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix schema: <http://schema.org/> .
@prefix cube: <https://cube.link/> .

_:report a sh:ValidationReport ;
sh:result [
rdf:type sh:ValidationResult ;
sh:resultSeverity sh:Violation ;
sh:sourceConstraintComponent sh:XoneConstraintComponent ;
sh:sourceShape <https://cube.link/shape/standalone-constraint-constraint#AnnotationContext> ;
sh:focusNode _:b5 ;
sh:value _:b5 ;
sh:resultMessage "annotation context only allows constraints sh:hasValue, sh:in, sh:minInclusive, sh:maxInclusive, sh:minExclusive, sh:maxExclusive and they cannot be mixed" ;
] ;
sh:conforms false .
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
PREFIX ex: <http://example.org/>
PREFIX dcterms: <http://purl.org/dc/terms/>
@prefix relation: <https://cube.link/relation/> .
@prefix meta: <https://cube.link/meta/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix cube: <https://cube.link/> .
@prefix observation: <https://environment.ld.admin.ch/foen/nfi/observation/max_min_undefined> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix schema: <http://schema.org/> .
@base <https://example.org/> .

<cube> a cube:Cube ;
cube:observationConstraint <shape> ;
cube:observationSet <observationSet> .

<observationSet> cube:observation <observationA> .

<observationA> a cube:Observation ;
cube:observedBy <observer> ;
<measure> 4.9 ;
<year> <https://ld.admin.ch/time/year/2020> ;
.

<shape> a cube:Constraint ;
sh:targetClass cube:Observation ;
sh:closed true ;
sh:property
[
sh:path rdf:type ;
sh:nodeKind sh:IRI ;
sh:minCount 1 ;
sh:maxCount 1
] ;
sh:property
[
sh:path cube:observedBy ; ;
sh:nodeKind sh:IRI ;
sh:minCount 1 ;
sh:maxCount 1
] ;
sh:property
[
a cube:MeasureDimension ;
sh:datatype xsd:decimal ;
sh:path <measure> ;
schema:name "measure" ;
sh:minCount 1 ;
sh:maxCount 1 ;
meta:annotation
[
a meta:Limit ;
schema:value 95 ;
meta:annotationContext
[
sh:path <non-dimension> ;
sh:hasValue 10 ;
] ;
] ,
[
a meta:Limit ;
schema:value 95 ;
meta:annotationContext
[
sh:path <station> ;
sh:hasValue ex:Station ;
] ;
] ;
] ;
sh:property
[
a meta:KeyDimension ;
sh:path <year> ;
schema:name "year" ;
sh:minCount 1 ;
sh:maxCount 1 ;
sh:nodeKind sh:IRI ;
] ;
sh:property
[
sh:path <station> ;
schema:name "station" ;
sh:minCount 1 ;
sh:maxCount 1 ;
sh:nodeKind sh:IRI ;
] ;
.
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix schema: <http://schema.org/> .
@prefix cube: <https://cube.link/> .

_:report a sh:ValidationReport ;
sh:result [
rdf:type sh:ValidationResult ;
sh:resultSeverity sh:Violation ;
sh:sourceConstraintComponent sh:NotConstraintComponent ;
sh:sourceShape <https://cube.link/shape/standalone-constraint-constraint#AnnotationContextDimensionType> ;
sh:focusNode _:b5 ;
sh:value _:b5 ;
sh:resultMessage "annotation context must have exactly one sh:path which is cube's key dimension" ;
], [
rdf:type sh:ValidationResult ;
sh:resultSeverity sh:Violation ;
sh:sourceConstraintComponent sh:XoneConstraintComponent ;
sh:sourceShape [
sh:path _:b706 ;
sh:xone (
[
sh:class <https://cube.link/meta/KeyDimension> ;
]
[
sh:property [
sh:path [
sh:inversePath <https://cube.link/meta/annotationContext> ;
] ;
sh:minCount 1 ;
] ;
]
) ;
] ;
sh:focusNode _:b7 ;
sh:value _:b9 ;
sh:resultPath _:b706 ;
] ;
sh:conforms false .

_:b706 rdf:first sh:path ;
rdf:rest (
[
sh:inversePath sh:path ;
]
) .
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
PREFIX ex: <http://example.org/>
PREFIX dcterms: <http://purl.org/dc/terms/>
@prefix relation: <https://cube.link/relation/> .
@prefix meta: <https://cube.link/meta/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix cube: <https://cube.link/> .
@prefix observation: <https://environment.ld.admin.ch/foen/nfi/observation/max_min_undefined> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix schema: <http://schema.org/> .
@base <https://example.org/> .

<cube> a cube:Cube ;
cube:observationConstraint <shape> ;
cube:observationSet <observationSet> .

<observationSet> cube:observation <observationA> .

<observationA> a cube:Observation ;
cube:observedBy <observer> ;
<measure> 4.9 ;
<year> <https://ld.admin.ch/time/year/2020> ;
.

<shape> a cube:Constraint ;
sh:targetClass cube:Observation ;
sh:closed true ;
sh:property
[
sh:path rdf:type ;
sh:nodeKind sh:IRI ;
sh:minCount 1 ;
sh:maxCount 1
] ;
sh:property
[
sh:path cube:observedBy ; ;
sh:nodeKind sh:IRI ;
sh:minCount 1 ;
sh:maxCount 1
] ;
sh:property
[
a cube:MeasureDimension ;
sh:datatype xsd:decimal ;
sh:path <measure> ;
schema:name "measure" ;
sh:minCount 1 ;
sh:maxCount 1 ;
meta:annotation
[
a meta:Limit ;
schema:name "Target 2020+" ;
meta:annotationContext
[
sh:path <year> ;
sh:minInclusive <https://ld.admin.ch/time/year/2020> ;
] ;
] ;
] ;
sh:property
[
a meta:KeyDimension ;
sh:path <year> ;
schema:name "year" ;
sh:minCount 1 ;
sh:maxCount 1 ;
sh:nodeKind sh:IRI ;
] ;
sh:property
[
a meta:KeyDimension ;
sh:path <station> ;
schema:name "station" ;
sh:minCount 1 ;
sh:maxCount 1 ;
sh:nodeKind sh:IRI ;
] ;
.
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix schema: <http://schema.org/> .
@prefix cube: <https://cube.link/> .

_:report a sh:ValidationReport ;
sh:result [
rdf:type sh:ValidationResult ;
sh:resultSeverity sh:Violation ;
sh:sourceConstraintComponent sh:XoneConstraintComponent ;
sh:sourceShape <https://cube.link/shape/standalone-constraint-constraint#AnnotationValue> ;
sh:focusNode _:b4 ;
sh:value _:b4 ;
sh:resultMessage "annotation must have exactly one schema:value or a combination of schema:minValue and schema:maxValue" ;
] ;
sh:conforms false .
Loading

0 comments on commit 400a1fb

Please sign in to comment.