2014-04-16 1 views
3

나는 다음과 SPARQL 쿼리가 :동일한 속성에 대한 SPARQL 결과를 그룹화 하시겠습니까?

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 
PREFIX foaf: <http://xmlns.com/foaf/0.1/> 
PREFIX dbo: <http://dbpedia.org/ontology/> 
PREFIX owl: <http://www.w3.org/2002/07/owl#> 
PREFIX dc: <http://purl.org/dc/elements/1.1/> 
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> 

SELECT ?subsidiary ?employees 
WHERE { 
    <http://dbpedia.org/resource/Google> dbo:subsidiary ?subsidiary; 
            dbo:numberOfEmployees ?employees . 
} 

을 그리고 난 다음과 같은 응답이 나타납니다 조회 된 자원과 관련된 여러 자회사들이 있기 때문에

{ 
    "head": { 
    "vars": [ "subsidiary" , "employees" ] 
    } , 
    "results": { 
    "bindings": [ 
     { 
     "subsidiary": { "type": "uri" , "value": "http://dbpedia.org/resource/YouTube" } , 
     "employees": { "datatype": "http://www.w3.org/2001/XMLSchema#integer" , "type": "typed-literal" , "value": "53861" } 
     } , 
     { 
     "subsidiary": { "type": "uri" , "value": "http://dbpedia.org/resource/Motorola_Mobility" } , 
     "employees": { "datatype": "http://www.w3.org/2001/XMLSchema#integer" , "type": "typed-literal" , "value": "53861" } 
     } , 
     { 
     "subsidiary": { "type": "uri" , "value": "http://dbpedia.org/resource/Picnik" } , 
     "employees": { "datatype": "http://www.w3.org/2001/XMLSchema#integer" , "type": "typed-literal" , "value": "53861" } 
     } 
    ] 
    } 
} 

직원의 수는 여러 번 반환됩니다. 이러한 모든 자회사를 목록으로 축소하여 더 비슷한 것을 얻을 수 있습니까?

{ 
    "head": { 
    "vars": [ "subsidiary" , "employees" ] 
    } , 
    "results": { 
    "bindings": [ 
     { 
     "subsidiary": { "type": "uri" , "value": [ 
      "http://dbpedia.org/resource/YouTube", 
      "http://dbpedia.org/resource/Motorola_Mobility", 
      "http://dbpedia.org/resource/Picnik" 
      ] 
     } , 
     "employees": { "datatype": "http://www.w3.org/2001/XMLSchema#integer" , "type": "typed-literal" , "value": "53861" } 
     } 
    ] 
    } 
} 

답변

2

아니요. 결과 형식에는 배열 데이터 유형이 없습니다. 결과를 처리하여이 연관성을 만들 수 있습니다. ORDER BY ?subsidiary ?employees은 접기를 원하는 행을 인접하게 배치합니다.

GROUP_CONCAT이 있지만 GROUP의 ","로 구분 된 문자열의 concat 인 문자열을 생성합니다. 그것은 파싱되었을 것입니다. 엔진에는 확장 집계 함수가있을 수 있습니다.

+0

@frnsys 네, SPARQL 결과 값을 얻을 수있는 방법은 없지만,'group_concat'을 사용하여 값을 나중에 구문 분석하기가 더 쉬운 것으로 결합 할 수 있습니다. 예를 들어 [SPARQL 쿼리의 결과 집계] (http://stackoverflow.com/q/18212697/1281433)에는 "[tag1, tag1, tag2, tag3]"과 같은 결과가 생성되는 예제가 있습니다. –

관련 문제