Freebase: получить имя и идентификатор Википедии одним запросом на определенном языке

Можно ли сделать один запрос в MQL, чтобы получить имя и идентификатор википедии для определенного языка из Freebase? Если это возможно, возможно ли это сделать для набора языков (например, немецкого и английского)?


person Bernhard Vallant    schedule 01.12.2011    source источник


Ответы (2)


Спросили и ответили, но вот немного лучшая форма запроса:

[{
  "id": "/en/white_house",
  "mid": null,
  "de:name": {
    "lang": "/lang/de",
    "value": null
  },
  "en:name": null,
  "wiki_de:key": {
    "/type/key/namespace": "/wikipedia/de_id",
    "value":         null,
    "optional": True,
  },
  "wiki_en:key": {
    "/type/key/namespace": "/wikipedia/en_id",
    "value":         null,
    "optional": True,
  }
}]​

Ключи Википедии будут экранированы, если они содержат специальные символы, поэтому вам следует обратиться к http://wiki.freebase.com/wiki/MQL_key_escaping, чтобы узнать, как их отменить.

Вот некоторые из причин, по которым этот запрос лучше:

  • Английский является языком по умолчанию, поэтому его не нужно указывать для имен.
  • это устраняет двусмысленность поиска пространства имен. Ваш исходный запрос фактически ищет ключ "white_house" в любом пространстве имен (и находит его в "/en", что эквивалентно идентификатору "/en/white_house")

Обратите внимание, что вам не нужно выполнять поиск по идентификатору. Вы можете использовать любое средство поиска, которое предоставляет MQL, например, поиск по одному из ключей Википедии или использование "name~=":"white house", чтобы найти все темы, содержащие эту строку или что-либо еще, что подходит для ваших исходных данных и для вашего использования. кейс.

person Tom Morris    schedule 02.12.2011
comment
Хорошо, спасибо, это то, что я также узнал позже сегодня днем ​​:) Но одна вещь, которую вы также упускаете, которая оказалась существенной для меня, это включение "optional": "optional" во все разделы имени и вики, потому что иначе никакого результата не будет. быть возвращено, если что-то на данном языке не существует! - person Bernhard Vallant; 02.12.2011
comment
Хорошая точка зрения. Я обновил запрос по вашему предложению. Вы также можете использовать необязательный: True или необязательный: true в зависимости от того, какой язык программирования/библиотеку JSON вы используете. - person Tom Morris; 03.12.2011

Поигравшись с MQL, я наконец придумал следующий запрос (для white_house):

[{
  "id": null,
  "mid": null,
  "de:name": {
    "lang": "/lang/de",
    "value": null
  },
  "en:name": {
    "lang": "/lang/en",
    "value": null
  },

  "key": {
    "value": "white_house"
  },
  "wiki_de:key": {
    "/type/key/namespace": "/wikipedia/de_id",
    "value":         null
  },
  "wiki_en:key": {
    "/type/key/namespace": "/wikipedia/en_id",
    "value":         null
  }
}]
person Bernhard Vallant    schedule 02.12.2011