RDF 和 SPARQL 初探:以维基数据为例

维基百科有一个姐妹项目,叫做"维基数据"(Wikidata)。你可以从维基百科左侧边栏点进去。

"维基数据"将维基百科的所有数据,整理成一个可以机器处理的数据库,方便查询。比如,山西省人口最多的地区是哪一个?

这种问题在维基百科查询,非常费时,必须人工从一个个条目提取信息。但是,维基数据可以只执行一条命令,就返回答案(详见后文)。因为它提供结构化数据,可以机器查询。

但是,维基数据不是关系型数据库,而是 RDF 数据库;查询语言不是 SQL,而是 SPARQL。我粗浅地学了一点 RDF 和 SPARQL,本文就是学习笔记,演示如何使用维基数据查询信息。

一、RDF 的含义

大家都知道,关系型数据库是目前使用最广泛的数据库,将数据抽象成行和列的表格关系。

但是,现实世界不像表格,更像网络。各种事物通过错综复杂的关系,连接在一起,组成一张网。

网络在数学里面称为图(graph),每样事物就是图的一个节点,节点之间的关系就是将它们连在一起的那条边。如果数据库以图的方式储存数据,就称为图数据库。

RDF 就是图数据库的一种描述方式,或者说是一种使用协议。它以"三元组"( triple)的方式,描述事物与事物之间的直接关系。

"三元组"是 RDF 的核心概念,指的是两个事物和它们之间的关系,在语法上呈现为"主语 + 谓语 + 宾语"。

天空是蓝色的。

上面这句话,就是一个 RDF 三元组。"天空"(主语)和"蓝色"(宾语)是两种事物,它们通过颜色关系(谓语)连接在一起。

RDF 要求,谓语(即事物之间的关系)必须有明确定义。大家这样想,如果谓语是给定的,就可以用主语去查询宾语,或者用宾语去查询主语。比如,颜色关系是给定的,那么就可以向数据库进行下面的查询。

查询一:天空 + 颜色 = ?

查询二:? + 颜色 = 蓝色

任何组织和个人,都可以定义自己的谓语。RDF 要求每套谓语必须有一个明确的 URL,通过 URL 区分不同的谓语。RDF 官方定义了一套常用的谓语,URL 如下。

https://www.w3.org/1999/02/22-rdf-syntax-ns

使用的时候,只要引用这个 URL,别人就知道用的是哪一套谓语。

URL 比较冗长,引用不方便。RDF 允许指定一个前缀,代表 URL 地址,比如上面那个官方谓语的 URL,通常用前缀rdf表示。

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns>

每个 URL 里面可以包含多种谓语,通过"前缀 : 谓语"的形式来区分。比如,官方定义了一个"type"谓语,说明主语的类型,就可以用rdf:type表示。

小明是学生。

上面这句话,写成 RDF 三元组,就是下面的形式。

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns>

小明 rdf:type 学生.

由于rdf:type是一个常用谓语,RDF 允许把它简写成a,因此"小明是学生"又可以表示成小明 a 学生

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns>

小明 a 学生 .

注意,每个 RDF 三元组的结尾是一个英文的句号,用来区分多个三元组。<

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值