Lee,
On Jan 24, 2013, at 0:36, Lee Feigenbaum <[email protected]> wrote: > Hi Paul, > > Why would the outer query need any graph patterns other than the subquery? > You ought to be able to do exactly what you have below without anything in > the "what goes here" spot. > That's what I thought at first, but it returns a single solution with no bindings. After studying the spec (SPARQL 1.1 section 12) I see this is probably as specified, because it joins the solution projected from the inner query to the solution from the outer query. The empty outer graph pattern returns a single solution of null bindings (per spec 5.2.1). Regards, --Paul > Lee > > On 1/23/2013 3:56 PM, Paul Tyson wrote: >> Hi all, >> >> I'm wondering if there is a simple solution to this problem. >> >> I have a rather complicated query, consisting of several union clauses, >> which by its nature will return duplicates. I need to get a unique solution >> set so I can group them and sum a couple of fields. >> >> Simply wrapping the union query in a nested SELECT DISTINCT doesn't work, >> because the outer query has no graph pattern to match the variables >> projected from the subquery. >> >> I tried adding a series of BIND statements to simply rename the subquery >> variables for use by the aggregate outer query, but that didn't work (with >> jena, at least). >> >> The source dataset is nearly 500M triples. I'm using Jena 2.7.3. The >> subquery will return anywhere from a few dozen to a few hundred solutions, >> and by itself runs very quickly. >> >> Here's a skeleton view of the query. Is there something to fill "what goes >> here" that will pass the subquery results up to the grouping function? >> >> select ?var1 ?var2 (sum(?var3) as ?var3_total) >> where { >> { ??? what goes here ??? } >> {select distinct ?var1 ?var ?var3 >> where { ... complicated union query ... }} >> } >> group by ?var1 ?var2 >> >> Or any other suggestions on how to tackle this problem? >> >> Thanks, >> --Paul >> >> >
