Jena

Apache Jena是专门用于语义网本体操作的开源Java框架,其提供RDF和SPARQL API,来查询、修改本体和进行本体推理,并且提供了TDB和Fuseki来存储和管理三元组。
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.
Jena总共支持三种内置存储模式,分别是RDB,SDB,和TDB。其中RDB现在几乎不用了,因为速度比较慢。而官方推荐的则是TDB,把RDF数据load到TDB中存储,之后的查询就是通过TDB查询,而且速度很快,操作简单,支持几十亿条记录,且支持几百个并行查询。所以在使用Jena的API时,要先导入相应的.nt、.rdf等数据,load到你的TDB中并在之后进行处理。
Apache Jena Fuseki is a SPARQL server. It can run as a operating system service, as a Java web application (WAR file), and as a standalone server. It provides security (using Apache Shiro) and has a user interface for server monitoring and administration.
Fuseki是基于SPARQL 1.1版本的协议,以及SPARQL图存储协议,进行查询和修改操作。Fuseki底层存储基于TDB,具有SPARQL查询处理的Web用户界面,同时提供服务器监控和管理功能界面。对于其他RDF查询和存储系统来说,Fuseki可被用来提供协议引擎。
下载
官方网址:http://jena.apache.org/download/
安装
1. 解压Jena
# 解压到/usr/local中
[root@master ~]# tar -zxf /home/你的用户名/Downloads/apache-jena-3.16.0.tar.gz -C /usr/local#进入/usr/local中
[root@master ~]# cd /usr/local/# 将文件夹名改为jena
[root@master local]# mv ./apache-jena-3.16.0/ ./jena # 修改文件权限
[root@master local]# chown -R 你的用户名 ./jena
2. 设置Jena环境变量
[root@master ~]# vi /etc/profile#在文件中添加
export JENA_HOME=/usr/local/jena
export PATH=$PATH:$JENA_HOME/bin
3. 使环境变量生效
[root@master ~]# source /etc/profile
4. 查看是否安装成功
5. 解压Fuseki
# 解压到/usr/local中
[root@master ~]# tar -zxf /home/你的用户名/Downloads/apache-jena--fuseki-3.16.0.tar.gz -C /usr/local#进入/usr/local中
[root@master ~]# cd /usr/local/# 将文件夹名改为fuseki
[root@master local]# mv ./apache-jena-fuseki-3.16.0/ ./fuseki # 修改文件权限
[root@master local]# chown -R 你的用户名 ./fuseki
6. 进入fuseki文件夹,启动服务
[root@master ~]# cd /usr/local/fuseki
[root@master fuseki]# ./fuseki-server --config=ConfigFile
7. 浏览器打开http://localhost:3030
说明
数据导入方法
方法一: 通过Fuseki界面手动导入(下节案例使用该方法)
方法二: 使用TDB导入数据
# 进入jena下的bat文件夹
[root@master ~]# cd /usr/local/jena/bat# /jena-fuseki/data指定tdb库的路径,也就相当于服务器图形化界面导入方法中的dataset目录
# filename是.rdf、.nt等文件的路径,若有多个文件,则在命令后(不换行)隔一个空格输入一个RDF文件
[root@master bat]# ./tdbloader --loc=/jena-fuseki/data filename【example】 ./tdbloader --loc=/home/apache-jena-3.4.0/tdb /home/1.rdf
# 数据存入后,通过Fuseki进行查询等操作
# --loc的参数与上一步TDB数据库路径一致
# /music指定导入的数据库
[root@master ~]# cd /usr/local/fuseki
[root@master fuseki]# ./fuseki-server --loc=/jena-fuseki/data /music
数据查询方法
方法一: Fuseki界面查询(下节案例使用该方法)
方法二: 使用EndPoint接口查询
SPARQL Query:http://localhost:3030/music/query
SPARQL Update:http://localhost:3030/music/update
案例
下述图源:小象学院王昊奋-知识图谱
1. 示例数据用Python随机生成
2. python脚本文件为:kg_music_triples.py,生成文件:music_xxx.nt
3. 打开http://localhost:3030,创建数据库music
4. 导入数据music_1000.nt (Jena支持任意的RDF格式导入)
导入成功后的文件结构
5. 进入查询页面
5.1 一些查询例子
5.2 一些更新例子
参考
Jena的安装和介绍
RDF文件语法的验证
Fuseki启动后没有ADD one
Apache Jena数据库:存取RDF文件