# baseURI: http://spinrdf.org/sp

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

<http://spinrdf.org/sp>
  rdf:type owl:Ontology ;
  rdfs:comment "An RDF schema to syntactically represent SPARQL queries and update commands as RDF triples."^^xsd:string ;
  rdfs:label "SPIN SPARQL Syntax"^^xsd:string ;
  owl:versionInfo "1.5.0"^^xsd:string ;
.
sp:Aggregation
  rdf:type rdfs:Class ;
  rdfs:comment "Base class of aggregation types (not part of the SPARQL 1.0 standard but supported by ARQ and other engines)." ;
  rdfs:label "Aggregation"^^xsd:string ;
  rdfs:subClassOf sp:SystemClass ;
.
sp:AltPath
  rdf:type rdfs:Class ;
  rdfs:comment "An alternative path with the union of sp:path1 and sp:path2." ;
  rdfs:label "Alt path"^^xsd:string ;
  rdfs:subClassOf sp:Path ;
.
sp:Asc
  rdf:type rdfs:Class ;
  rdfs:comment "Marker to indicate ascending order." ;
  rdfs:label "Asc"^^xsd:string ;
  rdfs:subClassOf sp:OrderByCondition ;
.
sp:Ask
  rdf:type rdfs:Class ;
  rdfs:comment "An ASK query that returns true if the condition in the body is met by at least one result set." ;
  rdfs:label "Ask"^^xsd:string ;
  rdfs:subClassOf sp:Query ;
.
sp:Avg
  rdf:type rdfs:Class ;
  rdfs:comment "Represents AVG aggregations."^^xsd:string ;
  rdfs:label "AVG"^^xsd:string ;
  rdfs:subClassOf sp:Aggregation ;
.
sp:Bind
  rdf:type rdfs:Class ;
  rdfs:comment "A BIND element."^^xsd:string ;
  rdfs:label "Bind"^^xsd:string ;
  rdfs:subClassOf sp:Element ;
.
sp:Clear
  rdf:type rdfs:Class ;
  rdfs:comment "An Update operation that removes all triples from a specified graph. Must specify the graph using sp:graphIRI, or sp:default, sp:named or sp:all. May have the SILENT flag, encoded using sp:silent."^^xsd:string ;
  rdfs:label "Clear"^^xsd:string ;
  rdfs:subClassOf sp:Update ;
.
sp:Command
  rdf:type rdfs:Class ;
  rdfs:comment "A shared superclass for sp:Query and sp:Update that can be used to specify that the range of property can be either one."^^xsd:string ;
  rdfs:label "Command"^^xsd:string ;
  rdfs:subClassOf sp:SystemClass ;
.
sp:Construct
  rdf:type rdfs:Class ;
  rdfs:comment "A CONSTRUCT-type query that can be used to construct new triples from template triples (head) that use variable bindings from the match patterns (body)." ;
  rdfs:label "Construct"^^xsd:string ;
  rdfs:subClassOf sp:Query ;
.
sp:Count
  rdf:type rdfs:Class ;
  rdfs:comment "Counts the number of times a variable is used. The variable is stored in the variable property. This might be left blank to indicate COUNT(*)."^^xsd:string ;
  rdfs:label "COUNT"^^xsd:string ;
  rdfs:subClassOf sp:Aggregation ;
.
sp:Create
  rdf:type rdfs:Class ;
  rdfs:comment "An Update operation that creates a new empty graph with a name specified by sp:graphIRI. May have sp:silent set to true."^^xsd:string ;
  rdfs:label "Create"^^xsd:string ;
  rdfs:subClassOf sp:Update ;
.
sp:Delete
  rdf:type rdfs:Class ;
  rdf:type owl:DeprecatedClass ;
  rdfs:comment """Deprecated - use sp:Modify instead.

Represents a DELETE FROM (part of SPARQL UPDATE language). The graph IRIs are stored in sp:graphIRI. The template patterns to delete are stored in sp:deletePattern. The WHERE clause is represented using sp:where."""^^xsd:string ;
  rdfs:label "Delete"^^xsd:string ;
  rdfs:subClassOf sp:Modify ;
