[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/

Ребята, у вас есть предложения?

2 ответа

Запросы, которые вы задали, верны, за исключением того, что они смотрят только на отношения, которые находятся на расстоянии одной ссылки. Удивительно, но сейчас нет пути от Льюиса Хэмилтона к Формуле-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.

Freebase сейчас возвращает только 503-е, поэтому экспериментировать немного сложно, но

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

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

Другие вопросы по тегам