- From: Lee Feigenbaum <lee@thefigtrees.net>
- Date: Wed, 27 Apr 2011 23:09:32 -0400
- To: SPARQL Working Group <public-rdf-dawg@w3.org>
- CC: Eric Prud'hommeaux <eric@w3.org>
I've revisited my review of the federated query document based on Carlos's changes documented on http://www.w3.org/2009/sparql/wiki/To_Last_Call/Federated_Query_Review. This also discharges ACTION-433, as I took a look at the protocol service / endpoint terminology. == Substantive Comments == These comments must be resolved before the document is ready for Last Call. Editorial comments follow after, which can be addressed either before or after Last Call, though many of them would help the readability of the document. 2.3 -- we can't link to a definition on a wiki. If we need that definition, it needs to be incorporated into this document. It also should be incorporated into the semantics section, rather than in the context of an example. 3.1 * The syntax transformation needs to handle "SILENT" Definition: Evaluation of a Service Pattern * Invocation(IRI, S, P, B) needs to be extended to take a 5th parameter, the boolean for silent invocation or not. * Why are only variables in the intersection of vars and bound selected? This means that I can't do this: SELECT ?x { SERVICE <iri> { ?x a foaf:Person } } ...which seems strange to me. Is this intentional? * The second call to "Invocation" needs to include silentOp * " return unbounded variables." needs to be more formal. It needs to return a single solution with no bindings. 4 SPARQL 1.1 Federated Query Grammar -- this document only defines SERVICE, not BINDINGS. This section should be changed to reflect that. 5 Conformance I'm still not sure that this conformance section makes sense here. I need to think more about what would make sense. Perhaps Eric or Axel has a suggestion here. Remove section 7 completely. == Editorial Comments == 1. Introduction Suggest rewording as follows: """ The SERVICE extension allows one to direct a portion of a query to a particular SPARQL query service, similar a GRAPH graph pattern, which "directs" queries to particular named graphs in the (local) dataset . This specification defines the syntax and semantics of this extension. """ => """ This specification defines the syntax and semantics of the SERVICE extension to the SPARQL 1.1 Query Language. This extension allows a query author to direct a portion of a query to a particular SPARQL endpoint to be executed against local graphs. Results are returned to the federated query processor and are joined with results from the rest of the query. """ (and add a link from "SPARQL endpoint" to http://www.w3.org/2009/sparql/docs/protocol-1.1/Overview2.xml#terminology) 1.1.2 Result Descriptions Suggest adding this and removing the similar sentence from 1.1.3: """ This example illustrates a solution sequence for a query that projects three variables, ?x, ?y, and ?z. The solution sequence has a single solution mapping in which ?x is bound to the plain literal "Alice", ?y is bound to the IRI http://example/a, and ?z is not bound. """ 1.1.3 Terminology Remove " (corresponds to the Concepts and Abstract Syntax term "RDF URI reference")" after "Solution Mapping". Remove "In this result set..." 2 SPARQL 1.1 Basic Federation Extension Suggest renaming section to "SPARQL 1.1 Federated Query Extension" Suggest rewording the first paragraph based on the new introduction text, as follows: """ Queries over distributed SPARQL endpoints often involves querying one source and using the acquired information to constrain queries of the next source. This section illiustrates how this can be achieved using SPAQL1.1's SERVICE Graph patterns by examples. """ => """ The SERVICE keyword instructs a federated query processor to invoke a portion of a SPARQL query against a remote SPARQL protocol service. This section presents examples of how to use the SERVICE keyword. The following sections define the syntax and semantics of this extension. """ 2.1 Simple query to a remote SPARQL endpoint Suggest rewording: """ This example shows how to query a remote SPARQL endpoint and join the returned data with the data at local RDF data store. Imagine we want to know who do I know. Data about people is in <http://people.example/sparql> endpoint: """ => """ This example shows how to query a remote SPARQL endpoint and join the returned data with the data from the local RDF data store. Consider a query to find the names of the people I know. Data about the names of various people is available at the <http://people.example/sparql> SPARQL endpoint: """ 2.1 and following -- the examples are much improved. There is still some inconsistency between the data in the remote endpoints and the URI of the endpoints. 2.1 uses "people.example" and 2.2 uses "people.example.org", for instance. It would be good to make these all match up to help the reader follow the examples without being confused. 2.2 I think this example needs a couple of changes: * The URIs of the services in the description does not match the URIs in the query * The query nests one SERVICE inside another. This requires the first service to be a federated query processor. This should be mentioned in the example, or the example changed so that the OPTIONAL is outside of the SERVICE clause (in which case the foaf:interest triples would need to be local). 2.3 Variable Services "in the default graph" => "in the local default graph" """ When having variables for specifying the address of a SPARQL endpoint in a SERVICE operation this variable must be bounded. """ => """ A variable used with the SERVICE keyword must be bound. """ (See comment above.) 2.4 """ the query will stop returning the corresponding SPARQL error. """ => """ the query will stop and return the error. """ 2.4 - Can we add or something in the table cell in the results to make it render as a full-height empty cell to show that there is one row in which ?name is not bound? 2.5 As per http://lists.w3.org/Archives/Public/public-rdf-dawg/2011AprJun/0119.html, I'd remove this example completely and substitute the text in that email message. While SERVICE and BINDINGS _can_ be used in the same query, that is not the "natural" intent of things -- instead, the natural intent is that a federated query implementation would _generate_ queries with BINDINGS to help constrain the results from the remote endpoint. An example showing this would be helpful, but is probably too much before Last Call, so I'd remove this example entirely. thanks, Lee
Received on Thursday, 28 April 2011 03:10:06 UTC