diff --git a/releases/1.2.1/dcat-ap_1.2.1_shacl_mdr-vocabularies.shape.ttl b/releases/1.2.1/dcat-ap_1.2.1_shacl_mdr-vocabularies.shape.ttl index 55c6a18..48cba44 100644 --- a/releases/1.2.1/dcat-ap_1.2.1_shacl_mdr-vocabularies.shape.ttl +++ b/releases/1.2.1/dcat-ap_1.2.1_shacl_mdr-vocabularies.shape.ttl @@ -1,449 +1,341 @@ -# baseURI: http://data.europa.eu/r5r/mdrcv -# imports: http://creativecommons.org/ns -# imports: http://datashapes.org/dash -# imports: http://purl.org/dc/terms/ -# imports: http://topbraid.org/schema/ -# imports: http://vocab.deri.ie/void -# imports: http://www.w3.org/2004/02/skos/core -# imports: http://www.w3.org/2006/vcard/ns -# imports: http://www.w3.org/2008/05/skos-xl -# imports: http://www.w3.org/ns/adms -# imports: http://www.w3.org/ns/dcat -# imports: http://www.w3.org/ns/org# -# imports: http://xmlns.com/foaf/0.1/ - -@prefix : . +@prefix rdf: . +@prefix : . @prefix adms: . -@prefix dash: . +@prefix cc: . @prefix dc: . @prefix dcat: . @prefix dct: . @prefix foaf: . +@prefix lcon: . @prefix org: . @prefix owl: . +@prefix odrl: . @prefix prov: . -@prefix rdf: . @prefix rdfs: . @prefix schema: . @prefix sh: . @prefix skos: . -@prefix skosxl: . @prefix spdx: . -@prefix tosh: . +@prefix time: . @prefix vcard: . -@prefix xml: . @prefix xsd: . +@prefix dcatap: . + + + + dcat:accessURL ; + dcat:downloadURL ; + dcatap:availability ; + dct:format ; + dct:conformsTo ; + dct:creator [ + rdfs:seeAlso ; + org:memberOf ; + foaf:homepage ; + foaf:name "Bert Van Nuffelen" + ], [ + rdfs:seeAlso ; + org:memberOf ; + foaf:homepage ; + foaf:name "Natasa Sofou" + ], [ + rdfs:seeAlso ; + org:memberOf ; + foaf:homepage ; + foaf:name "Eugeniu Costetchi" + ], [ + rdfs:seeAlso ; + org:memberOf ; + foaf:homepage ; + foaf:name "Makx Dekkers" + ], [ + rdfs:seeAlso ; + org:memberOf ; + foaf:homepage ; + foaf:name "Nikolaos Loutas" + ], [ + rdfs:seeAlso ; + org:memberOf ; + foaf:homepage ; + foaf:name "Vassilios Peristeras" + ] ; + dct:license ; + cc:attributionURL ; + dct:modified "2019-12-19"^^xsd:date ; + dct:publisher ; + dct:relation ; + dct:description "This document specifies the controlled vocabulary constraints on properties expressed by DCAT-AP in SHACL."@en ; + dct:title "Controlled Vocabulary Constraints of DCAT Application Profile for Data Portals in Europe"@en ; + owl:versionInfo "1.2.1" ; + foaf:homepage ; + foaf:maker [ + foaf:mbox ; + foaf:name "DCAT-AP Working Group" ; + foaf:page , + ] . + - - rdf:type owl:Ontology ; - adms:versionNotes "Change log for DCAT-AP v1.2.1.: Controlled Vocabularies and UML schema: Updated references to Publications Office Metadata Registry in DCAT-AP v1.2.1 published .DOC, .PDF and .ODT and updated DCAT-AP UML schema by changing the order of startDate and endDate in dct:PeriodOfTime in the diagram."@en ; - dct:conformsTo ; - dct:creator [ - rdfs:seeAlso ; - org:memberOf ; - foaf:homepage ; - foaf:name "Eugeniu Costetchi" ; - ] ; - dct:creator [ - rdfs:seeAlso ; - org:memberOf ; - foaf:homepage ; - foaf:name "Makx Dekkers" ; - ] ; - dct:creator [ - rdfs:seeAlso ; - org:memberOf ; - foaf:homepage ; - foaf:name "Nikolaos Loutas" ; - ] ; - dct:creator [ - rdfs:seeAlso ; - org:memberOf ; - foaf:homepage ; - foaf:name "Vassilios Peristeras" ; - ] ; - dct:license ; - dct:modified "2019-05-28"^^xsd:date ; - dct:publisher ; - dct:relation ; - dct:rightsHolder ; - rdfs:comment "This document specifies controlled vocabulary constraints on properties used in the DCAT Application (DCAT-AP)."@en ; - rdfs:label "Controlled Vocabulary Constraints of DCAT Application Profile for Data Portals in Europe"@en ; - owl:imports ; - owl:imports ; - owl:imports dct: ; - owl:imports ; - owl:imports ; - owl:imports ; - owl:imports ; - owl:imports ; - owl:imports ; - owl:imports ; - owl:imports org: ; - owl:imports foaf: ; - owl:versionInfo "1.2.1" ; - foaf:depiction ; - foaf:homepage ; - foaf:logo ; - foaf:maker [ - foaf:mbox ; - foaf:name "DCAT-AP Working Group" ; - foaf:page ; - foaf:page ; -] ; -. :ContinentRestriction - rdf:type sh:NodeShape ; - rdfs:comment "Continent restriction" ; - rdfs:label "Continent restriction" ; - rdfs:subClassOf rdfs:Resource ; - owl:versionInfo "1" ; - sh:property [ - sh:path skos:inScheme ; - sh:class skos:ConceptScheme ; - sh:hasValue ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - ] ; -. + a sh:NodeShape ; + rdfs:comment "Continent restriction" ; + rdfs:label "Continent restriction" ; + sh:property [ + sh:hasValue ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:path skos:inScheme + ] . + :CorporateBodyRestriction - rdf:type sh:NodeShape ; - rdfs:comment "Corporate Body Restriction" ; - rdfs:label "Corporate Body Restriction" ; - rdfs:subClassOf rdfs:Resource ; - owl:versionInfo "1" ; - sh:property [ - sh:path skos:inScheme ; - sh:class skos:ConceptScheme ; - sh:hasValue ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - ] ; -. + a sh:NodeShape ; + rdfs:comment "Corporate Body Restriction" ; + rdfs:label "Corporate Body Restriction" ; + sh:property [ + sh:hasValue ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:path skos:inScheme + ] . + :CountryRestriction - rdf:type sh:NodeShape ; - rdfs:comment "Country restriction" ; - rdfs:label "Country restriction" ; - rdfs:subClassOf rdfs:Resource ; - owl:versionInfo "1" ; - sh:property [ - sh:path skos:inScheme ; - sh:class skos:ConceptScheme ; - sh:hasValue ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - ] ; -. + a sh:NodeShape ; + rdfs:comment "Country restriction" ; + rdfs:label "Country restriction" ; + sh:property [ + sh:hasValue ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:path skos:inScheme + ] . + :DataThemeRestriction - rdf:type sh:NodeShape ; - rdfs:comment "Data Theme Restriction" ; - rdfs:label "Data Theme Restriction" ; - rdfs:subClassOf rdfs:Resource ; - owl:versionInfo "1" ; - sh:property [ - sh:path skos:inScheme ; - sh:class skos:ConceptScheme ; - sh:hasValue ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - ] ; -. + a sh:NodeShape ; + rdfs:comment "Data Theme Restriction" ; + rdfs:label "Data Theme Restriction" ; + sh:property [ + sh:hasValue ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:path skos:inScheme + ] . + :FileTypeRestriction - rdf:type sh:NodeShape ; - rdfs:comment "File Type Restriction" ; - rdfs:label "File Type Restriction" ; - rdfs:subClassOf rdfs:Resource ; - owl:versionInfo "1" ; - sh:property [ - sh:path skos:inScheme ; - sh:class skos:ConceptScheme ; - sh:hasValue ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - ] ; -. + a sh:NodeShape ; + rdfs:comment "File Type Restriction" ; + rdfs:label "File Type Restriction" ; + sh:property [ + sh:hasValue ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:path skos:inScheme + ] . + :FrequencyRestriction - rdf:type sh:NodeShape ; - rdfs:comment "Frequency Restriction" ; - rdfs:label "Frequency Restriction" ; - rdfs:subClassOf rdfs:Resource ; - owl:versionInfo "1" ; - sh:property [ - sh:path skos:inScheme ; - sh:class skos:ConceptScheme ; - sh:hasValue ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - ] ; -. + a sh:NodeShape ; + rdfs:comment "Frequency Restriction" ; + rdfs:label "Frequency Restriction" ; + sh:property [ + sh:hasValue ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:path skos:inScheme + ] . + :GeoNamesRestriction - rdf:type sh:NodeShape ; - rdfs:comment "Geo names restriction" ; - rdfs:label "Geo names restriction" ; - owl:versionInfo "1" ; - sh:property [ - sh:path skos:inScheme ; - sh:class skos:ConceptScheme ; - sh:hasValue ; - sh:minCount 1 ; + a sh:NodeShape ; + rdfs:comment "Geo names restriction" ; + rdfs:label "Geo names restriction" ; + sh:property [ + sh:hasValue ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:path skos:inScheme + ] . - sh:nodeKind sh:IRI ; - ] ; -. :LanguageRestriction - rdf:type sh:NodeShape ; - rdfs:comment "Language Restriction" ; - rdfs:label "Language Restriction" ; - rdfs:subClassOf rdfs:Resource ; - owl:versionInfo "1" ; - sh:property [ - sh:path skos:inScheme ; - sh:class skos:ConceptScheme ; - sh:hasValue ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - ] ; -. + a sh:NodeShape ; + rdfs:comment "Language Restriction" ; + rdfs:label "Language Restriction" ; + sh:property [ + sh:hasValue ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:path skos:inScheme + ] . + :LicenceTypeRestriction - rdf:type sh:NodeShape ; - rdfs:comment "Licence type restriction" ; - rdfs:label "Licence type restriction" ; - owl:versionInfo "1" ; - sh:property [ - sh:path skos:inScheme ; - sh:class skos:ConceptScheme ; - sh:hasValue ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - ] ; -. + a sh:NodeShape ; + rdfs:comment "Licence type restriction" ; + rdfs:label "Licence type restriction" ; + sh:property [ + sh:hasValue ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:path skos:inScheme + ] . + :PlaceRestriction - rdf:type sh:NodeShape ; - rdfs:comment "Place restriction" ; - rdfs:label "Place restriction" ; - rdfs:subClassOf rdfs:Resource ; - owl:versionInfo "1" ; - sh:property [ - sh:path skos:inScheme ; - sh:class skos:ConceptScheme ; - sh:hasValue ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - ] ; -. + a sh:NodeShape ; + rdfs:comment "Place restriction" ; + rdfs:label "Place restriction" ; + sh:property [ + sh:class skos:ConceptScheme ; + sh:hasValue ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:path skos:inScheme + ] . + :PublisherTypeRestriction - rdf:type sh:NodeShape ; - rdfs:comment "Publisher type restriction" ; - rdfs:label "Publisher type restriction" ; - owl:versionInfo "1" ; - sh:property [ - sh:path skos:inScheme ; - sh:class skos:ConceptScheme ; - sh:hasValue ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - ] ; -. + a sh:NodeShape ; + rdfs:comment "Publisher type restriction" ; + rdfs:label "Publisher type restriction" ; + sh:property [ + sh:class skos:ConceptScheme ; + sh:hasValue ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:path skos:inScheme + ] . + :StatusRestriction - rdf:type sh:NodeShape ; - rdfs:comment "Status restriction" ; - rdfs:label "Status restriction" ; - owl:versionInfo "1" ; - sh:property [ - sh:path skos:inScheme ; - sh:class skos:ConceptScheme ; - sh:hasValue ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - ] ; -. -dct:LicenseDocument - rdf:type sh:NodeShape ; - sh:property [ - sh:path dct:type ; - sh:class skos:Concept ; - sh:nodeKind sh:IRI ; - sh:node :LicenceTypeRestriction ; - ] ; -. -dcat:Catalog - rdf:type sh:NodeShape ; - sh:property [ - sh:path dct:language ; - sh:class skos:Concept ; - sh:nodeKind sh:IRI ; - sh:node :LanguageRestriction ; - ] ; - sh:property [ - sh:path dct:publisher ; - sh:class skos:Concept ; - sh:nodeKind sh:IRI ; - sh:node :CorporateBodyRestriction ; - ] ; - sh:property [ - sh:path dct:spatial ; - sh:class skos:Concept ; - sh:nodeKind sh:IRI ; - sh:node [ - rdf:type sh:NodeShape ; - sh:or ( - :CountryRestriction - :PlaceRestriction - :ContinentRestriction - :GeoNamesRestriction - ) ; - ] ; - ] ; - sh:property [ - sh:path dcat:themeTaxonomy ; - sh:class skos:ConceptScheme ; - sh:hasValue ; - sh:nodeKind sh:IRI ; - ] ; -. + a sh:NodeShape ; + rdfs:comment "Status restriction" ; + rdfs:label "Status restriction" ; + sh:property [ + sh:class skos:ConceptScheme ; + sh:hasValue ; + sh:minCount 1 ; + sh:nodeKind sh:IRI ; + sh:path skos:inScheme + ] . -dcat:Dataset - rdf:type sh:NodeShape ; - sh:property [ - sh:path dct:accrualPeriodicity ; - sh:class skos:Concept ; - sh:nodeKind sh:IRI ; - sh:node :FrequencyRestriction ; - ] ; - sh:property [ - sh:path dct:language ; - sh:class skos:Concept ; - sh:nodeKind sh:IRI ; - sh:node :LanguageRestriction ; - ] ; - sh:property [ - sh:path dct:publisher ; - sh:class skos:Concept ; - sh:nodeKind sh:IRI ; - sh:node :CorporateBodyRestriction ; - ] ; - sh:property [ - sh:path dct:spatial ; - sh:class skos:Concept ; - sh:nodeKind sh:IRI ; - sh:node [ - rdf:type sh:NodeShape ; - sh:or ( - :CountryRestriction - :PlaceRestriction - :ContinentRestriction - :GeoNamesRestriction - ) ; - ] ; - ] ; - sh:property [ - sh:path dcat:theme ; - sh:class skos:Concept ; - sh:nodeKind sh:IRI ; - sh:node :DataThemeRestriction ; - ] ; -. -dcat:Distribution - rdf:type sh:NodeShape ; - sh:property [ - sh:path dct:format ; - sh:class skos:Concept ; - sh:nodeKind sh:IRI ; - sh:node :FileTypeRestriction ; - ] ; - sh:property [ - sh:path adms:status ; - sh:class skos:Concept ; - sh:nodeKind sh:IRI ; - sh:node :StatusRestriction ; - ] ; -. -foaf:Agent - rdf:type sh:NodeShape ; - sh:property [ - sh:path dct:type ; - sh:class skos:Concept ; - sh:nodeKind sh:IRI ; - sh:maxCount 1 ; - sh:node :PublisherTypeRestriction ; - ] ; + +:LicenseDocument_ShapeCV + a sh:NodeShape ; sh:property [ - sh:path foaf:name ; - sh:minCount 1 ; - sh:nodeKind sh:Literal ; - sh:severity sh:Violation ; + sh:node :LicenceTypeRestriction ; + sh:nodeKind sh:IRI ; + sh:path dct:type ] ; -. + sh:targetClass dct:LicenseDocument. -adms:Identifier - rdf:type sh:NodeShape ; - sh:property [ - sh:path skos:notation ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:severity sh:Violation ; - ] ; -. -skos:Concept - rdf:type sh:NodeShape ; - sh:property [ - sh:path skos:prefLabel ; - sh:minCount 1 ; - sh:nodeKind sh:Literal ; - sh:severity sh:Violation ; - ] ; -. -skos:ConceptScheme - rdf:type sh:NodeShape ; - sh:property [ - sh:path dct:title ; - sh:minCount 1 ; - sh:nodeKind sh:Literal ; - sh:severity sh:Violation ; - ] ; -. +:Catalog_ShapeCV + a sh:NodeShape ; + sh:property [ + sh:node :LanguageRestriction ; + sh:nodeKind sh:IRI ; + sh:path dct:language ; + sh:description "A non EU managed concept is used to indicate a language. If no corresponding can be found inform the maintainer of the EU language NAL" ; + sh:severity sh:Violation + ], [ + sh:node :CorporateBodyRestriction ; + sh:node :Publisher_ShapeCV ; + sh:nodeKind sh:IRI ; + sh:path dct:publisher ; + sh:description "A non EU managed concept is used to indicate the publisher, check if a corresponding exists in the EU corporates bodies NAL" ; + sh:severity sh:Warning + ], [ + sh:node [ + a sh:NodeShape ; + sh:or (:CountryRestriction + :PlaceRestriction + :ContinentRestriction + :GeoNamesRestriction + ) + ] ; + sh:nodeKind sh:IRI ; + sh:path dct:spatial ; + sh:description "A non managed concept is used to indicate a spatial description, check if a corresponding exists" ; + sh:severity sh:Warning + ], [ + sh:hasValue ; + sh:nodeKind sh:IRI ; + sh:path dcat:themeTaxonomy ; + sh:description "Multiple themes can be used but at least should be present" ; + sh:severity sh:Warning + ] ; + sh:targetClass dcat:Catalog. -spdx:Checksum - rdf:type sh:NodeShape ; - sh:property [ - sh:path spdx:algorithm ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:nodeKind sh:IRI ; - sh:severity sh:Violation ; - ] ; - sh:property [ - sh:path spdx:checksumValue ; - sh:maxCount 1 ; - sh:minCount 1 ; - sh:nodeKind sh:Literal ; - sh:severity sh:Violation ; - ] ; -. +:Dataset_ShapeCV + a sh:NodeShape ; + sh:property [ + sh:node :FrequencyRestriction ; + sh:nodeKind sh:IRI ; + sh:path dct:accrualPeriodicity ; + sh:description "A non EU managed concept is used to indicate the accrualPeriodicity frequency. If no corresponding can be found inform the maintainer of the EU frequency NAL" ; + sh:severity sh:Violation + ], [ + sh:node :LanguageRestriction ; + sh:nodeKind sh:IRI ; + sh:path dct:language ; + sh:description "A non EU managed concept is used to indicate a language. If no corresponding can be found inform the maintainer of the EU language NAL" ; + sh:severity sh:Violation + ], [ + sh:node :CorporateBodyRestriction ; + sh:node :Publisher_ShapeCV ; + sh:nodeKind sh:IRI ; + sh:path dct:publisher ; + sh:description "A non EU managed concept is used to indicate the publisher, check if a corresponding exists in the EU corporates bodies NAL" ; + sh:severity sh:Warning + ], [ + sh:node [ + a sh:NodeShape ; + sh:or (:CountryRestriction + :PlaceRestriction + :ContinentRestriction + :GeoNamesRestriction + ) + ] ; + sh:nodeKind sh:IRI ; + sh:path dct:spatial ; + sh:description "A non managed concept is used to indicate a spatial description, check if a corresponding exists" ; + sh:severity sh:Warning + ], [ + sh:node :DataThemeRestriction ; + sh:nodeKind sh:IRI ; + sh:path dcat:theme ; + sh:description "Multiple themes can be used but at least one concept of should be present" ; + sh:severity sh:Warning + ] ; + sh:targetClass dcat:Dataset. -dct:PeriodOfTime - rdf:type sh:NodeShape ; - sh:property [ - sh:path schema:endDate ; - sh:maxCount 1 ; - sh:severity sh:Violation ; - sh:node :DateOrDateTimeDataType ; - ] ; - sh:property [ - sh:path schema:startDate ; - sh:maxCount 1 ; - sh:severity sh:Violation ; - sh:node :DateOrDateTimeDataType ; - ] ; -. +# ------------------------------------------------------------------------------------------------------------------ +# The constraints for dcat:mediaType, dcat:compressFormat, dcat:packageFormat which are limited to the IANA codelist +# cannot be expressed in SHACL unless a copy in RDF for the IANA codelist is being created +# ------------------------------------------------------------------------------------------------------------------ +:Distribution_ShapeCV + a sh:NodeShape ; + sh:property [ + sh:node :FileTypeRestriction ; + sh:nodeKind sh:IRI ; + sh:path dct:format ; + sh:description "A non EU managed concept is used to indicate the format of the distribution. If no corresponding can be found inform the maintainer of the fileformat NAL." ; + sh:severity sh:Violation + ], [ + sh:node :LanguageRestriction ; + sh:nodeKind sh:IRI ; + sh:path dct:language ; + sh:description "A non EU managed concept is used to indicate a language. If no corresponding can be found inform the maintainer of the EU language NAL" ; + sh:severity sh:Violation + ], [ + sh:node :StatusRestriction ; + sh:nodeKind sh:IRI ; + sh:path adms:status ; + sh:description "A non EU managed concept is used to indicate the status of the distribution. If no corresponding can be found inform the maintainer of the adms:status codelist." ; + sh:severity sh:Violation + ] ; + sh:targetClass dcat:Distribution. + + +:Publisher_ShapeCV + a sh:NodeShape ; + sh:property [ + sh:node :PublisherTypeRestriction ; + sh:nodeKind sh:IRI ; + sh:path dct:type ; + sh:description "A non EU managed concept is used to indicate the type of the publisher. If no corresponding can be found inform the maintainer of the adms:publishertype codelist." ; + sh:severity sh:Violation + ] . -dct:LicenseDocument - rdf:type sh:NodeShape ; - sh:property [ - sh:path dct:type ; - sh:class skos:Concept ; - sh:nodeKind sh:IRI ; - sh:severity sh:Violation ; - ] ; -.