@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 xsd:    <http://www.w3.org/2001/XMLSchema#> .

@prefix rottt:   <http://spec.ottr.xyz/rottr/0#> .
@prefix ottt:   <http://spec.ottr.xyz/rottr/0/types#> .
@prefix ottr:   <http://ns.ottr.xyz/templates#> . 

@prefix sh:      <http://www.w3.org/ns/shacl#> .

ottt:BasicTypeShape a sh:NodeShape ;
	sh:in (
		rdfs:Resource
		ottt:Bot
		ottt:IRI
		owl:Class
		owl:NamedIndividual
		rdfs:Datatype
		owl:ObjectProperty
		owl:DatatypeProperty
		owl:AnnotationProperty
		rdfs:Literal
		xsd:string
		xsd:normalizedString
		xsd:token
		xsd:language
		xsd:Name
		xsd:NCName
		xsd:NMTOKEN
		owl:real
		owl:rational
		xsd:decimal
		xsd:integer
		xsd:long
		xsd:int
		xsd:short
		xsd:byte
		xsd:nonNegativeInteger
		xsd:positiveInteger
		xsd:unsignedLong
		xsd:unsignedInt
		xsd:unsignedShort
		xsd:unsignedByte
		xsd:nonPositiveInteger
		xsd:negativeInteger
		xsd:double
		xsd:float
		xsd:date
		xsd:dateTime
		xsd:dateTimeStamp
		xsd:time
		xsd:gYear
		xsd:gMonth
		xsd:gDay
		xsd:gYearMonth
		xsd:gMonthDay
		xsd:duration
		xsd:yearMonthDuration
		xsd:dayTimeDuration
		xsd:hexBinary
		xsd:base64Binary
		xsd:boolean
		xsd:anyURI
		rdf:HTML
		rdf:XMLLiteral
		ottt:Punned-Class-ObjectProperty
		ottt:Punned-Class-DatatypeProperty
		ottt:Punned-Class-AnnotationProperty
		ottt:Punned-Datatype-NamedIndividual
		ottt:Punned-Datatype-ObjectProperty
		ottt:Punned-Datatype-DatatypeProperty
		ottt:Punned-Datatype-AnnotationProperty
		ottt:Punned-NamedIndividual-ObjectProperty
		ottt:Punned-NamedIndividual-DatatypeProperty
		ottt:Punned-NamedIndividual-AnnotationProperty
		ottt:Punned-Class-NamedIndividual-ObjectProperty
		ottt:Punned-Class-NamedIndividual-DatatypeProperty
		ottt:Punned-Class-NamedIndividual-AnnotationProperty
		ottt:Punned-Datatype-NamedIndividual-ObjectProperty
		ottt:Punned-Datatype-NamedIndividual-DatatypeProperty
		ottt:Punned-Datatype-NamedIndividual-AnnotationProperty
	) .

ottt:ListTypeShape a sh:NodeShape ;
        sh:in (
                rdf:List
                ottt:NEList
        ) .

ottt:TypeShape a sh:NodeShape ;
   sh:or (ottt:BasicTypeShape ottt:ListTypeShape ottt:LUB) .
