Internal SPARQL Federation¶
What’s in this document?
In addition to the standard SPARQL 1.1 Federation to other SPARQL endpoints, GraphDB supports internal federation to other repositories in the same GraphDB instance. The internal SPARQL federation is used in almost the same way as the standard SPARQL federation over HTTP, and has several advantages:
- Speed
The HTTP transport layer is bypassed and iterators are accessed directly. The speed is comparable to accessing data in the same repository.
- Security
When security is ON, you can access every repository that is readable by the currently authenticated user. Standard SPARQL 1.1 federation does not support authentication.
- Flexibility
Inline parameters provide control over inference and statement expansion over
owl:sameAs
.
Usage¶
Instead of providing a URL to a remote repository, you need to provide a special URL of the form repository:NNN
,
where NNN
is the ID of the repository you want to access. For example, to access the repository authors
via
internal federation, use a query like this:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX books: <http://example.com/books/>
SELECT ?authorName WHERE {
?book rdfs:label "The Hitchhiker's Guide to the Galaxy" ;
books:author ?author .
SERVICE <repository:authors> {
?author rdfs:label ?authorName
}
}
Parameters¶
There are four parameters that control how the federated part of the query is executed:
Parameter |
Definition |
---|---|
|
Controls if inferred statements are included. When set to |
|
Controls if statements are expanded over When set to |
|
Can be repeated multiple times, translates to |
|
Can be repeated multiple times, translates to |
To set a parameter, put a comma after the special URL referring to the internal repository, then the parameter name, an equals sign, and finally the value of the parameter. If you need to set more than one parameter, put another comma, parameter name, equals sign, and value.
Some examples:
repository:NNN,infer=false
Turns off inference and inferred statements are not included in the results.
repository:NNN,sameAs=false
Turns off the expansion of statements over
owl:sameAs
and they are not included in the results.repository:NNN,infer=false,sameAs=false
Turns off the inferred statements and they are not included in the results.
Turns off the expansion of statements over
owl:sameAs
and they are not included in the results.service <repository:repo1>
No
FROM
andFROM NAMED
.service <repository:repo1,from=http://test.com>
Adds
FROM <http://test.com>
.service <repository:repo1,fromNamed=http://test.com/named>
Adds
FROM NAMED <http://test.com/named>
.service <repository:repo1,from=http://test.com,fromNamed=http://test.com/named,sameAs=false>
Adds
FROM <http://test.com>
, addsFROM NAMED <http://test.com/named>
, does not expand overowl:sameAs
.
Note
This needs to be a valid URL and thus there cannot be spaces/blanks.
The example SPARQL query from above will look like this if you want to skip the inferred statements and disable
the expansion over owl:sameAs
:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX books: <http://example.com/books/>
SELECT ?authorName WHERE {
?book rdfs:label "The Hitchhiker's Guide to the Galaxy" ;
books:author ?author .
SERVICE <repository:authors,infer=false,sameAs=false> {
?author rdfs:label ?authorName
}
}