当前位置: 代码网 > 服务器>软件设计>开源 > 实战 Wikipedia 与 Wikidata 知识图谱数据获取 (8)

实战 Wikipedia 与 Wikidata 知识图谱数据获取 (8)

2024年08月05日 开源 我要评论
如何从 WikiData 和 DBpedia 上获取数据。文末送知识图谱最新 2021 发布的开源书

内容预告

今天,我们深入探索如何从 wikipedia 和 wikidata 这两大公共知识图谱平台上提取数据。文章将首先解析 wikidata 背后的复杂数据模型,通过具体案例来阐释其工作原理,继而详细指导您如何运用 sparql 语言,从 wikidata 和 wikipedia 获取所需数据。文末特别赠送一本精选的知识图谱开源书籍 📚。

dbpedia 历史简介

image.png
简要概述:dbpedia 的数据源自 wikipedia 的信息框和文章,而 wikidata 的数据则基于 dbpedia,进一步为 wikipedia 提供信息支持。通过社区成员的持续贡献,这两个平台每年都在不断地丰富和更新数据。in short: wikipedia → \rightarrow dbpedia → \rightarrow wikidata。wikidata 的数据质量整体要比 dbpedia 上的要好

很多同学不知道如何从 wikidata 上获取数据主要有两个难点:

  1. 不了解 wikidata 的数据模型
  2. 因为 wikidata 奇怪的命名实体和属性的方式,让我们摸不着头脑

难点一:wikidata 数据模型

image.png
前缀命名空间介绍:
wd: wikidata. 用于命名实体 uri 。比如 wd:q317521 (埃隆马斯克)。
wdt: wikidata truth. 用于命名属性。比如 wdt:p26 (配偶)。

p: property. 用于命名某个属性(property) 的 statement 节点 (wikidata statement 节点来连接所有跟某个属性相关的信息。相当于属性的注解)。比如 p:p26 (配偶的 statement 节点)。
ps: property statement. 用于命名 statement 节点值的属性,也就是用 wdt 为前缀的属性的值。比如 ps:p26 (配偶 statement 节点的值,跟 wdt:p26 获取的值一样)。
pq: property qualifier. 用于命名描述 statement 节点值的属性。

prov:wasderivedfrom: 用于获取 statement 节点的参考节点。也就是说这个 statement 是根据什么网上的信息得来的。
pr: property reference. 用于命名参考节点信息的属性,比如参考链接 pr:p854

埃隆马斯克例子

我在埃隆马斯克 (他的 uri 是 wd:q317521) 的 wikidata page: https://www.wikidata.org/wiki/q317521 中截取了一段关于他第一任老婆 贾丝廷·威尔逊 (后改姓 musk) 的信息。
image.png

sparql 查询从 wikidata 获取埃隆马斯克所有老婆的信息

wikidata 的查询入口: https://query.wikidata.org

select ?spousename ?marriagestarttime ?marriageendtime ?referenceurl ?referenceretrievedtime where {
  wd:q317521 p:p26 ?marriagestatement.
  ?marriagestatement ps:p26 ?spouse.
  ?spouse rdfs:label ?spousename.
  optional { ?marriagestatement pq:p580 ?marriagestarttime. }
  optional { ?marriagestatement pq:p582 ?marriageendtime. }
  optional { 
    ?marriagestatement prov:wasderivedfrom ?refnode.
    optional { ?refnode pr:p854 ?referenceurl. }
    optional { ?refnode pr:p813 ?referenceretrievedtime. }
  }
  filter(lang(?spousename) = "en")
}

查询结果如下:
image.png

难点二:不知道属性的 uri

这里有三个方法帮助找到你想要的属性 uri

  1. 用 propbrowse 查询 https://hay.toolforge.org/propbrowse/. 这个工具可以根据你给的关键猜你想要的属性 uri。比如 end time (p582)。这个方法比较宽泛。
    image.png
  2. 用 wikidata graph builder https://angryloki.github.io/wikidata-graph-builder/. 输入 wiki page link 后,可以像上面方法一样去根据关键词检索可用的属性 uri。这个方法可以针对具体的实体。
    image.png
  3. 用 sparql 直接搜。比如搜索所有以 埃隆马斯克 为主语,并且 prefix 为 wdt 的属性 uri。
select distinct ?p where {
  wd:q317521 ?p ?o .
  filter(strstarts(str(?p), str(wdt:)))
}

sparql 查询获取 dbpedia 数据

dbpedia 的查询入口: https://dbpedia.org/sparql
首先搜索到埃隆马斯克的 dbpedia 页面 https://dbpedia.org/page/elon_mus.
可以推出他的 uri 是 http://dbpedia.org/resource/elon_musk
dbpedia 上的实体都是以 dbr 做为 prefix,属性都是以 dbo 或者 dbp 作为 prefix
image.png
这里可以直接看到他所有可用的属性 uri. 比 wikidata 来说,写 sparql 的难度低了很多。随便写一个,查找他的出生地和教育 :

prefix dbo: <http://dbpedia.org/ontology/>
prefix dbr: <http://dbpedia.org/resource/>

select ?birthplace ?edu where {
  dbr:elon_musk dbo:birthplace ?birthplace . 
  dbr:elon_musk dbo:education ?edu
}

image.png
这里提示下,在 wikidata 和 dbpedia 上的查询,如果你使用它们的默认 prefix 名可以省略 prefix 语法. 这意味下面这个查询可以直接在 dbpedia 上执行。

select ?birthplace ?edu where {
  dbr:elon_musk dbo:birthplace ?birthplace . 
  dbr:elon_musk dbo:education ?edu
}

文末送书 (开源的)

分享一本2021发布的好书 《knowledge graph》by aidan hogan 等。包含了知识图谱基础,知识图谱 deductive 和 inductive inference,知识图谱创建和质量评估等内容。这是一本 open source 的书,大家可在公众号回复: 20240112 领取,省去科学上网。

之前的文章

知识图谱 (1)
本体论介绍 (2)
动手构建你的第一个知识图谱 by rdf (3)
图数据模型介绍 (4) 数学符号警告
sparql查询:如何高效检索web数据 (5)
深入探索 sparql,复杂查询和聚合函数 (6)
用逻辑降维打击 sparql 查询:无痛写 not exists (7)

不定期更新专业知识和有趣的东西,欢迎反馈、点赞、加星

您的鼓励和支持是我坚持创作的最大动力!ღ( ´・ᴗ・` )

参考

  1. https://en.wikibooks.org/wiki/sparql/wikidata_qualifiers,_references_and_ranks
  2. scientific data management & knowledge graph, by maria-esther vidal
  3. dbpedia endpoint: https://dbpedia.org/sparql
  4. wikidata endpoint: https://query.wikidata.org
  5. wikidata property browser: https://tools.wmflabs.org/hay/propbrowse/
  6. wikidata graph builder: https://angryloki.github.io/wikidata-graph-builder/
(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com