On 06/01/11 19:32, Benson Margulies wrote:
With current ARQ, the default syntax didn't accept count. I set syntax
to ARQ and it worked. I'll change it to use the sparql 1.1 syntax
instead.
In current ARQ (2.8.7) the default is SPARQL 1.1.
If it works in the ARQ extended language and not in the default
language, you mostly have an older version of ARQ on the classpath.
Andy
On Thu, Jan 6, 2011 at 2:06 PM, Andy Seaborne
<[email protected]> wrote:
On 06/01/11 18:47, Benson Margulies wrote:
In my store I have (for purposes of discussion)
one tuple S P O
and then some number of quadlets on it.
I want to find out how many.
SELECT (Count(*) AS ?C)
{
?x rdf:subject S .
?x rdf:predicate P .
?x rdf:object O .
}
which assumes fully reified.
However, to make matters more complex, what I'd really like to do is
set up a construct query that finds
S (p1|p2|p3|p4...) O
SELECT (Count(*) AS ?C)
{
?x rdf:subject S .
?x rdf:predicate ?P .
?x rdf:object O .
FILTER ( ?P IN ( p1, p2, p3, p4) )
}
and also then returns the count of quadlets for each of these it comes up
with.
Finding then counting, and finding and returning needs duplication of the
thing. It's a quirk in the whole relation algebra thing - you can't assign
subexpressions and reuse them - this is not unique to SPARQL. To look at it
another way, counting is destructive on the things being counted.
Is this plausible .... ? Obviously, I can do it by first finding the
statements and then going back and using the COUNT extension to do the
counting.
COUNT isn't an extension - it's part of SPARQL 1.1
Is TDB particularly good or bad at this?
It does not anything special but caching is your friend (and mime).
Andy