使用SOH 以代码化的方法更新Apache Jena fuseki 的知识图谱

参考 《实践篇(四):Apache jena SPARQL endpoint及推理》(方法不完全一样),搭建了一个知识图谱,在fuseki的web页面上传从结构化数据构建而来的本体实体后,能够正常使用,但是有几个问题:

  1. OWLFBRuleReasoner推理机开启后查询速度太慢,慢到只能被迫关闭推理机的程度;
  2. 知识图谱的结构化数据源定时刷新,相应的知识图谱也应该定时刷新,这需要代码化的更新fuseki的本体和实体的方法;
  3. 知识图谱保存在服务器的内存里,如何保存到磁盘中?

本文是针对问题2的。

查阅官方文档知,可以用SOH(SPARQL over HTTP)解决,命令如下:

s-get: 查数据,不改变知识图谱
s-put: 修改数据,删掉知识图谱指定graph内容,并重新上传
s-delete: 删除指定graph内容
s-post: 向指定graph添加新的内容

官方示例:

s-put http://localhost:3030/dataset default data.ttl
s-get http://localhost:3030/dataset default
s-put http://localhost:3030/dataset http://example/graph data.ttl
s-get http://localhost:3030/dataset http://example/graph

定时更新方法:
1.定时抽取新的本体实体文件
2.重启fuseki以删除旧知识图谱,同时更新本体
3.post 提交新的实体

第3步用python简单实现如下:

import requests
from requests_toolbelt.multipart.encoder import MultipartEncoder


filepath = ""
multipart_data = MultipartEncoder(fields={'file': (filepath, open(filepath, 'rb'), 'text/plain')})
print("uploading " + filepath)
response = requests.post(
    'http://localhost:3030/dataset',
    data=multipart_data,
    auth=('auth', 'passwd'),
    headers={'Content-Type': multipart_data.content_type}
)

参考

SOH - SPARQL over HTTP
实践篇(四):Apache jena SPARQL endpoint及推理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值