SemWeb.Query.SparqlProtocolServerHandler

SemWeb.Sparql : SemWeb.Query Namespace
SparqlProtocolServerHandler Class

Implements a SPARQL Protocol server for ASP.NET.

public class SparqlProtocolServerHandler : System.Web.IHttpHandler

#### Remarks

This class implements the System.Web.IHttpHandler interface to provide a SPARQL Protocol query server over HTTP.

To activate the SPARQL server in your ASP.NET site, place the SemWeb.dll, SemWeb.Sparql.dll, and sparql-core.dll assemblies in the bin directory of your ASP.NET application. Then add the following to your web.config file. Note that you must specify a spec string to a data source to serve, as described in SemWeb.Store.CreateForInput(string).

Example
    <configuration>
         <configSections>
              <section name="sparqlSources" type="System.Configuration.NameValueSectionHandler,System"/>
         </configSections>

         <system.web>
              <httpHandlers>
                   <!-- This line associates the SPARQL Protocol implementation with a path on your
                        website. With this, you get a SPARQL server at http://yourdomain.com/sparql.  -->
                   <add verb="*" path="sparql" type="SemWeb.Query.SparqlProtocolServerHandler, SemWeb.Sparql" />
              </httpHandlers>
         </system.web>

         <sparqlSources>
              <!-- This line configures the data source associated with each SPARQL server added above.
                      This sets the server to query the RDF/XML file at the given path.  You can use any
                      spec string described in SemWeb.Store.CreateForInput(). -->
              <add key="/sparql" value="xml:/home/user/datafile.rdf"/>
         </sparqlSources>
    </configuration>

Precede the data source specification string with "rdfs+" to wrap the data source with the SemWeb.Inference.RDFS reasoning engine. And precede that with "noreuse," to create a new instance of the data source on each request, which is good for SQL-backed stores to allow for concurrent queries, but bad for file-backed stores which would be read from disk on each request. For instance:

Example
    <add key="/sparql" value="noreuse,rdfs+mysql:rdftable:Database=databasename;Server=localhost;User Id=username"/>

Using Mono's XSP light-weight web server, you can create a standalone SPARQL Protocol server by:

- Creating a new directory for your server.
- Creating a bin directory within it, and placing the files mentioned above into the directory.
- Creating a web.config file in the directory using the template above.
- Running "xsp" from within the directory.

You may want to add this index.html file to create a form to experiment with SPARQL queries:

Example
    <html>
         <body>
              <form action="/sparql" method="get">
            <input type="hidden" name="outputMimeType" value="text/xml"/>
            <textarea name="query" rows="10" cols="80">
    PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
    PREFIX foaf: <http://xmlns.com/foaf/0.1/>
    PREFIX pol: <tag:govshare.info,2005:rdf/politico/>
    SELECT * WHERE {
    ?s rdf:type pol:Politician .
    ?s foaf:gender "male" .
    ?s foaf:name ?name .
    }
    LIMIT 10
            </textarea>
            <p><input type="submit"/></p>
              </form>
         </body>
    </html>

## Members

See Also: Inherited members from object.

### Constructors

SparqlProtocolServerHandler () Creates a new SPARQL Protocol implementation class.

### Fields

MaximumLimit | int . The maximum number of bindings to return for any query.

### Methods

| ProcessRequest (System.Web.HttpContext) Processes an HTTP request from the ASP.NET subsystem.

### Protected Methods

| CreateQuery (string) : Query Constructs a Query object for a SPARQL query.
| GetDataSource (out bool) : SemWeb.SelectableSource Gets the data source to query.
| RunQuery (Query, SemWeb.SelectableSource, System.IO.TextWriter) Runs a query.

## Member Details

### SparqlProtocolServerHandler Constructor

public SparqlProtocolServerHandler ()

Creates a new SPARQL Protocol implementation class.

#### Remarks

This class does not listen on an HTTP port by itself. It is meant to be embedded in an ASP.NET site.

### MaximumLimit Field

public int MaximumLimit

The maximum number of bindings to return for any query.

#### Remarks

Set to -1, the default, to have no limit.

### ProcessRequest Method

public virtual void ProcessRequest (System.Web.HttpContext context)

Processes an HTTP request from the ASP.NET subsystem.

#### Parameters

context
  The request context.

#### Remarks

This method is not meant to be called from user code.

### CreateQuery Method

protected virtual Query CreateQuery (string query)

Constructs a Query object for a SPARQL query.

#### Parameters

query
  The SPARQL query as a string.

#### Returns

A Query object.

#### Remarks

The default implementation returns a new SPARQL query object based on the query. Override in subclasses to create a query in a different way, or to set limits on the query.

### RunQuery Method

protected virtual void RunQuery (Query query, SemWeb.SelectableSource source, System.IO.TextWriter output)

Runs a query.

#### Parameters

query
  The query to run.
source
  The data source to query against.
output
  The output stream.

#### Remarks

The default implementation runs the query on the data source and outputs the results in the SPARQL XML Results specification format. Override in subclasses to output the results in a different way, to run the query differently, or to set limits on the query or output.

### GetDataSource Method

protected virtual SemWeb.SelectableSource GetDataSource (out bool closeAfterQuery)

Gets the data source to query.

#### Parameters

closeAfterQuery
  Set to true to indicate that the data source should be closed/disposed after the query is complete.

#### Returns

A data source to query.

#### Remarks

None.