- From: Paul Tyson <phtyson@sbcglobal.net>
- Date: Thu, 24 Jan 2013 10:54:30 -0600
- To: Paul Tyson <phtyson@sbcglobal.net>
- Cc: Andy Seaborne <andy.seaborne@epimorphics.com>, "public-sparql-dev@w3.org" <public-sparql-dev@w3.org>
Ok, just to close the loop on this: In the subquery were clauses like: filter not exist {?s :p "str"} Replacing these with a different negation form eliminated the problem. I don't know if this is per spec or a quirk of jena query library. Regards, --Paul On Jan 24, 2013, at 9:21, Paul Tyson <phtyson@sbcglobal.net> wrote: > > > > > On Jan 24, 2013, at 8:45, Andy Seaborne <andy.seaborne@epimorphics.com> wrote: > >> Joining the evaluation of {} with X yields X, not a single solution of null bindings. > > Yes, I just learned that reading further in the spec. Now it is more of a puzzle. I will try to work up a simple example to replicate the problem. > >> >> Is it a typo that: >> >> [[ >> select distinct ?var1 ?var ?var3 >> ]] > > Yes, typo. The select variables are identical in inner and outer queries. > > Thanks, > --Paul >> >> has ?var not ?var2 >> >> Andy >> >> >> On 24/01/13 14:31, Paul Tyson wrote: >>> >>> Lee, >>> >>> >>> On Jan 24, 2013, at 0:36, Lee Feigenbaum <lee@thefigtrees.net >>> <mailto:lee@thefigtrees.net>> 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 >>>>> >>>>> >>>> >> >
Received on Thursday, 24 January 2013 17:03:07 UTC