首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SPARQL和Virtuoso数据库(2)

上一讲我们介绍了如何在Virtuoso中进行GRAPH的相关操作,最后留的一道作业题也比较容易:如何在nobelprize中删除nobel_2的2条数据。可以直接用我们之前介绍的DELETE方法,这里的Graph IRI为http://www.example.com/graph/nobelprize。

删除时,会碰到权限错误:

Virtuoso 42000 Error SR186:SECURITY: No permission to execute procedure DB.DBA.SPARQL_DELETE_DICT_CONTENT with user ID 107, group ID 107

我们去增加用户SPARQL的权限:

增加UPDATE权限:

保存后,1、再次执行之前的删除语句,即可删除成功。2、删除后,可以再用上一讲的查询语句去检索,看数据是否已经被删除。这两步大家可以自己去尝试。

今天,我们来介绍如何在Virtuoso中进行SPARQL的UPDATE操作。对UPDATE不熟悉的朋友,可以去看“SPARQL的UPDATE用法”。

一、namespace定义

我们知道namespace为命名空间,用来为类和属性做区间定义。Virtuoso中已经定义了一些常用的命名空间,我们也可以添加新的namespace。

点“Add”按钮,输入需要新增的bibframe(http://id.loc.gov/ontologies/bibframe/)。

注:书目框架(Bibliographic Framework, BIBFRAME)是美国国会图书馆为积极应对网络环境而开发的下一代书目格式。目前广泛应用于数字人文和图情领域。

这样增加后,在使用到该namespace定义的类和属性后,就不需要在SPARQL前面定义PREFIX。如:

在Virtuoso中就可以直接写成:

二、UPDATE操作

现在我们有了自己的数据库,接下来的所有操作都可以在自己的数据库中执行。首先,我们来查找出生在中国的诺奖得主。SPARQL大家还会写吗?

现在我们在Virtuoso里执行:

我们看到李政道的资源URI为http://data.nobelprize.org/resource/laureate/69,下面查看该URI的所有信息。

接下来,我们看看如何增加三元组,这里李政道的label标签为Tsung-Dao (T.D.) Lee,我们把该标签置为英文语种,并增加中文标签“李政道”。该如何操作,直接上SPARQL(运行时,删除前面的行号;为了讲解方便,这里加上了行号):

下面详细分析下该SPARQL。

- 行10-13为检索部分(WHERE)。检索出资源对应的rdfs:label值,并加上语言标示(这里用strlang函数)。

- 行3-5为删除部分(DELETE)。删除检索的资源rdfs:label三元组。

- 行6-9为插入部分(INSERT)。插入新的资源三元组,这里的rdfs:label对应的值为多语言。

可以通过SPARQL来查看插入后的标签值,这里有中英文双语。

今天,我们学习了如何在Virtuoso中进行数据的更新操作,大家是否可以将今天修改的这两条三元组,再修改回之前的数据?

下一讲,我们将介绍SPARQL中的PATH用法。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190116G0DDBP00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券