我想查询Wikipedia API以获取信息框视频游戏模板中的信息。因此,我进行以下API调用以获取嵌入了信息框视频游戏模板的页面列表:
我得到以下结果:
<?xml version="1.0"?>
<api>
<query-continue>
<embeddedin geicontinue="10|Infobox_video_game|8484" />
</query-continue>
<query>
<pages>
<page pageid="785" ns="0" title="Asteroids (video game)" />
<page pageid="2215" ns="0" title="Sid Meier's Alpha Centauri" />
<page pageid="4098" ns="0" title="Puzzle Bobble" />
<page pageid="4965" ns="0" title="Bubble Bobble" />
<page pageid="6023" ns="0" title="Castle of the Winds" />
<page pageid="6259" ns="0" title="Civilization (video game)" />
<page pageid="6614" ns="0" title="Chrono Trigger" />
<page pageid="7431" ns="0" title="Counter-Strike" />
<page pageid="7840" ns="0" title="Chrono Cross" />
<page pageid="8090" ns="0" title="Day of the Tentacle" />
</pages>
</query>
</api>
大。完善。现在,我不想要所有这些页面的列表,因为这几乎完全没用。我想要一个与“mario”匹配的所有此类页面的列表。所以我进行了以下API调用。
我得到以下结果(为了便于阅读而截断为2个结果)
<?xml version="1.0"?>
<api>
<query-continue>
<search sroffset="10" />
<embeddedin geicontinue="10|Infobox_video_game|8484" />
</query-continue>
<query>
<pages>
<page pageid="785" ns="0" title="Asteroids (video game)" />
<page pageid="2215" ns="0" title="Sid Meier's Alpha Centauri" />
</pages>
<searchinfo totalhits="39118" />
<search>
<p ns="0" title="Mario" snippet="is a fictional character in the <span class='searchmatch'>Mario</span> video game franchise by Nintendo , created by Japanese video game designer Shigeru Miyamoto . <b>...</b> " size="58561" wordcount="8141" timestamp="2014-03-16T02:28:37Z" />
<p ns="0" title="Mario (disambiguation)" snippet="<span class='searchmatch'>Mario</span> is a fictional character in his eponymous video game series. <span class='searchmatch'>Mario</span> may also refer to: People : <span class='searchmatch'>Mario</span> (given name), a list of people <b>...</b> " size="1354" wordcount="189" timestamp="2013-08-26T18:46:18Z" />
</search>
</query>
</api>
这也是完美的,除了不是那么多,因为它在同一个调用中给了我基本上两个单独的查询结果,这是永远的用例。有没有办法可以查询我从嵌入式列表中获得的结果,还是维基百科API基本没用?
答案 0 :(得分:1)
API并非“基本无用”,但它不适合您的特定查询。
解决这个问题的一种方法是使用DBpedia,它可以从维基百科的信息框中提取信息,并可以使用SPARQL进行查询。
要获取标题中包含Mario
的所有视频游戏,您可以使用以下内容:
SELECT *
WHERE {
?game rdf:type dbpedia-owl:VideoGame.
?game rdfs:label ?label.
FILTER regex(?label, "Mario")
}
或者,甚至更好,获得超级马里奥系列中的所有游戏:
SELECT *
WHERE {
<http://dbpedia.org/resource/Super_Mario_(series)> dbpprop:game ?game
}