2012-04-03 5 views
2

특정 국가의 모든 도시를 반환하고 싶은 쿼리가 있습니다.도시 별 관련 정렬을위한 freebase API

크기가 100 인 한도를 피하기 위해 크기 나 중요도 순으로 정렬하는 것을 제외하고는 괜찮습니다. 처음 100 개 도시가 가장 먼저 선정 할 가능성이 큰 도시를 갖고 싶습니다. (인구, 또는?)

이 작동하지만 모든 포함 된 요소 계산하는 것처럼 매우 느립니다
[{ 
    "/location/country/iso3166_1_alpha2": "US", 
    "/location/location/contains":[ 
    "id" : null, 
    "name" : null, 
    "/location/statistical_region/population" : { "number" : null, "date" : null } 
    "type" : "/location/citytown" 
    ] 
}]​ 

:

[{ 
    "/location/country/iso3166_1_alpha2": "US", 
    "/location/location/contains":[ 
    "id" : null, 
    "name" : null, 
    "type" : "/location/citytown", 
    "/location/location/contains":{"return": "count"} 
    "sort": "-/location/location/contains.count" 
    ] 
}]​ 

내가 /location/statistical_region/population하지만 많은 행운없이 포함했는데, 어떤 아이디어?

답변

1

두 단계로 수행 할 수 있습니다. 위처럼 첫째, MQL를 사용하여 ISO 코드에 의해 나라를 찾아 볼 수 있습니다 :

{ 
    "/location/country/iso3166_1_alpha2": "US", 
    "mid":   null, 
    "name":   null 
}​ 

을 그리고 당신이 MID를 알고 나면 나라를 위해, 당신은 100 대부분의 순위 목록을 얻을 수있는 검색 API를 사용할 수 있습니다 그 나라의 관련 도시 like this.

filter: (all type:/location/citytown part_of:/m/09c7w0) 

이 미국 (/ m/09c7w0) 내에 포함 된 개체를 찾기 위해 Search API 필터 구문과 특별한 Metaschema 술어를 사용하고 있습니다. 이것은 검색 API가/location/location/contains가 전이 속성이기 때문에 이해하기 때문에 유용합니다. 따라서 Freebase 그래프에서 둘 이상의 레벨이 포함되어 있어도 미국에 포함 된 모든 엔티티를 볼 수 있습니다.