Federated Queries and Federation#
Corese facilitates Federated Queries, enabling users to execute SPARQL queries seamlessly across multiple data sources or endpoints. This document guides you through utilizing Federated Queries and Federation in Corese and details the configuration necessary.
1. Federated Queries#
Basic syntax:
Use the @federate
directive to specify different endpoints. Below is the basic syntax:
@federate <uri1endpoint1> <uri2endpoint2> …
select * where {?x ?p ?y}
Retrieving Provenance Information:
To obtain additional details on the origin of the data, include the @provenance
keyword:
@federate <uri1endpoint1> <uri2endpoint2> …
@provenance
select * where {?x ?p ?y}
Configuration for Corese-Server:
In Corese-Server, it’s necessary to explicitly specify the list of allowed endpoints. For more details, refer to Restrict Access to External Endpoints.
For non-public servers, the -su
option can be used to allow all endpoints:
java -jar corese-server.jar -su
This option executes the server in superuser mode, allowing connections to all endpoints. This setting is not recommended for public servers due to security concerns.
2. Federations#
A Federation in Corese is a named set of endpoints, defined in a file to avoid the repetition of listing endpoints in each query.
Defining a Federation:
Create a
federation.ttl
file with the following content:
# Define a federation
<http://myserver.fr/myname/federate> a st:Federation ;
st:definition (
<endpoint1>
<endpoint2>
).
Next, create a
config.properties
file with the following line
FEDERATION = /path/to/federation.ttl
Launch Corese using the
config.properties
file:
java -jar corese-server.jar -init config.properties
java -jar corese-gui.jar -init config.properties
echo "" | java -jar corese-command.jar sparql -if turtle -q ./query.rq --init config.properties
Note:
echo ""
and-if
turtle are workaround methods as this command is not designed to function without input.
Finally, execute a federated query using the federation:
@federation <http://myserver.fr/myname/federate>
select * where {?x ?p ?y}