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

sd:UnionDefaultGraph a sd:Feature ;
	rdfs:label "Union Default Graph" ;
	rdfs:comment "sd:UnionDefaultGraph, when used as the object of the sd:feature property, indicates that the default graph of the dataset used during query and update evaluation (when an explicit dataset is not specified) is comprised of the union of all the named graphs in that dataset." .

sd:name a rdf:Property ;
	rdfs:domain sd:NamedGraph .

sd:NamedGraph a rdfs:Class ;
	rdfs:label "Named Graph" ;
	rdfs:comment "An instance of sd:NamedGraph represents a named graph having a name (via sd:name) and an optional graph description (via sd:graph)." .

sd:name rdfs:label "name" ;
	rdfs:comment "Relates a named graph to the name by which it may be referenced in a FROM/FROM NAMED clause. The object of the sd:name property is an IRI." .

sd:EmptyGraphs a sd:Feature ;
	rdfs:label "Empty Graphs" ;
	rdfs:comment "sd:EmptyGraphs, when used as the object of the sd:feature property, indicates that the underlying graph store supports empty graphs. A graph store that supports empty graphs MUST NOT remove graphs that are left empty after triples are removed from them." .

sd:defaultGraph a rdf:Property ;
	rdfs:domain sd:Dataset .

sd:Dataset a rdfs:Class ;
	rdfs:subClassOf sd:GraphCollection .

sd:GraphCollection a rdfs:Class ;
	rdfs:label "Graph Collection" ;
	rdfs:comment "An instance of sd:GraphCollection represents a collection of zero or more named graph descriptions. Each named graph description belonging to an sd:GraphCollection MUST be linked with the sd:namedGraph predicate." .

sd:Dataset rdfs:label "Dataset" ;
	rdfs:comment "An instance of sd:Dataset represents a RDF Dataset comprised of a default graph and zero or more named graphs." .

sd:defaultGraph rdfs:label "default graph" ;
	rdfs:range sd:Graph .

sd:Graph a rdfs:Class ;
	rdfs:label "Graph" ;
	rdfs:comment "An instance of sd:Graph represents the description of an RDF graph." .

sd:defaultGraph rdfs:comment "Relates an instance of sd:Dataset to the description of its default graph." .

sd:extensionAggregate a rdf:Property ;
	rdfs:label "extension aggregate" ;
	rdfs:subPropertyOf sd:feature .

sd:feature a rdf:Property ;
	rdfs:domain sd:Service .

sd:Service a rdfs:Class ;
	rdfs:label "Service" ;
	rdfs:comment "An instance of sd:Service represents a SPARQL service made available via the SPARQL Protocol." .

sd:feature rdfs:label "feature" ;
	rdfs:range sd:Feature .

sd:Feature a rdfs:Class ;
	rdfs:label "Feature" ;
	rdfs:comment "An instance of sd:Feature represents a feature of a SPARQL service. Specific types of features include functions, aggregates, languages, and entailment regimes and profiles. This document defines five instances of sd:Feature: sd:DereferencesURIs, sd:UnionDefaultGraph, sd:RequiresDataset, sd:EmptyGraphs, and sd:BasicFederatedQuery." .

sd:feature rdfs:comment "Relates an instance of sd:Service with a resource representing a supported feature." .

sd:extensionAggregate rdfs:domain sd:Service ;
	rdfs:range sd:Aggregate .

sd:Aggregate a rdfs:Class ;
	rdfs:subClassOf sd:Feature ;
	rdfs:label "Aggregate" ;
	rdfs:comment "An instance of sd:Aggregate represents an aggregate that may be used in a SPARQL aggregate query (for instance in a HAVING clause or SELECT expression) besides the standard list of supported aggregates COUNT, SUM, MIN, MAX, AVG, GROUP_CONCAT, and SAMPLE." .

sd:extensionAggregate rdfs:comment "Relates an instance of sd:Service to an aggregate that may be used in a SPARQL aggregate query (for instance in a HAVING clause or SELECT expression) besides the standard list of supported aggregates COUNT, SUM, MIN, MAX, AVG, GROUP_CONCAT, and SAMPLE" .

sd:BasicFederatedQuery a sd:Feature ;
	rdfs:label "Basic Federated Query" ;
	rdfs:comment "sd:BasicFederatedQuery, when used as the object of the sd:feature property, indicates that the SPARQL service supports basic federated query using the SERVICE keyword as defined by SPARQL 1.1 Federation Extensions." .

