Freebase: форматировать результаты поиска, чтобы перечислить все свойства объекта неизвестного типа (типов) - PullRequest
4 голосов
/ 25 октября 2010

Я пытаюсь написать MQL-запрос для форматирования результата поиска в freebase (параметр «output» в API поиска).По сути, я хочу найти (простые) значения всех свойств данного результата поиска (не зная ничего о типах результата априори).Под «простым» я подразумеваю только свойства по умолчанию, если значения являются сложными объектами.

Например, если я ищу «Yo La Tengo», и это приводит меня к результату для «/ en / yo_la_tengo»,Я хочу иметь возможность получить членов группы (мне просто нужны имена, а не инструменты или даты начала), альбомы (опять же, только имена), фильмы, внесенные в список (опять же, только имена) и т. Д.

ЕстьЕсть простой способ сделать это с помощью поискового запроса, , учитывая, что я ничего не знаю о типах ?Я полагаю, что я могу использовать какую-то магию отражения, и я пытался обойтись с "/ type / refle", но я никуда не денусь.Я новичок в MQL (хотя у меня большой опыт работы с SQL), так что это немного утомительно.Любые идеи?

Редактировать : Итак, чтобы уточнить, я думаю, что проблема, с которой я сталкиваюсь, связана с типами посредников, такими как «представление» (актер в фильме) или «брак».Например, с запросом о Yo La Tengo я могу видеть большую (все?) Информацию, которая меня интересует, но похожий запрос о [The Muppet Movie] (freebase.com/api/service/ поиск? предел = 1 & mql_output =% 5B% 7B% 22% 2Ftype% 2Freflect% 2Fany_reverse% 22% 3A% 5B% 7B% 7D% 5D% 2C% 22% 2Ftype% 2Freflect% 2Fany_master% 22% 3A% 5B% 7B%7D% 5D% 2C% 22% 2Ftype% 2Freflect% 2Fany_value% 22% 3A% 5B% 7B% 7D% 5D% 7D% 5D & query =% 20Muppet% 20Movie - извините, SO думает, что я спамер, поэтому я могуя не вижу ссылки на Фрэнка Оза (вероятно, потому что вместо этого на него ссылаются)Есть ли для меня общий способ «следовать» типам медиаторов, чтобы получить все их свойства?Например, есть ли один выходной MQL, который позволил бы мне получить актера в спектакле (когда он связан с результатом поиска фильма) и дать супругу в браке (когда он связан с человеком)?

Ответы [ 2 ]

2 голосов
/ 23 июля 2012

Запрос не только каждого свойства, но и отслеживание этих свойств, еще один слой в графе для всех результатов поиска, будет невероятно дорогой операцией. Какой вариант использования для этого? У вас действительно есть пользовательский интерфейс, где пользователь может видеть и эффективно поглощать всю эту информацию? Однако, чтобы ответить на вопрос напрямую, невозможно автоматически распаковать типы медиаторов, используя mql_output в API поиска.

Я бы предложил объединить базовый набор информации по поисковому запросу с более глубоким набором информации по теме, которая заинтересовала пользователя (например, при наведении курсора). Этот пользовательский интерфейс будет похож на Freebase Suggest.

За годы, прошедшие с тех пор, как вопрос был задан изначально, были добавлены некоторые дополнительные полезные вещи, такие как псевдо-свойство "notable", которое позволяет увидеть, чем отличается тема.

Конечно, все также должны перейти на новый API, поэтому запросы будут такими: https://www.googleapis.com/freebase/v1/search?query=%22the%20muppet%20movie%22&limit=1&indent=true

https://www.googleapis.com/freebase/v1/topic/en/the_muppet_movie

1 голос
/ 09 ноября 2010

AFAIK, в MQL нет способа сделать это, но вы можете:

  1. Получите все свойства объекта или типа объекта, затем
  2. Программно создайте еще один MQL-запрос, чтобы получить те объекты, о которых вы хотите узнать больше.

Посмотрите на этот пример :

[{
  "type|=": [
    "/film/actor",
    "/tv/tv_actor",
    "/celebrities/celebrity"
  ],
  "*": [{}]
}]​

Он захватывает все свойства всех объектов, которые имеют тип актер , tv_actor или знаменитости . Когда вы запустите его, вы увидите все возможные точки «следования», которые вы можете исследовать.

Это не совсем то, что вы хотите, но это должно приблизить вас.

...