- From: Carlos Buil Aranda <cbuil@fi.upm.es>
- Date: Tue, 19 Oct 2010 10:44:57 -0300
- To: Andy Seaborne <andy.seaborne@epimorphics.com>
- CC: Gregory Williams <greg@evilfunhouse.com>, Axel Polleres <axel.polleres@deri.org>, SPARQL Working Group <public-rdf-dawg@w3.org>
On 19/10/2010 8:30, Andy Seaborne wrote: > It would help me if we could identify the principles and requirements, > before focusing on the definition of mechanism. Like Greg, I see the > mechanisms ruling out queries the user might reasonably expect. For > example, a FILTER using bound() can guard the SERVICE call. I agree, we should look more at the definition since it is in early stages, and we should prevent unwanted behaviour. My idea was to provide formal syntax to a sentence that was unclear to me. How it is implemented is also important to me, and discussing way about how to prevent unbounded values is of much help. > > Regardless of the outcome of the syntactic or execution preconditions, > we also need to discuss what happens if a SERVICE operation fails > (e.g. SERVICE currently unavailable). Maybe the way we handle this > might cover how we handle unbound service references. Yes, I think this would be a very important discussion. cheers, Carlos > > Andy > > On 18/10/10 18:19, Gregory Williams wrote: >> On Oct 18, 2010, at 10:23 AM, Carlos Buil Aranda wrote: >> >>> Hi all, >>> >>> please, find in the previous URL [1] the work I did together with >>> Axel and Marcelo Arenas regarding variables which are certainly >>> bound or not. A new concept of service-safe (whether a SERVICE ?X P >>> is safe for execution, i.e. ?X is bounded), as Axel said. >>> >>> Carlos >>> >>> [1] http://www.w3.org/2009/sparql/wiki/Certainly_bound >> >> Carlos, >> >> I have a few comments on your "certainly bound" work. >> >> "* P = SERVICE t { P1 } and either t is a IRI and ?X is strongly >> bound in P1" >> I'm not sure what the second branch of the "either" is here. Was >> there meant to be more? >> >> "* P = P1 BINDINGS ?X1 ... ?Xn { BindingValues } and ?X is either >> strongly bound within P1 or ?X = ?Xi and UNBOUND is not a possible >> value for a ?Xi in BindingValues." >> What does "possible value" mean here? Does this eliminate the >> possibility of stream parsing BINDINGS clauses? >> >> "* P = GRAPH t { P1 } and ?X is strongly bound in P1" >> I believe this should also have an option for cases where t = ?X. >> >> >> After reading the "service-safeness" definition, I'm not sure it >> really captures what you want: >> >> """ >> Let P be a graph pattern. P is service-safe if for every subpattern >> P1 of P such that P1 = SERVICE ?X P2 it hold that >> >> • there exists a subpattern P3 of P such that P1 is a subpattern >> of P3 and ?X is strongly bound in P3. >> • P2 is service-safe. >> """ >> >> The biggest thing that stands out to me in this definition is that I >> think this means that a pattern would be considered service-safe if >> ?x is strongly bound in P2 (inside the SERVICE pattern), and >> therefore strongly bound in P1 (the SERVICE) and in P3 (the group >> containing the SERVICE). This will leave ?x unbound at the point of >> execution of P1 if ?X is not strongly bound in a subpattern of P3 >> that *is not* P1. >> >> Moreover, I'm worried that trying too hard to specify these concepts >> of "strongly bound" and "service-safeness" will lead to legitimate >> queries being rejected because they are considered service-unsafe. >> For example, I think this should be a valid pattern (modulo the >> syntax of the BIND operator) but would be considered service-unsafe: >> >> SELECT * WHERE { >> {} OPTIONAL {<foo> ns1:endpoint ?endpoint } >> OPTIONAL {<foo> ns2:sparqlEndpoint ?endpoint } >> OPTIONAL { BIND(?endpoint AS<http://default/endpoint>) } >> SERVICE ?endpoint { ... } >> } >> >> I think (but not completely sure) that this query could be rewritten >> by duplicating the SERVICE block inside each of the OPTIONAL >> branches. However, if that is in fact an equivalent rewriting, I'm >> not sure I want two semantically equivalent queries to be treated >> differently because the query engine/optimizer can't tell that >> they're equivalent. >> >> thanks, >> .greg >> >> > >
Received on Tuesday, 19 October 2010 13:45:27 UTC