.
sp:DeleteData
  rdf:type rdfs:Class ;
  rdfs:comment "An Update operation to delete specific triples. The graph triples are represented using sp:data, which points to an rdf:List of sp:Triples or sp:NamedGraphs."^^xsd:string ;
  rdfs:label "Delete data"^^xsd:string ;
  rdfs:subClassOf sp:Update ;
.
sp:DeleteWhere
  rdf:type rdfs:Class ;
  rdfs:comment "An Update operation where the triples matched by the WHERE clause (sp:where) will be the triples deleted."^^xsd:string ;
  rdfs:label "Delete where"^^xsd:string ;
  rdfs:subClassOf sp:Update ;
.
sp:Desc
  rdf:type rdfs:Class ;
  rdfs:comment "Marker to indicate descending order." ;
  rdfs:label "Desc"^^xsd:string ;
  rdfs:subClassOf sp:OrderByCondition ;
.
sp:Describe
  rdf:type rdfs:Class ;
  rdfs:comment "A DESCRIBE-type Query." ;
  rdfs:label "Describe"^^xsd:string ;
  rdfs:subClassOf sp:Query ;
.
sp:Drop
  rdf:type rdfs:Class ;
  rdfs:comment "An Update operation that removes a specified graph from the Graph Store. Must specify the graph using sp:graphIRI, or sp:default, sp:named or sp:all. May have the SILENT flag, encoded using sp:silent."^^xsd:string ;
  rdfs:label "Drop"^^xsd:string ;
  rdfs:subClassOf sp:Update ;
.
sp:Element
  rdf:type rdfs:Class ;
  rdfs:comment "An abstract base class for all pattern elements." ;
  rdfs:label "Element"^^xsd:string ;
  rdfs:subClassOf sp:SystemClass ;
.
sp:ElementGroup
  rdf:type rdfs:Class ;
  rdfs:comment "Abstract base class of group patterns." ;
  rdfs:label "Element group"^^xsd:string ;
  rdfs:subClassOf sp:Element ;
.
sp:ElementList
  rdf:type rdfs:Class ;
  rdfs:comment "A list of Elements. This class is never instantiated directly as SPIN will use plain rdf:Lists to store element lists." ;
  rdfs:label "Element list"^^xsd:string ;
  rdfs:subClassOf sp:ElementGroup ;
  rdfs:subClassOf rdf:List ;
.
sp:Exists
  rdf:type rdfs:Class ;
  rdfs:comment "An EXISTS element group."^^xsd:string ;
  rdfs:label "Exists"^^xsd:string ;
  rdfs:subClassOf sp:ElementGroup ;
.
sp:Filter
  rdf:type rdfs:Class ;
  rdfs:comment "A constraint element that evaluates a given expression to true or false." ;
  rdfs:label "Filter"^^xsd:string ;
  rdfs:subClassOf sp:Element ;
.
sp:GroupConcat
  rdf:type rdfs:Class ;
  rdfs:comment "Represents GROUP_CONCAT aggregations."^^xsd:string ;
  rdfs:label "GROUP_CONCAT"^^xsd:string ;
  rdfs:subClassOf sp:Aggregation ;
.
sp:Insert
  rdf:type rdfs:Class ;
  rdf:type owl:DeprecatedClass ;
  rdfs:comment """Deprecated - use sp:Modify instead.

Represents a INSERT INTO (part of SPARQL UPDATE language). The graph IRIs are stored in sp:graphIRI. The template patterns to delete are stored in sp:insertPattern. The WHERE clause is represented using sp:where."""^^xsd:string ;
  rdfs:label "Insert"^^xsd:string ;
  rdfs:subClassOf sp:Modify ;