sd:SPARQL10Query a sd:Language ;
	rdfs:label "SPARQL 1.0 Query" ;
	rdfs:comment "sd:SPARQL10Query is an sd:Language representing the SPARQL 1.0 Query language." .

sd:defaultSupportedEntailmentProfile a rdf:Property ;
	rdfs:label "default supported entailment profile" ;
	rdfs:subPropertyOf sd:feature ;
	rdfs:domain sd:Service ;
	rdfs:range sd:EntailmentProfile .

sd:EntailmentProfile a rdfs:Class ;
	rdfs:subClassOf sd:Feature ;
	rdfs:label "Entailment Profile" ;
	rdfs:comment "An instance of sd:EntailmentProfile represents a profile of an entailment regime. An entailment profile MAY impose restrictions on what constitutes valid RDF with respect to entailment." .

sd:defaultSupportedEntailmentProfile rdfs:comment "Relates an instance of sd:Service with a resource representing a supported profile of the default entailment regime (as declared by sd:defaultEntailmentRegime)." .

sd:DereferencesURIs a sd:Feature ;
	rdfs:label "Dereferences URIs" ;
	rdfs:comment "sd:DereferencesURIs, when used as the object of the sd:feature property, indicates that a SPARQL service will dereference URIs used in FROM/FROM NAMED and USING/USING NAMED clauses and use the resulting RDF in the dataset during query evaluation." .

sd:namedGraph a rdf:Property ;
	rdfs:domain sd:GraphCollection ;
	rdfs:label "named graph" ;
	rdfs:range sd:NamedGraph ;
	rdfs:comment "Relates an instance of sd:GraphCollection (or its subclass sd:Dataset) to the description of one of its named graphs. The description of such a named graph MUST include the sd:name property and MAY include the sd:graph property." .

sd:supportedLanguage a rdf:Property ;
	rdfs:label "supported language" ;
	rdfs:subPropertyOf sd:feature ;
	rdfs:domain sd:Service ;
	rdfs:range sd:Language .

sd:Language a rdfs:Class ;
	rdfs:subClassOf sd:Feature ;
	rdfs:label "Language" ;
	rdfs:comment "An instance of sd:Language represents one of the SPARQL languages, including specific configurations providing particular features or extensions. This document defines three instances of sd:Language: sd:SPARQL10Query, sd:SPARQL11Query, and sd:SPARQL11Update." .

sd:supportedLanguage rdfs:comment "Relates an instance of sd:Service to a SPARQL language (e.g. Query and Update) that it implements." .

sd:inputFormat a rdf:Property ;
	rdfs:domain sd:Service ;
	rdfs:label "input format" ;
	rdfs:range <http://www.w3.org/ns/formats/Format> ;
	rdfs:comment "Relates an instance of sd:Service to a format that is supported for parsing RDF input; for example, via a SPARQL 1.1 Update LOAD statement, or when URIs are dereferenced in FROM/FROM NAMED/USING/USING NAMED clauses." .

sd:SPARQL11Query a sd:Language ;
	rdfs:label "SPARQL 1.1 Query" ;
	rdfs:comment "sd:SPARQL11Query is an sd:Language representing the SPARQL 1.1 Query language." .

sd:languageExtension a rdf:Property ;
	rdfs:label "language extension" ;
	rdfs:subPropertyOf sd:feature ;
	rdfs:domain sd:Service ;
	rdfs:range sd:Feature ;
	rdfs:comment "Relates an instance of sd:Service to a resource representing an implemented extension to the SPARQL Query or Update language." .

sd:graph a rdf:Property ;
	rdfs:domain sd:NamedGraph ;
	rdfs:label "graph" ;
	rdfs:range sd:Graph ;
	rdfs:comment "Relates a named graph to its graph description." .

sd:propertyFeature a rdf:Property ;
	rdfs:label "property feature" ;
	rdfs:subPropertyOf sd:feature ;
	rdfs:domain sd:Service ;
	rdfs:range sd:Feature ;
	rdfs:comment "Relates an instance of sd:Service to a resource representing an implemented feature that extends the SPARQL Query or Update language and that is accessed by using the named property." .

