2011-11-02 4 views
2

나는 freebase 파이썬을 사용하여 freebase API에 액세스하고 있습니다. 다음 쿼리를 실행하고 싶습니다.Freebase API 다른 유형 가져 오기

query = [{ 
     "id": None, 
     "name" : [], 
     "type" : "/people/person", 
     "/common/topic/image":[{}], 
     "limit" : 10, 
     "type" : [] 
     }] 

results = freebase.mqlread(query) 

기본적으로 나는 사람들로부터 몇 가지 인스턴스를 갖고 싶고 다른 유형의 인스턴스를 얻고 싶습니다. 그러나 이것을 실행하려고하면 오류가 발생합니다.

{u'id': u'/user/root', u'type': [u'/type/user'], u'/common/topic/image': [{u'type': [u'/type/content', u'/common/image'], u'id': u'/m/05kdqcb', u'name': None}], u'name': [u'Freebase Staff']} 
{u'id': u'/', u'type': [u'/type/namespace'], u'/common/topic/image': [], u'name': []} 
{u'id': u'/type/namespace/keys', u'type': [u'/type/property'], u'/common/topic/image': [], u'name': [u'keys']} 
{u'id': u'/boot', u'type': [u'/type/namespace'], u'/common/topic/image': [], u'name': []} 
{u'id': u'/boot/root_permission', u'type': [u'/type/permission'], u'/common/topic/image': [], u'name': [u'Root Permission']} 
{u'id': u'/type/object/permission', u'type': [u'/type/property'], u'/common/topic/image': [], u'name': [u'permission']} 
{u'id': u'/type/object/type', u'type': [u'/type/property'], u'/common/topic/image': [], u'name': [u'type']} 
{u'id': u'/type', u'type': [u'/type/namespace', u'/type/domain'], u'/common/topic/image': [], u'name': [u'Metaweb System Types']} 
{u'id': u'/type/type', u'type': [u'/type/type'], u'/common/topic/image': [], u'name': [u'Type']} 
{u'id': u'/type/namespace', u'type': [u'/type/type'], u'/common/topic/image': [], u'name': [u'Namespace']} 

그러나 Freebase 쿼리 편집기에서 동일한 쿼리를 사용할 때 정상적으로 작동합니다. 쿼리 실행 here을 참조하십시오.

아이디어가 있으십니까?

감사합니다.

답변

1

검색어에 유효한 "JSON"이 아니므로 올바른 MQL 쿼리가 아닌 "type"이라는 두 개의 절이 있습니다. 당신이 게시 된

[{ 
    "id":   null, 
    "name":   [], 
    "/common/topic/image": [{}], 
    "limit":   10, 
    "type":  [] 
}]​ 

Try it out

당신은 지금 같은 결과를 볼 수 : 대부분의 JSON 파서는 실제로 다음 쿼리를 실행 끝날 것을 의미 두 번째로 첫 번째 "유형"절을 덮어 쓰게됩니다 위. 이것은 오류가 아니며 덜 흥미로운 쿼리의 결과 일뿐입니다.

주어진 속성에 대해 하나의 절만 갖는 제한을 없애기 위해 MQL은 임의의 접두사를 "foo : type"또는 "bar : type"과 같은 속성에 추가 할 수 있습니다. 쿼리 편집기는 직접 추가하는 것을 잊어 버린 경우 실제로 자동으로 추가합니다 (하지만 API를 사용할 때는 직접 수행해야합니다). 따라서 연결된 검색어는 검색어 편집기에서 다음과 같이 표시됩니다.

[{ 
    "id":   null, 
    "name":   [], 
    "type":   "/people/person", 
    "/common/topic/image": [{}], 
    "limit":   10, 
    "ns0:type":  [] 
}]​ 
+0

예. 그렇습니다. 감사! –