PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX shex: <http://www.w3.org/ns/shex#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

shex:ShapeNot a rdfs:Class ;
  rdfs:label "Shape Not"@en ;
  rdfs:comment "A ShapeNot is satisfied when it’s included ShapeExpression is not satisfied."@en ;
  rdfs:subClassOf shex:ShapeExpression .

shex:shapeExpr a rdf:Property ;
  rdfs:label "shape expression"@en ;
  rdfs:comment "Shape Expression referenced by this shape or shape declaration."@en ;
  rdfs:range shex:ShapeExpression .

shex:ShapeExternal a rdfs:Class ;
  rdfs:label "Shape External"@en ;
  rdfs:comment "A reference to a shape defined in some external Schema."@en ;
  rdfs:subClassOf shex:ShapeExpression .

shex:Stem a rdfs:Class ;
  rdfs:label "Stem"@en ;
  rdfs:comment "Abstract class for Stems"@en .

shex:stem a rdf:Property ;
  rdfs:label "stem"@en ;
  rdfs:comment "A stem value used for matching or excluding values."@en ;
  rdfs:range <https://w3id.org/linkml/Any> .

shex:IriStem a rdfs:Class ;
  rdfs:label "IRI Stem"@en ;
  rdfs:comment "An IRI prefix used for matching IRIs."@en ;
  rdfs:subClassOf shex:Stem .

shex:IriStemRange a rdfs:Class ;
  rdfs:label "IRI StemRange"@en ;
  rdfs:comment "An IRI prefix (or wildcard) along with a set of excluded values, used for node matching."@en ;
  rdfs:subClassOf shex:StemRange .

shex:exclusion a rdf:Property ;
  rdfs:label "exclusion"@en ;
  rdfs:comment "Values that are excluded from value matching."@en ;
  rdfs:domain shex:StemRange ;
  rdfs:range xsd:string .

shex:QueryMap a rdfs:Class ;
  rdfs:label "Query Map"@en ;
  rdfs:comment "A map of node selectors to shape labels, used to select the nodes to be validated against particular shapes. Node selectors are RDF nodes or triple patterns."@en .

shex:shape a rdf:Property ;
  rdfs:label "shape"@en ;
  rdfs:comment "A ShEx shape expression label identifying the shape expression against which the selected nodes are validated, or the string \"START\" for the schema's start shape expression."@en ;
  rdfs:domain shex:QueryMap ;
  rdfs:range shex:ShapeExpression .

shex:node a rdf:Property ;
  rdfs:label "node"@en ;
  rdfs:comment "An RDF node, or a triple pattern which is used to select RDF nodes to be validated."@en ;
  rdfs:domain shex:QueryMap ;
  rdfs:range <https://w3id.org/linkml/Any> .

shex:ShapeMap a rdfs:Class ;
  rdfs:label "Shape Map"@en ;
  rdfs:comment "A QueryMap in which each node selector is an RDF node; associates RDF nodes with shapes, optionally recording the validation status of each association."@en ;
  rdfs:subClassOf shex:QueryMap .

shex:status a rdf:Property ;
  rdfs:label "status"@en ;
  rdfs:comment "The validation status of a node/shape association: \"conformant\" or \"nonconformant\". Defaults to \"conformant\"."@en ;
  rdfs:domain shex:ShapeMap ;
  rdfs:range xsd:string .

shex:Shape a rdfs:Class ;
  rdfs:label "Shape Or"@en ;
  rdfs:comment "A shapes schema is captured in a Schema object where shapes is a mapping from shape label to shape expression."@en ;
  rdfs:subClassOf shex:ShapeExpression .

shex:closed a rdf:Property ;
  rdfs:label "closed"@en ;
  rdfs:comment "Indicates that a Shape is closed, meaning that it may contain no property values other than those used within TripleConstraints."@en ;
  rdfs:domain shex:Shape ;
  rdfs:range xsd:boolean .