.
sp:InsertData
  rdf:type rdfs:Class ;
  rdfs:comment "An Update operation to insert specific triples. The graph triples are represented using sp:data, which points to an rdf:List of sp:Triples or sp:NamedGraphs."^^xsd:string ;
  rdfs:label "Insert data"^^xsd:string ;
  rdfs:subClassOf sp:Update ;
.
sp:Let
  rdf:type rdfs:Class ;
  rdf:type owl:DeprecatedClass ;
  rdfs:comment """Deprecated: use sp:Bind instead.

A variable assignment (LET (?<varName> := <expression>)). Not part of the SPARQL 1.0 standard, but (for example) ARQ."""^^xsd:string ;
  rdfs:label "Let"^^xsd:string ;
  rdfs:subClassOf sp:Bind ;
.
sp:Load
  rdf:type rdfs:Class ;
  rdfs:comment "A LOAD Update operation. The document to load is specified using sp:document, and the (optional) target graph using sp:into."^^xsd:string ;
  rdfs:label "Load"^^xsd:string ;
  rdfs:subClassOf sp:Update ;
.
sp:Max
  rdf:type rdfs:Class ;
  rdfs:comment "Represents MAX aggregations."^^xsd:string ;
  rdfs:label "MAX"^^xsd:string ;
  rdfs:subClassOf sp:Aggregation ;
.
sp:Min
  rdf:type rdfs:Class ;
  rdfs:comment "Represents MIN aggregations."^^xsd:string ;
  rdfs:label "MIN"^^xsd:string ;
  rdfs:subClassOf sp:Aggregation ;
.
sp:Minus
  rdf:type rdfs:Class ;
  rdfs:comment "A MINUS element group."^^xsd:string ;
  rdfs:label "Minus"^^xsd:string ;
  rdfs:subClassOf sp:ElementGroup ;
.
sp:ModPath
  rdf:type rdfs:Class ;
  rdfs:comment "A modified path such as rdfs:subClassOf*." ;
  rdfs:label "Mod path"^^xsd:string ;
  rdfs:subClassOf sp:Path ;
.
sp:Modify
  rdf:type rdfs:Class ;
  rdfs:comment "Represents a MODIFY (part of SPARQL UPDATE language). The graph IRIs are stored in sp:graphIRI. The template patterns are stored in sp:deletePattern and sp:insertPattern. The WHERE clause is represented using sp:where."^^xsd:string ;
  rdfs:label "Modify"^^xsd:string ;
  rdfs:subClassOf sp:Update ;
.
sp:NamedGraph
  rdf:type rdfs:Class ;
  rdfs:comment "A named Graph element such as GRAPH <uri> {...}." ;
  rdfs:label "Named graph"^^xsd:string ;
  rdfs:subClassOf sp:ElementGroup ;
.
sp:NotExists
  rdf:type rdfs:Class ;
  rdfs:comment "A NOT EXISTS element group."^^xsd:string ;
  rdfs:label "Not exists"^^xsd:string ;
  rdfs:subClassOf sp:ElementGroup ;
.
sp:Optional
  rdf:type rdfs:Class ;
  rdfs:comment "An optional element in a query." ;
  rdfs:label "Optional"^^xsd:string ;
  rdfs:subClassOf sp:ElementGroup ;
.
sp:OrderByCondition
  rdf:type rdfs:Class ;
  rdfs:comment "An abstract base class for ascending or descending order conditions. Instances of this class (typically bnodes) must have a value for expression to point to the actual values." ;
  rdfs:label "Order by condition"^^xsd:string ;
  rdfs:subClassOf sp:SystemClass ;
.
sp:Path
  rdf:type rdfs:Class ;
  rdfs:comment "The base class of SPARQL property path expressions. Paths are used by sp:TriplePath triple paths." ;
  rdfs:label "Path"^^xsd:string ;
  rdfs:subClassOf sp:SystemClass ;
