@prefix xsd:       <http://www.w3.org/2001/XMLSchema#> . 
@prefix rdf:       <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . 
@prefix rdfs:      <http://www.w3.org/2000/01/rdf-schema#> . 
@prefix owl:       <http://www.w3.org/2002/07/owl#> . 

@prefix skos:      <http://www.w3.org/2004/02/skos/core#> . 
@prefix vann:      <http://purl.org/vocab/vann/> . 
@prefix dc:        <http://purl.org/dc/elements/1.1/> . 
@prefix foaf:      <http://xmlns.com/foaf/0.1/> . 
@prefix dcterms:   <http://purl.org/dc/terms/> . 
@prefix cc:        <http://creativecommons.org/ns#> .
@prefix sh:        <http://www.w3.org/ns/shacl#> . 
@prefix dash:      <http://datashapes.org/dash#> . 

@prefix ex:        <http://example.net/ns#> . 

@prefix ottr:      <http://ns.ottr.xyz/0.4/> . 

@prefix o-wottr:   <http://spec.ottr.xyz/wOTTR/0.4/tpl/> . 

ottr:VocabularyTokenShape a sh:NodeShape ;
  sh:target [
    a sh:SPARQLTarget ;
    sh:select """
    SELECT ?this 
    WHERE { { ?this ?p ?o }
      UNION { ?s ?this ?o }
      UNION { ?s ?p ?this }
    FILTER (isIRI(?this) && STRSTARTS(STR(?this), "http://ns.ottr.xyz/0.4/"))
    }
    """ ;
    ] ;
  sh:in ( 
    ottr:Triple
    ottr:IRI
    ottr:Bot
    ottr:NEList
    ottr:LUB
    ottr:ArgumentModifier
    	ottr:Argument
    	ottr:BaseTemplate
    	ottr:ExpansionModifier
    	ottr:Instance
    	ottr:ParameterModifier
    	ottr:Parameter
    	ottr:Signature
    	ottr:Template
    	ottr:annotation
    	ottr:arguments
    	ottr:cross
    	ottr:default
    	ottr:listExpand
    	ottr:modifier
    	ottr:nonBlank
    	ottr:none
    	ottr:of
    	ottr:optional
    	ottr:parameters
    	ottr:pattern
    	ottr:type
    	ottr:values
    	ottr:value
    	ottr:variable
    	ottr:zipMax
    	ottr:zipMin
      ) ;
  sh:name "OTTR vocabulary element." ;
  sh:message "Unrecognised OTTR vocabulary element. Check spelling." 
.