shex:extra a rdf:Property ;
  rdfs:label "extra"@en ;
  rdfs:comment "Properties which may have extra values beyond those matched through a constraint."@en ;
  rdfs:domain shex:Shape ;
  rdfs:range <https://w3id.org/linkml/Any> .

shex:expression a rdf:Property ;
  rdfs:label "expression"@en ;
  rdfs:comment "Expression associated with the TripleExpression."@en ;
  rdfs:domain shex:Shape ;
  rdfs:range shex:TripleExpression .

shex:extends a rdf:Property ;
  rdfs:label "extends"@en ;
  rdfs:comment "Base shape expressions for this shape."@en ;
  rdfs:domain shex:Shape ;
  rdfs:range shex:ShapeExpression .

shex:ShapeDecl a rdfs:Class ;
  rdfs:label "Shape Declaration"@en ;
  rdfs:comment "Associates a shape expression with a label, and optionally declares it abstract. The shapes in a Schema are ShapeDecls."@en .

shex:abstract a rdf:Property ;
  rdfs:label "abstract"@en ;
  rdfs:comment "Declares a ShapeDecl abstract, meaning that every reference to it must also identify at least one non-abstract shape."@en ;
  rdfs:domain shex:ShapeDecl ;
  rdfs:range xsd:boolean .

shex:LiteralStem a rdfs:Class ;
  rdfs:label "Literal Stem"@en ;
  rdfs:comment "An Literal prefix used for matching Literals."@en ;
  rdfs:subClassOf shex:Stem .

<https://w3id.org/linkml/Any> a rdfs:Class ;
  rdfs:comment "An unconstrained type or object"@en .

shex:ShapeExpression a rdfs:Class ;
  rdfs:label "Shape Expression"@en ;
  rdfs:comment "The abstract class of Shape Expressions."@en .

shex:ShapeOr a rdfs:Class ;
  rdfs:label "Shape Or"@en ;
  rdfs:comment "A ShapeExpression composed of one or more sub-expressions, one of which must match."@en ;
  rdfs:subClassOf shex:ShapeExpression .

shex:shapeExprs a rdf:Property ;
  rdfs:label "shape expressions"@en ;
  rdfs:comment "A list of 2 or more Shape Expressions referenced by this shape."@en ;
  rdfs:range shex:ShapeExpression ;
  rdfs:subPropertyOf shex:shapeExpr .

shex:NodeConstraint a rdfs:Class ;
  rdfs:label "Node Constraint"@en ;
  rdfs:comment "A constraint on the type or value of an RDF Node."@en ;
  rdfs:subClassOf shex:ShapeExpression .

shex:minlength a rdf:Property ;
  rdfs:label "min length"@en ;
  rdfs:comment "An atomic property that contains a single integer that is the minimum length of the value."@en ;
  rdfs:domain shex:NodeConstraint ;
  rdfs:range xsd:integer ;
  rdfs:subPropertyOf shex:stringFacet .

shex:pattern a rdf:Property ;
  rdfs:label "pattern"@en ;
  rdfs:comment "A regular expression used for matching a value."@en ;
  rdfs:domain shex:NodeConstraint ;
  rdfs:range xsd:string ;
  rdfs:subPropertyOf shex:stringFacet .

shex:flags a rdf:Property ;
  rdfs:label "flags"@en ;
  rdfs:comment "Regular expression flags"@en ;
  rdfs:domain shex:NodeConstraint ;
  rdfs:range xsd:string .

shex:minexclusive a rdf:Property ;
  rdfs:label "min exclusive"@en ;
  rdfs:comment "An atomic property that contains a single number that is the minimum valid value (exclusive)."@en ;
  rdfs:domain shex:NodeConstraint ;
  rdfs:range <https://w3id.org/linkml/Any> ;
  rdfs:subPropertyOf shex:numericFacet .