.
sp:Query
  rdf:type rdfs:Class ;
  rdfs:comment "Abstract base class of the various types of supported queries. Common to all types of queries is that they can have a body (\"WHERE clause\")." ;
  rdfs:label "Query"^^xsd:string ;
  rdfs:subClassOf sp:Command ;
.
sp:ReverseLinkPath
  rdf:type rdfs:Class ;
  rdfs:label "Reverse link path"^^xsd:string ;
  rdfs:subClassOf sp:Path ;
.
sp:ReversePath
  rdf:type rdfs:Class ;
  rdfs:comment "A path with reversed direction." ;
  rdfs:label "Reverse path"^^xsd:string ;
  rdfs:subClassOf sp:Path ;
.
sp:Sample
  rdf:type rdfs:Class ;
  rdfs:comment "Represents SAMPLE aggregations"^^xsd:string ;
  rdfs:label "SAMPLE"^^xsd:string ;
  rdfs:subClassOf sp:Aggregation ;
.
sp:Select
  rdf:type rdfs:Class ;
  rdfs:comment "A SELECT-type query that returns variable bindings as its result." ;
  rdfs:label "Select query"^^xsd:string ;
  rdfs:subClassOf sp:Query ;
.
sp:SeqPath
  rdf:type rdfs:Class ;
  rdfs:comment "A sequence of multiple paths." ;
  rdfs:label "Seq path"^^xsd:string ;
  rdfs:subClassOf sp:Path ;
.
sp:Service
  rdf:type rdfs:Class ;
  rdfs:comment "A SERVICE call that matches a nested sub-pattern against a SPARQL end point specified by a URI."^^xsd:string ;
  rdfs:label "Service"^^xsd:string ;
  rdfs:subClassOf sp:ElementGroup ;
.
sp:SubQuery
  rdf:type rdfs:Class ;
  rdfs:comment "A nested SELECT query inside of an element list. The query is stored in sp:query."^^xsd:string ;
  rdfs:label "Sub query"^^xsd:string ;
  rdfs:subClassOf sp:Element ;
.
sp:Sum
  rdf:type rdfs:Class ;
  rdfs:comment "Represents sum aggregations, e.g. SELECT SUM(?varName)..."^^xsd:string ;
  rdfs:label "SUM"^^xsd:string ;
  rdfs:subClassOf sp:Aggregation ;
.
sp:SystemClass
  rdf:type rdfs:Class ;
  rdfs:comment "An \"artificial\" root class that groups all SP classes. This makes them look much less overwhelming in UI tools. Typical end users don't need to see those classes anyway." ;
  rdfs:label "SP System class"^^xsd:string ;
  rdfs:subClassOf rdfs:Resource ;
.
sp:Triple
  rdf:type rdfs:Class ;
  rdfs:comment "A base class for TriplePattern and TripleTemplate. This basically specifies that subject, predicate and object must be present."^^xsd:string ;
  rdfs:label "Triple"^^xsd:string ;
  rdfs:subClassOf sp:Tuple ;
.
sp:TriplePath
  rdf:type rdfs:Class ;
  rdfs:comment "Similar to a TriplePattern, but with a path expression as its predicate. For example, this can be used to express transitive sub-class relationships (?subClass rdfs:subClassOf* ?superClass)." ;
  rdfs:label "Triple path"^^xsd:string ;
  rdfs:subClassOf sp:Element ;
  rdfs:subClassOf sp:Tuple ;
.
sp:TriplePattern
  rdf:type rdfs:Class ;
  rdfs:comment "A triple pattern used in the body of a query." ;
  rdfs:label "Triple pattern"^^xsd:string ;
  rdfs:subClassOf sp:Element ;
  rdfs:subClassOf sp:Triple ;
.
sp:TripleTemplate
  rdf:type rdfs:Class ;
  rdfs:comment "A prototypical triple used as template in the head of a Construct query. May contain variables." ;
  rdfs:label "Triple template"^^xsd:string ;
  rdfs:subClassOf sp:Triple ;
