【问题标题】:Freebase not working when language property is used使用语言属性时 Freebase 无法正常工作
【发布时间】:2015-09-01 14:11:56
【问题描述】:

我想获取有关电影的信息,但如果我使用语言属性(这对我来说很重要),则此查询不起作用。有什么方法可以实现吗?

[{
  "type": "/film/film",
  "name": "terminator",
  "mid": null,
  "language": "en",
  "starring": [{
    "actor": null,
    "mid": null
  }]
}]

【问题讨论】:

  • 您使用的是哪个 API?

标签: database freebase


【解决方案1】:

首先,强制性警告 - 所有 Freebase API在不久的将来都会消失,因此您不应该基于它们编写新代码。

假设您使用的是 MQLread API,您的查询存在一些问题:

  • 没有电影只叫“终结者” 您可以将查询更改为“终结者”或使用单词匹配运算符
  • /film/film(或/type/object)类型没有属性language
  • 英文的标识符是/lang/en

此查询将对默认语言(英语)进行近似单词匹配,并显示所有语言的名称:

[{
  "type": "/film/film",
  "name~=": "terminator",
  "name": {
  },
  "mid": null
}]

如果要更改所有标签的语言,可以使用lang查询参数,例如

https://www.googleapis.com/freebase/v1/mqlread/?lang=%2Flang%2Fzh&query=%5B%7B+%22type%22%3A+%22%2Ffilm%2Ffilm%22%2C+%22n1%3Aname%22%3A+%7B+%22value%22%3A+%22The+Terminator%22%2C+%22lang%22%3A+%22%2Flang%2Fen%22+%7D%2C+%22name%22%3A+null%2C+%22mid%22%3A+null+%7D%5D

这会将语言切换为中文,但随后在查询中将其覆盖为英文查询,如下所示:

[{
  "type": "/film/film",
  "n1:name": {
    "value": "The Terminator",
    "lang": "/lang/en"
  },
  "name": null,
  "mid": null
}]

【讨论】:

  • 谢谢。查询有效。但是你所说的让我害怕,“所有的 Freebase API 都将在不久的将来消失”。那么有什么选择呢?
  • 这应该不足为奇。 Google 的 API 文档页面和 Freebase 网站上有一个非常大的警告框。目前没有好的替代方案。对于电影应用程序,IMDB、Wikidata、DBpedia 的某种组合可能会满足您的需求,具体取决于您的预算、应用程序等。
  • 是的,尝试从 wiki 数据中提取。理解查询结构对我来说太难了。 wikidata API 文档没有多大帮助。你能帮我形成“获取所有印度电影的详细信息”的查询吗?或“获取所有印地语电影的详细信息”?非常感谢您的帮助。谢谢你。与维基百科中的相比,以下查询返回的印度电影数量要少得多,wdq.wmflabs.org/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-14
  • 1970-01-01
相关资源
最近更新 更多