2011-12-01 2 views
2

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

ответ

6

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

[{ 
    "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», что эквивалентно id «/ en/white_house»)

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

+0

Хорошо, спасибо, это то, что я узнал позже днем ​​... Но одна вещь, которую вам тоже не хватает, которая оказалась для меня существенной, включает в себя «необязательный»: «необязательный» «во всех название и разделы вики, потому что иначе результат не будет возвращен, если что-то на данном языке не существует! –

+0

Хорошая точка. Я обновил запрос по вашему предложению. Вы также можете использовать «optional»: True или «optional»: «true» в зависимости от того, какой язык программирования/JSON lib вы используете. –

0

Позабавившись с 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 
    } 
}] 

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

  • Нет связанных вопросов^_^