@prefix dash: . @prefix owl: . @prefix rdf: . @prefix rdfs: . @prefix sh: . @prefix xsd: . @prefix dcterms: . @prefix vann: . @prefix sarefsh: . @prefix schema: . sarefsh:OntologyShape a sh:NodeShape ; sh:targetClass owl:Ontology ; sh:property [ sh:path rdf:type ; sh:minCount 1 ; sh:hasValue owl:Ontology ; ] ; sh:property [ sh:path owl:versionInfo ; sh:nodeKind sh:Literal ; sh:minCount 1 ; sh:maxCount 1 ; sh:severity sh:Warning ; sh:message "The annotation owl:versionInfo shall be set in the source file it should be equal to <<<>>>" ; sh:patten "<<<>>>" ] ; sh:property [ sh:path owl:versionIRI ; sh:nodeKind sh:IRI ; sh:minCount 1 ; sh:maxCount 1 ; sh:severity sh:Warning ; sh:message "The annotation owl:versionIRI shall be set in the source file it should be equal to <<<>>>" ; sh:patten "<<<>>>" ] ; sh:property [ sh:path owl:priorVersion ; sh:nodeKind sh:IRI ; sh:maxCount 0 ; sh:maxCount 1 ; sh:severity sh:Warning ; sh:message "The annotation owl:priorVersion should not be set in the source file, as it will be computed automatically" ; sh:patten "<<<>>>" ; ] ; sh:property [ sh:path owl:imports ; sh:nodeKind sh:IRI ; sh:pattern "^https://saref.etsi.org/(core|saref4[a-z]{4})/" ; sh:severity sh:Warning ; sh:message "Only SAREF ontologies with specific versions shall be imported. Their URIs starts with `^https://saref.etsi.org/(core|saref4[a-z]{4})/`" ] ; sh:property [ sh:path dcterms:title ; sh:nodeKind sh:Literal ; sh:minCount 1 ; sh:severity sh:Warning ; sh:message """"The ontology document shall contain at least one metadata `dcterms:title` Each value for this metadata shall be a literal with datatype IRI `xsd:string` or `xsd:langString` There should be at least one value with the `xsd:langString` datatype and the en language. (See ETSI TS 103 673 Clause 9.4.3.2 for more details)""" ] ; sh:property [ sh:path dcterms:abstract ; sh:nodeKind sh:Literal ; sh:minCount 0 ; ] ; sh:property [ sh:path dcterms:description ; sh:nodeKind sh:Literal ; sh:minCount 1 ; sh:severity sh:Warning ; sh:message "The ontology should have exactly at least " ] ; sh:property [ sh:path rdfs:comment ; sh:nodeKind sh:Literal ; sh:minCount 0 ; ] ; sh:property [ sh:path dcterms:issued ; sh:datatype xsd:date ; sh:minCount 1 ; sh:maxCount 1 ; sh:severity sh:Warning ; sh:message "A metadata with datatype `xsd:date` is recommended." ] ; sh:property [ sh:path dcterms:modified ; sh:datatype xsd:date ; sh:minCount 1 ; sh:maxCount 1 ; sh:severity sh:Warning ; sh:message "A metadata with datatype `xsd:date` is recommended." # do not check that the modified date is the date of today. # do not generate it automatically ] ; sh:property [ sh:path dcterms:source ; sh:nodeKind sh:IRI ; sh:minCount 1 ; # dct:source ; sh:maxCount 1 ; sh:severity sh:Warning ; sh:message "A metadata should point to the Technical Specification <<>>" ] ; sh:property [ sh:path rdfs:seeAlso ; sh:nodeKind sh:IRI ; sh:minCount 1 ; # ; sh:maxCount 1 ; sh:severity sh:Warning ; sh:message "The link to the corresponding TS <<>>" ] ; sh:property [ sh:path dcterms:license ; sh:nodeKind sh:IRI ; sh:minCount 1 ; sh:maxCount 1 ; sh:pattern "https://forge.etsi.org/etsi-software-license" ; sh:severity sh:Warning ; sh:message "There shall be at least one annotation " ] ; sh:property [ sh:path dcterms:creator ; sh:nodeKind sh:BlankNodeOrIRI ; sh:minCount 0 ; sh:severity sh:Warning ; sh:message "The should be blank nodes or IRIs" ] ; sh:property [ sh:path dcterms:creator ; sh:severity sh:Warning ; sh:node sarefsh:PersonShape ; sh:message "Every creator should be a with , , and " ] ; sh:property [ sh:path dcterms:contributor ; sh:nodeKind sh:BlankNodeOrIRI ; sh:minCount 0 ; sh:severity sh:Warning ; sh:message "The should be blank nodes or IRIs" ] ; sh:property [ sh:path dcterms:contributor ; sh:severity sh:Warning ; sh:node sarefsh:PersonShape ; sh:message "Every contributor should be a with , , and " ] ; sh:property [ sh:path dcterms:publisher ; sh:nodeKind sh:IRI ; sh:minCount 1 ; sh:maxCount 1 ; sh:pattern "https://www.etsi.org/" ; sh:severity sh:Warning ; sh:message "There shall be at least one annotation " ] ; sh:property [ sh:path vann:preferredNamespacePrefix ; sh:minCount 1 ; sh:maxCount 1 ; sh:severity sh:Warning ; sh:message "The annotation <<<>>>" ; sh:patten "<<<>>>" ] ; sh:property [ sh:path vann:preferredNamespaceUri ; sh:minCount 1 ; sh:maxCount 1 ; sh:severity sh:Warning ; sh:message "The annotation <<<>>> " ; sh:patten "<<<>>>" ] . sarefsh:PersonShape a sh:NodeShape ; sh:targetClass schema:Person ; sh:severity sh:Warning ; sh:property [ sh:path rdf:type ; sh:hasValue schema:Person ; sh:severity sh:Warning ; sh:message "Every contributor should be a " ] ; sh:property [ sh:path schema:givenName ; sh:minCount 1 ; sh:severity sh:Warning ; sh:message "Every contributor should have at least one " ] ; sh:property [ sh:path schema:familyName ; sh:minCount 1 ; sh:severity sh:Warning ; sh:message "Every contributor should have at least one " ] ; sh:property [ sh:path schema:affiliation ; sh:minCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:node sarefsh:AffiliationShape ; sh:severity sh:Warning ; sh:message "Every contributor should have at least one , that should be a blank node or a IRI of type with at least one " ] . sarefsh:AffiliationShape a sh:NodeShape ; sh:targetClass schema:Organization ; sh:severity sh:Warning ; sh:property [ sh:path rdf:type ; sh:hasValue schema:Organization ; sh:severity sh:Warning ; sh:message "The affiliation of each contributor should be a " ] ; sh:property [ sh:path schema:name ; sh:minCount 1 ; sh:severity sh:Warning ; sh:message "The affiliation of each contributor should have at least one " ] . [] a sh:NodeShape ; sh:targetClass owl:Class, owl:ObjectProperty, owl:DatatypeProperty , owl:NamedIndividual; sh:message "The following terms do not have at least one rdfs:label" ; sh:severity sh:Warning ; sh:or ( [ sh:nodeKind sh:BlankNode ] [ sh:path rdfs:label ; sh:nodeKind sh:Literal ; sh:minCount 1 ; sh:severity sh:Warning ; sh:message "The term should have at least one rdfs:label" ] ) . [] a sh:NodeShape ; sh:targetClass owl:Class, owl:ObjectProperty, owl:DatatypeProperty , owl:NamedIndividual; sh:message "The following terms do not have at least one rdfs:comment" ; sh:severity sh:Warning ; sh:or ( [ sh:nodeKind sh:BlankNode ] [ sh:path rdfs:comment ; sh:nodeKind sh:Literal ; sh:minCount 1 ; sh:severity sh:Warning ; sh:message "The term should have at least one rdfs:comment" ] ) .