2014-09-24 1 views
0

나는 작은 km 당 인구 밀도와 자신의 대통령과 국가 목록 (지도자) 얻을 수있는 다음과 같은 SPARQL 쿼리가 있습니다SPARQL 제대로 내 결과를 그룹화하지

PREFIX type: <http://dbpedia.org/class/yago/> 
PREFIX prop: <http://dbpedia.org/property/> 

SELECT ?country_name ?populationdensity ?leader 
WHERE { 
    ?country a dbpedia-owl:Country ; 
      rdfs:label ?country_name ; 
      prop:populationDensityKm ?populationdensity ; 
     dbpedia-owl:leader ?leader . 
    FILTER (?populationdensity < 10 && langMatches(lang(?country_name), "en")) . 
} 
GROUP BY ?populationdensity 
ORDER BY ASC(?populationdensity) 
limit 10 

당신이, 내가 볼 수 있듯이을 인구 밀도에 의해 결과를 그룹화, 아직 나는 많은 인구가 중복 밀도를 포함하는 결과를 얻고있다 : SPARQL Query

enter image description here

누군가가 내가 뭘 잘못 말해 줄래? 나는 지도자의 목록과 관련이 있다고 가정합니다. 각 나라마다 하나 이상의 지도자가 돌아옵니다. 국가별로 리더 1 명으로 제한하는 방법이 있습니까?

답변

1

가장 먼저하는 것은 group by 절에 사용하는 모든 변수를 넣어야한다는 것입니다. Virtuoso는 현재 쿼리 구문 분석에 느슨하고 허용해서는 안되는 일을 허용합니다. 두 번째는 SAMPLE을 사용해야하는 리더를 신경 쓰지 않는다면 리더를 하나만 선택해야한다는 것입니다. 모두 원할 경우 group_concat 변형을 사용하십시오. 현재 리더를 원하는 경우

PREFIX type: <http://dbpedia.org/class/yago/> 
PREFIX prop: <http://dbpedia.org/property/> 

SELECT ?country_name ?populationdensity (sample(?leader) as ?ls) 
WHERE { 
    ?country a dbpedia-owl:Country ; 
      rdfs:label ?country_name ; 
      prop:populationDensityKm ?populationdensity ; 
     dbpedia-owl:leader ?leader . 
    FILTER (?populationdensity < 10 && langMatches(lang(?country_name), "en")) . 
} 
GROUP BY ?country_name ?populationdensity 
ORDER BY ASC(?populationdensity) 
limit 10 

당신이 내가 하나의 결과를 반환 측면에서 찾고 정확히 무엇 this

dbpprop:leaderTitle/dbpprop:incumbent ?leader . 
+0

으로 라인

dbpedia-owl:leader ?leader . 

를 교체해야합니다. 그러나 그것은 적절한 결과를 반환하지 않습니다. 예를 들어, 그린 랜드의 현재 지도자는 미카엘라 엥겔 (Inatsisartut 의장)이 아니라 알레 카 하몬드 (Aleqa Hammond, 총리)입니다. 따라서 리더의 목록에서 첫 번째 결과를 얻는 것이 아니라 적절한 리더 이름을 출력하는 방법이 있습니까? 나는 당신의 질문이 리더를 찾지 않을뿐만 아니라 leaderTitle을 가진 사람의 이름을 위해서만 가능할 경우에만 가능할 것이라고 생각합니다 : 대통령 또는 국무 총리. 나는 당신의 대답을 받아들이 겠지만, 시간이 있다면 가능한지보십시오. – jjj

+0

하나의 쿼리를 기반으로 이렇게 작동하지만 내 자신의 쿼리를 구현하는 방법을 잘 모르겠습니다 : 선택 DISTINCT? x3 어디서 { ? x0 rdf : dbpedia 올빼미 : 국가 입력하십시오. ? x0 rdfs : label "Argentina"@en. ? x0 dbpprop : leaderTitle? x1. ? x1 dbpprop : 현 재 x2. ? x2 rdfs : label? x3. } – jjj

관련 문제