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







Reply via email to