sd:defaultEntailmentRegime a rdf:Property ;
	rdfs:label "default entailment regime" ;
	rdfs:subPropertyOf sd:feature ;
	rdfs:domain sd:Service ;
	rdfs:range sd:EntailmentRegime .

sd:EntailmentRegime a rdfs:Class ;
	rdfs:subClassOf sd:Feature ;
	rdfs:label "Entailment Regime" ;
	rdfs:comment "An instance of sd:EntailmentRegime represents an entailment regime used in basic graph pattern matching (as described by SPARQL 1.1 Query Language)." .

sd:defaultEntailmentRegime rdfs:comment "Relates an instance of sd:Service with a resource representing an entailment regime used for basic graph pattern matching. This property is intended for use when a single entailment regime by default applies to all graphs in the default dataset of the service. In situations where a different entailment regime applies to a specific graph in the dataset, the sd:entailmentRegime property should be used to indicate this fact in the description of that graph." .

sd:resultFormat a rdf:Property ;
	rdfs:domain sd:Service ;
	rdfs:label "result format" ;
	rdfs:range <http://www.w3.org/ns/formats/Format> ;
	rdfs:comment "Relates an instance of sd:Service to a format that is supported for serializing query results." .

sd:entailmentRegime a rdf:Property ;
	rdfs:domain sd:NamedGraph ;
	rdfs:label "entailment regime" ;
	rdfs:range sd:EntailmentRegime ;
	rdfs:comment "Relates a named graph description with a resource representing an entailment regime used for basic graph pattern matching over that graph." .

sd:SPARQL11Update a sd:Language ;
	rdfs:label "SPARQL 1.1 Update" ;
	rdfs:comment "sd:SPARQLUpdate is an sd:Language representing the SPARQL 1.1 Update language." .

sd:availableGraphs a rdf:Property ;
	rdfs:domain sd:Service ;
	rdfs:label "available graph descriptions" ;
	rdfs:range sd:GraphCollection ;
	rdfs:comment "Relates an instance of sd:Service to a description of the graphs which are allowed in the construction of a dataset either via the SPARQL Protocol, with FROM/FROM NAMED clauses in a query, or with USING/USING NAMED in an update request, if the service limits the scope of dataset construction." .

sd:RequiresDataset a sd:Feature ;
	rdfs:label "Requires Dataset" ;
	rdfs:comment "sd:RequiresDataset, when used as the object of the sd:feature property, indicates that the SPARQL service requires an explicit dataset declaration (based on either FROM/FROM NAMED clauses in a query, USING/USING NAMED clauses in an update, or the appropriate SPARQL Protocol parameters)." .

sd:defaultDataset a rdf:Property , owl:InverseFunctionalProperty ;
	rdfs:domain sd:Service ;
	rdfs:label "default dataset description" ;
	rdfs:range sd:Dataset ;
	rdfs:comment "Relates an instance of sd:Service to a description of the default dataset available when no explicit dataset is specified in the query, update request or via protocol parameters." .

sd:endpoint a rdf:Property , owl:InverseFunctionalProperty ;
	rdfs:domain sd:Service ;
	rdfs:label "endpoint" ;
	rdfs:comment "The SPARQL endpoint of an sd:Service that implements the SPARQL Protocol service. The object of the sd:endpoint property is an IRI." .

sd:extensionFunction a rdf:Property ;
	rdfs:label "extension function" ;
	rdfs:subPropertyOf sd:feature ;
	rdfs:domain sd:Service ;
	rdfs:range sd:Function .

sd:Function a rdfs:Class ;
	rdfs:subClassOf sd:Feature ;
	rdfs:label "Function" ;
	rdfs:comment "An instance of sd:Function represents a function that may be used in a SPARQL SELECT expression or a FILTER, HAVING, GROUP BY, ORDER BY, or BIND clause." .

sd:extensionFunction rdfs:comment "Relates an instance of sd:Service to a function that may be used in a SPARQL SELECT expression or a FILTER, HAVING, GROUP BY, ORDER BY, or BIND clause." .

sd:supportedEntailmentProfile a rdf:Property ;
	rdfs:domain sd:NamedGraph ;
	rdfs:label "supported entailment profile" ;
	rdfs:range sd:EntailmentProfile ;
	rdfs:comment "Relates a named graph description with a resource representing a supported profile of the entailment regime (as declared by sd:entailmentRegime) used for basic graph pattern matching over that graph." .
