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