문제

다음 쿼리가 있습니다.

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/

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top