Abstract This document describes SPARQL Service Descriptions, a method for discovering and vocabulary for describing SPARQL services made available via the SPARQL Protocol. Such descriptions are intended to provide a mechanism by which a client or end user can discover information about the SPARQL implementation/service such as supported extension functions and details about the available dataset. 1. Introduction SPARQL Service Descriptions are a way of describing the features of a SPARQL service made available via the SPARQL Protocol. This document describes both a method for discovering service descriptions from a specific SPARQL service, and an RDF schema for encoding such descriptions in RDF. 2. Accessing Service Descriptions SPARQL services made available via the SPARQL Protocol SHOULD return a service description document at the service URL. This service description should be made available in an RDF serialization, but may also be provided embedded in HTML by RDFa, or other RDF representations by using content negotiation. 3. Service Description Vocabulary 3.1 SPARQL Service Description Namespace The SPARQL Service Description namespace IRI is: @@ http://www.w3.org/2009/sparql/service-description# The prefix used in this document for this namespace is sd:. 3.2 Classes and Properties sd:Service is an instance of rdfs:Class An instance of sd:Service represents a SPARQL service made available via the SPARQL Protocol. sd:Function sd:ScalarFunction subClassOf: sd:Function An instance of sd:ScalarFunction represents an extension function that may be used in a SPARQL FILTER/HAVING clause or a project expression. sd:AggregateFunction subClassOf: sd:Function An instance of sd:AggregateFunction represents an extension function that may be used in a SPARQL aggregate query HAVING clause or project expression. sd:EntailmentRegime An instance of sd:EntailmentRegime represents an entailment regime used in basic graph pattern matching (as described in SPARQL 12.6 @@ old sparql spec reference). sd:url domain: sd:Service The service URL of an sd:Service supporting the SparqlQuery interface. @@ this is language from the protocol document. Is it appropriate here? sd:supportedEntailment domain: sd:Service range: sd:EntailmentRegime Relates a service with a resource representing a supported entailment regime for basic graph pattern matching. This property is intended for use when a single entailment regime applies to every graph in the dataset. If different entailment regimes apply to different graphs in the dataset, another property should be used to indicate this fact in the description of the dataset. sd:extensionFunction domain: sd:Service range: sd:Function Relates a service to a function that is supported as either a scalar, value testing function (as described in SPARQL 11.6 @@ old sparql spec reference) or an aggregate function. The rdf:type of the function may be used to indicate which of these function types apply, being either sd:ScalarFunction or sd:AggregateFunction. sd:languageExtension domain: sd:Service Relates a service to a resource representing an implemented extension to the SPARQL Query or Update language. sd:datasetDescription domain: sd:Service Relates a service to a description of its available dataset. Depending on the implementation, this may describe the default dataset available when no explicit dataset is specified, or may describe graphs availble for explicit inclusion in the dataset via protocol or query level features. sd:datasetDescriptionURL domain: sd:Service Relates a service to a URL from which a dataset description can be retrieved. If retrieved, the dataset description has the same meaning as if it had been referened directly with sd:datasetDescription. 4. Example @@ Should the example use more of the service description properties (e.g. languageExtension, supportedEntailment)? The following HTTP trace illustrates the retrieval of a service description from the SPARQL service http://www.example/sparql/. GET /sparql/ HTTP/1.1 Host: www.example The SPARQL service responds with an RDF/XML encoded service description (no content negotiation or RDFa encoding is used): HTTP/1.1 200 OK Date: Fri, 09 Oct 2009 17:31:12 GMT Server: Apache/1.3.29 (Unix) PHP/4.3.4 DAV/1.0.3 Connection: close Content-Type: application/rdf+xml 100 2000 This RDF describes a SPARQL service available at the URL http://www.example/sparql/ that supports the java:com.ldodds.sparql.Distance extension function, and has a dataset with a default graph and one named graph, both described using the voiD vocabulary. The default graph contains 100 triples while the graph named http://www.example/named-graph/ contains 2000 triples. @@ Add URIs for language subsets? Query1.1, Update, "safe", etc.?