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

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.