9

以这个 Freebase 查询为例,我如何使用 Wikidata 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"
}]

谢谢你。

4

2 回答 2

1

你不能用 Wikidata API 来做,但是你可以用Wikidata Query Service来做。这是一个示例查询:

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)
} 

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

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

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

于 2015-10-22T06:42:20.010 回答
0

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

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

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

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

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

此外,您可以从文章的 infoBox 中检索有关电影的基本信息(请参阅 Q&A)。

于 2015-10-18T17:39:35.780 回答