1 @base <http://n2t.net/ark:/99152/> .
    2 @prefix bibo: <http://purl.org/ontology/bibo/> .
    3 @prefix dce: <http://purl.org/dc/elements/1.1/> .
    4 @prefix dcterms: <http://purl.org/dc/terms/> .
    5 @prefix foaf: <http://xmlns.com/foaf/0.1/> .
    6 @prefix lvont: <http://lexvo.org/ontology#> .
    7 @prefix owl: <http://www.w3.org/2002/07/owl#> .
    8 @prefix periodo: <p0v#> .
    9 @prefix prov: <http://www.w3.org/ns/prov#> .
   10 @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
   11 @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
   12 @prefix sh: <http://www.w3.org/ns/shacl#> .
   13 @prefix skos: <http://www.w3.org/2004/02/skos/core#> .
   14 @prefix time: <http://www.w3.org/2006/time#> .
   15 @prefix void: <http://rdfs.org/ns/void#> .
   16 @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
   17 
   18 periodo:spatialCoverageDescription a owl:DatatypeProperty ;
   19     rdfs:comment "Free-text description of the spatial coverage of a resource."@en ;
   20     rdfs:isDefinedBy <http://n2t.net/ark:/99152/p0v> ;
   21     rdfs:label "spatial coverage description"@en ;
   22     rdfs:range xsd:string .
   23 
   24 periodo:earliestYear a owl:DatatypeProperty ;
   25     rdfs:comment "The earliest Gregorian year referred to in the description of a temporal interval."@en ;
   26     rdfs:isDefinedBy <http://n2t.net/ark:/99152/p0v> ;
   27     rdfs:label "earliest year"@en ;
   28     rdfs:domain time:DateTimeDescription ;
   29     rdfs:range xsd:gYear .
   30 
   31 periodo:latestYear a owl:DatatypeProperty ;
   32     rdfs:comment "The latest Gregorian year referred to in the description of a temporal interval."@en ;
   33     rdfs:isDefinedBy <http://n2t.net/ark:/99152/p0v> ;
   34     rdfs:label "latest year"@en ;
   35     rdfs:domain time:DateTimeDescription ;
   36     rdfs:range xsd:gYear .
   37 
   38 time:DateTimeDescription
   39     rdfs:subClassOf [
   40         a owl:Restriction ;
   41         owl:maxCardinality "1"^^xsd:nonNegativeInteger ;
   42         owl:onProperty periodo:earliestYear
   43     ], [
   44         a owl:Restriction ;
   45         owl:maxCardinality "1"^^xsd:nonNegativeInteger ;
   46         owl:onProperty periodo:latestYear
   47     ] .
   48 
   49 periodo:submitted a prov:Role ;
   50     rdfs:comment "The role played by the agent responsible for submitting a patch."@en ;
   51     rdfs:isDefinedBy <http://n2t.net/ark:/99152/p0v> ;
   52     rdfs:label "submitted"@en .
   53 
   54 periodo:updated a prov:Role ;
   55     rdfs:comment "The role played by the agent responsible for updating a patch."@en ;
   56     rdfs:isDefinedBy <http://n2t.net/ark:/99152/p0v> ;
   57     rdfs:label "updated"@en .
   58 
   59 periodo:merged a prov:Role ;
   60     rdfs:comment "The role played by the agent responsible for merging a patch."@en ;
   61     rdfs:isDefinedBy <http://n2t.net/ark:/99152/p0v> ;
   62     rdfs:label "merged"@en .
   63 
   64 periodo:DateTimeDescriptionShape
   65   rdf:type sh:NodeShape ;
   66   rdfs:label "Date-time description shape" ;
   67   sh:closed "true"^^xsd:boolean ;
   68   sh:ignoredProperties (
   69     rdf:type
   70     ) ;
   71   sh:property
   72     periodo:DateTimeDescriptionYearShape ,
   73     periodo:DateTimeDescriptionEarliestYearShape ,
   74     periodo:DateTimeDescriptionLatestYearShape
   75   ;
   76   sh:sparql
   77     periodo:DateTimeDescriptionMustHaveYearOrEarliestYear ,
   78     periodo:DateTimeDescriptionCannotHaveBothYearAandEarliestYear ,
   79     periodo:DateTimeDescriptionEarliestYearMustBeLessThanLatestYear
   80   .
   81 
   82 periodo:DateTimeDescriptionYearShape
   83   rdf:type sh:PropertyShape ;
   84   sh:path time:year ;
   85   sh:name "year" ;
   86   sh:description "Gregorian calendar year" ;
   87   sh:pattern "^-?([1-9][0-9]{3,}|0[0-9]{3})$" ;
   88   sh:maxCount 1 ;
   89   sh:message "At most 1 valid gYear" ;
   90   .
   91 
   92 periodo:DateTimeDescriptionEarliestYearShape
   93   rdf:type sh:PropertyShape ;
   94   sh:path periodo:earliestYear ;
   95   sh:name "earliest year" ;
   96   sh:description "earliest Gregorian calendar year" ;
   97   sh:pattern "^-?([1-9][0-9]{3,}|0[0-9]{3})$" ;
   98   sh:maxCount 1 ;
   99   sh:message "At most 1 valid gYear" ;
  100   .
  101 
  102 periodo:DateTimeDescriptionLatestYearShape
  103   rdf:type sh:PropertyShape ;
  104   sh:path periodo:latestYear ;
  105   sh:name "latest year" ;
  106   sh:description "latest Gregorian calendar year" ;
  107   sh:pattern "^-?([1-9][0-9]{3,}|0[0-9]{3})$" ;
  108   sh:maxCount 1 ;
  109   sh:message "At most 1 valid gYear" ;
  110   .
  111 
  112 periodo:DateTimeDescriptionMustHaveYearOrEarliestYear
  113   rdf:type sh:SPARQLConstraint ;
  114   sh:message "Must have either a year or an earliestYear" ;
  115   sh:prefixes <> ;
  116   sh:select """
  117 SELECT $this ($this AS ?path) ?value
  118 WHERE {
  119   ?interval time:hasDateTimeDescription $this .
  120   ?interval skos:prefLabel ?value .
  121   FILTER NOT EXISTS {
  122     { $this time:year ?year }
  123     UNION
  124     { $this periodo:earliestYear ?earliestYear }
  125   }
  126 }
  127 """
  128   .
  129 
  130 periodo:DateTimeDescriptionCannotHaveBothYearAandEarliestYear
  131   rdf:type sh:SPARQLConstraint ;
  132   sh:message "Cannot have both a year and an earliestYear" ;
  133   sh:prefixes <> ;
  134   sh:select """
  135 SELECT $this ($this AS ?path) ?value
  136 WHERE {
  137   ?interval time:hasDateTimeDescription $this .
  138   ?interval skos:prefLabel ?value .
  139   $this time:year ?year .
  140   $this periodo:earliestYear ?earliestYear
  141 }
  142 """
  143   .
  144 
  145 periodo:DateTimeDescriptionEarliestYearMustBeLessThanLatestYear
  146   rdf:type sh:SPARQLConstraint ;
  147   sh:message "earliestYear must be less than latestYear" ;
  148   sh:prefixes <> ;
  149   sh:select """
  150 SELECT $this ($this AS ?path) ?value
  151 WHERE {
  152   ?interval time:hasDateTimeDescription $this .
  153   ?interval skos:prefLabel ?value .
  154   $this periodo:earliestYear ?earliestYear .
  155   $this periodo:latestYear ?latestYear .
  156   FILTER (xsd:long(?earliestYear) >= xsd:long(?latestYear))
  157 }
  158 """
  159   .
  160 
  161 # prefix declarations for SPARQL constraint queries
  162 <>
  163   sh:declare [
  164     sh:prefix "periodo" ;
  165     sh:namespace "http://n2t.net/ark:/99152/p0v#"^^xsd:anyURI ;
  166     ] ;
  167   sh:declare [
  168     sh:prefix "time" ;
  169     sh:namespace "http://www.w3.org/2006/time#"^^xsd:anyURI ;
  170     ] ;
  171   sh:declare [
  172     sh:prefix "skos" ;
  173     sh:namespace "http://www.w3.org/2004/02/skos/core#"^^xsd:anyURI ;
  174     ] ;
  175   sh:declare [
  176     sh:prefix "xsd" ;
  177     sh:namespace "http://www.w3.org/2001/XMLSchema#"^^xsd:anyURI ;
  178     ] ;
  179   .
  180 
  181 periodo:DatasetShape
  182   rdf:type sh:NodeShape ;
  183   rdfs:label "PeriodO dataset shape" ;
  184   sh:targetNode <p0d/#authorities> ;
  185   sh:closed "true"^^xsd:boolean ;
  186   sh:property
  187     periodo:DatasetTypeShape ,
  188     periodo:DatasetMemberShape ,
  189     periodo:DatasetIsPrimaryTopicOfShape
  190   .
  191 
  192 periodo:DatasetTypeShape
  193   rdf:type sh:PropertyShape ;
  194   sh:path rdf:type ;
  195   sh:name "type" ;
  196   sh:description "RDF type of this dataset" ;
  197   sh:nodeKind sh:IRI ;
  198   sh:hasValue rdf:Bag ;
  199   sh:minCount 1 ;
  200   sh:maxCount 1 ;
  201   sh:message "Problem with dataset type" ;
  202   .
  203 
  204 periodo:DatasetMemberShape
  205   rdf:type sh:PropertyShape ;
  206   sh:path rdfs:member ;
  207   sh:name "member" ;
  208   sh:description "A period authority in this dataset" ;
  209   sh:nodeKind sh:IRI ;
  210   sh:pattern "^http://n2t.net/ark:/99152/p0[a-z0-9]{5}" ;
  211   sh:class skos:ConceptScheme ;
  212   sh:message "Problem with dataset member" ;
  213   .
  214 
  215 periodo:DatasetIsPrimaryTopicOfShape
  216   rdf:type sh:PropertyShape ;
  217   sh:path foaf:isPrimaryTopicOf ;
  218   sh:name "is primary topic of" ;
  219   sh:description "Dataset document URI" ;
  220   sh:nodeKind sh:IRI ;
  221   sh:node periodo:DocumentShape ;
  222   sh:minCount 1 ;
  223   sh:maxCount 1 ;
  224   sh:message "Problem with dataset document URI" ;
  225   .
  226 
  227 periodo:DocumentShape
  228   rdf:type sh:NodeShape ;
  229   rdfs:label "Dataset document shape" ;
  230   sh:closed "true"^^xsd:boolean ;
  231   sh:property
  232     periodo:DocumentInDatasetShape
  233   .
  234 
  235 periodo:DocumentInDatasetShape
  236   rdf:type sh:PropertyShape ;
  237   sh:path void:inDataset ;
  238   sh:name "in dataset" ;
  239   sh:nodeKind sh:IRI ;
  240   sh:hasValue <p0d> ;
  241   sh:node periodo:AbstractDatasetShape ;
  242   sh:minCount 1 ;
  243   sh:maxCount 1 ;
  244   .
  245 
  246 periodo:AbstractDatasetShape
  247   rdf:type sh:NodeShape ;
  248   rdfs:label "Abstract dataset shape" ;
  249   sh:closed "true"^^xsd:boolean ;
  250   sh:property
  251     periodo:AbstractDatasetProvenanceShape
  252   .
  253 
  254 periodo:AbstractDatasetProvenanceShape
  255   rdf:type sh:PropertyShape ;
  256   sh:path dcterms:provenance ;
  257   sh:name "provenance" ;
  258   sh:nodeKind sh:IRI ;
  259   sh:hasValue <p0h#changes> ;
  260   sh:minCount 1 ;
  261   sh:maxCount 1 ;
  262   .
  263 
  264 periodo:StartIntervalShape
  265   rdf:type sh:NodeShape ;
  266   rdfs:label "Interval shape" ;
  267   sh:closed "true"^^xsd:boolean ;
  268   sh:ignoredProperties (
  269     rdf:type
  270     ) ;
  271   sh:property
  272     periodo:IntervalPreferredLabelShape ,
  273     periodo:StartIntervalDateTimeDescriptionShape
  274   .
  275 
  276 periodo:StopIntervalShape
  277   rdf:type sh:NodeShape ;
  278   rdfs:label "Interval shape" ;
  279   sh:closed "true"^^xsd:boolean ;
  280   sh:ignoredProperties (
  281     rdf:type
  282     ) ;
  283   sh:property
  284     periodo:IntervalPreferredLabelShape ,
  285     periodo:StopIntervalDateTimeDescriptionShape
  286   .
  287 
  288 periodo:IntervalPreferredLabelShape
  289   rdf:type sh:PropertyShape ;
  290   sh:path skos:prefLabel ;
  291   sh:name "preferred label" ;
  292   sh:description "Description of the interval as given in the source" ;
  293   sh:datatype xsd:string ;
  294   sh:minCount 1 ;
  295   sh:maxCount 1 ;
  296   .
  297 
  298 periodo:StartIntervalDateTimeDescriptionShape
  299   rdf:type sh:PropertyShape ;
  300   sh:path time:hasDateTimeDescription ;
  301   sh:name "date-time description" ;
  302   sh:description "Bibliographic description of the source" ;
  303   sh:nodeKind sh:BlankNode ;
  304   sh:node periodo:DateTimeDescriptionShape ;
  305   sh:minCount 1 ;
  306   sh:maxCount 1 ;
  307   .
  308 
  309 periodo:StopIntervalDateTimeDescriptionShape
  310   rdf:type sh:PropertyShape ;
  311   sh:path time:hasDateTimeDescription ;
  312   sh:name "date-time description" ;
  313   sh:description "Bibliographic description of the source" ;
  314   sh:nodeKind sh:BlankNode ;
  315   sh:node periodo:DateTimeDescriptionShape ;
  316   sh:maxCount 1 ;
  317   .
  318 
  319 periodo:PeriodShape
  320   rdf:type sh:NodeShape ;
  321   rdfs:label "Period shape" ;
  322   sh:targetClass skos:Concept ;
  323   sh:closed "true"^^xsd:boolean ;
  324   sh:ignoredProperties (
  325     rdf:type
  326     ) ;
  327   sh:pattern "^http://n2t.net/ark:/99152/p0[a-z0-9]{9}" ;
  328   sh:property
  329     periodo:PeriodPreferredLabelShape ,
  330     periodo:PeriodLocalizedLabelShape ,
  331     periodo:PeriodNoteShape ,
  332     periodo:PeriodEditorialNoteShape ,
  333     periodo:PeriodAuthorityShape ,
  334     periodo:PeriodSourceShape ,
  335     periodo:PeriodSourceIsPartOfShape ,
  336     periodo:PeriodSourceLocatorShape ,
  337     periodo:PeriodStartShape ,
  338     periodo:PeriodStopShape ,
  339     periodo:PeriodSpatialCoverageDescriptionShape ,
  340     periodo:PeriodSpatialCoverageShape ,
  341     periodo:PeriodSameAsShape ,
  342     periodo:PeriodDerivedFromShape ,
  343     periodo:PeriodBroaderShape ,
  344     periodo:PeriodURLShape ,
  345     periodo:PeriodLanguageTagShape ,
  346     periodo:PeriodLanguageShape ,
  347     periodo:PeriodScriptShape
  348   .
  349 
  350 periodo:PeriodPreferredLabelShape
  351   rdf:type sh:PropertyShape ;
  352   sh:path skos:prefLabel ;
  353   sh:name "preferred label" ;
  354   sh:description "Name of the period as given in the source" ;
  355   sh:datatype xsd:string ;
  356   sh:minCount 1 ;
  357   sh:maxCount 1 ;
  358   sh:message "Problem with period preferred label" ;
  359   .
  360 
  361 periodo:PeriodLocalizedLabelShape
  362   rdf:type sh:PropertyShape ;
  363   sh:path skos:altLabel ;
  364   sh:name "localized label" ;
  365   sh:description "Language-specific name for the period" ;
  366   sh:datatype rdf:langString ;
  367   sh:languageIn (
  368     "af"
  369     "ar"
  370     "bg"
  371     "ca"
  372     "cmn-Hans"
  373     "cmn-Hant"
  374     "cmn-Latn"
  375     "cs"
  376     "da"
  377     "de"
  378     "el"
  379     "en"
  380     "en-gb"
  381     "en-us"
  382     "es"
  383     "et"
  384     "fi"
  385     "fr"
  386     "hu"
  387     "it"
  388     "ja"
  389     "ja-Latn"
  390     "ko-Latn"
  391     "la"
  392     "lt"
  393     "mi-Latn"
  394     "mk"
  395     "nl"
  396     "no"
  397     "ota-Arab"
  398     "pl"
  399     "pt"
  400     "ro"
  401     "ru"
  402     "scn"
  403     "sk"
  404     "sl"
  405     "sq"
  406     "sr-Cyrl"
  407     "sv"
  408     "tr"
  409     "uk"
  410     "vi"
  411     "zh"
  412     "zh-Latn"
  413     ) ;
  414   sh:minCount 1 ;
  415   sh:message "Problem with period localized label" ;
  416   .
  417 
  418 periodo:PeriodNoteShape
  419   rdf:type sh:PropertyShape ;
  420   sh:path skos:note ;
  421   sh:name "note" ;
  422   sh:description "Notes about the period taken from the source" ;
  423   sh:datatype xsd:string ;
  424   sh:maxCount 1 ;
  425   sh:message "Problem with period note" ;
  426   .
  427 
  428 periodo:PeriodEditorialNoteShape
  429   rdf:type sh:PropertyShape ;
  430   sh:path skos:editorialNote ;
  431   sh:name "editorial note" ;
  432   sh:description "Administrative or editorial notes from PeriodO curators" ;
  433   sh:datatype xsd:string ;
  434   sh:maxCount 1 ;
  435   sh:message "Problem with period editorial note" ;
  436   .
  437 
  438 periodo:PeriodAuthorityShape
  439   rdf:type sh:PropertyShape ;
  440   sh:path skos:inScheme ;
  441   sh:name "authority" ;
  442   sh:description "Authority to which this period belongs" ;
  443   sh:nodeKind sh:IRI ;
  444   sh:pattern "^http://n2t.net/ark:/99152/p0[a-z0-9]{5}" ;
  445   sh:class skos:ConceptScheme ;
  446   sh:minCount 1 ;
  447   sh:maxCount 1 ;
  448   sh:message "Problem with period link to authority" ;
  449   .
  450 
  451 periodo:PeriodSourceShape
  452   rdf:type sh:PropertyShape ;
  453   sh:path dcterms:source ;
  454   sh:name "source" ;
  455   sh:description "Bibliographic information specific to this period" ;
  456   sh:nodeKind sh:BlankNode ;
  457   sh:node periodo:SourceShape ;
  458   sh:maxCount 1 ;
  459   sh:message "Problem with period source" ;
  460   .
  461 
  462 periodo:PeriodSourceIsPartOfShape
  463   rdf:type sh:PropertyShape ;
  464   sh:path ( dcterms:source dcterms:isPartOf ) ;
  465   sh:name "source is part of" ;
  466   sh:nodeKind sh:IRI ;
  467   sh:maxCount 1 ;
  468   sh:message "Problem with period source (is part of)" ;
  469   .
  470 
  471 periodo:PeriodSourceLocatorShape
  472   rdf:type sh:PropertyShape ;
  473   sh:path ( dcterms:source bibo:locator ) ;
  474   sh:name "source locator" ;
  475   sh:datatype xsd:string ;
  476   sh:maxCount 1 ;
  477   sh:message "Problem with period source (locator)" ;
  478   .
  479 
  480 periodo:PeriodStartShape
  481   rdf:type sh:PropertyShape ;
  482   sh:path time:intervalStartedBy ;
  483   sh:name "start" ;
  484   sh:description "Start interval for the period" ;
  485   sh:nodeKind sh:BlankNode ;
  486   sh:node periodo:StartIntervalShape ;
  487   sh:minCount 1 ;
  488   sh:maxCount 1 ;
  489   sh:message "Problem with period start interval" ;
  490   .
  491 
  492 periodo:PeriodStopShape
  493   rdf:type sh:PropertyShape ;
  494   sh:path time:intervalFinishedBy ;
  495   sh:name "stop" ;
  496   sh:description "Stop interval for the period" ;
  497   sh:nodeKind sh:BlankNode ;
  498   sh:node periodo:StopIntervalShape ;
  499   sh:minCount 1 ;
  500   sh:maxCount 1 ;
  501   sh:message "Problem with period stop interval" ;
  502   .
  503 
  504 periodo:PeriodSpatialCoverageDescriptionShape
  505   rdf:type sh:PropertyShape ;
  506   sh:path periodo:spatialCoverageDescription ;
  507   sh:name "spatial coverage description" ;
  508   sh:description "Spatial extent of the period as described in the source" ;
  509   sh:datatype xsd:string ;
  510   sh:maxCount 1 ;
  511   sh:message "Problem with period spatial coverage description" ;
  512   .
  513 
  514 periodo:PeriodSpatialCoverageShape
  515   rdf:type sh:PropertyShape ;
  516   sh:path dcterms:spatial ;
  517   sh:name "spatial coverage" ;
  518   sh:description "Place (partially) within spatial extent of the period" ;
  519   sh:nodeKind sh:IRI ;
  520   sh:pattern "^http://www.wikidata.org/entity/Q[0-9]+" ;
  521   sh:minCount 1 ;
  522   sh:message "Problem with period spatial coverage" ;
  523   .
  524 
  525 periodo:PeriodSameAsShape
  526   rdf:type sh:PropertyShape ;
  527   sh:path owl:sameAs ;
  528   sh:name "same as" ;
  529   sh:description "Alternative URI for this period" ;
  530   sh:nodeKind sh:IRI ;
  531   sh:message "Problem with period alternative URI (sameAs)" ;
  532   .
  533 
  534 periodo:PeriodDerivedFromShape
  535   rdf:type sh:PropertyShape ;
  536   sh:path prov:wasDerivedFrom ;
  537   sh:name "was derived from" ;
  538   sh:description "Another period from which this one was derived" ;
  539   sh:nodeKind sh:IRI ;
  540   sh:pattern "^http://n2t.net/ark:/99152/p0[a-z0-9]{9}" ;
  541   sh:message "Problem with derived from" ;
  542   .
  543 
  544 periodo:PeriodBroaderShape
  545   rdf:type sh:PropertyShape ;
  546   sh:path skos:broader ;
  547   sh:name "see broader period" ;
  548   sh:description "Another period that encompasses this one" ;
  549   sh:nodeKind sh:IRI ;
  550   sh:pattern "^http://n2t.net/ark:/99152/p0[a-z0-9]{9}" ;
  551   sh:maxCount 1 ;
  552   sh:message "Problem with period broader" ;
  553   .
  554 
  555 periodo:PeriodURLShape
  556   rdf:type sh:PropertyShape ;
  557   sh:path foaf:page ;
  558   sh:name "url" ;
  559   sh:description "Web resource with information about this period" ;
  560   sh:nodeKind sh:IRI ;
  561   sh:message "Problem with period URL" ;
  562   .
  563 
  564 periodo:PeriodLanguageTagShape
  565   rdf:type sh:PropertyShape ;
  566   sh:path dce:language ;
  567   sh:name "language tag" ;
  568   sh:description "Language tag of the preferred label for this period" ;
  569   sh:datatype xsd:string ;
  570   sh:in (
  571     "af"
  572     "ar"
  573     "bg"
  574     "ca"
  575     "cmn-Hans"
  576     "cmn-Hant"
  577     "cmn-Latn"
  578     "cs"
  579     "da"
  580     "de"
  581     "el"
  582     "en"
  583     "en-gb"
  584     "en-us"
  585     "es"
  586     "et"
  587     "fi"
  588     "fr"
  589     "hu"
  590     "it"
  591     "ja"
  592     "ja-Latn"
  593     "ko-Latn"
  594     "la"
  595     "lt"
  596     "mi-Latn"
  597     "mk"
  598     "nl"
  599     "no"
  600     "ota-Arab"
  601     "pl"
  602     "pt"
  603     "ro"
  604     "ru"
  605     "scn"
  606     "sk"
  607     "sl"
  608     "sq"
  609     "sr-Cyrl"
  610     "sv"
  611     "tr"
  612     "uk"
  613     "vi"
  614     "zh"
  615     "zh-Latn"
  616     ) ;
  617   sh:minCount 1 ;
  618   sh:maxCount 1 ;
  619   sh:message "Problem with period language tag" ;
  620   .
  621 
  622 periodo:PeriodLanguageShape
  623   rdf:type sh:PropertyShape ;
  624   sh:path dcterms:language ;
  625   sh:name "language" ;
  626   sh:description "Language of the preferred label for this period" ;
  627   sh:nodeKind sh:IRI ;
  628   sh:pattern "^http://lexvo.org/id/iso639-[13]/[a-z]{2,3}" ;
  629   sh:minCount 1 ;
  630   sh:maxCount 1 ;
  631   sh:message "Problem with period language" ;
  632   .
  633 
  634 periodo:PeriodScriptShape
  635   rdf:type sh:PropertyShape ;
  636   sh:path lvont:inScript ;
  637   sh:name "script" ;
  638   sh:description "Script of the preferred label for this period" ;
  639   sh:nodeKind sh:IRI ;
  640   sh:pattern "^http://lexvo.org/id/script/[A-Z][a-z]{3}" ;
  641   sh:maxCount 1 ;
  642   sh:message "Problem with period script" ;
  643   .
  644 
  645 periodo:AuthorityShape
  646   rdf:type sh:NodeShape ;
  647   rdfs:label "Period authority shape" ;
  648   sh:targetClass skos:ConceptScheme ;
  649   sh:closed "true"^^xsd:boolean ;
  650   sh:ignoredProperties (
  651     rdf:type
  652     ) ;
  653   sh:pattern "^http://n2t.net/ark:/99152/p0[a-z0-9]{5}" ;
  654   sh:property
  655     periodo:AuthoritySourceShape ,
  656     periodo:AuthorityEditorialNoteShape ,
  657     periodo:AuthoritySameAsShape
  658   .
  659 
  660 periodo:AuthoritySourceShape
  661   rdf:type sh:PropertyShape ;
  662   sh:path dcterms:source ;
  663   sh:name "source" ;
  664   sh:description "Bibliographic description of the source" ;
  665   sh:nodeKind sh:BlankNodeOrIRI ;
  666   sh:node periodo:SourceShape ;
  667   sh:minCount 1 ;
  668   sh:maxCount 1 ;
  669   sh:message "Problem with authority source" ;
  670   .
  671 
  672 periodo:AuthorityEditorialNoteShape
  673   rdf:type sh:PropertyShape ;
  674   sh:path skos:editorialNote ;
  675   sh:name "editorial note" ;
  676   sh:description "Administrative or editorial notes from PeriodO curators" ;
  677   sh:datatype xsd:string ;
  678   sh:minCount 1 ;
  679   sh:maxCount 1 ;
  680   sh:message "Problem with authority editorial note" ;
  681   .
  682 
  683 periodo:AuthoritySameAsShape
  684   rdf:type sh:PropertyShape ;
  685   sh:path owl:sameAs ;
  686   sh:name "same as" ;
  687   sh:description "Alternative URI for this authority" ;
  688   sh:nodeKind sh:IRI ;
  689   sh:message "Problem with authority alternative URI (sameAs)" ;
  690   .
  691 
  692 periodo:SourceShape
  693   rdf:type sh:NodeShape ;
  694   rdfs:label "Source shape" ;
  695   sh:closed "true"^^xsd:boolean ;
  696   sh:ignoredProperties (
  697     rdf:type
  698     ) ;
  699   sh:property
  700     periodo:SourceIsPartOfShape ,
  701     periodo:SourceTitleShape ,
  702     periodo:SourceIssuedShape ,
  703     periodo:SourceDateShape ,
  704     periodo:SourceCreatorShape ,
  705     periodo:SourceContributorShape ,
  706     periodo:SourceAbstractShape ,
  707     periodo:SourceLocatorShape ,
  708     periodo:SourceEditorialNoteShape ,
  709     periodo:SourceSameAsShape ,
  710     periodo:SourceURLShape
  711   .
  712 
  713 periodo:SourceIsPartOfShape
  714   rdf:type sh:PropertyShape ;
  715   sh:path dcterms:isPartOf ;
  716   sh:name "is part of" ;
  717   sh:nodeKind sh:BlankNodeOrIRI ;
  718   sh:maxCount 1 ;
  719   .
  720 
  721 periodo:SourceTitleShape
  722   rdf:type sh:PropertyShape ;
  723   sh:path dcterms:title ;
  724   sh:name "title" ;
  725   sh:datatype xsd:string ;
  726   sh:maxCount 1 ;
  727   .
  728 
  729 periodo:SourceIssuedShape
  730   rdf:type sh:PropertyShape ;
  731   sh:path dcterms:issued ;
  732   sh:name "issued" ;
  733   sh:datatype xsd:string ;
  734   sh:maxCount 1 ;
  735   .
  736 
  737 periodo:SourceDateShape
  738   rdf:type sh:PropertyShape ;
  739   sh:path dcterms:date ;
  740   sh:name "date" ;
  741   sh:datatype xsd:date ;
  742   sh:maxCount 1 ;
  743   .
  744 
  745 periodo:SourceCreatorShape
  746   rdf:type sh:PropertyShape ;
  747   sh:path dcterms:creator ;
  748   sh:name "creator" ;
  749   sh:nodeKind sh:BlankNodeOrIRI ;
  750   .
  751 
  752 periodo:SourceContributorShape
  753   rdf:type sh:PropertyShape ;
  754   sh:path dcterms:contributor ;
  755   sh:name "contributor" ;
  756   sh:nodeKind sh:BlankNodeOrIRI ;
  757   .
  758 
  759 periodo:SourceAbstractShape
  760   rdf:type sh:PropertyShape ;
  761   sh:path dcterms:abstract ;
  762   sh:name "abstract" ;
  763   sh:datatype xsd:string ;
  764   sh:maxCount 1 ;
  765   .
  766 
  767 periodo:SourceLocatorShape
  768   rdf:type sh:PropertyShape ;
  769   sh:path bibo:locator ;
  770   sh:name "locator" ;
  771   sh:datatype xsd:string ;
  772   sh:maxCount 1 ;
  773   .
  774 
  775 periodo:SourceEditorialNoteShape
  776   rdf:type sh:PropertyShape ;
  777   sh:path skos:editorialNote ;
  778   sh:name "editorial note" ;
  779   sh:description "Administrative or editorial notes from PeriodO curators" ;
  780   sh:datatype xsd:string ;
  781   sh:maxCount 1 ;
  782   .
  783 
  784 periodo:SourceSameAsShape
  785   rdf:type sh:PropertyShape ;
  786   sh:path owl:sameAs ;
  787   sh:name "same as" ;
  788   sh:description "External URI for this source" ;
  789   sh:nodeKind sh:IRI ;
  790   .
  791 
  792 periodo:SourceURLShape
  793   rdf:type sh:PropertyShape ;
  794   sh:path foaf:page ;
  795   sh:name "url" ;
  796   sh:description "Web resource with information about this source" ;
  797   sh:nodeKind sh:IRI ;
  798   .