# 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

infer (boolean)

Controls if inferred statements are included. True by default.

When set to false, it is equivalent to adding FROM <http://www.ontotext.com/explicit> to the federated query.

sameAs (boolean)

Controls if statements are expanded over owl:sameAs. True by default.

When set to false, it is equivalent to adding FROM <http://www.ontotext.com/disable-sameAs> to the federated query.

from (string)

Can be repeated multiple times, translates to FROM <...>. No default value.

fromNamed (string)

Can be repeated multiple times, translates to FROM NAMED <...>. No default value.

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 and FROM 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>, adds FROM NAMED <http://test.com/named>, does not expand over owl: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
}
}