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 xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX sparqlservicedescription: <http://www.w3.org/ns/sparql-service-description#>
PREFIX linkml: <https://w3id.org/linkml/>
PREFIX formats: <http://www.w3.org/ns/formats/>
PREFIX sh: <http://www.w3.org/ns/shacl#>
PREFIX vann: <http://purl.org/vocab/vann/>

<http://www.w3.org/ns/sparql-service-description> a owl:Ontology ;
  vann:preferredNamespacePrefix "sparqlservicedescription" ;
  vann:preferredNamespaceUri "http://www.w3.org/ns/sparql-service-description#"^^xsd:anyURI ;
  sh:declare [
    sh:prefix "sparqlservicedescription" ;
    sh:namespace "http://www.w3.org/ns/sparql-service-description#"^^xsd:anyURI
  ] , [
    sh:prefix "linkml" ;
    sh:namespace "https://w3id.org/linkml/"^^xsd:anyURI
  ] , [
    sh:prefix "formats" ;
    sh:namespace "http://www.w3.org/ns/formats/"^^xsd:anyURI
  ] .

sparqlservicedescription:Service a owl:Class ;
  rdfs:label "Service" ;
  rdfs:comment "An instance of sd:Service represents a SPARQL service made available via the SPARQL Protocol." ;
  rdfs:subClassOf [
    a owl:Restriction ;
    owl:onProperty sparqlservicedescription:feature ;
    owl:allValuesFrom sparqlservicedescription:Feature
  ] , [
    a owl:Restriction ;
    owl:onProperty sparqlservicedescription:languageExtension ;
    owl:allValuesFrom sparqlservicedescription:Feature
  ] , [
    a owl:Restriction ;
    owl:onProperty sparqlservicedescription:supportedLanguage ;
    owl:allValuesFrom sparqlservicedescription:Language
  ] , [
    a owl:Restriction ;
    owl:onProperty sparqlservicedescription:propertyFeature ;
    owl:allValuesFrom sparqlservicedescription:Feature
  ] , [
    a owl:Restriction ;
    owl:onProperty sparqlservicedescription:defaultDataset ;
    owl:allValuesFrom sparqlservicedescription:Dataset
  ] , [
    a owl:Restriction ;
    owl:onProperty sparqlservicedescription:resultFormat ;
    owl:allValuesFrom formats:Format
  ] , [
    a owl:Restriction ;
    owl:onProperty sparqlservicedescription:availableGraphs ;
    owl:allValuesFrom sparqlservicedescription:GraphCollection
  ] , [
    a owl:Restriction ;
    owl:onProperty sparqlservicedescription:inputFormat ;
    owl:allValuesFrom formats:Format
  ] , [
    a owl:Restriction ;
    owl:onProperty sparqlservicedescription:defaultSupportedEntailmentProfile ;
    owl:allValuesFrom sparqlservicedescription:EntailmentProfile
  ] , [
    a owl:Restriction ;
    owl:onProperty sparqlservicedescription:endpoint ;
    owl:allValuesFrom owl:Thing
  ] , [
    a owl:Restriction ;
    owl:onProperty sparqlservicedescription:extensionFunction ;
    owl:allValuesFrom sparqlservicedescription:Function
  ] , [
    a owl:Restriction ;
    owl:onProperty sparqlservicedescription:supportedVersion ;
    owl:allValuesFrom sparqlservicedescription:Feature
  ] , [
    a owl:Restriction ;
    owl:onProperty sparqlservicedescription:defaultEntailmentRegime ;
    owl:allValuesFrom sparqlservicedescription:EntailmentRegime
  ] , [
    a owl:Restriction ;
    owl:onProperty sparqlservicedescription:extensionAggregate ;
    owl:allValuesFrom sparqlservicedescription:Aggregate
  ] .

sparqlservicedescription:EntailmentRegime a owl:Class ;
  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)." ;
  rdfs:subClassOf sparqlservicedescription:Feature .

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

sparqlservicedescription:GraphCollection a owl: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." ;
  rdfs:subClassOf [
    a owl:Restriction ;
    owl:onProperty sparqlservicedescription:namedGraph ;
    owl:allValuesFrom sparqlservicedescription:NamedGraph
  ] .