.
sp:Tuple
  rdf:type rdfs:Class ;
  rdfs:comment "Abstract base class for things that have subject and object." ;
  rdfs:label "Tuple"^^xsd:string ;
  rdfs:subClassOf sp:SystemClass ;
.
sp:Union
  rdf:type rdfs:Class ;
  rdfs:comment "A UNION group." ;
  rdfs:label "Union"^^xsd:string ;
  rdfs:subClassOf sp:ElementGroup ;
.
sp:Update
  rdf:type rdfs:Class ;
  rdfs:comment "Abstract base class to group the various SPARQL UPDATE commands."^^xsd:string ;
  rdfs:label "Update"^^xsd:string ;
  rdfs:subClassOf sp:Command ;
.
sp:Values
  rdf:type rdfs:Class ;
  rdfs:comment "A VALUES element. sp:varNames points to an rdf:List of strings for the variables, sp:values to an rdf:List of rdf:Lists with nodes for each variable, in the order defined by the variables list."^^xsd:string ;
  rdfs:label "Values"^^xsd:string ;
  rdfs:subClassOf sp:Element ;
.
sp:Variable
  rdf:type rdfs:Class ;
  rdfs:comment "A variable mentioned in a Triple or expression. Variables are often blank nodes with the variable name stored in ts:name. Variables can also be supplied with a URI in which case the system will attempt to reuse the same variable instance across multiple query definitions." ;
  rdfs:label "Variable"^^xsd:string ;
  rdfs:subClassOf sp:SystemClass ;
.
sp:all
  rdf:type rdf:Property ;
  rdfs:comment "Used in DROP and CLEAR."^^xsd:string ;
  rdfs:label "all"^^xsd:string ;
  rdfs:range xsd:boolean ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:arg
  rdf:type rdf:Property ;
  rdfs:comment "Abstract superproperty for the enumerated arg1, arg2 etc." ;
  rdfs:label "arg"^^xsd:string ;
.
sp:arg1
  rdf:type rdf:Property ;
  rdfs:comment "The first argument of a function call." ;
  rdfs:label "arg1"^^xsd:string ;
  rdfs:subPropertyOf sp:arg ;
.
sp:arg2
  rdf:type rdf:Property ;
  rdfs:comment "The second argument of a function call." ;
  rdfs:label "arg2"^^xsd:string ;
  rdfs:subPropertyOf sp:arg ;
.
sp:arg3
  rdf:type rdf:Property ;
  rdfs:comment "The third argument of a function call." ;
  rdfs:label "arg3"^^xsd:string ;
  rdfs:subPropertyOf sp:arg ;
.
sp:arg4
  rdf:type rdf:Property ;
  rdfs:comment "The forth argument of a function call." ;
  rdfs:label "arg4"^^xsd:string ;
  rdfs:subPropertyOf sp:arg ;
.
sp:arg5
  rdf:type rdf:Property ;
  rdfs:comment "The fifth argument of a function call. Further arguments are not common in SPARQL, therefore no sp:arg6, etc are defined here. However, they can be created if needed." ;
  rdfs:label "arg5"^^xsd:string ;
  rdfs:subPropertyOf sp:arg ;
