On 17/07/13 13:10, Michael Brunnbauer wrote:
hi all,
this query with Fuseki 0.2.7 on a TDB with named graphs yields 2 for ?c:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
select (count(*) as ?c) where { graph ?g {
SERVICE <http://127.0.0.1:3030/datasets/query> {
?d rdfs:subClassOf <example>
}
?s ?p ?d
} }
But as soon as I wrap it as subquery, ?c is 9436 - the number of all triples
from all named graphs:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
select ?c where {
select (count(*) as ?c) where { graph ?g {
SERVICE <http://127.0.0.1:3030/datasets/query> {
?d rdfs:subClassOf <example>
}
?s ?p ?d
} }
}
(The federated subquery on http://127.0.0.1:3030/datasets/query has one
subclass as result)
Is this a bug or a misunderstanding ?
It's not a bug as far as I can see.
To debug, try "SELECT * ... LIMIT 100"
COUNT(*) is the number of rows in the answers. In your first query,
there must be either two ?g and the { ?d rdfs:subClassOf <example> }
matches once, or one ?g and { ?d rdfs:subClassOf <example> } matches twice.
In the second query, that is joined with "?s ?p ?d" in the named graph
of the local machine which has 4718 triples with the same ?d.
select (count(distinct ?g) as ?c)
would count the named graphs only (inefficiently!)
Andy
Regards,
Michael Brunnbauer