sparqlservicedescription:Feature a owl: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." .

sparqlservicedescription:EntailmentProfile a owl:Class ;
  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." ;
  rdfs:subClassOf sparqlservicedescription:Feature .

sparqlservicedescription:Aggregate a owl:Class ;
  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." ;
  rdfs:subClassOf sparqlservicedescription:Feature .

sparqlservicedescription:Function a owl:Class ;
  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." ;
  rdfs:subClassOf sparqlservicedescription:Feature .

sparqlservicedescription:NamedGraph a owl: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)." ;
  rdfs:subClassOf [
    a owl:Restriction ;
    owl:onProperty sparqlservicedescription:name ;
    owl:allValuesFrom owl:Thing
  ] , [
    a owl:Restriction ;
    owl:onProperty sparqlservicedescription:graph ;
    owl:allValuesFrom sparqlservicedescription:Graph
  ] , [
    a owl:Restriction ;
    owl:onProperty sparqlservicedescription:entailmentRegime ;
    owl:allValuesFrom sparqlservicedescription:EntailmentRegime
  ] , [
    a owl:Restriction ;
    owl:onProperty sparqlservicedescription:supportedEntailmentProfile ;
    owl:allValuesFrom sparqlservicedescription:EntailmentProfile
  ] .

sparqlservicedescription:Dataset a owl:Class ;
  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." ;
  rdfs:subClassOf sparqlservicedescription:GraphCollection , [
    a owl:Restriction ;
    owl:onProperty sparqlservicedescription:defaultGraph ;
    owl:allValuesFrom sparqlservicedescription:Graph
  ] .

formats:Format a owl:Class .

sparqlservicedescription:feature a owl:ObjectProperty ;
  rdfs:label "feature" ;
  rdfs:comment "Relates an instance of sd:Service with a resource representing a supported feature." ;
  rdfs:range sparqlservicedescription:Feature ;
  rdfs:domain sparqlservicedescription:Service .

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

sparqlservicedescription:supportedLanguage a owl:ObjectProperty ;
  rdfs:label "supported language" ;
  rdfs:comment "Relates an instance of sd:Service to a SPARQL language (e.g. Query and Update) that it implements." ;
  rdfs:range sparqlservicedescription:Language ;
  rdfs:domain sparqlservicedescription:Service ;
  rdfs:subPropertyOf sparqlservicedescription:feature .

sparqlservicedescription:propertyFeature a owl:ObjectProperty ;
  rdfs:label "property 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." ;
  rdfs:range sparqlservicedescription:Feature ;
  rdfs:domain sparqlservicedescription:Service ;
  rdfs:subPropertyOf sparqlservicedescription:feature .

sparqlservicedescription:defaultDataset a owl:ObjectProperty ;
  rdfs:label "default dataset description" ;
  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." ;
  rdfs:range sparqlservicedescription:Dataset ;
  rdfs:domain sparqlservicedescription:Service .

sparqlservicedescription:name a owl:ObjectProperty ;
  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." ;
  rdfs:domain sparqlservicedescription:NamedGraph .

sparqlservicedescription:namedGraph a owl:ObjectProperty ;
  rdfs:label "named graph" ;
  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." ;
  rdfs:range sparqlservicedescription:NamedGraph ;
  rdfs:domain sparqlservicedescription:GraphCollection .

sparqlservicedescription:graph a owl:ObjectProperty ;
  rdfs:label "graph" ;
  rdfs:comment "Relates a named graph to its graph description." ;
  rdfs:range sparqlservicedescription:Graph ;
  rdfs:domain sparqlservicedescription:NamedGraph .

sparqlservicedescription:defaultGraph a owl:ObjectProperty ;
  rdfs:label "default graph" ;
  rdfs:comment "Relates an instance of sd:Dataset to the description of its default graph." ;
  rdfs:range sparqlservicedescription:Graph ;
  rdfs:domain sparqlservicedescription:Dataset .

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

sparqlservicedescription:resultFormat a owl:ObjectProperty ;
  rdfs:label "result format" ;
  rdfs:comment "Relates an instance of sd:Service to a format that is supported for serializing query results." ;
  rdfs:range formats:Format ;
  rdfs:domain sparqlservicedescription:Service .

