我很确定有一种 wikipedia-api 方法可以做到这一点,但我忍不住发布了一个 Freebase 答案。使用mqlread
API 和以下内容MQL
:
{
"en:key": {
"namespace": "/wikipedia/en",
"value": "Lake"
},
"fr:key": {
"namespace": "/wikipedia/fr",
"value": null,
"limit": 1
}
}
...你可以得到你想要的。MQL 基本上说:“给定/wikipedia/en/Lake
对象,/wikipedia/fr
命名空间中的同一个对象是什么?答案当然是/wikipedia/fr/Lac
在 REST 中,这是:
https://www.googleapis.com/freebase/v1/mqlread?query={ "en:key": { "namespace": "/wikipedia/en", "value": "Lake" }, "fr:key": { "namespace": "/wikipedia/fr", "value": null, "limit": 1 } }
(为清楚起见,未转义,并带有空格)
和回应:
{"result": {"en:key": {"value": "Lake", "namespace": "/wikipedia/en"}, "fr:key": {"value": Lac", "namespace": "/wikipedia/fr"}}}
... 所以你要response["result"]["fr:key"]["value"]
一些注意事项:
确保从 Google 获取 API 密钥以用于任何非测试用途。否则,您将与其他所有人共享配额,并且不会随时用完。在此处阅读更多信息:https ://developers.google.com/freebase/v1/mqlread
当然,您需要正确地对您的query
部分进行 URI 转义。
在“查询”的值内,包含不可打印的字符串(以及一些可打印的,例如逗号、括号等)将需要“以 Freebase 方式”转义:使用美元符号和 4 个十六进制数字,这样"("
成为"$0028"
.
当然,您需要在响应字符串中进行反向取消转义。
祝你好运!