.
sp:as
  rdf:type rdf:Property ;
  rdfs:comment "Points to a Variable used in an AS statement such as COUNT aggregates." ;
  rdfs:label "as"^^xsd:string ;
  rdfs:range sp:Variable ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:bindings
  rdf:type rdf:Property ;
  rdfs:comment "The actual bindings of a sp:Values element."^^xsd:string ;
  rdfs:domain sp:Values ;
  rdfs:label "bindings"^^xsd:string ;
  rdfs:range rdf:List ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:default
  rdf:type rdf:Property ;
  rdfs:comment "Used in DROP and CLEAR."^^xsd:string ;
  rdfs:label "default"^^xsd:string ;
  rdfs:range xsd:boolean ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:deletePattern
  rdf:type rdf:Property ;
  rdfs:comment "Points to a list of sp:TripleTemplates and sp:NamedGraphs in a modify operation."^^xsd:string ;
  rdfs:domain sp:Update ;
  rdfs:label "delete pattern"^^xsd:string ;
  rdfs:range rdf:List ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:distinct
  rdf:type rdf:Property ;
  rdfs:comment "A marker property to indicate that a Select query is of type SELECT DISTINCT." ;
  rdfs:domain sp:Select ;
  rdfs:label "distinct"^^xsd:string ;
  rdfs:range xsd:boolean ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:document
  rdf:type rdf:Property ;
  rdfs:comment "The URI of the document to load using a LOAD Update operation."^^xsd:string ;
  rdfs:domain sp:Load ;
  rdfs:label "document"^^xsd:string ;
  rdfs:range rdfs:Resource ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:elements
  rdf:type rdf:Property ;
  rdfs:comment "Points to an ElementList, for example in an Optional element." ;
  rdfs:label "elements"^^xsd:string ;
  rdfs:range sp:ElementList ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:expression
  rdf:type rdf:Property ;
  rdfs:comment "Points to an expression, for example in a Filter or Assignment." ;
  rdfs:label "expression"^^xsd:string ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:from
  rdf:type rdf:Property ;
  rdfs:comment "Specifies an RDF Dataset used by a Query (FROM syntax in SPARQL). Values of this property must be URI resources." ;
  rdfs:domain sp:Query ;
  rdfs:label "from"^^xsd:string ;
  rdfs:range rdfs:Resource ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:fromNamed
  rdf:type rdf:Property ;
  rdfs:comment "Specifies a named RDF Dataset used by a Query (FROM NAMED syntax in SPARQL). Values of this property must be URI resources." ;
  rdfs:domain sp:Query ;
  rdfs:label "from named"^^xsd:string ;
  rdfs:range rdfs:Resource ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:graphIRI
  rdf:type rdf:Property ;
  rdfs:comment "Points to graph names (IRIs) in various sp:Update operations."^^xsd:string ;
  rdfs:label "graph IRI"^^xsd:string ;
  rdfs:range rdfs:Resource ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:graphNameNode
  rdf:type rdf:Property ;
  rdfs:comment "The name (URI or Variable) of a NamedGraph." ;
  rdfs:domain sp:NamedGraph ;
  rdfs:label "graph name node"^^xsd:string ;
  rdfs:range rdfs:Resource ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:groupBy
  rdf:type rdf:Property ;
  rdfs:comment "Points from a Query to the list of GROUP BY expressions." ;
  rdfs:domain sp:Select ;
  rdfs:label "group by"^^xsd:string ;
  rdfs:range rdf:List ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:having
  rdf:type rdf:Property ;
  rdfs:comment "Points from a SELECT query to a list of HAVING expressions."^^xsd:string ;
  rdfs:domain sp:Select ;
  rdfs:label "having"^^xsd:string ;
  rdfs:range rdf:List ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:insertPattern
  rdf:type rdf:Property ;
  rdfs:comment "Points to a list of sp:TripleTemplates or sp:NamedGraphs in a modify command."^^xsd:string ;
  rdfs:domain sp:Modify ;
  rdfs:label "insert pattern"^^xsd:string ;
  rdfs:range rdf:List ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:into
  rdf:type rdf:Property ;
  rdfs:comment "The (optional) target of a LOAD Update operation."^^xsd:string ;
  rdfs:domain sp:Load ;
  rdfs:label "into"^^xsd:string ;
  rdfs:range rdfs:Resource ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:limit
  rdf:type rdf:Property ;
  rdfs:comment "The LIMIT solution modifier of a Query." ;
  rdfs:domain sp:Query ;
  rdfs:label "limit"^^xsd:string ;
  rdfs:range xsd:long ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:modMax
  rdf:type rdf:Property ;
  rdfs:domain sp:ModPath ;
  rdfs:label "mod max"^^xsd:string ;
  rdfs:range xsd:integer ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:modMin
  rdf:type rdf:Property ;
  rdfs:domain sp:ModPath ;
  rdfs:label "mod min"^^xsd:string ;
  rdfs:range xsd:integer ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:named
  rdf:type rdf:Property ;
  rdfs:comment "Used in DROP and CLEAR."^^xsd:string ;
  rdfs:label "named"^^xsd:string ;
  rdfs:range xsd:boolean ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:node
  rdf:type rdf:Property ;
  rdfs:domain sp:ReverseLinkPath ;
  rdfs:label "node"^^xsd:string ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:object
  rdf:type rdf:Property ;
  rdfs:comment "An RDF Node or Variable describing the object of a triple." ;
  rdfs:domain sp:Tuple ;
  rdfs:label "object"^^xsd:string ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:offset
  rdf:type rdf:Property ;
  rdfs:comment "The OFFSET solution modifier of a Query." ;
  rdfs:domain sp:Query ;
  rdfs:label "offset"^^xsd:string ;
  rdfs:range xsd:long ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:orderBy
  rdf:type rdf:Property ;
  rdfs:comment "Links a query with an ORDER BY clause where the values are rdf:List containing OrderByConditions or expressions. While the domain of this property is sp:Query, only Describe and Select queries can have values of it." ;
  rdfs:domain sp:Query ;
  rdfs:label "order by"^^xsd:string ;
  rdfs:range rdf:List ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:path
  rdf:type rdf:Property ;
  rdfs:comment "Points from a TriplePath to its path." ;
  rdfs:domain sp:TriplePath ;
  rdfs:label "path"^^xsd:string ;
  rdfs:range sp:Path ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:path1
  rdf:type rdf:Property ;
  rdfs:comment "The first child path of a property path. Used by sp:AltPath and sp:SeqPath." ;
  rdfs:label "path1"^^xsd:string ;
  rdfs:range sp:Path ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:path2
  rdf:type rdf:Property ;
  rdfs:comment "The second child path of a property path. Used by sp:AltPath and sp:SeqPath." ;
  rdfs:label "path2"^^xsd:string ;
  rdfs:range sp:Path ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:predicate
  rdf:type rdf:Property ;
  rdfs:comment "A resource or Variable describing the predicate of a triple." ;
  rdfs:domain sp:Triple ;
  rdfs:label "predicate"^^xsd:string ;
  rdfs:range rdfs:Resource ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:query
  rdf:type rdf:Property ;
  rdfs:comment "Links a SubQuery resource with the nested Query."^^xsd:string ;
  rdfs:domain sp:SubQuery ;
  rdfs:label "query"^^xsd:string ;
  rdfs:range sp:Query ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:reduced
  rdf:type rdf:Property ;
  rdfs:comment "A property with true to indicate that a Select query has a REDUCED flag." ;
  rdfs:domain sp:Select ;
  rdfs:label "reduced"^^xsd:string ;
  rdfs:range xsd:boolean ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:resultNodes
  rdf:type rdf:Property ;
  rdfs:comment "Contains the result nodes (URI resources or Variables) of a Describe query." ;
  rdfs:domain sp:Describe ;
  rdfs:label "result nodes"^^xsd:string ;
  rdfs:range rdf:List ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:resultVariables
  rdf:type rdf:Property ;
  rdfs:comment "An rdf:List of variables that are returned by a Select query." ;
  rdfs:domain sp:Select ;
  rdfs:label "result variables"^^xsd:string ;
  rdfs:range rdf:List ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:separator
  rdf:type rdf:Property ;
  rdfs:comment "Stores the separator=\"...\" value of a GROUP_CONCAT (sp:GroupConcat) aggregation."^^xsd:string ;
  rdfs:domain sp:GroupConcat ;
  rdfs:label "separator"^^xsd:string ;
  rdfs:range xsd:string ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:serviceURI
  rdf:type rdf:Property ;
  rdfs:comment "Used by sp:Service to specify the URI of the SPARQL end point to invoke. Must point to a URI node."^^xsd:string ;
  rdfs:domain sp:Service ;
  rdfs:label "service URI"^^xsd:string ;
  rdfs:range rdfs:Resource ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:silent
  rdf:type rdf:Property ;
  rdfs:label "silent"^^xsd:string ;
  rdfs:range xsd:boolean ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:subPath
  rdf:type rdf:Property ;
  rdfs:comment "The child path of a property path expression. This is used by ReversePath and ModPath." ;
  rdfs:label "sub path"^^xsd:string ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:subject
  rdf:type rdf:Property ;
  rdfs:comment "A resource or Variable describing the subject of a triple." ;
  rdfs:domain sp:Tuple ;
  rdfs:label "subject"^^xsd:string ;
  rdfs:range rdfs:Resource ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:systemProperty
  rdf:type rdf:Property ;
  rdfs:comment "An abstract base proprerty that groups together the SP system properties. Users typically don't need to see them anyway." ;
  rdfs:label "SP system property"^^xsd:string ;
