From 3fea46b4d286e61613f0600e4040ec0acc5f59fc Mon Sep 17 00:00:00 2001 From: Junrong Yu Date: Wed, 24 Apr 2024 10:24:01 +1000 Subject: [PATCH 01/26] Updated `geo:WKTLiteral` to `geo:wktLiteral` --- docs/dcat-shapes.ttl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/dcat-shapes.ttl b/docs/dcat-shapes.ttl index cd53c48..25b0a2d 100644 --- a/docs/dcat-shapes.ttl +++ b/docs/dcat-shapes.ttl @@ -1048,9 +1048,9 @@ PREFIX xsd: sh:severity sh:Violation ] , [ - sh:datatype geo:WKTLiteral ; + sh:datatype geo:wktLiteral ; sh:maxCount 1 ; - sh:message "A `geo:Geometry` _MUST_ have exactly 1 `geo:asWKT` where the value node is a literal with the datatype `geo:WKTLiteral`." ; + sh:message "A `geo:Geometry` _MUST_ have exactly 1 `geo:asWKT` where the value node is a literal with the datatype `geo:wktLiteral`." ; sh:minCount 1 ; sh:nodeKind sh:Literal ; sh:path geo:asWKT ; From 9e84d1db2ea3fd0cc35765fad89c71da62064a59 Mon Sep 17 00:00:00 2001 From: Junrong Yu Date: Wed, 24 Apr 2024 10:44:30 +1000 Subject: [PATCH 02/26] Updated the nodeKind and datatype of `dcterms:identifier` for `dcat:CatalogRecord` & `dcat:Dataset` --- docs/dcat-shapes.ttl | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/docs/dcat-shapes.ttl b/docs/dcat-shapes.ttl index 25b0a2d..6977152 100644 --- a/docs/dcat-shapes.ttl +++ b/docs/dcat-shapes.ttl @@ -96,11 +96,13 @@ PREFIX xsd: sh:minCount 1 ; sh:or ( [ + sh:datatype xsd:anyURI ; sh:nodeKind sh:Literal ; sh:severity sh:Violation ] [ - sh:nodeKind sh:IRI ; + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; sh:severity sh:Violation ] ) ; @@ -878,7 +880,18 @@ PREFIX xsd: sh:maxCount 1 ; sh:message "A `dcat:Dataset` _MUST_ have exactly 1 `dcterms:identifier` where the value node is a literal with datatype `xsd:anyURI`." ; sh:minCount 1 ; - sh:nodeKind sh:Literal ; + sh:or ( + [ + sh:datatype xsd:anyURI ; + sh:nodeKind sh:Literal ; + sh:severity sh:Violation + ] + [ + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; + sh:severity sh:Violation + ] + ) ; sh:path dcterms:identifier ; sh:severity sh:Violation ] , From bbb477b2386ebe205c74629a41c2dde56254e03c Mon Sep 17 00:00:00 2001 From: Junrong Yu Date: Fri, 26 Apr 2024 11:52:34 +1000 Subject: [PATCH 03/26] Updated the SHACL message for `dcat:Dataset` - `dcterms:identifier` --- docs/dcat-shapes.ttl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/dcat-shapes.ttl b/docs/dcat-shapes.ttl index 6977152..8b999d7 100644 --- a/docs/dcat-shapes.ttl +++ b/docs/dcat-shapes.ttl @@ -878,7 +878,7 @@ PREFIX xsd: [ sh:datatype xsd:anyURI ; sh:maxCount 1 ; - sh:message "A `dcat:Dataset` _MUST_ have exactly 1 `dcterms:identifier` where the value node is a literal with datatype `xsd:anyURI`." ; + sh:message "A `dcat:Dataset` _MUST_ have exactly 1 `dcterms:identifier` where the value node is a literal with datatype `xsd:anyURI` or `xsd:string`." ; sh:minCount 1 ; sh:or ( [ From a459fa086a9392576333668ec5b3091f211ca317 Mon Sep 17 00:00:00 2001 From: Junrong Yu Date: Fri, 26 Apr 2024 12:08:37 +1000 Subject: [PATCH 04/26] Updated the cardinality of `dcterms:modified` of `dcat:Catalog` --- docs/dcat-shapes.ttl | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/dcat-shapes.ttl b/docs/dcat-shapes.ttl index 8b999d7..2a0d29e 100644 --- a/docs/dcat-shapes.ttl +++ b/docs/dcat-shapes.ttl @@ -191,8 +191,7 @@ PREFIX xsd: ] , [ sh:maxCount 1 ; - sh:message "A `dcat:Catalog` _MUST_ have exactly 1 `dcterms:modified` predicate where the value node is a literal with the datatype `xsd:date`, `xsd:dateTime`, `xsd:gYear` or `xsd:gYearMonth`." ; - sh:minCount 1 ; + sh:message "A `dcat:Catalog` _MAY_ have a maximum 1 `dcterms:modified` predicate where the value node is a literal with the datatype `xsd:date`, `xsd:dateTime`, `xsd:gYear` or `xsd:gYearMonth`." ; sh:path dcterms:modified ; sh:severity sh:Violation ; sh:shape :DateOrDateTimeDataType_Shape From c64ecdf205d259bf708c6ae7a31e11e09289777b Mon Sep 17 00:00:00 2001 From: Junrong Yu Date: Fri, 26 Apr 2024 12:18:53 +1000 Subject: [PATCH 05/26] Fixed typo: `dcterms:LicenseDocumentation` should be `dcterms:LicenseDocument` --- docs/dcat-shapes.ttl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/dcat-shapes.ttl b/docs/dcat-shapes.ttl index 2a0d29e..3e02037 100644 --- a/docs/dcat-shapes.ttl +++ b/docs/dcat-shapes.ttl @@ -578,9 +578,9 @@ PREFIX xsd: sh:severity sh:Violation ] , [ - sh:class dcterms:LicenseDocumentation ; + sh:class dcterms:LicenseDocument ; sh:maxCount 1 ; - sh:message "A `dcat:Dataset` _MAY_ have a maximum of 1 `dcterms:license` predicate where the value node is `dcterms:LicenseDocumentation`." ; + sh:message "A `dcat:Dataset` _MAY_ have a maximum of 1 `dcterms:license` predicate where the value node is `dcterms:LicenseDocument`." ; sh:path dcterms:license ; sh:severity sh:Violation ] , From a754a647f1e9a9d69ecde2df06deaab7a8d97b50 Mon Sep 17 00:00:00 2001 From: Junrong Yu Date: Fri, 26 Apr 2024 12:24:46 +1000 Subject: [PATCH 06/26] Updated the value type constraint of `dcterms:source` for `dcat:CatalogRecord` --- docs/dcat-shapes.ttl | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/dcat-shapes.ttl b/docs/dcat-shapes.ttl index 3e02037..22f6942 100644 --- a/docs/dcat-shapes.ttl +++ b/docs/dcat-shapes.ttl @@ -117,9 +117,10 @@ PREFIX xsd: sh:severity sh:Violation ] , [ + sh:datatype xsd:anyURI ; sh:maxCount 1 ; - sh:message "A `dcat:CatalogRecord` _MAY_ have a maximum of 1 `dcterms:source` predicate where the value node is an IRI." ; - sh:nodeKind sh:IRI ; + sh:message "A `dcat:CatalogRecord` _MAY_ have a maximum of 1 `dcterms:source` predicate where the value node is a literal with datatype `xsd:anyURI`." ; + sh:nodeKind sh:Literal ; sh:path dcterms:source ; sh:severity sh:Violation ] , From 1c1af429abeac3d6b8d02e2e06b453d150d85cd5 Mon Sep 17 00:00:00 2001 From: Junrong Yu Date: Fri, 26 Apr 2024 12:33:28 +1000 Subject: [PATCH 07/26] Added shapes for `dcat:landingPage` of `dcat:CatalogRecord` --- docs/dcat-shapes.ttl | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/dcat-shapes.ttl b/docs/dcat-shapes.ttl index 22f6942..7c8fe0b 100644 --- a/docs/dcat-shapes.ttl +++ b/docs/dcat-shapes.ttl @@ -42,6 +42,15 @@ PREFIX xsd: sh:path dcterms:created ; sh:severity sh:Violation ] , + [ + sh:datatype xsd:anyURI ; + sh:maxCount 1 ; + sh:message "A `dcat:CatalogRecord` _MUST_ have exactly 1 `dcat:landingPage` predicate where the value node is a literal with the datatype `xsd:anyURI`." ; + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:path dcat:landingPage ; + sh:severity sh:Violation + ] , [ sh:maxCount 1 ; sh:message "A `dcat:CatalogRecord` _MAY_ have a maximum of 1 predicate where the value node is a literal value." ; From 2879bdc6f877354367b8383d6f541a1fa25c46f1 Mon Sep 17 00:00:00 2001 From: Junrong Yu Date: Fri, 26 Apr 2024 14:02:12 +1000 Subject: [PATCH 08/26] Added shapes for `rdf:Seq` --- docs/dcat-shapes.ttl | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/docs/dcat-shapes.ttl b/docs/dcat-shapes.ttl index 7c8fe0b..d3b1620 100644 --- a/docs/dcat-shapes.ttl +++ b/docs/dcat-shapes.ttl @@ -1513,6 +1513,25 @@ PREFIX xsd: sh:targetClass dcterms:RightsStatement ; . +:Seq_Shape + a sh:NodeShape ; + rdfs:label "Seq"@en ; + sh:property [ + sh:path rdf:_ ; + sh:message "A `rdf:Seq` _MAY_ have an `rdf:_N` where the value node is a `schema:Person` or `schema:Organization`." ; + sh:or ( + [ + sh:class schema:Person + ] + [ + sh:class schema:Organization + ] + ) ; + sh:severity sh:Violation + ] ; + sh:targetClass rdf:Seq ; +. + :Standard_Shape a sh:NodeShape ; rdfs:label "Standard"@en ; From 22b7481b7c6c35d02ebeeb3b3809304785ad603e Mon Sep 17 00:00:00 2001 From: Junrong Yu Date: Fri, 26 Apr 2024 14:05:23 +1000 Subject: [PATCH 09/26] Updated shapes of `dcterms:creator` for `dcat:Dataset` --- docs/dcat-shapes.ttl | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/docs/dcat-shapes.ttl b/docs/dcat-shapes.ttl index d3b1620..accf8cc 100644 --- a/docs/dcat-shapes.ttl +++ b/docs/dcat-shapes.ttl @@ -786,15 +786,8 @@ PREFIX xsd: sh:severity sh:Violation ] , [ - sh:message "A `dcat:Dataset` _MAY_ have a `dcterms:creator` where the value node is a `schema:Person` or `schema:Organization`." ; - sh:or ( - [ - sh:class schema:Person - ] - [ - sh:class schema:Organization - ] - ) ; + sh:class rdf:Seq ; + sh:message "A `dcat:Dataset` _MAY_ have a `dcterms:creator` where the value node is a `rdf:Seq`." ; sh:path dcterms:creator ; sh:severity sh:Violation ] , From 8104ce842d8f0236dd61e16f2e7941b466737203 Mon Sep 17 00:00:00 2001 From: Junrong Yu Date: Fri, 26 Apr 2024 14:06:38 +1000 Subject: [PATCH 10/26] Added shapes for `tern:coAuthor` of `dcat:Dataset` --- docs/dcat-shapes.ttl | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/dcat-shapes.ttl b/docs/dcat-shapes.ttl index accf8cc..b4d2b61 100644 --- a/docs/dcat-shapes.ttl +++ b/docs/dcat-shapes.ttl @@ -791,6 +791,12 @@ PREFIX xsd: sh:path dcterms:creator ; sh:severity sh:Violation ] , + [ + sh:class rdf:Seq ; + sh:message "A `dcat:Dataset` _MAY_ have a `tern:coAuthor` where the value node is a `rdf:Seq`." ; + sh:path tern:coAuthor ; + sh:severity sh:Violation + ] , [ sh:message "A `dcat:Dataset` _MAY_ have a `tern:collaborator` where the value node is a `schema:Person` or `schema:Organization`." ; sh:or ( From b8d5f4970891a3d1b73b629bf5ac16bf6f5cfa9c Mon Sep 17 00:00:00 2001 From: Junrong Yu Date: Mon, 29 Apr 2024 11:00:49 +1000 Subject: [PATCH 11/26] Removed the cardinality constraint of `dcterms:description` for `dcat:Catalog` --- docs/dcat-shapes.ttl | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/dcat-shapes.ttl b/docs/dcat-shapes.ttl index b4d2b61..d5ef5ec 100644 --- a/docs/dcat-shapes.ttl +++ b/docs/dcat-shapes.ttl @@ -238,8 +238,7 @@ PREFIX xsd: sh:severity sh:Violation ] , [ - sh:message "A `dcat:Catalog` _MUST_ have at least 1 `dcterms:description` where the value node is literal." ; - sh:minCount 1 ; + sh:message "A `dcat:Catalog` _MAY_ have a `dcterms:description` where the value node is literal." ; sh:nodeKind sh:Literal ; sh:path dcterms:description ; sh:severity sh:Violation From 9e4c27aaca12483afc6e0ad14b7516d9a793bdec Mon Sep 17 00:00:00 2001 From: Junrong Yu Date: Wed, 1 May 2024 15:36:46 +1000 Subject: [PATCH 12/26] Updated the cardinality of `tern:locationDescription` --- docs/dcat-shapes.ttl | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/dcat-shapes.ttl b/docs/dcat-shapes.ttl index d5ef5ec..34db7af 100644 --- a/docs/dcat-shapes.ttl +++ b/docs/dcat-shapes.ttl @@ -1061,8 +1061,7 @@ PREFIX xsd: sh:property [ sh:maxCount 1 ; - sh:message "A `geo:Geometry` _MUST_ have exactly 1 `tern:locationDescription` predicate where the value node is a literal." ; - sh:minCount 1 ; + sh:message "A `geo:Geometry` _MAY_ have maximum 1 `tern:locationDescription` predicate where the value node is a literal." ; sh:nodeKind sh:Literal ; sh:path tern:locationDescription ; sh:severity sh:Violation From c069f614534b2e9ee1e7e03d1978b5ec5e6f3175 Mon Sep 17 00:00:00 2001 From: Junrong Yu Date: Wed, 1 May 2024 15:40:21 +1000 Subject: [PATCH 13/26] Updated all properties for QualityAnnotation to optional --- docs/dcat-shapes.ttl | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/docs/dcat-shapes.ttl b/docs/dcat-shapes.ttl index 34db7af..fe457b5 100644 --- a/docs/dcat-shapes.ttl +++ b/docs/dcat-shapes.ttl @@ -1373,15 +1373,13 @@ PREFIX xsd: [ sh:class rdfs:Resource ; sh:maxCount 1 ; - sh:message "A `dqv:QualityAnnotation` _MUST_ have exactly 1 `dcterms:source` predicate where the value node is `rdfs:Resource`." ; - sh:minCount 1 ; + sh:message "A `dqv:QualityAnnotation` _MAY_ have a maximum of 1 `dcterms:source` predicate where the value node is `rdfs:Resource`." ; sh:path dcterms:source ; sh:severity sh:Violation ] , [ sh:maxCount 1 ; - sh:message "A `dqv:QualityAnnotation` _MUST_ have exactly 1 `oa:hasTarget` where the value node is an IRI." ; - sh:minCount 1 ; + sh:message "A `dqv:QualityAnnotation` _MAY_ have a maximum of 1 `oa:hasTarget` where the value node is an IRI." ; sh:nodeKind sh:IRI ; sh:path oa:hasTarget ; sh:severity sh:Violation @@ -1389,8 +1387,7 @@ PREFIX xsd: [ sh:hasValue dqv:qualityAssessment ; sh:maxCount 1 ; - sh:message "A `dqv:QualityAnnotation` _MUST_ have exactly 1 `oa:motivatedBy` where the value is `dqv:qualityAssessment`." ; - sh:minCount 1 ; + sh:message "A `dqv:QualityAnnotation` _MAY_ have a maximum of 1 `oa:motivatedBy` where the value is `dqv:qualityAssessment`." ; sh:path oa:motivatedBy ; sh:severity sh:Violation ] ; From 99ad4f6e7f43b34ce1d706cae3bf97055ed5ff70 Mon Sep 17 00:00:00 2001 From: Junrong Yu Date: Wed, 15 May 2024 16:09:13 +1000 Subject: [PATCH 14/26] Added shapes for `skos:notation` in `dcat:Catalog` --- docs/dcat-shapes.ttl | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/dcat-shapes.ttl b/docs/dcat-shapes.ttl index fe457b5..377d092 100644 --- a/docs/dcat-shapes.ttl +++ b/docs/dcat-shapes.ttl @@ -250,6 +250,14 @@ PREFIX xsd: sh:path dcterms:publisher ; sh:severity sh:Violation ] , + [ + sh:maxCount 1 ; + sh:message "A `dcat:Catalog` _MUST_ have exactly 1 `skos:notation`." ; + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:path skos:notation ; + sh:severity sh:Violation + ] , [ sh:message "A `dcat:Catalog` _MUST_ have at least 1 `dcterms:title` where the value node is literal." ; sh:minCount 1 ; From 5e8eda2013a4d349eb7933085ba63c39f8ffde85 Mon Sep 17 00:00:00 2001 From: Junrong Yu Date: Wed, 15 May 2024 16:14:53 +1000 Subject: [PATCH 15/26] Updated shapes for Concept and ConceptScheme --- docs/dcat-shapes.ttl | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/docs/dcat-shapes.ttl b/docs/dcat-shapes.ttl index 377d092..95281fd 100644 --- a/docs/dcat-shapes.ttl +++ b/docs/dcat-shapes.ttl @@ -300,7 +300,7 @@ PREFIX xsd: sh:property [ sh:minCount 1 ; sh:nodeKind sh:Literal ; - sh:path dcterms:title ; + sh:path skos:prefLabel ; sh:severity sh:Violation ] ; sh:targetClass skos:ConceptScheme ; @@ -309,11 +309,18 @@ PREFIX xsd: :Category_Shape a sh:NodeShape ; rdfs:label "Category"@en ; - sh:property [ + sh:property + [ sh:minCount 1 ; sh:nodeKind sh:Literal ; sh:path skos:prefLabel ; sh:severity sh:Violation + ] , + [ + sh:maxCount 1 ; + sh:nodeKind sh:IRI ; + sh:path skos:inScheme ; + sh:severity sh:Violation ] ; sh:targetClass skos:Concept ; . From 0f8a1a80a71d03f739db2eb46c7aaaf139cdb418 Mon Sep 17 00:00:00 2001 From: Junrong Yu Date: Tue, 23 Jul 2024 15:22:24 +1000 Subject: [PATCH 16/26] Replaced `tern:verticalExtent` of Dataset with `tern:hasExtent` --- docs/dcat-shapes.ttl | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/dcat-shapes.ttl b/docs/dcat-shapes.ttl index 95281fd..61b83d7 100644 --- a/docs/dcat-shapes.ttl +++ b/docs/dcat-shapes.ttl @@ -608,13 +608,6 @@ PREFIX xsd: sh:path dcterms:license ; sh:severity sh:Violation ] , - [ - sh:class tern:VerticalExtent ; - sh:maxCount 1 ; - sh:message "A `dcat:Dataset` _MAY_ have a maximum of 1 `tern:verticalExtent` predicate where the value node is `tern:VerticalExtent`." ; - sh:path tern:verticalExtent ; - sh:severity sh:Violation - ] , [ sh:datatype xsd:string ; sh:maxCount 1 ; @@ -658,6 +651,13 @@ PREFIX xsd: sh:path schema:abstract ; sh:severity sh:Violation ] , + [ + sh:message "A `dcat:Dataset` _MUST_ have at least 1 `tern:hasExtent` predicate where the value node is a `tern:Extent`." ; + sh:minCount 1 ; + sh:class tern:Extent ; + sh:path tern:hasExtent ; + sh:severity sh:Violation + ] , [ sh:datatype xsd:string ; sh:message "A `dcat:Dataset` _MAY_ have a `schema:creditText` predicate where the value node is a literal with datatype `xsd:string`." ; From 98c615a6c3f4c6a8ce64a6fffc7daa99df3044b4 Mon Sep 17 00:00:00 2001 From: Junrong Yu Date: Tue, 23 Jul 2024 15:33:20 +1000 Subject: [PATCH 17/26] Added shapes for `tern:Extent` --- docs/dcat-shapes.ttl | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/docs/dcat-shapes.ttl b/docs/dcat-shapes.ttl index 61b83d7..536c06d 100644 --- a/docs/dcat-shapes.ttl +++ b/docs/dcat-shapes.ttl @@ -1618,6 +1618,37 @@ PREFIX xsd: sh:targetClass tern:VerticalExtent ; . +:Extent_Shape + a sh:NodeShape ; + rdfs:label "Extent"@en ; + sh:property + [ + sh:message "A `tern:Extent` _MAY_ have 1 `dcterms:temporal` predicate where the value node is a `dcterms:PeriodOfTime`." ; + sh:class dcterms:PeriodOfTime ; + sh:path dcterms:temporal ; + sh:severity sh:Violation + ] , + [ + sh:message "A `tern:Extent` _MAY_ have 1 `geo:hasGeometry` predicate where the value node is a `geo:Geometry`." ; + sh:class geo:Geometry ; + sh:path geo:hasGeometry ; + sh:severity sh:Violation + ] , + [ + sh:message "A `tern:Extent` _MAY_ have 1 `tern:verticalExtent` predicate where the value node is a `tern:VerticalExtent`." ; + sh:class tern:VerticalExtent ; + sh:path tern:verticalExtent ; + sh:severity sh:Violation + ] , + [ + sh:message "A `tern:Extent` _MAY_ have 1 `tern:locationDescription` predicate where the value has datatype `xsd:string`." ; + sh:datatype xsd:string ; + sh:path tern:locationDescription ; + sh:severity sh:Violation + ] ; + sh:targetClass tern:Extent ; +. + :DcatResource_Shape a sh:NodeShape ; rdfs:label "dcat:Resource" ; From 3546c5a9c0c380f44e8e954991349d697aa74d4c Mon Sep 17 00:00:00 2001 From: Junrong Yu Date: Tue, 23 Jul 2024 15:52:14 +1000 Subject: [PATCH 18/26] Updated DCAT Dataset shapes --- docs/dcat-shapes.ttl | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/docs/dcat-shapes.ttl b/docs/dcat-shapes.ttl index 536c06d..53501a1 100644 --- a/docs/dcat-shapes.ttl +++ b/docs/dcat-shapes.ttl @@ -514,6 +514,12 @@ PREFIX xsd: sh:path dcat:keyword ; sh:severity sh:Violation ] , + [ + sh:message "A `dcat:Dataset` _MAY_ have a `tern:dataQuality` where the value node is a `tern:DataQuality`." ; + sh:class tern:DataQuality ; + sh:path tern:dataQuality ; + sh:severity sh:Violation + ] , [ sh:path dcterms:spatial ; sh:severity sh:Violation @@ -546,8 +552,8 @@ PREFIX xsd: [ sh:class skos:Concept ; sh:maxCount 1 ; - sh:message "A `dcat:Dataset` _MAY_ have a maximum of 1 `dcterms:accessRights` where the value is `skos:Concept`." ; - sh:path dcterms:accessRights ; + sh:message "A `dcat:Dataset` _MAY_ have a maximum of 1 `tern:securityConstraints` where the value is `skos:Concept`." ; + sh:path tern:securityConstraints ; sh:severity sh:Violation ] , [ @@ -634,8 +640,8 @@ PREFIX xsd: ] , [ sh:class dcterms:RightsStatement ; - sh:message "A `dcat:Dataset` _MAY_ have a `dcterms:rights` predicate where the value node is `dcterms:RightsStatement`." ; - sh:path dcterms:rights ; + sh:message "A `dcat:Dataset` _MAY_ have a `tern:otherConstraints` predicate where the value node is `dcterms:RightsStatement`." ; + sh:path tern:otherConstraints ; sh:severity sh:Violation ] , [ @@ -724,8 +730,8 @@ PREFIX xsd: ] , [ sh:class rdfs:Resource ; - sh:message "A `dcat:Dataset` _MAY_ have a `dcterms:relation` predicate where the value node is `rdfs:Resource`." ; - sh:path dcterms:relation ; + sh:message "A `dcat:Dataset` _MAY_ have a `tern:addtionalDocumentation` predicate where the value node is `rdfs:Resource`." ; + sh:path tern:addtionalDocumentation ; sh:severity sh:Violation ] , [ @@ -879,9 +885,9 @@ PREFIX xsd: sh:severity sh:Violation ] , [ - sh:message "A `dcat:Dataset` _MAY_ have a `dcterms:description` where the value node is a literal." ; + sh:message "A `dcat:Dataset` _MAY_ have a `tern:purpose` where the value node is a literal." ; sh:nodeKind sh:Literal ; - sh:path dcterms:description ; + sh:path tern:purpose ; sh:severity sh:Violation ] , [ From 44cf01592d4bd8485acafabf3051a47babdb65aa Mon Sep 17 00:00:00 2001 From: Junrong Yu Date: Tue, 23 Jul 2024 16:08:23 +1000 Subject: [PATCH 19/26] Restricted the value node of `tern:unit` to be `qudt:Unit` --- docs/dcat-shapes.ttl | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/dcat-shapes.ttl b/docs/dcat-shapes.ttl index 53501a1..609a7c1 100644 --- a/docs/dcat-shapes.ttl +++ b/docs/dcat-shapes.ttl @@ -11,6 +11,7 @@ PREFIX oa: PREFIX odrl: PREFIX owl: PREFIX prov: +PREFIX qudt: PREFIX rdf: PREFIX rdfs: PREFIX schema: @@ -358,8 +359,8 @@ PREFIX xsd: sh:severity sh:Violation ] , [ - sh:message "A `skos:Concept` _MAY_ have a `tern:unit` predicate where the value node is an IRI." ; - sh:nodeKind sh:IRI ; + sh:message "A `skos:Concept` _MAY_ have a `tern:unit` predicate where the value node is a `qudt:Unit`." ; + sh:class qudt:Unit ; sh:path tern:unit ; sh:severity sh:Violation ] , @@ -1451,9 +1452,9 @@ PREFIX xsd: ] , [ sh:maxCount 1 ; - sh:message "A `dqv:QualityMeasurement` _MUST_ have exactly 1 `tern:unit` predicate where the value node is an IRI." ; + sh:message "A `dqv:QualityMeasurement` _MUST_ have exactly 1 `tern:unit` predicate where the value node is a `qudt:Unit`." ; sh:minCount 1 ; - sh:nodeKind sh:IRI ; + sh:class qudt:Unit ; sh:path tern:unit ; sh:severity sh:Violation ] ; @@ -1607,9 +1608,9 @@ PREFIX xsd: ] , [ sh:maxCount 1 ; - sh:message "A `tern:VerticalExtent` _MUST_ have exactly 1 `tern:unit` predicate where the value node is `sh:IRI`." ; + sh:message "A `tern:VerticalExtent` _MUST_ have exactly 1 `tern:unit` predicate where the value node is `qudt:Unit`." ; sh:minCount 1 ; - sh:nodeKind sh:IRI ; + sh:class qudt:Unit ; sh:path tern:unit ; sh:severity sh:Violation ] , From 0d72a8b427371049972a686508471abc7f94981f Mon Sep 17 00:00:00 2001 From: Junrong Yu Date: Tue, 23 Jul 2024 16:11:01 +1000 Subject: [PATCH 20/26] Added shapes of `dcat:inSeries` for Dataset --- docs/dcat-shapes.ttl | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/dcat-shapes.ttl b/docs/dcat-shapes.ttl index 609a7c1..4ac3e7a 100644 --- a/docs/dcat-shapes.ttl +++ b/docs/dcat-shapes.ttl @@ -521,6 +521,12 @@ PREFIX xsd: sh:path tern:dataQuality ; sh:severity sh:Violation ] , + [ + sh:message "A `dcat:Dataset` _MAY_ have a `dcat:inSeries` where the value node is a `dcat:DatasetSeries`." ; + sh:class dcat:DatasetSeries ; + sh:path dcat:inSeries ; + sh:severity sh:Violation + ] , [ sh:path dcterms:spatial ; sh:severity sh:Violation From 800238cb8903e2933088530ff1b643cb7b2985dc Mon Sep 17 00:00:00 2001 From: Junrong Yu Date: Tue, 23 Jul 2024 16:19:11 +1000 Subject: [PATCH 21/26] Added shapes for class `qudt:Unit` --- docs/dcat-shapes.ttl | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/docs/dcat-shapes.ttl b/docs/dcat-shapes.ttl index 4ac3e7a..2ab7a81 100644 --- a/docs/dcat-shapes.ttl +++ b/docs/dcat-shapes.ttl @@ -347,6 +347,27 @@ PREFIX xsd: sh:targetClass spdx:Checksum ; . +:Unit_Shape + a sh:NodeShape ; + rdfs:label "QUDT Unit"@en ; + sh:property + [ + sh:message "A `qudt:Unit` _MUST_ have exactly 1 `rdfs:label` where the value node is a literal." ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:path rdfs:label ; + sh:severity sh:Violation + ] , + [ + sh:message "A `qudt:Unit` _MAY_ have 1 `rdfs:isDefinedBy` where the value node is a `sh:IRI`." ; + sh:nodeKind sh:IRI ; + sh:path rdfs:isDefinedBy ; + sh:severity sh:Violation + ] ; + sh:targetClass qudt:Unit ; +. + :Concept_Shape a sh:NodeShape ; rdfs:label "Concept"@en ; From 6609dc16031272055a11dc91760a4329328ce83c Mon Sep 17 00:00:00 2001 From: Junrong Yu Date: Tue, 23 Jul 2024 17:00:52 +1000 Subject: [PATCH 22/26] Restructured Person/Org shapes, added new roles for both Dataset and Distribution --- docs/dcat-shapes.ttl | 177 +++++++++++++++++++++++++++---------------- 1 file changed, 113 insertions(+), 64 deletions(-) diff --git a/docs/dcat-shapes.ttl b/docs/dcat-shapes.ttl index 2ab7a81..921bd52 100644 --- a/docs/dcat-shapes.ttl +++ b/docs/dcat-shapes.ttl @@ -144,14 +144,7 @@ PREFIX xsd: [ sh:message "A `dcat:CatalogRecord` _MUST_ have at least 1 `dcat:contactPoint` where the value node is a `schema:Person` or `schema:Organization`." ; sh:minCount 1 ; - sh:or ( - [ - sh:class schema:Person - ] - [ - sh:class schema:Organization - ] - ) ; + sh:node :PersonOrg_Shape ; sh:path dcat:contactPoint ; sh:severity sh:Violation ] ; @@ -847,68 +840,117 @@ PREFIX xsd: ] , [ sh:message "A `dcat:Dataset` _MAY_ have a `tern:collaborator` where the value node is a `schema:Person` or `schema:Organization`." ; - sh:or ( - [ - sh:class schema:Person - ] - [ - sh:class schema:Organization - ] - ) ; + sh:node :PersonOrg_Shape ; sh:path tern:collaborator ; sh:severity sh:Violation ] , [ sh:message "A `dcat:Dataset` _MAY_ have a `tern:funder` where the value node is a `schema:Person` or `schema:Organization`." ; - sh:or ( - [ - sh:class schema:Person - ] - [ - sh:class schema:Organization - ] - ) ; + sh:node :PersonOrg_Shape ; sh:path tern:funder ; sh:severity sh:Violation ] , [ sh:message "A `dcat:Dataset` _MAY_ have a `tern:editor` where the value node is a `schema:Person` or `schema:Organization`." ; - sh:or ( - [ - sh:class schema:Person - ] - [ - sh:class schema:Organization - ] - ) ; + sh:node :PersonOrg_Shape ; sh:path tern:editor ; sh:severity sh:Violation ] , [ sh:message "A `dcat:Dataset` _MAY_ have a `tern:producer` where the value node is a `schema:Person` or `schema:Organization`." ; - sh:or ( - [ - sh:class schema:Person - ] - [ - sh:class schema:Organization - ] - ) ; + sh:node :PersonOrg_Shape ; sh:path tern:producer ; sh:severity sh:Violation ] , + [ + sh:message "A `dcat:Dataset` _MAY_ have a `tern:resourceProvider` where the value node is a `schema:Person` or `schema:Organization`." ; + sh:node :PersonOrg_Shape ; + sh:path tern:resourceProvider ; + sh:severity sh:Violation + ] , + [ + sh:message "A `dcat:Dataset` _MAY_ have a `tern:custodian` where the value node is a `schema:Person` or `schema:Organization`." ; + sh:node :PersonOrg_Shape ; + sh:path tern:custodian ; + sh:severity sh:Violation + ] , + [ + sh:message "A `dcat:Dataset` _MAY_ have a `tern:owner` where the value node is a `schema:Person` or `schema:Organization`." ; + sh:node :PersonOrg_Shape ; + sh:path tern:owner ; + sh:severity sh:Violation + ] , + [ + sh:message "A `dcat:Dataset` _MAY_ have a `tern:user` where the value node is a `schema:Person` or `schema:Organization`." ; + sh:node :PersonOrg_Shape ; + sh:path tern:user ; + sh:severity sh:Violation + ] , + [ + sh:message "A `dcat:Dataset` _MAY_ have a `tern:distributor` where the value node is a `schema:Person` or `schema:Organization`." ; + sh:node :PersonOrg_Shape ; + sh:path tern:distributor ; + sh:severity sh:Violation + ] , + [ + sh:message "A `dcat:Dataset` _MAY_ have a `tern:originator` where the value node is a `schema:Person` or `schema:Organization`." ; + sh:node :PersonOrg_Shape ; + sh:path tern:originator ; + sh:severity sh:Violation + ] , + [ + sh:message "A `dcat:Dataset` _MAY_ have a `tern:principalInvestigator` where the value node is a `schema:Person` or `schema:Organization`." ; + sh:node :PersonOrg_Shape ; + sh:path tern:principalInvestigator ; + sh:severity sh:Violation + ] , + [ + sh:message "A `dcat:Dataset` _MAY_ have a `tern:processor` where the value node is a `schema:Person` or `schema:Organization`." ; + sh:node :PersonOrg_Shape ; + sh:path tern:processor ; + sh:severity sh:Violation + ] , + [ + sh:message "A `dcat:Dataset` _MAY_ have a `tern:sponsor` where the value node is a `schema:Person` or `schema:Organization`." ; + sh:node :PersonOrg_Shape ; + sh:path tern:sponsor ; + sh:severity sh:Violation + ] , + [ + sh:message "A `dcat:Dataset` _MAY_ have a `tern:coAuthor` where the value node is a `schema:Person` or `schema:Organization`." ; + sh:node :PersonOrg_Shape ; + sh:path tern:coAuthor ; + sh:severity sh:Violation + ] , + [ + sh:message "A `dcat:Dataset` _MAY_ have a `tern:mediator` where the value node is a `schema:Person` or `schema:Organization`." ; + sh:node :PersonOrg_Shape ; + sh:path tern:mediator ; + sh:severity sh:Violation + ] , + [ + sh:message "A `dcat:Dataset` _MAY_ have a `tern:rightsHolder` where the value node is a `schema:Person` or `schema:Organization`." ; + sh:node :PersonOrg_Shape ; + sh:path tern:rightsHolder ; + sh:severity sh:Violation + ] , + [ + sh:message "A `dcat:Dataset` _MAY_ have a `tern:contributor` where the value node is a `schema:Person` or `schema:Organization`." ; + sh:node :PersonOrg_Shape ; + sh:path tern:contributor ; + sh:severity sh:Violation + ] , + [ + sh:message "A `dcat:Dataset` _MAY_ have a `tern:stakeholder` where the value node is a `schema:Person` or `schema:Organization`." ; + sh:node :PersonOrg_Shape ; + sh:path tern:stakeholder ; + sh:severity sh:Violation + ] , [ sh:maxCount 1 ; sh:message "A `dcat:Dataset` _MUST_ have exactly 1 `dcterms:publisher` where the value node is a `schema:Person` or `schema:Organization`." ; sh:minCount 1 ; - sh:or ( - [ - sh:class schema:Person - ] - [ - sh:class schema:Organization - ] - ) ; + sh:node :PersonOrg_Shape ; sh:path dcterms:publisher ; sh:severity sh:Violation ] , @@ -954,14 +996,7 @@ PREFIX xsd: [ sh:message "A `dcat:Dataset` _MUST_ have at least 1 `dcat:contactPoint` where the value node is a `schema:Person` or `schema:Organization`." ; sh:minCount 1 ; - sh:or ( - [ - sh:class schema:Person - ] - [ - sh:class schema:Organization - ] - ) ; + sh:node :PersonOrg_Shape ; sh:path dcat:contactPoint ; sh:severity sh:Violation ] ; @@ -1096,6 +1131,12 @@ PREFIX xsd: sh:path dcat:accessURL ; sh:severity sh:Violation ] , + [ + sh:message "A `dcat:Distribution` _MAY_ have a `tern:distributor` where the value node is a `schema:Person` or `schema:Organization`." ; + sh:node :PersonOrg_Shape ; + sh:path tern:distributor ; + sh:severity sh:Violation + ] , [ sh:maxCount 1 ; sh:path dcat:mediaType ; @@ -1562,14 +1603,7 @@ PREFIX xsd: sh:property [ sh:path rdf:_ ; sh:message "A `rdf:Seq` _MAY_ have an `rdf:_N` where the value node is a `schema:Person` or `schema:Organization`." ; - sh:or ( - [ - sh:class schema:Person - ] - [ - sh:class schema:Organization - ] - ) ; + sh:node :PersonOrg_Shape ; sh:severity sh:Violation ] ; sh:targetClass rdf:Seq ; @@ -1701,6 +1735,21 @@ PREFIX xsd: ) ; . +:PersonOrg_Shape + a sh:NodeShape ; + rdfs:label "Person and Organization" ; + rdfs:comment "The union of Person and Organization" ; + sh:message "The node is either a Person or Organization" ; + sh:or ( + [ + sh:class schema:Person + ] + [ + sh:class schema:Organization + ] + ) ; +. + :NumericDataType_Shape a sh:NodeShape ; rdfs:label "Numeric datatype" ; From 904b7b2df0c4ffece5878d87b2e65229df807ec9 Mon Sep 17 00:00:00 2001 From: Junrong Yu Date: Thu, 3 Oct 2024 17:32:09 +1000 Subject: [PATCH 23/26] Updated DCAT shapes to be consistent with latest DCAT mapping --- docs/dcat-shapes.ttl | 168 ++++++++++++++++++++----------------------- 1 file changed, 77 insertions(+), 91 deletions(-) diff --git a/docs/dcat-shapes.ttl b/docs/dcat-shapes.ttl index 921bd52..78f1e7d 100644 --- a/docs/dcat-shapes.ttl +++ b/docs/dcat-shapes.ttl @@ -45,9 +45,7 @@ PREFIX xsd: ] , [ sh:datatype xsd:anyURI ; - sh:maxCount 1 ; - sh:message "A `dcat:CatalogRecord` _MUST_ have exactly 1 `dcat:landingPage` predicate where the value node is a literal with the datatype `xsd:anyURI`." ; - sh:minCount 1 ; + sh:message "A `dcat:CatalogRecord` _MAY_ have a `dcat:landingPage` predicate where the value node is a literal with the datatype `xsd:anyURI`." ; sh:nodeKind sh:Literal ; sh:path dcat:landingPage ; sh:severity sh:Violation @@ -102,20 +100,9 @@ PREFIX xsd: ] , [ sh:maxCount 1 ; - sh:message "A `dcat:CatalogRecord` _MUST_ have exactly 1 `dcterms:identifier` where the value node is an IRI or literal." ; + sh:message "A `dcat:CatalogRecord` _MUST_ have exactly 1 `dcterms:identifier` where the value node is a literal." ; sh:minCount 1 ; - sh:or ( - [ - sh:datatype xsd:anyURI ; - sh:nodeKind sh:Literal ; - sh:severity sh:Violation - ] - [ - sh:datatype xsd:string ; - sh:nodeKind sh:Literal ; - sh:severity sh:Violation - ] - ) ; + sh:nodeKind sh:Literal ; sh:path dcterms:identifier ; sh:severity sh:Violation ] , @@ -156,7 +143,8 @@ PREFIX xsd: rdfs:label "Catalog"@en ; sh:property [ - sh:message "A `dcat:Catalog` _MAY_ have a `dcterms:language` predicate where the value node is an IRI." ; + sh:message "A `dcat:Catalog` _MUST_ have at least 1 `dcterms:language` predicate where the value node is an IRI." ; + sh:minCount 1 ; sh:nodeKind sh:IRI ; sh:path dcterms:language ; sh:severity sh:Violation @@ -246,8 +234,7 @@ PREFIX xsd: ] , [ sh:maxCount 1 ; - sh:message "A `dcat:Catalog` _MUST_ have exactly 1 `skos:notation`." ; - sh:minCount 1 ; + sh:message "A `dcat:Catalog` _May_ have maximum 1 of `skos:notation` where the value is a literal." ; sh:nodeKind sh:Literal ; sh:path skos:notation ; sh:severity sh:Violation @@ -261,11 +248,10 @@ PREFIX xsd: ] , [ sh:maxCount 1 ; - sh:message "A `dcat:Catalog` _MUST_ have exactly 1 `dcterms:identifier` where the value node is an IRI or literal with the datatype `xsd:anyURI`." ; + sh:message "A `dcat:Catalog` _MUST_ have exactly 1 `dcterms:identifier` where the value node is an IRI or literal." ; sh:minCount 1 ; sh:or ( [ - sh:datatype xsd:anyURI ; sh:nodeKind sh:Literal ; sh:severity sh:Violation ] @@ -288,14 +274,25 @@ PREFIX xsd: sh:targetClass dcat:Catalog ; . -:CategoryScheme_Shape +:ConceptScheme_Shape a sh:NodeShape ; - rdfs:label "Category Scheme"@en ; - sh:property [ + rdfs:label "Concept Scheme"@en ; + sh:property + [ + sh:maxCount 1 ; + sh:message "A `skos:ConceptScheme` _MUST_ have exactly 1 `skos:prefLabel` where the value node is a literal." ; sh:minCount 1 ; sh:nodeKind sh:Literal ; sh:path skos:prefLabel ; sh:severity sh:Violation + ] , + [ + sh:maxCount 1 ; + sh:message "A `skos:ConceptScheme` _MUST_ have exactly 1 `dcterms:title` where the value node is a literal." ; + sh:minCount 1 ; + sh:nodeKind sh:Literal ; + sh:path dcterms:title ; + sh:severity sh:Violation ] ; sh:targetClass skos:ConceptScheme ; . @@ -379,8 +376,8 @@ PREFIX xsd: sh:severity sh:Violation ] , [ - sh:message "A `skos:Concept` _MAY_ have a `skos:inScheme` predicate where the value node is an IRI." ; - sh:nodeKind sh:IRI ; + sh:class skos:ConceptScheme ; + sh:message "A `skos:Concept` _MAY_ have a `skos:inScheme` predicate where the value node is a `skos:ConceptScheme`." ; sh:path skos:inScheme ; sh:severity sh:Violation ] , @@ -469,13 +466,14 @@ PREFIX xsd: sh:severity sh:Violation ] , [ + sh:message "A `dcat:DatasetSeries` _MUST_ have at least 1 `dcterms:title` where the value node is a literal." ; sh:minCount 1 ; sh:nodeKind sh:Literal ; sh:path dcterms:title ; sh:severity sh:Violation ] , [ - sh:minCount 1 ; + sh:message "A `dcat:DatasetSeries` _MAY_ have a `dcterms:description` where the value node is a literal." ; sh:nodeKind sh:Literal ; sh:path dcterms:description ; sh:severity sh:Violation @@ -519,10 +517,17 @@ PREFIX xsd: sh:property [ sh:class dcat:Distribution ; - sh:message "A `dcat:Dataset` _MAY_ have a `dcat:distribution` where the value node is `dcat:Distribution`." ; + sh:message "A `dcat:Dataset` _MUST_ have at least 1 `dcat:distribution` where the value node is `dcat:Distribution`." ; + sh:minCount 1 ; sh:path dcat:distribution ; sh:severity sh:Violation ] , + [ + sh:class skos:Concept ; + sh:message "A `dcat:Dataset` _MAY_ have a `dcterms:accessRights` where the value node is `skos:Concept`." ; + sh:path dcterms:accessRights ; + sh:severity sh:Violation + ] , [ sh:message "A `dcat:Dataset` _MAY_ have a `dcat:keyword` where the value node is a literal." ; sh:nodeKind sh:Literal ; @@ -541,6 +546,12 @@ PREFIX xsd: sh:path dcat:inSeries ; sh:severity sh:Violation ] , + [ + sh:message "A `dcat:Dataset` _MAY_ have 1 `tern:verticalExtent` predicate where the value node is a `tern:VerticalExtent`." ; + sh:class tern:VerticalExtent ; + sh:path tern:verticalExtent ; + sh:severity sh:Violation + ] , [ sh:path dcterms:spatial ; sh:severity sh:Violation @@ -558,15 +569,8 @@ PREFIX xsd: sh:severity sh:Violation ] , [ - sh:message "A `dcat:Dataset` _MAY_ have a `dcat:theme` where the value is a literal or `skos:Concept`." ; - sh:or ( - [ - sh:nodeKind sh:Literal - ] - [ - sh:class skos:Concept - ] - ) ; + sh:class skos:Concept ; + sh:message "A `dcat:Dataset` _MAY_ have a `dcat:theme` where the value is a `skos:Concept`." ; sh:path dcat:theme ; sh:severity sh:Violation ] , @@ -621,10 +625,9 @@ PREFIX xsd: sh:severity sh:Violation ] , [ - sh:class skos:Concept ; sh:maxCount 1 ; - sh:message "A `dcat:Dataset` _MUST_ have exactly 1 `adms:status` predicate where the value node is `skos:Concept`." ; - sh:minCount 1 ; + sh:message "A `dcat:Dataset` _MUST_ have maximum 1 `adms:status` predicate where the value node is `sh:IRI`." ; + sh:nodeKind sh:IRI ; sh:path adms:status ; sh:severity sh:Violation ] , @@ -665,6 +668,12 @@ PREFIX xsd: sh:path tern:otherConstraints ; sh:severity sh:Violation ] , + [ + sh:class dcterms:RightsStatement ; + sh:message "A `dcat:Dataset` _MAY_ have a `dcterms:rights` predicate where the value node is `dcterms:RightsStatement`." ; + sh:path dcterms:rights ; + sh:severity sh:Violation + ] , [ sh:class geo:Geometry ; sh:message "A `dcat:Dataset` _MAY_ have a `geo:hasGeometry` predicate where the value node is `geo:Geometry`." ; @@ -705,12 +714,6 @@ PREFIX xsd: sh:path dcterms:subject ; sh:severity sh:Violation ] , - [ - sh:message "A `dcat:Dataset` _MAY_ have a `skos:inScheme` predicate where the value node is `sh:IRI`." ; - sh:nodeKind sh:IRI ; - sh:path skos:inScheme ; - sh:severity sh:Violation - ] , [ sh:path dcterms:conformsTo ; sh:severity sh:Violation @@ -755,6 +758,12 @@ PREFIX xsd: sh:path tern:addtionalDocumentation ; sh:severity sh:Violation ] , + [ + sh:class rdfs:Resource ; + sh:message "A `dcat:Dataset` _MAY_ have a `dcterms:relation` predicate where the value node is `rdfs:Resource`." ; + sh:path dcterms:relation ; + sh:severity sh:Violation + ] , [ sh:path dcterms:source ; sh:severity sh:Violation @@ -775,8 +784,7 @@ PREFIX xsd: sh:severity sh:Violation ] , [ - sh:datatype xsd:anyURI ; - sh:message "A `dcat:Dataset` _MAY_ have an `adms:identifier` predicate where the value node is a literal with datatype `xsd:anyURI`." ; + sh:message "A `dcat:Dataset` _MAY_ have an `adms:identifier` predicate where the value node is a literal." ; sh:nodeKind sh:Literal ; sh:path adms:identifier ; sh:severity sh:Violation @@ -916,12 +924,6 @@ PREFIX xsd: sh:path tern:sponsor ; sh:severity sh:Violation ] , - [ - sh:message "A `dcat:Dataset` _MAY_ have a `tern:coAuthor` where the value node is a `schema:Person` or `schema:Organization`." ; - sh:node :PersonOrg_Shape ; - sh:path tern:coAuthor ; - sh:severity sh:Violation - ] , [ sh:message "A `dcat:Dataset` _MAY_ have a `tern:mediator` where the value node is a `schema:Person` or `schema:Organization`." ; sh:node :PersonOrg_Shape ; @@ -974,22 +976,10 @@ PREFIX xsd: sh:severity sh:Violation ] , [ - sh:datatype xsd:anyURI ; sh:maxCount 1 ; - sh:message "A `dcat:Dataset` _MUST_ have exactly 1 `dcterms:identifier` where the value node is a literal with datatype `xsd:anyURI` or `xsd:string`." ; + sh:message "A `dcat:Dataset` _MUST_ have exactly 1 `dcterms:identifier` where the value node is a literal." ; sh:minCount 1 ; - sh:or ( - [ - sh:datatype xsd:anyURI ; - sh:nodeKind sh:Literal ; - sh:severity sh:Violation - ] - [ - sh:datatype xsd:string ; - sh:nodeKind sh:Literal ; - sh:severity sh:Violation - ] - ) ; + sh:nodeKind sh:Literal ; sh:path dcterms:identifier ; sh:severity sh:Violation ] , @@ -1042,12 +1032,6 @@ PREFIX xsd: sh:path dcat:spatialResolutionInMeters ; sh:severity sh:Violation ] , - [ - sh:minCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:path dcat:accessURL ; - sh:severity sh:Violation - ] , [ sh:nodeKind sh:Literal ; sh:path dcterms:description ; @@ -1137,6 +1121,13 @@ PREFIX xsd: sh:path tern:distributor ; sh:severity sh:Violation ] , + [ + sh:message "A `dcat:Distribution` _MUST_ have at least 1 `tern:producer` where the value node is a `schema:Person` or `schema:Organization`." ; + sh:minCount 1 ; + sh:node :PersonOrg_Shape ; + sh:path tern:producer ; + sh:severity sh:Violation + ] , [ sh:maxCount 1 ; sh:path dcat:mediaType ; @@ -1168,9 +1159,9 @@ PREFIX xsd: sh:targetClass geo:Geometry ; . -:LicenceDocument_Shape +:LicenseDocument_Shape a sh:NodeShape ; - rdfs:label "Licence Document"@en ; + rdfs:label "License Document"@en ; sh:property [ sh:message "A `dcterms:LicenseDocument` _MUST_ have at least 1 `dcterms:type` where the value node is an IRI." ; @@ -1193,9 +1184,8 @@ PREFIX xsd: sh:severity sh:Violation ] , [ - sh:datatype xsd:anyURI ; sh:maxCount 1 ; - sh:message "A `dcterms:LicenseDocument` _MUST_ have exactly 1 `dcterms:identifier` where the value node is a literal with the datatype `xsd:anyURI`." ; + sh:message "A `dcterms:LicenseDocument` _MUST_ have exactly 1 `dcterms:identifier` where the value node is a literal." ; sh:minCount 1 ; sh:nodeKind sh:Literal ; sh:path dcterms:identifier ; @@ -1209,10 +1199,9 @@ PREFIX xsd: rdfs:label "Method"@en ; sh:property [ - sh:datatype xsd:string ; sh:maxCount 1 ; - sh:message "A `tern:Method` _MAY_ have a maximum of 1 `tern:scope` where the value node is a literal with the datatype `xsd:string`." ; - sh:nodeKind sh:Literal ; + sh:message "A `tern:Method` _MAY_ have a maximum of 1 `tern:scope` where the value node is a `sh:IRI`." ; + sh:nodeKind sh:IRI ; sh:path tern:scope ; sh:severity sh:Violation ] , @@ -1419,8 +1408,8 @@ PREFIX xsd: sh:severity sh:Violation ] , [ - sh:message "A `schema:Person` _MAY_ have a `schema:affiliation` where the value node is an IRI." ; - sh:nodeKind sh:IRI ; + sh:class schema:Organization ; + sh:message "A `schema:Person` _MAY_ have a `schema:affiliation` where the value node is a `schema:Organization`." ; sh:path schema:affiliation ; sh:severity sh:Violation ] , @@ -1550,18 +1539,16 @@ PREFIX xsd: sh:severity sh:Violation ] , [ + sh:class dcterms:Standard ; sh:maxCount 1 ; - sh:message "A `rdfs:Resource` _MUST_ have exactly 1 `dcterms:conformsTo` predicate where the value node is `sh:IRI`." ; + sh:message "A `rdfs:Resource` _MUST_ have exactly 1 `dcterms:conformsTo` predicate where the value node is `dcterms:Standard`." ; sh:minCount 1 ; - sh:nodeKind sh:IRI ; sh:path dcterms:conformsTo ; sh:severity sh:Violation ] , [ - sh:maxCount 1 ; - sh:message "A `rdfs:Resource` _MUST_ have exactly 1 `dcterms:type` predicate where the value node is `sh:IRI`." ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; + sh:class skos:Concept ; + sh:message "A `rdfs:Resource` _MAY_ have a `dcterms:type` predicate where the value node is `skos:Concept`." ; sh:path dcterms:type ; sh:severity sh:Violation ] , @@ -1574,9 +1561,8 @@ PREFIX xsd: sh:severity sh:Violation ] , [ - sh:datatype xsd:string ; sh:maxCount 1 ; - sh:message "A `rdfs:Resource` _MAY_ have a maximum of 1 `dcterms:format` where the value is a literal with datatype `xsd:string`." ; + sh:message "A `rdfs:Resource` _MAY_ have a maximum of 1 `dcterms:format` where the value is a literal." ; sh:path dcterms:format ; sh:severity sh:Violation ] ; From bd6651df0bed55cbadec177fcc059756bcf04535 Mon Sep 17 00:00:00 2001 From: Junrong Yu Date: Thu, 10 Oct 2024 09:34:40 +1000 Subject: [PATCH 24/26] Removed non-used properties for Dataset --- docs/dcat-shapes.ttl | 28 ---------------------------- 1 file changed, 28 deletions(-) diff --git a/docs/dcat-shapes.ttl b/docs/dcat-shapes.ttl index 78f1e7d..e7a10a5 100644 --- a/docs/dcat-shapes.ttl +++ b/docs/dcat-shapes.ttl @@ -668,12 +668,6 @@ PREFIX xsd: sh:path tern:otherConstraints ; sh:severity sh:Violation ] , - [ - sh:class dcterms:RightsStatement ; - sh:message "A `dcat:Dataset` _MAY_ have a `dcterms:rights` predicate where the value node is `dcterms:RightsStatement`." ; - sh:path dcterms:rights ; - sh:severity sh:Violation - ] , [ sh:class geo:Geometry ; sh:message "A `dcat:Dataset` _MAY_ have a `geo:hasGeometry` predicate where the value node is `geo:Geometry`." ; @@ -818,22 +812,6 @@ PREFIX xsd: sh:path prov:wasGeneratedBy ; sh:severity sh:Violation ] , - [ - sh:datatype xsd:duration ; - sh:maxCount 1 ; - sh:message "A `dcat:Dataset` _MAY_ have a maximum of 1 `dcat:temporalResolution` predicate where the value node is a literal with datatype `xsd:duration`." ; - sh:nodeKind sh:Literal ; - sh:path dcat:temporalResolution ; - sh:severity sh:Violation - ] , - [ - sh:datatype xsd:decimal ; - sh:maxCount 1 ; - sh:message "A `dcat:Dataset` _MAY_ have a maximum of 1 `dcat:spatialResolutionInMeters` predicate where the value node is a literal with datatype `xsd:decimal`." ; - sh:nodeKind sh:Literal ; - sh:path dcat:spatialResolutionInMeters ; - sh:severity sh:Violation - ] , [ sh:class rdf:Seq ; sh:message "A `dcat:Dataset` _MAY_ have a `dcterms:creator` where the value node is a `rdf:Seq`." ; @@ -962,12 +940,6 @@ PREFIX xsd: sh:path tern:purpose ; sh:severity sh:Violation ] , - [ - sh:message "A `dcat:Dataset` _MAY_ have a `dcatap:applicableLegislation` where the value node is `sh:IRI`." ; - sh:nodeKind sh:IRI ; - sh:path dcatap:applicableLegislation ; - sh:severity sh:Violation - ] , [ sh:message "A `dcat:Dataset` _MUST_ have at least 1 `dcterms:title` where the value node is a literal." ; sh:minCount 1 ; From a795d0ed9e52944cd8bb8b1916fdbf624977cee1 Mon Sep 17 00:00:00 2001 From: Junrong Yu Date: Thu, 10 Oct 2024 11:33:37 +1000 Subject: [PATCH 25/26] Updated shapes based on V4 mapping diagram, mostly cardinality --- docs/dcat-shapes.ttl | 182 +++++++++++++++++++++++++++---------------- 1 file changed, 113 insertions(+), 69 deletions(-) diff --git a/docs/dcat-shapes.ttl b/docs/dcat-shapes.ttl index e7a10a5..2cae56b 100644 --- a/docs/dcat-shapes.ttl +++ b/docs/dcat-shapes.ttl @@ -45,7 +45,8 @@ PREFIX xsd: ] , [ sh:datatype xsd:anyURI ; - sh:message "A `dcat:CatalogRecord` _MAY_ have a `dcat:landingPage` predicate where the value node is a literal with the datatype `xsd:anyURI`." ; + sh:maxCount 1 ; + sh:message "A `dcat:CatalogRecord` _MAY_ have maximum 1 `dcat:landingPage` predicate where the value node is a literal with the datatype `xsd:anyURI`." ; sh:nodeKind sh:Literal ; sh:path dcat:landingPage ; sh:severity sh:Violation @@ -86,7 +87,8 @@ PREFIX xsd: sh:shape :DateOrDateTimeDataType_Shape ] , [ - sh:message "A `dcat:CatalogRecord` _MAY_ have a `dcterms:title` predicate where the value node is a literal value." ; + sh:maxCount 1 ; + sh:message "A `dcat:CatalogRecord` _MAY_ have maximum 1 `dcterms:title` predicate where the value node is a literal value." ; sh:nodeKind sh:Literal ; sh:path dcterms:title ; sh:severity sh:Violation @@ -143,7 +145,8 @@ PREFIX xsd: rdfs:label "Catalog"@en ; sh:property [ - sh:message "A `dcat:Catalog` _MUST_ have at least 1 `dcterms:language` predicate where the value node is an IRI." ; + sh:maxCount 1 ; + sh:message "A `dcat:Catalog` _MUST_ have exactly 1 `dcterms:language` predicate where the value node is an IRI." ; sh:minCount 1 ; sh:nodeKind sh:IRI ; sh:path dcterms:language ; @@ -173,11 +176,11 @@ PREFIX xsd: sh:severity sh:Violation ] , [ + sh:maxCount 1 ; sh:path dcterms:hasPart ; sh:severity sh:Violation ] , [ - sh:maxCount 1 ; sh:path dcterms:isPartOf ; sh:severity sh:Violation ] , @@ -194,6 +197,8 @@ PREFIX xsd: sh:severity sh:Violation ] , [ + sh:class dcat:CatalogRecord ; + sh:message "A `dcat:Catalog` _MAY_ have a `dcat:record` predicate where the value node is a `dcat:CatalogRecord`." ; sh:path dcat:record ; sh:severity sh:Violation ] , @@ -215,7 +220,8 @@ PREFIX xsd: ] , [ sh:class dcat:Dataset ; - sh:message "A `dcat:Catalog` _MAY_ have a `dcat:dataset predicate where the value node is a `dcat:Dataset`." ; + sh:maxCount 1 ; + sh:message "A `dcat:Catalog` _MAY_ have maximum 1 `dcat:dataset predicate where the value node is a `dcat:Dataset`." ; sh:path dcat:dataset ; sh:severity sh:Violation ] , @@ -233,14 +239,14 @@ PREFIX xsd: sh:severity sh:Violation ] , [ - sh:maxCount 1 ; - sh:message "A `dcat:Catalog` _May_ have maximum 1 of `skos:notation` where the value is a literal." ; + sh:message "A `dcat:Catalog` _MAY_ have a `skos:notation` where the value is a literal." ; sh:nodeKind sh:Literal ; sh:path skos:notation ; sh:severity sh:Violation ] , [ - sh:message "A `dcat:Catalog` _MUST_ have at least 1 `dcterms:title` where the value node is literal." ; + sh:maxCount 1 ; + sh:message "A `dcat:Catalog` _MUST_ have exactly 1 `dcterms:title` where the value node is literal." ; sh:minCount 1 ; sh:nodeKind sh:Literal ; sh:path dcterms:title ; @@ -285,14 +291,6 @@ PREFIX xsd: sh:nodeKind sh:Literal ; sh:path skos:prefLabel ; sh:severity sh:Violation - ] , - [ - sh:maxCount 1 ; - sh:message "A `skos:ConceptScheme` _MUST_ have exactly 1 `dcterms:title` where the value node is a literal." ; - sh:minCount 1 ; - sh:nodeKind sh:Literal ; - sh:path dcterms:title ; - sh:severity sh:Violation ] ; sh:targetClass skos:ConceptScheme ; . @@ -363,21 +361,24 @@ PREFIX xsd: rdfs:label "Concept"@en ; sh:property [ - sh:message "A `skos:Concept` _MUST_ have at least 1 `skos:prefLabel` where the value node is a literal." ; + sh:maxCount 1 ; + sh:message "A `skos:Concept` _MUST_ have exactly 1 `skos:prefLabel` where the value node is a literal." ; sh:minCount 1 ; sh:nodeKind sh:Literal ; sh:path skos:prefLabel ; sh:severity sh:Violation ] , [ - sh:message "A `skos:Concept` _MAY_ have a `tern:unit` predicate where the value node is a `qudt:Unit`." ; + sh:maxCount 1 ; + sh:message "A `skos:Concept` _MAY_ have maximum 1 `tern:unit` predicate where the value node is a `qudt:Unit`." ; sh:class qudt:Unit ; sh:path tern:unit ; sh:severity sh:Violation ] , [ sh:class skos:ConceptScheme ; - sh:message "A `skos:Concept` _MAY_ have a `skos:inScheme` predicate where the value node is a `skos:ConceptScheme`." ; + sh:maxCount 1 ; + sh:message "A `skos:Concept` _MAY_ have maximum 1 `skos:inScheme` predicate where the value node is a `skos:ConceptScheme`." ; sh:path skos:inScheme ; sh:severity sh:Violation ] , @@ -391,6 +392,42 @@ PREFIX xsd: sh:targetClass skos:Concept ; . +:DataQuality_Shape + a sh:NodeShape ; + rdfs:label "Data Quality"@en ; + sh:property + [ + sh:maxCount 1 ; + sh:message "A `tern:DataQuality` _MAY_ have maximum 1 `tern:DQ_descriptiveResult` where the value is a literal." ; + sh:nodeKind sh:Literal ; + sh:path tern:DQ_descriptiveResult ; + sh:severity sh:Violation + ] , + [ + sh:maxCount 1 ; + sh:message "A `tern:DataQuality` _MAY_ have maximum 1 `tern:DQ_scopeDescription` where the value is a literal." ; + sh:nodeKind sh:Literal ; + sh:path tern:DQ_scopeDescription ; + sh:severity sh:Violation + ] , + [ + sh:class rdfs:Resource ; + sh:maxCount 1 ; + sh:message "A `tern:DataQuality` _MAY_ have maximum 1 `tern:DQ_standaloneQualityReport` predicate where the value node is a `rdfs:Resource`." ; + sh:path tern:DQ_standaloneQualityReport ; + sh:severity sh:Violation + ] , + [ + sh:class skos:Concept ; + sh:maxCount 1 ; + sh:message "A `tern:DataQuality` _MUST_ have exactly 1 `tern:DQ_scope` where the value node is a `skos:Concept`." ; + sh:minCount 1 ; + sh:path tern:DQ_scope ; + sh:severity sh:Violation + ] ; + sh:targetClass tern:DataQuality ; +. + :DataService_Shape a sh:NodeShape ; rdfs:label "Data Service"@en ; @@ -466,8 +503,7 @@ PREFIX xsd: sh:severity sh:Violation ] , [ - sh:message "A `dcat:DatasetSeries` _MUST_ have at least 1 `dcterms:title` where the value node is a literal." ; - sh:minCount 1 ; + sh:message "A `dcat:DatasetSeries` _MAY_ have a `dcterms:title` where the value node is a literal." ; sh:nodeKind sh:Literal ; sh:path dcterms:title ; sh:severity sh:Violation @@ -535,7 +571,8 @@ PREFIX xsd: sh:severity sh:Violation ] , [ - sh:message "A `dcat:Dataset` _MAY_ have a `tern:dataQuality` where the value node is a `tern:DataQuality`." ; + sh:maxCount 1 ; + sh:message "A `dcat:Dataset` _MAY_ have maximum 1 `tern:dataQuality` where the value node is a `tern:DataQuality`." ; sh:class tern:DataQuality ; sh:path tern:dataQuality ; sh:severity sh:Violation @@ -546,22 +583,10 @@ PREFIX xsd: sh:path dcat:inSeries ; sh:severity sh:Violation ] , - [ - sh:message "A `dcat:Dataset` _MAY_ have 1 `tern:verticalExtent` predicate where the value node is a `tern:VerticalExtent`." ; - sh:class tern:VerticalExtent ; - sh:path tern:verticalExtent ; - sh:severity sh:Violation - ] , [ sh:path dcterms:spatial ; sh:severity sh:Violation ] , - [ - sh:class dcterms:PeriodOfTime ; - sh:message "A `dcat:Dataset` _MAY_ have a `dcterms:temporal` where the value node is `dcterms:PeriodOfTime`." ; - sh:path dcterms:temporal ; - sh:severity sh:Violation - ] , [ sh:class dqv:QualityAnnotation ; sh:message "A `dcat:Dataset` _MAY_ have a `dqv:hasQualityAnnotation` where the value node is `dqv:QualityAnnotation`." ; @@ -604,7 +629,8 @@ PREFIX xsd: ] , [ sh:class tern:Method ; - sh:message "A `dcat:Dataset` _MAY_ have a `sosa:usedProcedure` where the value is `tern:Method`." ; + sh:maxCount 1 ; + sh:message "A `dcat:Dataset` _MAY_ have maximum 1 `sosa:usedProcedure` where the value is `tern:Method`." ; sh:path sosa:usedProcedure ; sh:severity sh:Violation ] , @@ -633,8 +659,7 @@ PREFIX xsd: ] , [ sh:class dcterms:LicenseDocument ; - sh:maxCount 1 ; - sh:message "A `dcat:Dataset` _MAY_ have a maximum of 1 `dcterms:license` predicate where the value node is `dcterms:LicenseDocument`." ; + sh:message "A `dcat:Dataset` _MAY_ have a `dcterms:license` predicate where the value node is `dcterms:LicenseDocument`." ; sh:path dcterms:license ; sh:severity sh:Violation ] , @@ -669,22 +694,17 @@ PREFIX xsd: sh:severity sh:Violation ] , [ - sh:class geo:Geometry ; - sh:message "A `dcat:Dataset` _MAY_ have a `geo:hasGeometry` predicate where the value node is `geo:Geometry`." ; - sh:path geo:hasGeometry ; - sh:severity sh:Violation - ] , - [ - sh:message "A `dcat:Dataset` _MUST_ have at least 1 `schema:abstract` predicate where the value node is a literal." ; + sh:maxCount 1 ; + sh:message "A `dcat:Dataset` _MUST_ have exactly 1 `schema:abstract` predicate where the value node is a literal." ; sh:minCount 1 ; sh:nodeKind sh:Literal ; sh:path schema:abstract ; sh:severity sh:Violation ] , [ + sh:class tern:Extent ; sh:message "A `dcat:Dataset` _MUST_ have at least 1 `tern:hasExtent` predicate where the value node is a `tern:Extent`." ; sh:minCount 1 ; - sh:class tern:Extent ; sh:path tern:hasExtent ; sh:severity sh:Violation ] , @@ -709,6 +729,9 @@ PREFIX xsd: sh:severity sh:Violation ] , [ + sh:maxCount 1 ; + sh:message "A `dcat:Dataset` _MUST_ have maximum 1 `dcterms:conformsTo` predicate where the value node is `sh:IRI`." ; + sh:nodeKind sh:IRI ; sh:path dcterms:conformsTo ; sh:severity sh:Violation ] , @@ -778,7 +801,8 @@ PREFIX xsd: sh:severity sh:Violation ] , [ - sh:message "A `dcat:Dataset` _MAY_ have an `adms:identifier` predicate where the value node is a literal." ; + sh:maxCount 1 ; + sh:message "A `dcat:Dataset` _MAY_ have maximum 1 `adms:identifier` predicate where the value node is a literal." ; sh:nodeKind sh:Literal ; sh:path adms:identifier ; sh:severity sh:Violation @@ -927,8 +951,7 @@ PREFIX xsd: sh:severity sh:Violation ] , [ - sh:maxCount 1 ; - sh:message "A `dcat:Dataset` _MUST_ have exactly 1 `dcterms:publisher` where the value node is a `schema:Person` or `schema:Organization`." ; + sh:message "A `dcat:Dataset` _MUST_ have at least 1 `dcterms:publisher` where the value node is a `schema:Person` or `schema:Organization`." ; sh:minCount 1 ; sh:node :PersonOrg_Shape ; sh:path dcterms:publisher ; @@ -941,7 +964,8 @@ PREFIX xsd: sh:severity sh:Violation ] , [ - sh:message "A `dcat:Dataset` _MUST_ have at least 1 `dcterms:title` where the value node is a literal." ; + sh:maxCount 1 ; + sh:message "A `dcat:Dataset` _MUST_ have exactly 1 `dcterms:title` where the value node is a literal." ; sh:minCount 1 ; sh:nodeKind sh:Literal ; sh:path dcterms:title ; @@ -1082,20 +1106,21 @@ PREFIX xsd: ] , [ sh:class rdfs:Resource ; - sh:message "A `dcat:Distribution` _MUST_ have at least 1 `dcat:accessURL` predicate where the value node is `rdfs:Resource`." ; + sh:maxCount 1 ; + sh:message "A `dcat:Distribution` _MUST_ have exactly 1 `dcat:accessURL` predicate where the value node is `rdfs:Resource`." ; sh:minCount 1 ; sh:path dcat:accessURL ; sh:severity sh:Violation ] , [ - sh:message "A `dcat:Distribution` _MAY_ have a `tern:distributor` where the value node is a `schema:Person` or `schema:Organization`." ; + sh:message "A `dcat:Distribution` _MUST_ have at least 1 `tern:distributor` where the value node is a `schema:Person` or `schema:Organization`." ; + sh:minCount 1 ; sh:node :PersonOrg_Shape ; sh:path tern:distributor ; sh:severity sh:Violation ] , [ - sh:message "A `dcat:Distribution` _MUST_ have at least 1 `tern:producer` where the value node is a `schema:Person` or `schema:Organization`." ; - sh:minCount 1 ; + sh:message "A `dcat:Distribution` _MAY_ have a `tern:producer` where the value node is a `schema:Person` or `schema:Organization`." ; sh:node :PersonOrg_Shape ; sh:path tern:producer ; sh:severity sh:Violation @@ -1136,14 +1161,16 @@ PREFIX xsd: rdfs:label "License Document"@en ; sh:property [ - sh:message "A `dcterms:LicenseDocument` _MUST_ have at least 1 `dcterms:type` where the value node is an IRI." ; + sh:maxCount 1 ; + sh:message "A `dcterms:LicenseDocument` _MUST_ have exactly 1 `dcterms:type` where the value node is an IRI." ; sh:minCount 1 ; sh:nodeKind sh:IRI ; sh:path dcterms:type ; sh:severity sh:Violation ] , [ - sh:message "A `dcterms:LicenseDocument` _MUST_ have at least 1 `dcterms:title` where the value node is a literal." ; + sh:maxCount 1 ; + sh:message "A `dcterms:LicenseDocument` _MUST_ have exactly 1 `dcterms:title` where the value node is a literal." ; sh:minCount 1 ; sh:nodeKind sh:Literal ; sh:path dcterms:title ; @@ -1186,8 +1213,16 @@ PREFIX xsd: ] , [ sh:class rdfs:Resource ; - sh:message "A `tern:Method` _MAY_ have a `dcterms:source` where the value node is `rdfs:Resource`." ; - sh:path dcterms:source ; + sh:maxCount 1 ; + sh:message "A `tern:Method` _MAY_ have maximum 1 `tern:otherDocumentation` where the value node is `rdfs:Resource`." ; + sh:path tern:otherDocumentation ; + sh:severity sh:Violation + ] , + [ + sh:maxCount 1 ; + sh:message "A `tern:Method` _MAY_ have maximum 1 `dcterms:description` where the value is a literal." ; + sh:nodeKind sh:Literal ; + sh:path dcterms:description ; sh:severity sh:Violation ] ; sh:targetClass tern:Method ; @@ -1199,14 +1234,16 @@ PREFIX xsd: sh:property [ sh:datatype xsd:string ; - sh:message "A `schema:Organization` _MUST_ have at least 1 `schema:name` where the value node is a literal with the datatype `xsd:string`." ; + sh:maxCount 1 ; + sh:message "A `schema:Organization` _MUST_ have exactly 1 `schema:name` where the value node is a literal with the datatype `xsd:string`." ; sh:minCount 1 ; sh:nodeKind sh:Literal ; sh:path schema:name ; sh:severity sh:Violation ] , [ - sh:message "A `schema:Organization` _MUST_ have at least 1 `dcterms:identifier` where the value node is an IRI or literal." ; + sh:maxCount 1 ; + sh:message "A `schema:Organization` _MUST_ have exactly 1 `dcterms:identifier` where the value node is an IRI or literal." ; sh:minCount 1 ; sh:or ( [ @@ -1223,14 +1260,16 @@ PREFIX xsd: ] , [ sh:datatype xsd:string ; - sh:message "A `schema:Organization` _MAY_ have a `schema:email` where the value node is a literal with the datatype `xsd:string`." ; + sh:maxCount 1 ; + sh:message "A `schema:Organization` _MAY_ have maximum 1 `schema:email` where the value node is a literal with the datatype `xsd:string`." ; sh:nodeKind sh:Literal ; sh:path schema:email ; sh:severity sh:Violation ] , [ sh:datatype xsd:string ; - sh:message "A `schema:Organization` _MAY_ have a `schema:telephone` where the value node is a literal with the datatype `xsd:string`." ; + sh:maxCount 1 ; + sh:message "A `schema:Organization` _MAY_ have maximum 1 `schema:telephone` where the value node is a literal with the datatype `xsd:string`." ; sh:nodeKind sh:Literal ; sh:path schema:telephone ; sh:severity sh:Violation @@ -1317,7 +1356,8 @@ PREFIX xsd: sh:property [ sh:datatype xsd:string ; - sh:message "A `schema:Person` _MUST_ have at least 1 `schema:name` where the value node is a literal with the datatype `xsd:string`." ; + sh:maxCount 1 ; + sh:message "A `schema:Person` _MUST_ have exactly 1 `schema:name` where the value node is a literal with the datatype `xsd:string`." ; sh:minCount 1 ; sh:nodeKind sh:Literal ; sh:path schema:name ; @@ -1364,7 +1404,8 @@ PREFIX xsd: sh:severity sh:Violation ] , [ - sh:message "A `schema:Person` _MUST_ have at least 1 `dcterms:identifier` where the value node is an IRI or literal." ; + sh:maxCount 1 ; + sh:message "A `schema:Person` _MUST_ have exactly 1 `dcterms:identifier` where the value node is an IRI or literal." ; sh:minCount 1 ; sh:or ( [ @@ -1387,14 +1428,16 @@ PREFIX xsd: ] , [ sh:datatype xsd:string ; - sh:message "A `schema:Person` _MAY_ have a `schema:email` where the value node is a literal with the datatype `xsd:string`." ; + sh:maxCount 1 ; + sh:message "A `schema:Person` _MAY_ have maximum 1 `schema:email` where the value node is a literal with the datatype `xsd:string`." ; sh:nodeKind sh:Literal ; sh:path schema:email ; sh:severity sh:Violation ] , [ sh:datatype xsd:string ; - sh:message "A `schema:Person` _MAY_ have a `schema:telephone` where the value node is a literal with the datatype `xsd:string`." ; + sh:maxCount 1 ; + sh:message "A `schema:Person` _MAY_ have maximum 1 `schema:telephone` where the value node is a literal with the datatype `xsd:string`." ; sh:nodeKind sh:Literal ; sh:path schema:telephone ; sh:severity sh:Violation @@ -1513,14 +1556,14 @@ PREFIX xsd: [ sh:class dcterms:Standard ; sh:maxCount 1 ; - sh:message "A `rdfs:Resource` _MUST_ have exactly 1 `dcterms:conformsTo` predicate where the value node is `dcterms:Standard`." ; - sh:minCount 1 ; + sh:message "A `rdfs:Resource` _MAY_ have maximum 1 `dcterms:conformsTo` predicate where the value node is `dcterms:Standard`." ; sh:path dcterms:conformsTo ; sh:severity sh:Violation ] , [ sh:class skos:Concept ; - sh:message "A `rdfs:Resource` _MAY_ have a `dcterms:type` predicate where the value node is `skos:Concept`." ; + sh:maxCount 1 ; + sh:message "A `rdfs:Resource` _MAY_ have maximum 1 `dcterms:type` predicate where the value node is `skos:Concept`." ; sh:path dcterms:type ; sh:severity sh:Violation ] , @@ -1649,7 +1692,8 @@ PREFIX xsd: rdfs:label "Extent"@en ; sh:property [ - sh:message "A `tern:Extent` _MAY_ have 1 `dcterms:temporal` predicate where the value node is a `dcterms:PeriodOfTime`." ; + sh:maxCount 1 ; + sh:message "A `tern:Extent` _MAY_ have maximum of 1 `dcterms:temporal` predicate where the value node is a `dcterms:PeriodOfTime`." ; sh:class dcterms:PeriodOfTime ; sh:path dcterms:temporal ; sh:severity sh:Violation From b811907df117211c9f73fa55c32fad4bbbefc778 Mon Sep 17 00:00:00 2001 From: Junrong Yu Date: Wed, 16 Oct 2024 14:45:51 +1000 Subject: [PATCH 26/26] Removed redundant shape for `dcat:inSeries` --- docs/dcat-shapes.ttl | 6 ------ 1 file changed, 6 deletions(-) diff --git a/docs/dcat-shapes.ttl b/docs/dcat-shapes.ttl index 2cae56b..5282e54 100644 --- a/docs/dcat-shapes.ttl +++ b/docs/dcat-shapes.ttl @@ -480,12 +480,6 @@ PREFIX xsd: a sh:NodeShape ; rdfs:label "Dataset Series"@en ; sh:property - [ - sh:inversePath dcat:inSeries ; - sh:minCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:severity sh:Warning - ] , [ sh:nodeKind sh:IRI ; sh:path dcatap:applicableLegislation ;