Jena的介绍

最近在进行一些知识图谱的入门学习,一直想写一点学习笔记,今天刚把jena和fuseki装在了服务器上,又导入了一些rdf文件,并进行SPARQL语句的查询。我的一点总结如下:

什么是Jena?
Apache Jena是专门用于语义网本体操作的开源Java框架,其提供RDF和SPARQL API,来查询、修改本体和进行本体推理,并且提供了TDB和Fuseki来存储和管理三元组。

什么是TDB?
TDB的官方文档介绍如下:

TDB is a component of Jena for RDF storage and query. It support the full range of Jena APIs. TDB can be used as a high performance RDF store on a single machine.

大体就是,就是把RDF数据load到TDB中存储,之后的查询就是通过TDB查询,而且速度很快。Jena总共支持三种内置存储模式,分别是RDB,SDB,和TDB。其中RDB现在几乎不用了,因为速度比较慢。而官方推荐的则是TDB,速度快,操作简单,支持几十亿条记录,且支持几百个并行查询。所以在使用Jena的API时,要先导入相应的.nt、.rdf等数据,load到你的TDB中并在之后进行处理。(当然也有图形化界面如Fuseki服务器,之后会说)。

什么是Fuseki?
Fuseki是基于SPARQL 1.1版本的协议,以及SPARQL图存储协议,进行查询和修改操作。Fuseki是与TDB高度集成的服务,不仅集成了Jena文本查询和Jena空间查询,还提供了一个稳健的业务持久化存储层。对于其他RDF查询和存储系统来说,Fuseki可被用来提供协议引擎。
[官方文档](http://jena.apache.org/documentation/fuseki2/index.html

配置之前

在配置之前,我的linux服务器已经配置好了java环境,完成了jdk的安装,如果没安装的先百度一下如何安装jdk,我的服务器是Ubuntu14.04,但是是外国的ip,所以本地传输文件比较慢,但是下载速度杠杠滴。

Jena的配置安装署

Jena的安装很简单,在windows中直接安装即可,也可以把jar包导入项目,就可以直接用API,在linux中,先把压缩包传到linux服务器,之后解压,然后:

  • 配置环境变量(配置/etc/profile或者当前用户目录下的~/.bashrc,这里以后者为例):
export JENA_HOME=/usr/java/apache-jena-3.10.0
export PATH=$JENA_HOME/bin:$PATH
  • 激活:source ~/.bashrc
  • 查看:输入sparql,如果成功则输出No query string or query file

Fuseki的配置安装

同上,先把fusuki的安装包传输到服务器,我是用的xshell的rz命令,然后选择文件就可以了,我是放在/usr/java/文件夹中,也就是放jdk的文件夹。然后解压:tar -zxcf filename

  • 进入fuseki文件夹,启动服务:./fuseki-server --config=ConfigFile,此时如果在本地部署就可以输入localhost:3030访问,服务器部署可以在pc上登陆:ip:3030登陆,没有开启3030端口的百度打开3030端口。

这个时候遇到了一个问题,没法在图形化界面上添加数据库,也没有add one。这时候,找到了一个博主,看了它的方法,解决了问题,方法如下:

在安装目录下有一个run文件夹,打开,修改里面的在执行启动服务同级目录下 有个run文件夹,修改里面的shiro.ini:vi shiro.ini,将

##/$/** = localhostFilter

改成:

/$/** = anon

完成!其实不在于这一个问题的解决,更在于博主解决问题的方法,感觉自己还是了解的太少。传送门
ps:新建的dataset在apache-jena-fuseki-3.10.0/run/databases目录下,就是add的database。

命令行的安装

在命令行中,fuseki的配置也比较简单,使用TDB导入的命令如下:

/jena-fuseki/tdbloader --loc=/jena-fuseki/data filename

上面的/jena-fuseki/data是tdb库的路径,也就相当于服务器图形化界面导入方法中的dataset目录,后面的filename.rdf.nt等文件的路径。

Fuseki启动的命令如下,需要指定tdb生成的文件路径并指定数据库名:

/jene-fuseki/fuseki-server --loc=/jena-fuseki/data --update /music

用TBQuery进行查询

tdbquery --loc=/jena-fuseki/data --query=q1.rq

q1.rq是sparql查询语句,可以放在tdb库文件里,路径和位置要放对,否则可能会出现File not found:

参考博客

ITKeyword-总结的较好

阿里云开放端口问题

最后修改:2022 年 06 月 02 日
如果觉得我的文章对你有用,请随意赞赏