当前位置: 代码迷 >> 综合 >> 知识图谱:知识存储之Apache Jena
  详细解决方案

知识图谱:知识存储之Apache Jena

热度:36   发布时间:2024-02-22 14:34:48.0

Jena

https://jena.apache.org/

    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文件

  相关解决方案