My use-case is I have this schema > > *M* offers -- dprop:isOfferOf -- *1* Product.
Now I have list of product ids and I want to get 1. Product information 2. Counts and min-Price of all (New and Used) offers Thank you Regards Nauman On Sun, Jul 26, 2015 at 1:18 PM, Nauman Ramzan <[email protected]> wrote: > Hi Buehmann ! > I am using GROUP BY ?pid inside inner-query as well as outer-query > Like > >> PREFIX mod:<http://www.example.com/datam/op/> >> PREFIX prod:<http://www.example.com/products/> >> SELECT DISTINCT ?pid (?title )(?count)# (?condition) >> FROM <http://www.example.com/products> >> WHERE { >> ?pid dprop:productTitle ?title. >> ?pid dprop:productDescription ?description. >> { >> SELECT (COUNT(?oid) AS ?count) #(?condition) > > FROM <http://www.example.com/offers> WHERE { ?oid oprop:isOfferOf >> ?pid. ?oid dprop:condition ?condition. } GROUP BY ?pid > > } >> } >> GROUP BY ?pid > > > I am still getting duplicate ?pid. > Second problem is I also wanted to get ?condition but if I'll un-comment > ?condition then compiler is showing this error > > Variable ?condition is used in the result set outside aggregate and not >> mentioned in GROUP BY clause > > > Can you please help me to correct this query. > > Thank you. > > On Sun, Jul 26, 2015 at 1:02 PM, buehmann < > [email protected]> wrote: > >> What Andy means is that the pid variable of the subselect is not bound to >> the outer query. Sub-SELECTs are evaluated first, those values have to be >> propagated/projected to the outer query, otherwise you don't get the >> intended values. >> It's so simple add >> GROUP BY ?pid >> >> to the sub-SELECT and also add >> >> SELECT ... ?pid >> >> Lorenz >> >> >> On 26.07.2015 08:36, Nauman Ramzan wrote: >> >>> Dear Andy Good Morning ! >>> Can you please explain more. How can I fix this problem ? >>> Because >>> in outer query I am getting ?pid one by one. in sub query instead of >>> taking >>> value from outer query subquery is taking value of ?pid from VALUES. >>> >>> My Problem I want to get Product information and counts of new and used >>> >>>> offers against each product. >>>> >>> >>> Thank you. >>> Regards >>> Nauman >>> >>> On Sat, Jul 25, 2015 at 9:06 PM, Andy Seaborne <[email protected]> wrote: >>> >>> On 25/07/15 12:09, Nauman Ramzan wrote: >>>> >>>> Dear Andy, >>>>> >>>>> I am using Jena ARQ. >>>>> >>>>> On Sat, Jul 25, 2015 at 3:02 PM, Nauman Ramzan < >>>>> [email protected]> >>>>> >>>>> wrote: >>>>> >>>>> Hi James Anderson ! >>>>> >>>>>> Thank you for your help. >>>>>> Now construct this query >>>>>> >>>>>> CONSTRUCT{ >>>>>> >>>>>> ?pid dprop:title ?title; >>>>>>> dprop:description ?description; >>>>>>> dprop:brand ?brand; >>>>>>> dprop:isPublic ?isPublic; >>>>>>> dprop:count ?total; >>>>>>> dprop:priceMin ?priceMin; >>>>>>> dprop:condition ?condition; >>>>>>> dprop:createdAt ?createdAt. >>>>>>> } >>>>>>> WHERE { >>>>>>> ?pid dprop:productTitle ?title; >>>>>>> dprop:productDescription ?description; >>>>>>> dprop:productBrand ?brand; >>>>>>> dprop:isPublic ?isPublic; >>>>>>> dprop:createdAt ?createdAt. >>>>>>> OPTIONAL { ?pid dprop:bulletpoint0 ?bulletpoint0 } >>>>>>> OPTIONAL { ?pid dprop:bulletpoint1 ?bulletpoint1 } >>>>>>> { >>>>>>> SELECT (COUNT(?cond) AS ?total) (MIN(?pr) AS ?priceMin ) >>>>>>> ?condition WHERE{ >>>>>>> ?pid ^mod:isOfferOf ?oid. >>>>>>> ?oid dprop:price ?pr. >>>>>>> ?oid dprop:condition ?cond. >>>>>>> BIND (if( ?cond = 1, "New", "Used") AS ?condition). >>>>>>> } >>>>>>> } >>>>>>> VALUES ?pid { prod:Rl5RVl5R prod:Rl5RVl5Q prod:Rl5RVl5W >>>>>>> prod:Rl5RVl5Y >>>>>>> prod:Rl5RVl5U } >>>>>>> } >>>>>>> >>>>>>> >>>>>> Everything is working fine. except sub-query calculation error. >>>>>> result of >>>>>> total is not correct. >>>>>> >>>>>> That maybe because there are 2 different ?pid variables. >>>> >>>> SELECT (COUNT(?cond) AS ?total) (MIN(?pr) AS ?priceMin ) >>>>>>> ?condition WHERE{ >>>>>>> ?pid ^mod:isOfferOf ?oid. >>>>>>> ?oid dprop:price ?pr. >>>>>>> ?oid dprop:condition ?cond. >>>>>>> BIND (if( ?cond = 1, "New", "Used") AS ?condition). >>>>>>> } >>>>>>> >>>>>> ?pid is not projected out so it is not joined with the one in the >>>> VALUEs >>>> clause. You could GROUP BY ?pid and add it to the SELECT clause. You >>>> can >>>> also just have >>>> >>>> WHERE { >>>> SELECT ... { ... } >>>> GROUP BY ?pid >>>> } >>>> >>>> with everything inside the SELECT's {} >>>> >>>> Andy >>>> >>>> >>>> My schema(relation between product and offer ) you can see in first >>>> >>>>> message. >>>>>> >>>>>> On Sat, Jul 25, 2015 at 1:00 PM, Andy Seaborne <[email protected]> >>>>>> wrote: >>>>>> >>>>>> On 25/07/15 04:54, Nauman Ramzan wrote: >>>>>> >>>>>>> Hi Here is my question in details. Now i am getting counts and >>>>>>> other >>>>>>> >>>>>>>> info. >>>>>>>> but i want to define/use this result as data of outer block. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> http://answers.semanticweb.com/questions/32850/sparql-use-subquery-as-resultvariable-for-outer-query >>>>>>>> same as >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> http://stackoverflow.com/questions/31586989/sparql-use-subquery-as-result-variable-for-outer-query >>>>>>>> Thank you. >>>>>>>> >>>>>>>> >>>>>>>> The query isn't legal SPARQL (parse error - non-group'ed variables >>>>>>> in >>>>>>> the >>>>>>> inner select - even after completing the prefixes). Previously, you >>>>>>> indicated you were using Virtuoso. Their support lists are on >>>>>>> SourceForge. >>>>>>> >>>>>>> It will help them to have a complete, minimal example. >>>>>>> >>>>>>> A small amount of data >>>>>>> A complete working query >>>>>>> >>>>>>> Andy >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Tue, Jul 21, 2015 at 5:04 PM, Andy Seaborne <[email protected]> >>>>>>> >>>>>>>> wrote: >>>>>>>> >>>>>>>> On 21/07/15 11:35, Nauman Ramzan wrote: >>>>>>>> >>>>>>>> Hi all ! >>>>>>>>> >>>>>>>>> I have this type of data >>>>>>>>>> >>>>>>>>>> <offer1> rdf:isOfferOf <product1> >>>>>>>>>> >>>>>>>>>> <offer2> rdf:isOfferOf <product1> >>>>>>>>>> >>>>>>>>>>> <offer3> rdf:isOfferOf <product2> >>>>>>>>>>> <offer4> rdf:isOfferOf <product2> >>>>>>>>>>> >>>>>>>>>>> <offer5> rdf:isOfferOf <product2> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> <offer7> rdf:isOfferOf <product7> >>>>>>>>>> >>>>>>>>>> now I want to get all offers of product1, product2. >>>>>>>>>> second counts of offers. >>>>>>>>>> Thank you >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> What have you tried? >>>>>>>>>> >>>>>>>>>> A complete, minimal example of what you have tried makes it >>>>>>>>> easier to >>>>>>>>> answer the question. >>>>>>>>> >>>>>>>>> Andy >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >> >