shex:fractiondigits a rdf:Property ;
  rdfs:label "fraction digits"@en ;
  rdfs:comment "for \"fractiondigits\" constraints, v is less than or equals the number of digits to the right of the decimal place in the XML Schema canonical form[xmlschema-2] of the value of n, ignoring trailing zeros."@en ;
  rdfs:domain shex:NodeConstraint ;
  rdfs:range xsd:integer ;
  rdfs:subPropertyOf shex:numericFacet .

shex:xsFacet a rdf:Property ;
  rdfs:label ""@en ;
  rdfs:comment "An abstract property of string and numeric facets on a NodeConstraint."@en ;
  rdfs:domain shex:NodeConstraint ;
  rdfs:range <https://w3id.org/linkml/Any> .

shex:maxinclusive a rdf:Property ;
  rdfs:label "max inclusive"@en ;
  rdfs:comment "An atomic property that contains a single number that is the maximum valid value (inclusive)."@en ;
  rdfs:domain shex:NodeConstraint ;
  rdfs:range <https://w3id.org/linkml/Any> ;
  rdfs:subPropertyOf shex:numericFacet .

shex:datatype a rdf:Property ;
  rdfs:label "datatype"@en ;
  rdfs:comment "A datatype constraint."@en ;
  rdfs:domain shex:NodeConstraint ;
  rdfs:range rdfs:Datatype .

shex:maxlength a rdf:Property ;
  rdfs:label "max length"@en ;
  rdfs:comment "A numeric atomic property that contains a single integer that is the maximum length of the value."@en ;
  rdfs:domain shex:NodeConstraint ;
  rdfs:range xsd:integer ;
  rdfs:subPropertyOf shex:stringFacet .

shex:maxexclusive a rdf:Property ;
  rdfs:label "max exclusive"@en ;
  rdfs:comment "An atomic property that contains a single number that is the maximum valid value (exclusive)."@en ;
  rdfs:domain shex:NodeConstraint ;
  rdfs:range <https://w3id.org/linkml/Any> ;
  rdfs:subPropertyOf shex:numericFacet .

shex:values a rdf:Property ;
  rdfs:label "values"@en ;
  rdfs:comment "A value restriction on a NodeConstraint."@en ;
  rdfs:domain shex:NodeConstraint ;
  rdfs:range xsd:string .

shex:totaldigits a rdf:Property ;
  rdfs:label "total digits"@en ;
  rdfs:comment "for \"totaldigits\" constraints, v equals the number of digits in the XML Schema canonical form[xmlschema-2] of the value of n"@en ;
  rdfs:domain shex:NodeConstraint ;
  rdfs:range xsd:integer ;
  rdfs:subPropertyOf shex:numericFacet .

shex:length a rdf:Property ;
  rdfs:label "length"@en ;
  rdfs:comment "The exact length of the value of the cell."@en ;
  rdfs:domain shex:NodeConstraint ;
  rdfs:range xsd:integer ;
  rdfs:subPropertyOf shex:stringFacet .

shex:nodeKind a rdf:Property ;
  rdfs:label "node kind"@en ;
  rdfs:comment "Restiction on the kind of node matched; restricted to the defined instances of NodeKind. One of shex:iri, shex:bnode, shex:literal, or shex:nonliteral."@en ;
  rdfs:domain shex:NodeConstraint ;
  rdfs:range shex:NodeKind .

shex:mininclusive a rdf:Property ;
  rdfs:label "min inclusive"@en ;
  rdfs:comment "An atomic property that contains a single number that is the minimum valid value (inclusive)."@en ;
  rdfs:domain shex:NodeConstraint ;
  rdfs:range <https://w3id.org/linkml/Any> ;
  rdfs:subPropertyOf shex:numericFacet .

shex:EachOf a rdfs:Class ;
  rdfs:label "Each Of"@en ;
  rdfs:comment "A TripleExpression composed of one or more sub-expressions, all of which must match."@en ;
  rdfs:subClassOf shex:TripleExpression .

shex:expressions a rdf:Property ;
  rdfs:label "expressions"@en ;
  rdfs:comment "List of 2 or more expressions associated with the TripleExpression."@en ;
  rdfs:range shex:TripleExpression .

