Существует несколько способов сделать это с разными компромиссами для каждого.
Использовать API поиска с таким запросом, как этот
https://www.googleapis.com/freebase/v1/search?indent=true&filter=%28all%20name{full}:%22uss%20constitution%22%29
Вы получите результаты JSON, которые выглядят так:
{
"status": "200 OK",
"result": [
{
"mid": "/m/07y14",
"name": "USS Constitution",
"notable": {
"name": "Ship",
"id": "/boats/ship"
},
"lang": "en",
"score": 1401.410400
},
...
Вы можете сделать сопоставление более либеральным, переключив "{full}" на "{фразу}"который даст вам совпадение подстроки вместо точного совпадения.
Предостережения: - Вы получите только один «известный тип», и это исправлено алгоритмом Freebase (неизвестно) - я не думаю, что естьспособ получить результаты как по USS, так и по USS. Вы можете получить список всех типов, добавив & mql_output = {"type": []}, но тогда вы потеряете "известный" тип.Я не думаю, что есть способ получить оба в одном вызове.
- Использовать MQL
Этот запрос возвращает необходимую базовую информацию:
[{
"name~=":"uss constitution",
"type":[],
"/common/topic/notable_types" : []
}]
Предостережения:
- Он не найдет "конституцию США", которая является псевдонимом, а не основным именем (для этого в рецепте MQL есть рецептхотя)
- Он не найдет "конституцию США"
- API "notable_types" - это расширение MQL, и расширения MQL не поддерживаются в новом API Freebase, только устаревший API, устаревший
- Вы привязаны к какому-либо (неизвестному) алгоритму, который Freebase использовал для вычисления "известности"
В зависимости от того, что вы пытаетесь достичь, вам может понадобиться что-то более сложное, чем это (а также более глубокое понимание того, что есть во Freebase), но это должно помочь вам освоить основы.