2009-08-03 11 views
27

Tengo la siguiente consulta:SPARQL consulta y el recuento de distinta

SELECT ?tag WHERE { 
    ?r ns9:taggedWithTag ?tagresource. 
    ?tagresource ns9:name ?tag 
} 
LIMIT 5000 

y los resultados son los siguientes:

abc 
abc 
abc 
abc 
abc 
abc 
abc 
abd 
ads 
anb 

que desee obtener algo como:

tag | count 
----------------- 
abc  7 
abd  1 
ads  1 
anb  1 

I lo he intentado con count(*) y count(?tag), pero de lo que consigo e mensaje de error "Variable or "*" expected." ¿Puede alguien decirme cómo hacerlo bien?

+0

Core SPARQL no tiene agregados como COUNT. ¿Con qué extensión SPARQL estás trabajando? – laalto

+0

Creo que estoy usando el núcleo :( – cupakob

+0

@laalto Solo como una nota, la última versión de SPARQL, versión 1.1, desde 2013, * does * incluye agregados. –

Respuesta

32

Si está utilizando Java y ARQ de Jena, puede usar ARQ's extensions for aggregates. Su consulta sería algo como:

SELECT ?tag (count(distinct ?tag) as ?count) 
WHERE { 
    ?r ns9:taggedWithTag ?tagresource. 
    ?tagresource ns9:name ?tag 
} 
LIMIT 5000 

El original SPARQL specification from 2008 no incluyen agregados, pero the current version, 1.1, from 2013 hace.

+5

no es así, pero los agregados se están agregando a SPARQL 1.1 y están ampliamente implementados (a través de diferentes extensiones, como se señaló) – dajobe

25

El uso de COUNT(), MIN(), MAX(), SUM(), AVG() con GROUP BY puede producir valores de resumen para grupos de triples. Tenga en cuenta que estos patrones pueden ser específicos de SPARQL 1.1.

Por ejemplo, esto se puede resumir el? Valor para cada uno? Categoría,

SELECT ?category (SUM(?value) as ?valueSum) 
WHERE 
{ 
    ?s ?category ?value . 
} 
GROUP BY ?category 

Éste puede contar el número de usos para el predicado? P,

SELECT ?p (COUNT(?p) as ?pCount) 
WHERE 
{ 
    ?s ?p ?o . 
} 
GROUP BY ?p 

Estos ejemplos están inspirados en material de Bob DuCharme (2011), "Learning SPARQL". O'Reilly Media, Sebastopol, CA, EE. UU .; ver http://www.learningsparql.com/

Cuestiones relacionadas