Можно ли сделать один запрос в MQL, чтобы получить имя и идентификатор википедии для определенного языка из Freebase? Если это возможно, возможно ли это сделать для набора языков (например, немецкого и английского)?
Freebase: получить имя и идентификатор Википедии одним запросом на определенном языке
Ответы (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
Хорошо, спасибо, это то, что я также узнал позже сегодня днем :) Но одна вещь, которую вы также упускаете, которая оказалась существенной для меня, это включение
"optional": "optional"
во все разделы имени и вики, потому что иначе никакого результата не будет. быть возвращено, если что-то на данном языке не существует!
- person Bernhard Vallant; 02.12.2011
Хорошая точка зрения. Я обновил запрос по вашему предложению. Вы также можете использовать необязательный: 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