本节书摘来自华章出版社《语义网基础教程(原书第3版)》一 书中的第3章,第3.4节,作者:(希)Grigoris Antoniou(荷)Paul Groth(荷)Frank van Harmelen(荷)Rinke Hoekstra ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
3.4 处理一个开放世界的构造子
与传统数据库不同,不是每个语义网上的资源都会以同样的模式(schema)描述,或者都拥有同样的属性。这叫做开放世界假设。例如,一些公寓可能比其他的拥有更多的描述。进一步地,它们可能以一种不同的词汇表来描述。例如以下这个RDF例子:
在这个例子中,Florida Ave单间公寓并没有一个对人类友好的标签,并且它的位置以dbpedia-owl:locationCity而非dbpedia-owl:location为谓语来描述。即便有这种不一致,我们仍然想要在数据上查询并找到位于Amsterdam的公寓并返回它们对人类友好的标签—如果有。SPARQL为表述这个查询提供了两种构造子。让我们来看一个样例查询:
这个查询的结果是:
UNION关键词告诉三元组存储库返回那些仅匹配一个图模式或两个都匹配的结果。OPTIONAL关键词告诉三元组存储库为特定的图模式返回结果—如果能找到。即对于待返回的查询而言,这个图模式未必要被满足。因此,在这个例子中,如果没有这个可选项,这间单间公寓就不会在查询结果中返回。
类似地,属性路径也可被用来创建一个更简洁的SPARQL查询。使用|运算符,我们可以表述一个或更多的可能性。因此,上述SPARQL可以被重写成如下形式:
这些仅仅是一些例子,来说明SPARQL是如何被设计为可以容易地查询来自不同来源的知识。