shex:semActs a rdf:Property ;
  rdfs:label "semantic action"@en ;
  rdfs:comment "Semantic Actions on this TripleExpression."@en ;
  rdfs:range shex:SemAct .

shex:max a rdf:Property ;
  rdfs:label "maximum cardinality"@en ;
  rdfs:comment "Maximum number of times this TripleExpression may match; -1 for “*”"@en ;
  rdfs:range xsd:integer .

shex:annotation a rdf:Property ;
  rdfs:label "annotation"@en ;
  rdfs:comment "Annotations on a TripleExpression."@en ;
  rdfs:range shex:Annotation .

shex:min a rdf:Property ;
  rdfs:label "minimum cardinatliy"@en ;
  rdfs:comment "Minimum number of times this TripleExpression may match."@en ;
  rdfs:range xsd:integer .

shex:TripleConstraint a rdfs:Class ;
  rdfs:label "Triple Constraint"@en ;
  rdfs:comment "A constraint on a triple having a specific predicate and optionally a shape expression used for matching values."@en ;
  rdfs:subClassOf shex:TripleExpression .

shex:predicate a rdf:Property ;
  rdfs:label "predicate"@en ;
  rdfs:comment "The predicate of a TripleConstraint or Annotation."@en ;
  rdfs:range <https://w3id.org/linkml/Any> .

shex:valueExpr a rdf:Property ;
  rdfs:label "value expression"@en ;
  rdfs:comment "A ShapeExpression used for matching the object (or subject if inverted) of a TripleConstraint."@en ;
  rdfs:domain shex:TripleConstraint ;
  rdfs:range shex:ShapeExpression .

shex:inverse a rdf:Property ;
  rdfs:label "inverse"@en ;
  rdfs:comment "Constrains the subject of a triple, rather than the object."@en ;
  rdfs:domain shex:TripleConstraint ;
  rdfs:range xsd:boolean .

shex:OneOf a rdfs:Class ;
  rdfs:label "One Of"@en ;
  rdfs:comment "A TripleExpression composed of one or more sub-expressions, one of which must match."@en ;
  rdfs:subClassOf shex:TripleExpression .

rdfs:Datatype a rdfs:Class .

shex:LanguageStem a rdfs:Class ;
  rdfs:label "Language Stem"@en ;
  rdfs:comment "An Language prefix used for matching Literal Languages."@en ;
  rdfs:subClassOf shex:Stem .

shex:LanguageStemRange a rdfs:Class ;
  rdfs:label "Language StemRange"@en ;
  rdfs:comment "An Language prefix (or wildcard) along with a set of excluded values, used for node matching."@en ;
  rdfs:subClassOf shex:StemRange .

shex:Annotation a rdfs:Class ;
  rdfs:label "Annotation"@en ;
  rdfs:comment "Annotations provide a format-independent way to provide additional information about elements in a schema. "@en .

shex:object a rdf:Property ;
  rdfs:label "object"@en ;
  rdfs:comment "The object of an Annotation."@en ;
  rdfs:domain shex:Annotation ;
  rdfs:range <https://w3id.org/linkml/Any> .

shex:StemRange a rdfs:Class ;
  rdfs:label "StemRange"@en ;
  rdfs:comment "Abstract Class for Stem Ranges"@en .

shex:Language a rdfs:Class ;
  rdfs:label "Language"@en ;
  rdfs:comment "An Language tag used for matching Literal Languages."@en .

shex:languageTag a rdf:Property ;
  rdfs:label "language tag"@en ;
  rdfs:comment "The value used to match the language tag of a language-tagged string."@en ;
  rdfs:domain shex:Language ;
  rdfs:range xsd:string .

shex:Wildcard a rdfs:Class ;
  rdfs:label "Wildcard"@en ;
  rdfs:comment "Indicates that a stem is a Wildcard, rather than a URI prefix."@en .