sparqlservicedescription:availableGraphs a owl:ObjectProperty ;
  rdfs:label "available graph descriptions" ;
  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." ;
  rdfs:range sparqlservicedescription:GraphCollection ;
  rdfs:domain sparqlservicedescription:Service .

sparqlservicedescription:supportedEntailmentProfile a owl:ObjectProperty ;
  rdfs:label "supported entailment profile" ;
  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." ;
  rdfs:range sparqlservicedescription:EntailmentProfile ;
  rdfs:domain sparqlservicedescription:NamedGraph .

sparqlservicedescription:inputFormat a owl:ObjectProperty ;
  rdfs:label "input 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." ;
  rdfs:range formats:Format ;
  rdfs:domain sparqlservicedescription:Service .

sparqlservicedescription:defaultSupportedEntailmentProfile a owl:ObjectProperty ;
  rdfs:label "default supported entailment profile" ;
  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)." ;
  rdfs:range sparqlservicedescription:EntailmentProfile ;
  rdfs:domain sparqlservicedescription:Service ;
  rdfs:subPropertyOf sparqlservicedescription:feature .

sparqlservicedescription:endpoint a owl:ObjectProperty ;
  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." ;
  rdfs:domain sparqlservicedescription:Service .

sparqlservicedescription:extensionFunction a owl:ObjectProperty ;
  rdfs:label "extension function" ;
  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." ;
  rdfs:range sparqlservicedescription:Function ;
  rdfs:domain sparqlservicedescription:Service ;
  rdfs:subPropertyOf sparqlservicedescription:feature .

sparqlservicedescription:supportedVersion a owl:ObjectProperty ;
  rdfs:label "supported version" ;
  rdfs:comment "Relates an instance of sd:Service to a SPARQL language version that it supports." ;
  rdfs:domain sparqlservicedescription:Service ;
  rdfs:subPropertyOf sparqlservicedescription:feature .

sparqlservicedescription:defaultEntailmentRegime a owl:ObjectProperty ;
  rdfs:label "default entailment regime" ;
  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." ;
  rdfs:range sparqlservicedescription:EntailmentRegime ;
  rdfs:domain sparqlservicedescription:Service ;
  rdfs:subPropertyOf sparqlservicedescription:feature .

sparqlservicedescription:extensionAggregate a owl:ObjectProperty ;
  rdfs:label "extension aggregate" ;
  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" ;
  rdfs:range sparqlservicedescription:Aggregate ;
  rdfs:domain sparqlservicedescription:Service ;
  rdfs:subPropertyOf sparqlservicedescription:feature .

sparqlservicedescription:Language a owl:Class ;
  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 five instances of sd:Language: sd:SPARQLQuery, sd:SPARQLUpdate, sd:SPARQL10Query, sd:SPARQL11Query, and sd:SPARQL11Update." ;
  rdfs:subClassOf sparqlservicedescription:Feature ;
  owl:equivalentClass [
    a owl:Class ;
    owl:oneOf ( sparqlservicedescription:SPARQLUpdate sparqlservicedescription:SPARQL10Query sparqlservicedescription:SPARQL11Query sparqlservicedescription:SPARQLQuery sparqlservicedescription:SPARQL11Update )
  ] .

sparqlservicedescription:SPARQLUpdate a owl:NamedIndividual ;
  rdfs:label "SPARQL Update" ;
  rdfs:comment "sd:SPARQLUpdate is an sd:Language representing the SPARQL Update language." ;
  a sparqlservicedescription:Language .

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

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

sparqlservicedescription:SPARQLQuery a owl:NamedIndividual ;
  rdfs:label "SPARQL Query" ;
  rdfs:comment "sd:SPARQLQuery is an sd:Language representing the SPARQL Query language." ;
  a sparqlservicedescription:Language .

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

vann:preferredNamespacePrefix a owl:AnnotationProperty .

vann:preferredNamespaceUri a owl:AnnotationProperty .

sh:declare a owl:AnnotationProperty .

sh:prefix a owl:AnnotationProperty .

sh:namespace a owl:AnnotationProperty .
