【导读】维基数据(Wikidata)是一个具有超过4600万个数据项的维基数据库,本文介绍了利用SPARQL方法对维基数据进行查询等操作,以便大家对维基数据有更深入的了解。
作者 | Björn Hartmann
编译 | 专知
参与 | Yingying, Xiaowen
Wiki数据简介
你听说维基数据吗? 可能你最先想到维基百科 - 这并没有错。 Wikidata也是维基媒体基金会的一个项目。
尤其是:
“Wikidata作为其维基媒体姊妹项目结构化数据的中央存储,包括维基百科(...)。”
可以将Wikidata看成具有超过4600万个数据项的维基数据库(2018年4月)。
根据维基媒体的使命,每个人都可以添加和编辑数据,并免费使用它。
可用的数据
像维基百科一样,维基数据中存储着各种数据。因此,当你正在寻找特定数据集或想要回答一个奇怪的问题时,可以先去维基数据找找。
什么是每个欧盟成员国的首都以及有多少居民住在那里?
诺贝尔物理学奖得主长什么样?
哪些国家使用112作为急救电话?
维基数据的优点和缺点
维基数据有一些特点:
• 它是一个自由开放的知识库,可以被人类和机器阅读和编辑
• 包含各种数据类型(例如文本,图像,数量,坐标,地理形状,日期)
• 它使用SPARQL查询
最后一条可能会让没用过SPARQL的逆陷入困境,但没关系,我们马上介绍它。
SPARQL的理念和概念
SPARQL是RDF数据库的查询语言。与SQL等关系数据库相比不同的是,项目不是任何表的一部分,而是像图表或网络一样相互链接的:
为了描述这些关系,我们可以使用三元组:
三元组是一个包含主语、谓语和宾语的语句。
例子: 德国(主语)有首都(谓语)柏林(宾语)。 柏林(主语)的坐标(谓语)为350万(宾语)。 欧盟(主语)有成员(谓语)德国(宾语)。 德国(主语)是(谓语)欧盟(宾语)的成员。 你可以拿出各种陈述来描述上面的图表。 这是SPARQL的一大优势。 不限于关系数据库的特定结构,并且可以轻松添加新信息。
如何查询维基数据中的数据?
要从维基数据中获取数据,只需使用三元组(如上所述)来编写SPARQL查询。 请注意,我们使用特定的标识符来定义正确的关系和项目:
SELECT ?country
WHERE
{
?country wdt:P463 wd:Q458.
#country #member of #European Union
}
在这里,我们只要欧盟的国家。
我们只选择那些条件成立的国家:国家(?country)是欧洲联盟(wdt:P463)的成员(wd:Q458)。
使用Wikidata查询服务作为端点为我们提供了以下结果:
https://query.wikidata.org/
现在,我们只能获得成员国的标识码。 要查看国家/地区名称,我们只需使用标签服务并将其添加到我们的查询中:
SELECT ?country ?countryLabel
WHERE
{
?country wdt:P463 wd:Q458.
SERVICE wikibase:label { bd:serviceParam wikibase:language
"[AUTO_LANGUAGE],en". }
}
如何获得正确的标识符?
对于所有查询,正确确定的项目和关系是至关重要的。 为此,Wikidata使用特定的标识符。
在上面的例子中,我已经看过它们:“作为成员”的关系具有标识符wdt:P463,并且项目“欧盟”由wd:Q458标识。
但你如何得到它们?
我推荐的是查看查询结果的维基百科。 了解法国是欧盟的成员之一,我会检查其维基数据项目:
1. 在Wikipedia中打开法国以查看其Wikidata项目:
2. 检查WikiData项:
在这里,你只需将鼠标悬停在关系“成员”和“欧盟”项目上即可获得他们的标识码。
更多例子
你还记得引言中的问题吗? 下面的查询可以回答这些问题:
1. 什么是每个欧盟成员国的首都以及有多少居民住在那里?
SELECT ?country ?countryLabel ?capitalLabel ?population
WHERE
{
?country wdt:P463 wd:Q458.
?country wdt:P36 ?capital.
?capital wdt:P1082 ?population.
SERVICE wikibase:label { bd:serviceParam wikibase:language " [AUTO_LANGUAGE],en". }
}
2.诺贝尔物理学奖得主长什么样?
# defaultView:ImageGrid
SELECT ?person ?personLabel ?image
WHERE
{
?person
wdt: P18 ?image;
wdt: P166
wd: Q38104.
SERVICE
wikibase: label
{bd: serviceParam wikibase: language "[AUTO_LANGUAGE],en".}
}
3.哪些国家使用112作为紧急电话?
# defaultView:Map
SELECT ?country ?countryLabel ?location
WHERE
{
?country
wdt: P2852
wd: Q1061257;
wdt: P625 ?location.
SERVICE
wikibase: label
{bd: serviceParam wikibase: language "en"}
}
参考链接:
https://towardsdatascience.com/a-brief-introduction-to-wikidata-bb4e66395eb1
-END-
专 · 知
人工智能领域主题知识资料查看获取:【专知荟萃】人工智能领域26个主题知识资料全集(入门/进阶/论文/综述/视频/专家等)
请PC登录www.zhuanzhi.ai或者点击阅读原文,注册登录专知,获取更多AI知识资料!
请扫一扫如下二维码关注我们的公众号,获取人工智能的专业知识!
请加专知小助手微信(Rancho_Fang),加入专知主题人工智能群交流!加入专知主题群(请备注主题类型:AI、NLP、CV、 KG等)交流~
点击“阅读原文”,使用专知