.
sp:templates
  rdf:type rdf:Property ;
  rdfs:comment "Points to a list of TripleTemplates that form the head of a Construct query." ;
  rdfs:domain sp:Construct ;
  rdfs:label "templates"^^xsd:string ;
  rdfs:range rdf:List ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:text
  rdf:type rdf:Property ;
  rdfs:comment "Can be attached to sp:Queries to store a textual representation of the query. This can be useful for tools that do not have a complete SPIN Syntax parser available." ;
  rdfs:label "text"^^xsd:string ;
  rdfs:range xsd:string ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:using
  rdf:type rdf:Property ;
  rdfs:domain sp:Modify ;
  rdfs:label "using"^^xsd:string ;
  rdfs:range rdfs:Resource ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:usingNamed
  rdf:type rdf:Property ;
  rdfs:domain sp:Modify ;
  rdfs:label "using named"^^xsd:string ;
  rdfs:range rdfs:Resource ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:values
  rdf:type rdf:Property ;
  rdfs:comment "The VALUES block at the end of a query. The object may just be an untyped blank node, i.e. the sp:Values type triple is optional."^^xsd:string ;
  rdfs:domain sp:Query ;
  rdfs:label "values"^^xsd:string ;
  rdfs:range sp:Values ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:varName
  rdf:type rdf:Property ;
  rdfs:comment "The name of a Variable." ;
  rdfs:domain sp:Variable ;
  rdfs:label "varName"^^xsd:string ;
  rdfs:range xsd:string ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:varNames
  rdf:type rdf:Property ;
  rdfs:comment "The names of the variables (xsd:strings) of the variables declared for a VALUES element."^^xsd:string ;
  rdfs:domain sp:Values ;
  rdfs:label "var names"^^xsd:string ;
  rdfs:range rdf:List ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:variable
  rdf:type rdf:Property ;
  rdfs:comment "The variable of a Bind element."^^xsd:string ;
  rdfs:domain sp:Bind ;
  rdfs:label "variable"^^xsd:string ;
  rdfs:range sp:Variable ;
  rdfs:subPropertyOf sp:systemProperty ;
.
sp:where
  rdf:type rdf:Property ;
  rdfs:comment "The WHERE clause of a Query." ;
  rdfs:label "where"^^xsd:string ;
  rdfs:range sp:ElementList ;
  rdfs:subPropertyOf sp:systemProperty ;
. 
sp:with
  rdf:type rdf:Property ;
  rdfs:domain sp:Modify ;
  rdfs:label "with"^^xsd:string ;
  rdfs:range rdfs:Resource ;
  rdfs:subPropertyOf sp:systemProperty ;
.
