如何将Freebase查询转换为维基数据查询?

时间:2015-01-31 17:16:40

标签: wikipedia freebase wikidata wikidata-api

使用此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"
}]

谢谢。

2 个答案:

答案 0 :(得分: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)
} 

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

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

您可以在service home pageuser manual以及Query Service community pages找到更多文档链接。

答案 1 :(得分:0)

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

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

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

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

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

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