Hi Rumi,
I'm just wondering about your answer. Is this a bug in Virtuoso or not?
I would assume that an OPTIONAL should not influence the number of the
resultset, so why does the second query returns a different number?
Kind reagrds,
Lorenz
On 06/26/2014 02:45 PM, Rumi wrote:
Hi Olga,
On 25-Jun-14 6:50 PM, Olga Medvedeva wrote:
Hi everyone,
Does the location of OPTIONAL clause matters in SPAQRL query? Here
are the examples of non-intersecting results on dbpedia:
1. Without any OPTIONAL numNames = 2143
PREFIX dbprop: <http://dbpedia.org/property/>
SELECT count(DISTINCT ?name) AS ?numNames
WHERE
{
?country rdf:type dbpedia-owl:Country .
?country dbprop:commonName ?name .
}
2. OPTIONAL at the beginning returns numNames = 1922
PREFIX dbprop: <http://dbpedia.org/property/>
SELECT count(DISTINCT ?name) AS ?numNames
WHERE
{
OPTIONAL {?country dbpprop:yearEnd ?yearEnd}
?country rdf:type dbpedia-owl:Country .
?country dbprop:commonName ?name .
}
3. OPTIONAL at the end returns numNames = 2143 - same as in #1
(without OPTIONAL)
PREFIX dbprop: <http://dbpedia.org/property/>
SELECT count(DISTINCT ?name) AS ?numNames
WHERE
{
?country rdf:type dbpedia-owl:Country .
?country dbprop:commonName ?name .
OPTIONAL {?country dbpprop:yearEnd ?yearEnd}
}
The difference is 221. And it's not equal to the number of not
bounded ?yearEnd:
4. OPTIONAL at the end with not bound filter returns numNames = 338
PREFIX dbprop: <http://dbpedia.org/property/>
SELECT count(DISTINCT ?name) AS ?numNames
WHERE
{
?country rdf:type dbpedia-owl:Country .
?country dbprop:commonName ?name .
OPTIONAL {?country dbpprop:yearEnd ?yearEnd} ## numNames = 2143
FILTER (!bound(?yearEnd))
}
I thought that the position of OPTIONAL clause in query should not
affect the result. Why the results are so different?
In general yes, position for OPTIONAL should not matter.
However, in your case ( let's say we run the queries against
dbpedia.org/sparql endpoint ),
there is data for ?yearEnd having different datatypes: integer, and
non integer -- ex:
-- integer: http://bit.ly/1lrGGHN
-- not integer: -- http://bit.ly/1lZ3L67
-- ex. string: -- http://bit.ly/TAgOyl
I would suggest you to specify the type of the ?yearEnd ex.:
filter ( bif:isinteger (?yearEnd)) .
# demo link: -- http://bit.ly/1qe8eUf
PREFIX dbprop: <http://dbpedia.org/property/>
SELECT count(DISTINCT(?name))
WHERE
{
?country rdf:type dbpedia-owl:Country .
?country dbprop:commonName ?name .
optional {?country dbpprop:yearEnd ?yearEnd }.
filter ( bif:isinteger (?yearEnd)) .
}
limit 100
or
# demo link: -- http://bit.ly/UMdpgS
PREFIX dbprop: <http://dbpedia.org/property/>
SELECT count(DISTINCT(?name))
WHERE
{
optional {?country dbpprop:yearEnd ?yearEnd }.
?country rdf:type dbpedia-owl:Country .
?country dbprop:commonName ?name .
filter ( bif:isinteger (?yearEnd)) .
}
limit 100
both of which result in same total of 1839 and in both of which the
position in OPTIONAL is different.
Best Regards,
Rumi Kocis
Thank you,
Olga Medvedeva.
------------------------------------------------------------------------------
Open source business process management suite built on Java and Eclipse
Turn processes into business applications with Bonita BPM Community Edition
Quickly connect people, data, and systems into organized workflows
Winner of BOSSIE, CODIE, OW2 and Gartner awards
http://p.sf.net/sfu/Bonitasoft
_______________________________________________
Virtuoso-users mailing list
Virtuoso-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/virtuoso-users
------------------------------------------------------------------------------
Open source business process management suite built on Java and Eclipse
Turn processes into business applications with Bonita BPM Community Edition
Quickly connect people, data, and systems into organized workflows
Winner of BOSSIE, CODIE, OW2 and Gartner awards
http://p.sf.net/sfu/Bonitasoft
_______________________________________________
Virtuoso-users mailing list
Virtuoso-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/virtuoso-users
------------------------------------------------------------------------------
Open source business process management suite built on Java and Eclipse
Turn processes into business applications with Bonita BPM Community Edition
Quickly connect people, data, and systems into organized workflows
Winner of BOSSIE, CODIE, OW2 and Gartner awards
http://p.sf.net/sfu/Bonitasoft
_______________________________________________
Virtuoso-users mailing list
Virtuoso-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/virtuoso-users