- From: Andy Seaborne <andy@apache.org>
- Date: Thu, 7 Jul 2016 10:27:41 +0100
- To: public-sparql-exists@w3.org
On the first point: [[ Problem 1: Some uses of EXISTS are undefined exists is only defined for graph patterns, but in SELECT ?x WHERE { ?x :p :c . FILTER EXISTS { SELECT ?y { ?y :q :c . } } } the argument to exists ends up being a ToMultiSet, which is not listed under "Graph Pattern" in the table of SPARQL algebra symbols. ]] This isn't specific to EXISTS. It's about anywhere a sub-SELECT is used. { ... } is a graph pattern group and results in a join. The arguments to join are teh evaluation of a graph patterns - multisets. Looking at it use in "18.2.2.6 Translate Graph Patterns [1] (right at the end of the section), the last example of "18.2.3 Examples of Mapped Graph Patterns" [2] and "18.2.4.3 VALUES" [3], using is join shows it in the same light as the other graph patterns. Therefore, I think we can address this with an entry in the https://www.w3.org/2013/sparql-errata Draft: [[ query-errata-N: "Section 18.2 Translation to the SPARQL Algebra" intro (end): ToMultiSet can be used where a graph pattern is mentioned below because the outcome of evaluating a graph pattern is a multiset. ]] ToMultiSet has the same result type the same as the other graph patterns but it is also a solution modifier (acts on a solution sequence). Andy [1] https://www.w3.org/TR/sparql11-query/#sparqlTranslateGraphPatterns [2] https://www.w3.org/TR/sparql11-query/#sparqlAlgebraExamples [3] https://www.w3.org/TR/sparql11-query/#sparqlAlgebraFinalValues
Received on Thursday, 7 July 2016 09:28:12 UTC