天天看点

《语义网基础教程(原书第3版)》—— 3.8 通过SPARQL更新来增加信息

本节书摘来自华章出版社《语义网基础教程(原书第3版)》一 书中的第3章,第3.1节,作者:(希)grigoris antoniou(荷)paul groth(荷)frank van harmelen(荷)rinke hoekstra ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

正如3.1节所述,sparql也定义了一个用来更新三元组存储库内容的协议。这就是sparql更新协议。本质上,它在sparql中引入了一系列新的关键词来支持三元组的插入、加载和删除。以下我们展现每种请求的例子。

插入和加载三元组 以下插入一个三元组,阐述luxury apartment是apartment的一个子类。它将这个三元组加入三元组存储库的已有内容之中。

《语义网基础教程(原书第3版)》—— 3.8 通过SPARQL更新来增加信息

注意,数据本身仍是我们在第2章中就熟悉的turtle语法。

如果你在万维网上有一个大的包含rdf的文件,你可以使用以下命令将它加载进一个三元组存储库:

《语义网基础教程(原书第3版)》—— 3.8 通过SPARQL更新来增加信息

删除三元组 从一个三元组存储库中删除三元组有几种方式。一种是使用delete data关键词准确指定哪些三元组是你想要删除的。将之前插入的三元组删除可以这样:

《语义网基础教程(原书第3版)》—— 3.8 通过SPARQL更新来增加信息
《语义网基础教程(原书第3版)》—— 3.8 通过SPARQL更新来增加信息

注意,在这种形式下是不允许变量的,所有三元组都必须被完整指定。

一种更加灵活的方式是使用delete where构造子。它可以删除匹配指定图模式的那些三元组。以下将要删除包含关于拥有超过2间卧室的公寓的信息的所有三元组。

《语义网基础教程(原书第3版)》—— 3.8 通过SPARQL更新来增加信息

在这两种形式中,如果模式未能匹配或者三元组不在三元组存储库中,那么什么都不会发生。

最后,要删除一个三元组存储库中的所有内容,可以如下使用clear构造子:

《语义网基础教程(原书第3版)》—— 3.8 通过SPARQL更新来增加信息

sparql更新提供了更多的构造子来管理部分三元组存储库。如果向一个三元组存储库中逐步添加数据,那么更新操作就特别有用了。在下一节中,我们讨论一种特殊情况,其中这些更新操作很有用。