SparQL使用

SPARQL即SPARQL Protocol and RDF Query Language的递归缩写&#xff…

SPARQL即SPARQL Protocol and RDF Query Language的递归缩写,专门用于访问和操作RDF数据,是语义网的核心技术之一。W3C的RDF数据存取小组(RDF Data Access Working Group, RDAWG)对其进行了标准化。在2008年,SPARQL 1.0成为W3C官方所推荐的标准。2013年发布了SPARQL 1.1。相对第一个版本,其支持RDF图的更新,提供更强大的查询,比如:子查询、聚合操作(像我们常用的count)等等。

从SPARQL的全称我们可以知道,其由两个部分组成:协议和查询语言。

一个SPARQL查询本质上是一个带有变量的RDF图,以我们之前提到的罗纳尔多RDF数据为例:

我们把属性值用变量代替(SPARQL中,用问号加变量名的方式来表示一个变量。),即:

SPARQL查询是基于图匹配的思想。我们把上述的查询与RDF图进行匹配,找到符合该匹配模式的所有子图,最后得到变量的值。就上面这个例子而言,在RDF图中找到匹配的子图后,将”罗纳尔多·路易斯·纳萨里奥·德·利马”和“?x”绑定,我们就得到最后的结果。简而言之,SPARQL查询分为三个步骤:

以实践篇的RDF电影数据为例,我们介绍如何利用SPARQL查询:

如何查询所有数据?参照我们在第一个部分介绍的查询过程,查询所有数据即我们没有任何已知值,SPO三元组每个都是未知变量。对应的SPARQL查询语言为:

SPARQL的部分关键词:

  • SELECT, 指定我们要查询的变量。在这里我们查询所有的变量,用*代替。
  • WHERE,指定我们要查询的图模式。含义上和SQL的WHERE没有区别。
  • FROM,指定查询的RDF数据集。我们这里只有一个图,因此省去了FROM关键词。
  • PREFIX,用于IRI的缩写。

下面是该语句的部分查询结果:

“周星驰出演了哪些电影”:

就我们这个例子而言,可以不要“?s rdf:type :Person”,这里只是让查询图更具体(在拥有复杂关系的RDF图中,可能会存在不同的类拥有相同的属性名。比如,猫和狗名字的属性名都是”name”,我们想查询一只叫汤姆的猫;如果不指定类型,返回结果可能也包含一只叫汤姆的狗)。图模式中,每个RDF用英文句号进行分割。

“英雄这部电影有哪些演员参演”:

结果:

“巩俐参演的评分大于7的电影有哪些”:

结果:

这里我们用到了FILTER关键词,可以对变量取值进行约束。

SPARQL更详细的语法和功能这里就不再多做介绍。读者可以参考W3C的文档或者SPARQL查询的例子,也有专门的书来讲解SPARQL 1.1(Learning SPARQL: Querying and Updating with SPARQL 1.1)

另外多提一点,关于知识图谱,有一个非常重要的概念,即开放世界假定(Open-world assumption,OWA)。这个假定的意思是当前没有陈述的事情是未知的,或者说知识图谱没有包含的信息是未知的。怎么理解?首先我们要承认知识图谱无法包含所有完整的信息。以我们这个电影数据的例子而言,很明显,它的数据十分残缺。即使我们拥有一个十分完整的电影知识图谱,包含了当下所有的电影、演员等信息,在现实世界中,信息也是动态变化和增长的。即,我们要承认知识图谱的信息本身就是残缺的。有了这个前提,我们来思考例子中的第二个SPARQL语句:

周星驰出演了上述查询结果中的电影。基于我们构建的电影知识图谱,提问:周星驰出演了《卧虎藏龙》吗?根据OWA,我们得到的答案是“不知道”,相反,如果是封闭世界假定(Closed-world assumption),我们得到的答案是“没有出演”。

我们在设计本体和开发相关应用的时候需要考虑开放世界假定。举个简单的例子,基于知识图谱的问答系统,用户提问“周星驰出演了《卧虎藏龙》吗?”,合适的回答是“不知道”而不是“没有出演”。直觉上这和一个人向另一个人提这个问题一样,如果我们知道问题答案,我们会给出肯定的回答,不知道的话,我们往往倾向于回复“我不知道”,“我不太清楚”,“我查查看”,而不是信誓旦旦地回答“没有出演”。毕竟,大多数人都有“自知之明”,知道自己总有不了解的东西。从这个角度上说,人和知识图谱类似,我们都存在于OWA的世界中。

本文主要介绍了SPARQL及其基本用法,希望能让读者对SPARQL有个初步的认识。下一篇文章是实践篇,介绍如何利用D2RQ创建SPARQL endpoint并在我们的数据上进行相关查询。

本文来自网络,不代表软粉网立场,转载请注明出处:https://www.rfff.net/p/5637.html

作者: HUI

发表评论

您的电子邮箱地址不会被公开。

返回顶部