携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第17天, 点击查看活动详情
SPARQL是知识图谱查询中常用的语言,相比于SQL语句,SPARQL语句在图数据库上进行查询,因而更加灵活。本系列学习内容来自: RDF 和 SPARQL 初探:以维基数据为例 ,我们将学习使用WikiData进行SPARQL语句的查询展示。
Wikidata简介
Wikidata是一个自由开放的知识库,可以由人和机器阅读和编辑。其网址为: www.wikidata.org/ ,其官网对其描述如下:
Wikidata is a free and open knowledge base that can be read and edited by both humans and machines. Wikidata acts as central storage for the structured data of its Wikimedia sister projects including Wikipedia, Wikivoyage, Wiktionary, Wikisource, and others. Wikidata also provides support to many other sites and services beyond just Wikimedia projects! The content of Wikidata is available under a free license , exported using standard formats , and can be interlinked to other open data sets on the linked data web.
Wikidata充当其维基媒体姊妹项目(包括Wikipedia、Wikivoyage、Wiktionary、Wikisource等)结构化数据的中央存储。Wikidata还支持许多其他网站和服务,而不仅仅是维基媒体项目!Wikidata的内容可以在免费许可下获得,使用标准格式导出,并可以与链接数据网络上的其他开放数据集互连。
本系列课程中,将在Wikidata上进行SPARQL语句查询展示。
RDF简介
目前,关系型数据库在各个行业应用广泛。如下图所示,一个描述超市中商品-顾客-订单的数据库示意如下:这里有三个表,表与表之间通过主外键关系互相联系。
然而,真实世界中的数据在多数情况下并不像关系型数据库那样规范,而是更像是一种图结构,没有固定的连边和关系。在图(graph)中,每样事物就是图的一个节点,节点之间的关系就是图中的连边。如果数据库以图的方式储存数据,就称为图数据库。
RDF 就是图数据库的一种描述方式,以"三元组"( triple)的方式,描述事物与事物之间的直接关系。
"三元组"是 RDF 的核心概念,指的是两个事物和它们之间的关系,在语法上呈现为"主语 + 谓语 + 宾语"。
rdf:type关系
比如最简单的一种关系就是“是”的意思,比如“小明是学生”可以表示为:
小明 rdf:type 学生 .
由于这种关系非常常见为了使用的简洁和方便,RDF规定可以用"a"来表示这种关系;也就是说,刚才的“小明是学生”可以简写为:
小明 a 学生 .
注意: 每个 RDF 三元组的结尾是一个英文的句号,用来区分多个三元组。
小明 a 学生 .
小刚 a 学生 .
老李 a 教师 .
RDF语法举例
这里以一个简单的例子(例子来源:www.ruanyifeng.com/blog/2020/0… )来理解RDF语句。
假设有这样一句文本:“甲壳虫是一个乐队,成员有 John Lennon、Paul McCartney、Ringo Starr 和George Harrison。”
甲壳虫 rdf:type 乐队 .
甲壳虫 :name 甲壳虫 .
甲壳虫 :member John Lennon .
甲壳虫 :member Paul McCartney .
甲壳虫 :member Ringo Starr .
甲壳虫 :member George Harrison .
由于上面的这些三元组都是同一个主语,RDF规定可以将他们进行合并简写,形式如下:
甲壳虫 rdf:type 乐队 .
:name 甲壳虫 .
:member John Lennon .
:member Paul McCartney .
:member Ringo Starr .
:member George Harrison
本篇博客讲述了RDF规范和其中最常见的关系谓词"rdf:type"及其简写形式。RDF三元组的内容是SPARQL查询语句的基础,希望对大家有帮助。