2013-03-31 4 views
2

Я новичок в Freebase, и я пытался найти отношения между двумя узлами без успеха.[Freebase]: Поиск связи между узлами

Например, я хочу найти, существует ли связь между Льюисом Хэмилтоном (/ en/lewis_hamilton) и Формулой-1 (/ en/formula_one), которая существует в реальной жизни, но я не могу найти ее ,

Я попытался следующие коды MQL, чередуя идентификаторы, а также:

1)

[{ 
"type" : "/type/link", 
"source" : { "id" : "/en/lewis_hamilton" }, 
"master_property" : null, 
"target" : { "id" : "/en/formula_one" }, 
"target_value" : null 
}] 

2)

{ 
    "id":"/en/lewis_hamilton", 
    "/type/reflect/any_master":[{ 
    "link":null, 
    "name":null 
    }], 
    "/type/reflect/any_reverse":[{ 
    "link":null, 
    "name":null 
    }], 
    "/type/reflect/any_value":[{ 
    "link":null, 
    "value":null 
    }] 
} 

Я также не в состоянии использовать пару их приложения, которые могли бы это сделать, потому что он возвращает «превышение лимита пользовательской скорости» каждый раз. Программы являются:

  1. http://between.freebaseapps.com
  2. http://shortestpath.freebaseapps.com

ли вы, ребята, есть какие-то предложения?

ответ

5

Запросы, которые вы указали, верны, за исключением того, что они рассматривают только отношения, разделенные одной ссылкой. Удивительно, но сейчас нет пути от Льюиса Хэмилтона до Формулы-1 в Freebase. Если есть это может выглядеть примерно так:

/en/lewis_hamilton → /type/object/type → /base/formula1/formula_1_driver 
/base/formula1/formula_1_driver → /type/type/domain → /base/formula1 
/base/formula1 → /freebase/domain_profile/equivalent_topic → /en/formula_one 

Freebase не поддерживает рекурсивные запросы, так что нет хорошего способа найти эти пути многорычажных между тем. Приложения, которые вы пробовали, имитировали рекурсию, создавая запросы со все более вложенными подзапросами. К сожалению, они устарели и не имеют надлежащих ключей API для правильной работы прямо сейчас. Вот что эти вложенные запросы выглядеть следующим образом:

{ 
    "id": "/en/lewis_hamilton", 
    "name": null, 
    "/type/reflect/any_master": [{ 
    "link": { 
     "master_property": null, 
     "target": { 
     "id": null, 
     "name": null, 
     "/type/reflect/any_master": [{ 
      "link": { 
      "master_property": null, 
      "target": { 
       "id": "//base/formula1", 
       "name": null 
      } 
      }, 
      "name": null 
     }] 
     } 
    }, 
    "name": null 
    }] 
} 

такого рода запросов может занять много времени, чтобы работать и, вероятно, лучше, если запускать локально над Freebase data dumps.

+0

Спасибо за объяснение Шон! Однако, предполагая, что путь между Гамильтоном и F1 был точно таким, как вы описали, не будет ли это 2 ссылки друг от друга? И как будет выглядеть поиск для этого? Спасибо! – Cassio

+0

Я обновил ответ, чтобы показать, как выполнять вложенные ссылки.Я не рекомендую использовать этот подход, хотя он медленный и подвержен таймаутам. –

+0

Я тоже искал нечто похожее. У Freebase нет каких-либо полезных API-интерфейсов, чтобы иметь возможность сделать что-то существенное, что Google не делал до сих пор. Я бы предложил получить данные о свободной базе данных, которые вы заинтересованы, подготовить свою собственную небольшую базу данных графов объектов, которые имеют значение. –

1

Freebase не возвращается ничего, кроме 503s прямо сейчас, так что это немного трудно экспериментировать, но

  • Все приложения на Freebaseapps с открытым исходным кодом, так что, глядя на источники для приложений, которые вы нашли, должно дать вам некоторые хорошие подсказки. Каталог приложений находится в https://www.freebase.com/apps (но сейчас не отображается)

  • Все приложения на Freebaseapps могут быть клонированы одним щелчком мыши. Практически все приложения, написанные на этой инфраструктуре, перестали работать, когда Google переключился на новый API, и разработчики вряд ли исправит их, если они не были просмотрены в течение многих лет, но вы, вероятно, можете получить интересные из них: a) клонирование их, b) регистрация для ключа API и c) добавление этого ключа API в клонированное приложение.

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