shex:SemAct a rdfs:Class ;
  rdfs:label "Semantic Actions"@en ;
  rdfs:comment "A list of Semantic Actions that serve as an extension point for Shape Expressions. They appear in lists in Schema's startActs and Shape, OneOf, EachOf and TripleConstraint's semActs."@en .

shex:code a rdf:Property ;
  rdfs:label "code"@en ;
  rdfs:comment "Code executed by Semantic Action."@en ;
  rdfs:domain shex:SemAct ;
  rdfs:range xsd:string .

shex:name a rdf:Property ;
  rdfs:label "name"@en ;
  rdfs:comment "Identifier of SemAct extension."@en ;
  rdfs:domain shex:SemAct ;
  rdfs:range <https://w3id.org/linkml/Any> .

shex:LiteralStemRange a rdfs:Class ;
  rdfs:label "Literal StemRange"@en ;
  rdfs:comment "An Literal prefix (or wildcard) along with a set of excluded values, used for node matching."@en ;
  rdfs:subClassOf shex:StemRange .

shex:ShapeAnd a rdfs:Class ;
  rdfs:label "Shape And"@en ;
  rdfs:comment "A ShapeExpression composed of one or more sub-expressions, all of which must match."@en ;
  rdfs:subClassOf shex:ShapeExpression .

shex:Schema a rdfs:Class ;
  rdfs:label "Schema"@en ;
  rdfs:comment "A Schema contains the set of shapes, used for matching a focus node."@en .

shex:imports a rdf:Property ;
  rdfs:label "imports"@en ;
  rdfs:comment "Schemas imported by this Schema; their shape and triple expression labels are also in scope here."@en ;
  rdfs:domain shex:Schema ;
  rdfs:range <https://w3id.org/linkml/Any> .

shex:shapes a rdf:Property ;
  rdfs:label "shapes"@en ;
  rdfs:comment "Shape declarations in this Schema."@en ;
  rdfs:domain shex:Schema ;
  rdfs:range shex:ShapeDecl .

shex:start a rdf:Property ;
  rdfs:label "start"@en ;
  rdfs:comment "A ShapeExpression matched against the focus node prior to any other mapped expressions."@en ;
  rdfs:domain shex:Schema ;
  rdfs:range shex:ShapeExpression .

shex:startActs a rdf:Property ;
  rdfs:label "start actions"@en ;
  rdfs:comment "Semantic Actions run on the Schema."@en ;
  rdfs:domain shex:Schema ;
  rdfs:range shex:SemAct .

shex:TripleExpression a rdfs:Class ;
  rdfs:label "Triple Expression"@en ;
  rdfs:comment "The abstract class of Triple Expressions."@en .

shex:numericFacet a rdf:Property ;
  rdfs:label ""@en ;
  rdfs:comment "Abstract property of numeric facets on a NodeConstraint."@en ;
  rdfs:range xsd:string ;
  rdfs:subPropertyOf shex:xsFacet .

shex:stringFacet a rdf:Property ;
  rdfs:label ""@en ;
  rdfs:comment "An abstract property of string facets on a NodeConstraint."@en ;
  rdfs:range xsd:string ;
  rdfs:subPropertyOf shex:xsFacet .

shex:NodeKind a rdfs:Class ;
  rdfs:label "Node Kind"@en ;
  rdfs:comment "The set of kinds of RDF Nodes."@en .

shex:bnode a shex:NodeKind ;
  rdfs:label "bnode"@en ;
  rdfs:comment "Requires node to be a Blank Node"@en .

shex:iri a shex:NodeKind ;
  rdfs:label "iri"@en ;
  rdfs:comment "Requires node to be an IRI"@en .

shex:nonliteral a shex:NodeKind ;
  rdfs:label "nonliteral"@en ;
  rdfs:comment "Requires node to be a Blank Node or IRI"@en .

shex:literal a shex:NodeKind ;
  rdfs:label "literal"@en ;
  rdfs:comment "Requires node to be an rdf:Literal"@en .
