Class SparqlQuery
Represents a SPARQL Query.
Inherited Members
Namespace: VDS.RDF.Query
Assembly: dotNetRdf.dll
Syntax
public sealed class SparqlQuery
Remarks
Note: This class is purposefully sealed and most setters are private/protected internal since generally you create a query by using the SparqlQueryParser to parse a query string/file.
To build a query programmatically you can use the QueryBuilder class to generate a new query and then various extension methods to modify that query using a fluent style API. A query is not immutable so if you use that API you are modifying the query, if you want to generate new queries by modifying an existing query consider using the Copy() method to take a copy of the existing query.
Constructors
| Edit this page View SourceSparqlQuery(bool)
Creates a new SPARQL Query.
Declaration
public SparqlQuery(bool subQuery)
Parameters
| Type | Name | Description |
|---|---|---|
| bool | subQuery | Whether this query is a sub-query. |
Properties
| Edit this page View SourceAlgebraOptimisers
Gets/Sets the locally scoped Algebra Optimisers that are used to optimise the Query Algebra in addition to (but before) any external (e.g. processor-provided) optimisers.
Declaration
public IEnumerable<IAlgebraOptimiser> AlgebraOptimisers { get; set; }
Property Value
| Type | Description |
|---|---|
| IEnumerable<IAlgebraOptimiser> |
BaseUri
Get or set the base URI used to resolve relative URI references.
Declaration
public Uri BaseUri { get; set; }
Property Value
| Type | Description |
|---|---|
| Uri |
Bindings
Gets/Sets the VALUES Clause for the Query which are bindings that should be applied.
Declaration
public BindingsPattern Bindings { get; }
Property Value
| Type | Description |
|---|---|
| BindingsPattern |
ConstructTemplate
Gets/Sets the Construct Template for a Construct Query.
Declaration
public GraphPattern ConstructTemplate { get; }
Property Value
| Type | Description |
|---|---|
| GraphPattern |
DefaultGraphNames
Gets the names of the default graphs for the query.
Declaration
public IEnumerable<IRefNode> DefaultGraphNames { get; }
Property Value
| Type | Description |
|---|---|
| IEnumerable<IRefNode> |
DefaultGraphs
Gets the Default Graph URIs for the Query.
Declaration
[Obsolete("Replaced by DefaultGraphNames")]
public IEnumerable<Uri> DefaultGraphs { get; }
Property Value
| Type | Description |
|---|---|
| IEnumerable<Uri> |
DescribeVariables
Gets the Variables, QNames and URIs used in the Describe Query.
Declaration
public IEnumerable<IToken> DescribeVariables { get; }
Property Value
| Type | Description |
|---|---|
| IEnumerable<IToken> |
ExpressionFactories
Gets/Sets the locally scoped Expression Factories that may be used if the query is using the CALL() function to do dynamic function invocation.
Declaration
public IEnumerable<ISparqlCustomExpressionFactory> ExpressionFactories { get; set; }
Property Value
| Type | Description |
|---|---|
| IEnumerable<ISparqlCustomExpressionFactory> |
GroupBy
Gets/Sets the Grouping for the Query.
Declaration
public ISparqlGroupBy GroupBy { get; }
Property Value
| Type | Description |
|---|---|
| ISparqlGroupBy |
HasDistinctModifier
Gets whether a Query has a DISTINCT modifier.
Declaration
public bool HasDistinctModifier { get; }
Property Value
| Type | Description |
|---|---|
| bool |
HasSolutionModifier
Gets whether the Query has a Solution Modifier (a GROUP BY, HAVING, ORDER BY, LIMIT or OFFSET).
Declaration
public bool HasSolutionModifier { get; }
Property Value
| Type | Description |
|---|---|
| bool |
Having
Gets/Sets the Having Clause for the Query.
Declaration
public ISparqlFilter Having { get; }
Property Value
| Type | Description |
|---|---|
| ISparqlFilter |
IsAggregate
Gets whether the Query has an Aggregate as its Result.
Declaration
public bool IsAggregate { get; }
Property Value
| Type | Description |
|---|---|
| bool |
IsOptimised
Gets whether Optimisation has been applied to the query.
Declaration
public bool IsOptimised { get; }
Property Value
| Type | Description |
|---|---|
| bool |
Remarks
This only indicates that an Optimiser has been applied. You can always reoptimise the query using a different optimiser by using the relevant overload of the Optimise() method.
IsSubQuery
Gets whether this Query is a Sub-Query in another Query.
Declaration
public bool IsSubQuery { get; }
Property Value
| Type | Description |
|---|---|
| bool |
Limit
Gets the Result Set Limit for the Query.
Declaration
public int Limit { get; set; }
Property Value
| Type | Description |
|---|---|
| int |
Remarks
Values less than zero are counted as -1 which indicates no limit.
NamedGraphNames
Gets the names of the named graphs for the query.
Declaration
public IEnumerable<IRefNode> NamedGraphNames { get; }
Property Value
| Type | Description |
|---|---|
| IEnumerable<IRefNode> |
NamedGraphs
Gets the Named Graph URIs for the Query.
Declaration
[Obsolete("Replaced by NamedGraphNames")]
public IEnumerable<Uri> NamedGraphs { get; }
Property Value
| Type | Description |
|---|---|
| IEnumerable<Uri> |
NamespaceMap
Gets the map of namespace prefixes to URIs.
Declaration
public INamespaceMapper NamespaceMap { get; }
Property Value
| Type | Description |
|---|---|
| INamespaceMapper |
Offset
Gets/Sets the Result Set Offset for the Query.
Declaration
public int Offset { get; set; }
Property Value
| Type | Description |
|---|---|
| int |
Remarks
Values less than zero are treated as 0 which indicates no offset.
OrderBy
Gets/Sets the Ordering for the Query.
Declaration
public ISparqlOrderBy OrderBy { get; }
Property Value
| Type | Description |
|---|---|
| ISparqlOrderBy |
PartialResultsOnTimeout
Gets/Sets whether Partial Results should be returned in the event of Query Timeout.
Declaration
public bool PartialResultsOnTimeout { get; set; }
Property Value
| Type | Description |
|---|---|
| bool |
Remarks
Partial Results (typically) only applies when executing the Query in memory. If you have an instance of this class and pass its string representation (using ToString()) you will lose the partial results information as this is not serialisable in SPARQL syntax.
PropertyFunctionFactories
Gets/Sets the locally scoped Property Function factories that may be used by the PropertyFunctionOptimiser when generating the algebra for the query.
Declaration
public IEnumerable<IPropertyFunctionFactory> PropertyFunctionFactories { get; set; }
Property Value
| Type | Description |
|---|---|
| IEnumerable<IPropertyFunctionFactory> |
QueryExecutionTime
Gets the Time taken to execute a Query.
Declaration
public TimeSpan? QueryExecutionTime { get; set; }
Property Value
| Type | Description |
|---|---|
| TimeSpan? |
Exceptions
| Type | Condition |
|---|---|
| InvalidOperationException | Thrown if you try and inspect the execution time before the Query has been executed. |
QueryType
Gets the type of the Query.
Declaration
public SparqlQueryType QueryType { get; }
Property Value
| Type | Description |
|---|---|
| SparqlQueryType |
RootGraphPattern
Gets the top level Graph Pattern of the Query.
Declaration
public GraphPattern RootGraphPattern { get; }
Property Value
| Type | Description |
|---|---|
| GraphPattern |
SpecialType
Gets the Special Type of the Query (if any).
Declaration
public SparqlSpecialQueryType SpecialType { get; }
Property Value
| Type | Description |
|---|---|
| SparqlSpecialQueryType |
Timeout
Gets/Sets the Query Execution Timeout in milliseconds.
Declaration
public long Timeout { get; set; }
Property Value
| Type | Description |
|---|---|
| long |
Remarks
This Timeout (typically) only applies when executing the Query in memory. If you have an instance of this class and pass its string representation (using ToString()) you will lose the timeout information as this is not serialisable in SPARQL syntax.
UsesDefaultDataset
Gets whether a Query uses the Default Dataset against which it is evaluated.
Declaration
public bool UsesDefaultDataset { get; }
Property Value
| Type | Description |
|---|---|
| bool |
Remarks
If the value is true then the Query will use whatever dataset is it evaluated against. If the value is false then the query changes the dataset at one/more points during its evaluation.
Things that may change the dataset and cause a query not to use the Default Dataset are as follows:.
- FROM clauses (but not FROM NAMED)
- GRAPH clauses
- Subqueries which do not use the default dataset
Variables
Gets the Variables used in the Query.
Declaration
public IEnumerable<SparqlVariable> Variables { get; }
Property Value
| Type | Description |
|---|---|
| IEnumerable<SparqlVariable> |
VirtualCount
The number of results that would be returned without any limit clause to a query or -1 if not supported. Defaults to the same value as the Count member.
Declaration
[Obsolete("This property is obsolete and is no longer set when a query is processed")]
public int VirtualCount { get; }
Property Value
| Type | Description |
|---|---|
| int |
Methods
| Edit this page View SourceAddDefaultGraph(Uri)
Adds a Default Graph URI.
Declaration
[Obsolete("Replaced by AddDefaultGraph(IRefNode)")]
public void AddDefaultGraph(Uri u)
Parameters
| Type | Name | Description |
|---|---|---|
| Uri | u | Graph URI. |
AddDefaultGraph(IRefNode)
Adds a graph to the default graph of the query.
Declaration
public void AddDefaultGraph(IRefNode n)
Parameters
| Type | Name | Description |
|---|---|---|
| IRefNode | n |
AddNamedGraph(Uri)
Adds a Named Graph URI.
Declaration
[Obsolete("Replaced by AddNamedGraph(IRefNode)")]
public void AddNamedGraph(Uri u)
Parameters
| Type | Name | Description |
|---|---|---|
| Uri | u | Graph URI. |
AddNamedGraph(IRefNode)
Adds a named graph to the query.
Declaration
public void AddNamedGraph(IRefNode n)
Parameters
| Type | Name | Description |
|---|---|---|
| IRefNode | n |
ClearDefaultGraphs()
Removes all Default Graph URIs.
Declaration
public void ClearDefaultGraphs()
ClearNamedGraphs()
Removes all Named Graph URIs.
Declaration
public void ClearNamedGraphs()
Copy()
Creates a copy of the query.
Declaration
public SparqlQuery Copy()
Returns
| Type | Description |
|---|---|
| SparqlQuery |
FromServiceQuery(GraphPattern, int)
Create a query instance that can be passed to remote endpoint when processing a SERVICE clause in a SPARQL Query.
Declaration
public static SparqlQuery FromServiceQuery(GraphPattern serviceGraphPattern, int limit)
Parameters
| Type | Name | Description |
|---|---|---|
| GraphPattern | serviceGraphPattern | The root graph pattern of the SERVICE query. |
| int | limit | The limit on the number of results requested. |
Returns
| Type | Description |
|---|---|
| SparqlQuery |
Optimise()
Applies optimisation to a Query using the default global optimiser.
Declaration
public void Optimise()
Optimise(IQueryOptimiser)
Applies optimisation to a Query using the specific optimiser.
Declaration
public void Optimise(IQueryOptimiser optimiser)
Parameters
| Type | Name | Description |
|---|---|---|
| IQueryOptimiser | optimiser | Query Optimiser. |
Process(ISparqlQueryProcessor)
Processes the Query using the given Query Processor.
Declaration
public object Process(ISparqlQueryProcessor processor)
Parameters
| Type | Name | Description |
|---|---|---|
| ISparqlQueryProcessor | processor | SPARQL Query Processor. |
Returns
| Type | Description |
|---|---|
| object |
ToAlgebra(bool, IEnumerable<IAlgebraOptimiser>)
Converts the Query into it's SPARQL Algebra representation (as represented in the Leviathan API).
Declaration
public ISparqlAlgebra ToAlgebra(bool optimise = true, IEnumerable<IAlgebraOptimiser> optimisers = null)
Parameters
| Type | Name | Description |
|---|---|---|
| bool | optimise | Boolean flag indicating whether to apply algebra optimisation. |
| IEnumerable<IAlgebraOptimiser> | optimisers | The external algebra optimisers to apply. |
Returns
| Type | Description |
|---|---|
| ISparqlAlgebra |
Remarks
If optimisers is null, only any locally defined optimisation will be applied.
ToString()
Generates a String representation of the Query.
Declaration
public override string ToString()
Returns
| Type | Description |
|---|---|
| string |
Overrides
Remarks
This method may not return a complete representation of the Query depending on the Query it is called on as not all the classes which can be included in a Sparql query currently implement ToString methods.