On 29/09/13 16:32, james anderson wrote:
good evening, martynas;


On 29 Sep 2013, at 2:03 PM, Martynas Jusevičius wrote:

Hey,

I want to do federation between to endpoints, both of which contain
named graphs. I'm trying a query of this shape:

[...]

this is one of the several aspects of federation semantics which the
recommendations leave incomplete. the respective descriptions of algebra
translations and semantics, below, suggest that the initial dataset for
the remote query is the remote service's default dataset and that, in
particular, the dataset restriction effected by a graph operation, via

    eval(D(D[IRI]), P)

has no bearing on the interpretation of the service form,

    Invocation(IRI, P, SilentOp)
>
in which, as the 'P' expression includes no provision to specify any
dataset, it is necessarily applied to whatever dataset the remote
service provides when a query does not describe the dataset. in the
context of your use case, this which would mean that the first statement
pattern would be executed against the default graph of that default
dataset and the inner graph clause would restrict that dataset with its
graph for its contained patterns.

best regards, from berlin,
----
http://www.w3.org/TR/2013/REC-sparql11-query-20130321/#sparqlTranslateGraphPatterns
http://www.w3.org/TR/2013/REC-sparql11-query-20130321/#defn_evalGraph
http://www.w3.org/TR/2013/REC-sparql11-federated-query-20130321/#defn_service
---
james anderson | [email protected] | http://dydra.com

Yes - it is intended to a remote request to a different dataset as provided by the remote endpoint.

The federation case being addressed in SPARQL basic federated query is one where there is remote published data and the quesry wishes to incorporate access to that data during a query. Each publisher (each service endpoint) is independent and the daatset at the remote endpoint need be nothing like the local one. Passing the graph over is assuming a similar structure. The app can do that by adding GRAPH inside SERVICE - that GRAPH refers to the remote dataset not the local one. Consider the example of "GRAPH ?g".

There are other "federated query" cases, like one very large and compound dataset spread over multiple machines but essentially under one point of control. This is not the intended target for SERVICE.

The datset for a query is local to the query processor and it knows nothing about the remote dataset other than it can access it via SERVICE. The local GRAPH is not relevant - in fact, even if a graph using that IRI is available at the remote endpoint, it may not be the same graph. Think of "current weather" which varies.

        Andy


PS Actually, you may be able to scope the SERVICE to a graph using ?default-graph-uri= in the service URL but it's not exactly convenient.


Reply via email to