2013-04-23 1 views
1

새로운 Data Cube vocabulary을 사용하는 일부 RDF 데이터가 있습니다. 시각화를 위해 필자는 평평하고 컴팩트 한 테이블로 데이터를 필요로합니다. 하지만이 작업을 수행하는 올바른 SPARQL 쿼리를 찾는 데 실패합니다.컴팩트 테이블을 만드는 SPARQL 쿼리를 찾으십시오.

o1 
:year "2007"; 
:fruit :apples; 
:harvest "200"; 
. 
o2 
:year "2007"; 
:fruit :pears; 
:harvest "180"; 
. 
o3 
:year "2008"; 
:fruit :apples; 
:harvest "205"; 
. 
o4 
:year "2008"; 
:fruit :pears; 
:harvest "176"; 
. 

는 다음 테이블로 데이터를 반환 할 수있는 SPARQL 쿼리가 있습니까 : 다음과 같은 RDF 데이터를 감안할 때

나는 최소한의 예를 제공하기 위해 노력할 것입니다 ...

?

Year | Apples | Pears 
2007 | 200 | 180 
2008 | 205 | 176 

미리 감사드립니다.

답변

3

시도 :

select ?year (sample(?num_apples) as ?apples) (sample(?num_pears) as ?pears) 
where 
{ 
    { ?s :year ?year ; :fruit :apples; :harvest ?num_apples } 
    union 
    { ?s :year ?year ; :fruit :pears; :harvest ?num_pears } 
} 
group by ?year 

당신이 사용할 수있는 여러 수확 그림이있는 경우 더 나을 sum() 또는 avg()보다는 sample().

(경고 : 값은 숫자가 아닌 문자열입니다.)

+0

예, 작동합니다. 고마워요! 그래서 트릭은 집계 함수를 사용하는 것입니다. 그것은 뒷얘기에 많은 의미가 있습니다. 예, 데이터 유형 사양이 생략되었습니다. 예제를 단순하게 유지하려고 그렇게했습니다. 그러나이 접근법은 실제 데이터와 잘 작동합니다. 필자가 변경해야 할 것은 Virtuoso 엔드 포인트를 사용하기 때문에 SAMPLE 함수 앞에 sql : 접두어를 사용하는 것이 었습니다. – user952460

관련 문제