Основная форма запроса (например, для человека):
[{
"type":"/people/person",
"name":None,
"/common/topic/alias":[],
"limit":100
}]
Документация доступна на http://wiki.freebase.com/wiki/MQL_Manual
Использование freebase.mqlreaditer () из библиотеки Python http://code.google.com/p/freebase-python/ - это самый простой способ перебрать все это. В этом случае предложение limit определяет размер блока, используемого для запросов, но вы получите каждый результат отдельно на уровне API.
Кстати, как вы планируете убрать с толку Джека Кеннеди, президента, от бродяги, от футболиста, из книги и т. Д., И т. Д. http://www.freebase.com/search?limit=30&start=0&query=jack+kennedy Возможно, вы захотите собрать дополнительную информацию из Freebase (рождение даты смерти, авторы книг, другие типы и т. д.), если у вас будет достаточно контекста, чтобы использовать его для устранения неоднозначности.
После определенного момента может быть проще и / или более эффективно работать с массовыми дампами данных, чем с API http://wiki.freebase.com/wiki/Data_dumps
Edit - вот рабочая программа на Python, которая предполагает, что у вас есть список идентификаторов типов в файле с именем 'types.txt':
import freebase
f = file('types.txt')
for t in f:
t=t.strip()
q = [{'type':t,
'mid':None,
'name':None,
'/common/topic/alias':[],
'limit':500,
}]
for r in freebase.mqlreaditer(q):
print '\t'.join([t,r['mid'],r['name']]+r['/common/topic/alias'])
f.close()
Если вы сделаете запрос намного более сложным, вы, вероятно, захотите снизить лимит, чтобы не допустить попадания в таймауты, но для такого простого запроса, как этот, увеличение лимита выше значения по умолчанию, равного 100, сделает его более эффективным за счет запрос в больших кусках.