《语义网基础教程(原书第3版)》—— 3.2 基础知识:匹配模式

简介:

本节书摘来自华章出版社《语义网基础教程(原书第3版)》一 书中的第3章,第3.2节,作者:(希)Grigoris Antoniou(荷)Paul Groth(荷)Frank van Harmelen(荷)Rinke Hoekstra ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.2 基础知识:匹配模式

回顾一下上一章中描述Baron Way公寓及其位置的RDF数据:
screenshot

我们可能想要在这段数据上做一个查询。例如,找到这幢建筑的位置。怎样用SPARQL来表述呢?可以如下构建这个查询。我们想要匹配的是下面这个三元组:
screenshot

在SPARQL中,我们可以将三元组中的任何一个元素替换为一个变量。变量的首字符是一个?(问号)。要引入一个变量表示位置,我们可以这样写:
screenshot

三元组存储库将接收这个图模式(graph pattern)并尝试去找到能够匹配这个模式的那些三元组集合。因此,在之前的RDF数据上运行这个模式,一个三元组存储库将会返回dbpedia:Amsterdam和dbpedia:Netherlands。本质上,它找到了所有以swp:BaronWayBuilding作为主语、dbpedia-owl:location作为谓语的三元组。
要构建一个完整的SPARQL查询,还需要增加一些内容。首先,需要定义所有的前缀。还需要告诉三元组存储库我们对一个特定变量的结果感兴趣。因此,上述查询对应的完整SPARQL查询如下:
screenshot

与Turtle类似,PREFIX关键词指明各种URL的缩写。SELECT关键词表明了哪些变量是感兴趣的。需要被匹配的图模式出现在WHERE关键词之后的括号中。返回的查询结果是一组称作绑定(binding)的映射,表示了哪些元素对应到一个给定的变量。表格中的每一行是一条结果或一个绑定。因此,这条查询的结果如下:
screenshot

SPARQL的全部基础就是这个简单的概念:尝试去找到能够匹配一个给定图模式的那些三元组集合。SPARQL提供了更多的功能,用来指定更加复杂的模式并以不同的方式提供结果;但是无论模式多么复杂,运用的过程都是一样的。再举一个例子,查找到BaronWayApartment的位置。对应的SPARQL查询是:
screenshot

我们已经扩展了图模式。在这个查询中有一些注意点:首先,变量也作为主语出现。在SPARQL查询中,变量可以出现在任何位置。其次,查询重用了变量名?building。这样,三元组存储库就知道它应该找那些第一条的宾语与第二条的主语相同的三元组。我们请读者来确定这条查询的答案。
我们并不局限于只匹配一个变量。我们可能想要找到三元组存储库中关于Baron Way Apartment的所有信息。可以使用这条SPARQL查询:
screenshot

同样,表格中的每一行是一条单独的能匹配图模式的结果。对于我们这个很小的数据集,所有可能的答案可以很容易地返回。然而,在更大的数据集上,我们可能不知道有多少条结果,或者我们的查询会不会返回整个数据集。事实上,写一些能返回几百万个三元组的查询还是很容易的。因此,一个好的做法是限制一条查询能返回的答案的数量,特别是在使用公共端点时。这很容易通过使用如图3-1所示的LIMIT关键词来实现。在这个图中,我们将返回的结果条数限制为10。
screenshot

我们已经学会了如何去匹配单个模式或者由多个三元组模式构成的链。SPARQL提供了一种精确表述属性链的方式。这一机制称为属性路径(property path)。例如下面这个例子。找到所有作为一幢位于Amsterdam的建筑的一部分的那些公寓。
screenshot

有许多其他属性路径可以用来帮助在查询中表述很长的、各式各样的路径。在本章中,强调了更多这样的构造子。事实上,当读者写更复杂的SPARQL查询时,这些属性路径的快捷表示可能会变得更有用。
我们仅仅通过匹配图模式就可以完成很多事情。然而,有时候我们想要对查询结果施加更复杂的约束。在下一节中,我们讨论如何使用过滤器来表述这些约束。

相关文章
|
前端开发 JavaScript
「趣学前端」元编程,翻书学习时发现的陌生词汇,当然是记个笔记
最近在重学前端,今天分享元编程的知识点。
104 1
|
JavaScript 前端开发 索引
【重温基础】9.正则表达式
【重温基础】9.正则表达式
139 0
|
iOS开发
【Samshing专栏】动态等待符的实践指南
系统状态的可视性是用户界面设计中最重要的原则之一。用户希望在使用产品的时候体验到足够的控制感,即他们想要及时知道和理解产品的当前状态,尤其是当系统忙于处理任务的时候。动态等待符是当产品在运行任务或加载时为用户提供系统状态的最常见形式。
1534 0
|
机器学习/深度学习 Shell Windows
|
机器学习/深度学习 SQL 测试技术

热门文章

最新文章