On 24/07/13 11:56, Michael Brunnbauer wrote:

Hello Andy,

can you confirm that this is a bug ? Should I contruct a minimal example ?

Not a bug that I can see.

Please format for email

  1 PREFIX  rdfs: <http://www.w3.org/2000/01/rdf-schema#>
  2
  3 SELECT  ?c
  4 WHERE
  5   { SELECT  (count(*) AS ?c)
  6     WHERE
  7       { GRAPH ?g
  8           { SERVICE <http://www.imagesnippets.com/sparql/datasets>
9 { ?d rdfs:subClassOf <http://www.imagesnippets.com/imgtag/datasets/Michaels_Dataset/aidkjfsdf> }
 10             ?s ?p ?d
 11           }
 12       }
 13   }

Line 8 sends the a request to the endpoint - GRAPH does not carry over machines. Only the endpoint matters. So the SERVICE is on the default graph (or union in this case).

SELECT *
{ ?d rdfs:subClassOf <http://www.imagesnippets.com/imgtag/datasets/Michaels_Dataset/aidkjfsdf> }
  ?s ?p ?d
}

?s ?p ?d is all triples - if the rdfs:subClassOf has one hit, then there are #triples in all named graphs.

        Andy


>> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
>> select ?c where {
>> select (count(*) as ?c) where { graph ?g {
>> SERVICE <http://www.imagesnippets.com/sparql/datasets> { ?d rdfs:subClassOf <http://www.imagesnippets.com/imgtag/datasets/Michaels_Dataset/aidkjfsdf>. }
>> ?s ?p ?d.
>> }
>> }
>> }
>>
>> Result: 12347 (=The number of all triples in all named graphs)


Regards,

Michael Brunnbauer

On Wed, Jul 17, 2013 at 09:06:49PM +0200, Michael Brunnbauer wrote:

Hello Andy,

the second query is the first query with "select ?c where {" and "}" around it.
I don't understand why it should return something else.

Our SPARQL endpoints are public anyway so you can see yourself. The numbers
may change a bit due to user activity:

http://www.imagesnippets.com/sparql/dbpedia

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
select (count(*) as ?c) where { graph ?g {
SERVICE <http://www.imagesnippets.com/sparql/datasets> { ?d rdfs:subClassOf 
<http://www.imagesnippets.com/imgtag/datasets/Michaels_Dataset/aidkjfsdf>. }
?s ?p ?d.
}
}

Result: 1

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
select (count(distinct ?g) as ?c) where { graph ?g {
SERVICE <http://www.imagesnippets.com/sparql/datasets> { ?d rdfs:subClassOf 
<http://www.imagesnippets.com/imgtag/datasets/Michaels_Dataset/aidkjfsdf>. }
?s ?p ?d.
}
}

Result: 1

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
select ?c where {
select (count(*) as ?c) where { graph ?g {
SERVICE <http://www.imagesnippets.com/sparql/datasets> { ?d rdfs:subClassOf 
<http://www.imagesnippets.com/imgtag/datasets/Michaels_Dataset/aidkjfsdf>. }
?s ?p ?d.
}
}
}

Result: 12347 (=The number of all triples in all named graphs)

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
select ?c where {
select (count(distinct ?g) as ?c) where { graph ?g {
SERVICE <http://www.imagesnippets.com/sparql/datasets> { ?d rdfs:subClassOf 
<http://www.imagesnippets.com/imgtag/datasets/Michaels_Dataset/aidkjfsdf>. }
?s ?p ?d.
}
}
}

Result: 1160 (=The number of named graphs)

Should I have a close look at the SPARQL standard or is there a bug ?

Regards,

Michael Brunnbauer

On Wed, Jul 17, 2013 at 07:10:14PM +0100, Andy Seaborne wrote:
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


--
++  Michael Brunnbauer
++  netEstate GmbH
++  Geisenhausener Straße 11a
++  81379 München
++  Tel +49 89 32 19 77 80
++  Fax +49 89 32 19 77 89
++  E-Mail [email protected]
++  http://www.netestate.de/
++
++  Sitz: München, HRB Nr.142452 (Handelsregister B München)
++  USt-IdNr. DE221033342
++  Geschäftsführer: Michael Brunnbauer, Franz Brunnbauer
++  Prokurist: Dipl. Kfm. (Univ.) Markus Hendel




Reply via email to