count - query - sparql tutorial español
Consulta SPARQL y recuento distinto (2)
Tengo la siguiente consulta:
SELECT ?tag WHERE {
?r ns9:taggedWithTag ?tagresource.
?tagresource ns9:name ?tag
}
LIMIT 5000
y los resultados son:
abc
abc
abc
abc
abc
abc
abc
abd
ads
anb
Quiero obtener algo así como:
tag | count
-----------------
abc 7
abd 1
ads 1
anb 1
Lo he intentado con count(*)
y count(?tag)
, pero obtengo el mensaje de error "Variable or "*" expected."
¿Puede alguien decirme cómo hacerlo bien?
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, este puede sumar el valor? Para cada categoría?
SELECT ?category (SUM(?value) as ?valueSum)
WHERE
{
?s ?category ?value .
}
GROUP BY ?category
¿Este puede contar la cantidad 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/
Si está utilizando Java y ARQ de Jena, puede usar las extensiones de ARQ para los agregados . Su consulta sería algo así como:
SELECT ?tag (count(distinct ?tag) as ?count)
WHERE {
?r ns9:taggedWithTag ?tagresource.
?tagresource ns9:name ?tag
}
LIMIT 5000
La especificación SPARQL original de 2008 no incluía agregados, pero la versión actual, 1.1, de 2013 sí lo hace.