2014-06-17 2 views
1

Я новичок в Freebase, и у меня есть простой вопрос. Я хотел бы использовать Freebase KB, чтобы найти связь между двумя объектами. Например, если у меня есть сущности имени «Вашингтон» и «Соединенные Штаты», я хотел бы отправить запрос в Freebase и получить: Местоположение/местоположение/Капитал или Null в случае Без отношения.Найти связь между двумя объектами в Freebase

спасибо.

+0

Вы нашли решение для этого? – Anish

ответ

0

Если вы хотите только один слой (то есть ближайшие соседи), это довольно просто сделать, используя API отражения, если вы используете онлайн-версию Freebase. Если вы используете массовые загрузки, вам нужно будет работать с любым механизмом запросов, который вы используете (возможно, SPARQL, если вы не превратили RDF в другое).

Если вы хотите найти самый короткий путь, независимо от того, кто далеко друг от друга, он становится алгоритмом поиска графа.

EDIT: Если вы хотите, чтобы найти капители, вы можете заполнить ваши идентификаторы в этом запросе:

[{ 
    "type": "/location/administrative_division_capital_relationship", 
    "capital": [{ 
    "id": null 
    }], 
    "administrative_division": [{ 
    "id": null 
    }], 
    "limit": 1 
}] 

Обратите внимание, что для Вашингтона, округ Колумбия, это будет возвращать нуль, поскольку данные не Freebase ,

Если вам нужно обрабатывать произвольные свойства, вам нужно будет использовать отражение. См. https://developers.google.com/freebase/mql/ch03#reflection

+0

Спасибо Том, но можете ли вы дать мне предложение для запроса? Я использую онлайн-API для доступа к Freebase и, скажем, мне нужно иметь максимум 3 уровня между объектами, как я упоминал выше (Location/Location/Contain). У меня есть указатель на сущности, поэтому я могу искать по GUID – user2831355

Смежные вопросы