如何将自由库查询转换为维基数据查询



以这个Freebase查询为例,如何使用维基数据API运行相同的查询?

[{
  "id": null,
  "name": null,
  "type": "/film/film",
  "/film/film/directed_by": "Steven Spielberg",
  "/film/film/genre": "Drama",
  "/film/film/story_by": [],
  "starring": [{
    "actor": [{
      "name": "Tom Hanks",
      "key": [{
        "namespace": "/authority/imdb/name",
        "value": null
      }]
    }]
  }],
  "/film/film/initial_release_date>": "2000",
  "/film/film/initial_release_date<": "2003"
}]

谢谢。

你不能用维基数据API来做,但是你可以用维基数据查询服务来做。下面是一个示例查询:

PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX wikibase: <http://wikiba.se/ontology#>
SELECT ?film ?filmLabel ?date WHERE {
# Is a film  
  ?film wdt:P31 wd:Q11424 .
# Director is Steven Spielberg
  ?film wdt:P57 wd:Q8877 .
# genre is drama film  
#  ?film wdt:P136 wd:Q130232 .
#  Starring Tom Hanks
  ?film wdt:P161 wd:Q2263 .
  SERVICE wikibase:label {
    bd:serviceParam wikibase:language "en" .
  }
# published on date
  ?film wdt:P577 ?date .
  FILTER(year(?date)>2000 && year(?date)<2003)
} 

你可以在这里尝试。请注意,我注释掉了流派检查。这是因为维基数据没有任何符合您的标准和类型"戏剧"的电影,但确实有一部电影在给定日期出版,由斯皮尔伯格拍摄,包括汤姆汉克斯:

wd:Q208108* Catch Me If You Can 2002-01-01T00:00:00Z

您可以在服务主页和用户手册以及查询服务社区页面上找到更多文档链接。

据我所知,不可能针对维基百科API创建如此详细的查询。但是您可以按标题,内容,ID,类别,创建时间和许多其他条件搜索维基百科页面。

有关基本示例,请参阅 MediaWiki API 概述:

https://www.mediawiki.org/wiki/API:Main_page

另外,请参阅完整的MediaWiki API文档:

https://www.mediawiki.org/w/api.php

此外,您可以从文章的信息框中检索有关电影的基本信息(请参阅此和此问答)。

最新更新