Freebase MQL, чтобы перечислить все типы общих для данного слова? - PullRequest
3 голосов
/ 29 февраля 2012

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

Например, я пытался:

{
  "id":null,
  "name":null,
  "name~=": "SOME_WORD",
  "type":"/type/type",
  "domain": {
    "id": null,
    "/freebase/domain_profile/category": {
      "id": "/category/commons"
    }
  }
}​

Я нашел это, чтобы перечислить все типы или категории общин, но еще не выяснил, как сузить его для данного ввода.

[{
  "id":   null,
  "name": null,
  "type": "/freebase/domain_profile",
  "category": {
    "id": "/category/commons"
  }
}]​

Ответы [ 2 ]

4 голосов
/ 01 марта 2012

Существует несколько способов сделать это с разными компромиссами для каждого.

  1. Использовать 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": []}, но тогда вы потеряете "известный" тип.Я не думаю, что есть способ получить оба в одном вызове.

  1. Использовать MQL

Этот запрос возвращает необходимую базовую информацию:

[{
  "name~=":"uss constitution",
  "type":[],
  "/common/topic/notable_types" : []
}]​

Предостережения:

  • Он не найдет "конституцию США", которая является псевдонимом, а не основным именем (для этого в рецепте MQL есть рецептхотя)
  • Он не найдет "конституцию США"
  • API "notable_types" - это расширение MQL, и расширения MQL не поддерживаются в новом API Freebase, только устаревший API, устаревший
  • Вы привязаны к какому-либо (неизвестному) алгоритму, который Freebase использовал для вычисления "известности"

В зависимости от того, что вы пытаетесь достичь, вам может понадобиться что-то более сложное, чем это (а также более глубокое понимание того, что есть во Freebase), но это должно помочь вам освоить основы.

0 голосов
/ 03 августа 2013

Вы пробовали:

[{
"name": "David Bowie",
"type": []
}]
...