문제
다음 쿼리가 있습니다.
SELECT ?tag WHERE {
?r ns9:taggedWithTag ?tagresource.
?tagresource ns9:name ?tag
}
LIMIT 5000
그리고 결과는 다음과 같습니다.
abc
abc
abc
abc
abc
abc
abc
abd
ads
anb
나는 같은 일을하고 싶다 :
tag | count
-----------------
abc 7
abd 1
ads 1
anb 1
나는 그것을 시도했다 count(*)
그리고 count(?tag)
, 그러나 오류 메시지를받는 것보다 "Variable or "*" expected."
누군가가 내게 말해 줄 수 있습니까?
해결책
Java와 Jena의 ARQ를 사용하는 경우 사용할 수 있습니다. ARQ의 골재 확장. 쿼리는 다음과 같습니다.
SELECT ?tag (count(distinct ?tag) as ?count)
WHERE {
?r ns9:taggedWithTag ?tagresource.
?tagresource ns9:name ?tag
}
LIMIT 5000
그만큼 2008 년의 원래 SPARQL 사양 골재를 포함하지는 않았지만 2013 년부터 현재 버전 1.1 하다.
다른 팁
count (), min (), max (), sum (), avg ()를 사용하여 그룹 by와 함께 트리플 그룹에 대한 요약 값을 생성 할 수 있습니다. 이러한 패턴은 SPARQL 1.1에 특이적일 수 있습니다.
예를 들어, 이것은 각각의 범주에 대한 값을 요약 할 수 있습니다.
SELECT ?category (SUM(?value) as ?valueSum)
WHERE
{
?s ?category ?value .
}
GROUP BY ?category
이것은 술어에 대한 용도 수를 계산할 수 있습니다. p,
SELECT ?p (COUNT(?p) as ?pCount)
WHERE
{
?s ?p ?o .
}
GROUP BY ?p
이 예는 Bob Ducharme (2011), "Learning SparQL"의 자료에서 영감을 얻었습니다. 오라일리 미디어, 미국 캘리포니아 주 세 바스 토폴; 보다 http://www.learningsparql.com/
제휴하지 않습니다 StackOverflow