exampleShape.ttl 4.54 KB
Newer Older
Maxime Lefrançois's avatar
Maxime Lefrançois committed
@prefix dash: <http://datashapes.org/dash#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix vann: <http://purl.org/vocab/vann/> .
@prefix sarefsh: <https://saref.etsi.org/shape#> .
@prefix schema: <http://schema.org/> .

sarefsh:ExampleShape
  a sh:NodeShape ;
    sh:targetClass owl:Ontology ;
    sh:closed true ;
  sh:property [
    sh:path rdf:type ;
    sh:minCount 1 ;
    sh:hasValue owl:Ontology ;
  ] ;
  sh:property [
    sh:path owl:imports ;
    sh:nodeKind sh:IRI ;
    sh:minCount 1 ;
    sh:severity sh:Violation ;
    sh:message "The example should import at least one ontology.$`"
  ] ;
  sh:property [
    sh:path dcterms:title ;
    sh:nodeKind sh:Literal ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:severity sh:Warning ;
    sh:message "The example should have exactly one dcterms:title."
  ] ;  
  sh:property [
    sh:path dcterms:abstract ;
    sh:nodeKind sh:Literal ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:severity sh:Warning ;
    sh:message "The example should have exactly one dcterms:abstract."
  ] ;
  sh:property [
    sh:path dcterms:description ;
    sh:nodeKind sh:Literal ;
    sh:minCount 1 ;
    sh:maxCount 1 ;
    sh:severity sh:Warning ;
    sh:message "The example should have exactly one dcterms:description."
  ] ;
  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:Violation ;
    sh:message "There shall be exactly one dcterms:license annotation, with value <https://forge.etsi.org/etsi-software-license>."
  ] ;
  sh:property [
    sh:path dcterms:creator ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 0 ;
    sh:severity sh:Warning ;
    sh:message "The <http://purl.org/dc/terms/creator> 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 <http://schema.org/Person> with <http://schema.org/givenName>, <http://schema.org/familyName>, and <http://schema.org/affiliation>"
  ] ;
  sh:property [
    sh:path dcterms:contributor ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:minCount 0 ;
    sh:severity sh:Warning ;
    sh:message "The <http://purl.org/dc/terms/contributor> 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 <http://schema.org/Person> with <http://schema.org/givenName>, <http://schema.org/familyName>, and <http://schema.org/affiliation>"
  ] .

  
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 <http://schema.org/Person>"
  ] ;
  sh:property [
    sh:path schema:givenName ;
    sh:minCount 1 ;
    sh:severity sh:Warning ;
    sh:message "Every contributor should have at least one <http://schema.org/givenName>"
  ] ;
  sh:property [
    sh:path schema:familyName ;
    sh:minCount 1 ;
    sh:severity sh:Warning ;
    sh:message "Every contributor should have at least one <http://schema.org/lastName>"
  ] ;
  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 <http://schema.org/affiliation>, that should be a blank node or a IRI of type <http://schema.org/Organization> with at least one <http://schema.org/name>"
  ] .
  
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 <http://schema.org/Organization>"
  ] ;
  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 <http://schema.org/name>"