Linux系统中Jena环境变量配置及使用

前言:最近在使用jena开发知识图谱,总结一下最近的使用过程。
文末有 apache-jena-3.6.0,Apache-jen.a-fuseki-3.6.0以及d2rq-0.8.1tar
文件。因为高版本的需要相应的java版本,对我其他软件不友好,所以以3.6版本为例子:
jena在windows中配置以及使用戳这里,优质博文

例子中的所有文件都在这里,膜拜知乎大佬

一:java环境变量设置。

Linux中java环境变量设置戳这里

二:配置jena

1. 下载看文末

2. 将两个文件房子合适位置,我是跟项目文件放在一起方便操作

解压:tar -zxvf apache-jena-3.6.0.tar.gz
解压:tar -zxvf apache-jena-fuseki-3.6.0.tar.gz

3. 配置环境变量。我是在 ~/.bash_profile中进行环境变量设置

code: vim ~/.bash_profie
文末添加:

		export JENA_HOME=/root/yhz/jena/apache-jena-3.6.0
		export PATH=$JENA_HOME/bin:$PATH
注: 这里的路径根据自己实际情况来制定。

激活:`source ~/.bash_profile`
查看:sparql,如果出现No query string or query file,证明配置成功。

三:使用jena和jena-fuseki

1. 数据准备

我用的是mysql,数据的话这里就不展示了,可以参考windows连接,这里面的数据过程与这个差不多一样。

2. 使用D2RQ进行数据转换

首先进入目录,运行命令,生成默认mapping文件
generate-mapping -u root -p "****" -o D:\AI_Work_Demo\kg_demo_test\kg_demo_movie_mapping.ttl jdbc:mysql:///kg_demo_movie

这里的输出位置可以随意指定。

注意-o 这里输出路径位置根据实际情况

3. 对生成的默认mapping文件进行参数修改,特别是文件位置

这里注意的是,文件生成的位置为 指定的位置。
vim kg_demo_movie_mapping.ttl 进行更改
这里修改规则其实,跟RDFs的语法类似,将类与属性都要写上。

4. 使用下面的命令将我们的数据转换为RDF

./dump-rdf -o /root/yhz/kg_demo_test/kg_demo_movie.nt ./kg_demo_movie_mapping.ttl

注意实验:这一步的地址有点问题。

5. 与计算机进行交互,有两种方式

两种方式都要从这一步开始。
进入d2rq目录,使用下面命令启动 D2R Server

d2r-server /root/yhz/kg_demo_testkg_demo_movie_mapping.ttl

这一步主要目的是生成相应的tdb数据

两种方式:
方式一: 浏览器中查询。

	
	1. 进入浏览器操作
	默认端口是2020,在浏览器输入“http://服务器地址:2020/”
	
方式二: 通过脚本进行 (以知乎大佬的代码为例子)

	from SPARQLWrapper import SPARQLWrapper, JSON

	sparql = SPARQLWrapper("http://服务器地址:2020/sparql")
	sparql.setQuery("""
		PREFIX : <http://www.kgdemo.com#>
		PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

		SELECT ?n WHERE {
		  ?s rdf:type :Person.
		  ?s :personName '巩俐'.
		  ?s :hasActedIn ?o.
		  ?o :movieTitle ?n.
		  ?o :movieRating ?r.
		FILTER (?r >= 7)
		}
	""")
	sparql.setReturnFormat(JSON)
	results = sparql.query().convert()

	for result in results["results"]["bindings"]:
		print(result["n"]["value"])

四:从这里说明一下:使用jena上面的两种交互方式可以跳过直接从这一步开始,我从头一步一步操作主要是为了验证环境,了解流程。

6. 使用Apache Jena 推理

创建一个文件夹(根据需要命名,这里创建了一个tdb文件夹),进入‘Apache-Jena-3.6’文件夹里bat文件夹,使用 tdbloaser

首先:将之前我们得到的RDF数据以TDB的方式存储。为下面的启动fuseki-server做准备
使用下面命令:(这里巨坑与windows有去别,很容易踩坑)

tdbloader --loc="/root/yhz/kg_demo_test/jena_linux/tdb" "/root/yhz/kg_demo_test/kg_demo_movie.nt"

“--loc”指定tdb存储的位置,即刚才我们创建的文件夹;
第二个参数是由Mysql数据转换得到的RDF数据。

7. 进入“apache-jena-fuseki-X.X.X”文件夹**,运行“./fuseki-server --config=ConfigFile”,然后退出

程序会在当前目录自动创建run文件。

8. 将我们的本体文件“ontology.owl”移动到“run”文件夹下的“databases”文件夹中,并将“owl”后缀名改为“ttl”(这里的相关文件都可以在windows方式中知乎大佬项目中下载的到,或者自己编写)

9. 在“run”文件夹下的“configuration”中,我们创建名为“fuseki_conf.ttl”的文本文件(取名没有要求),加入如下内容:

@prefix :      <http://base/#> .
@prefix tdb:   <http://jena.hpl.hp.com/2008/tdb#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ja:    <http://jena.hpl.hp.com/2005/11/Assembler#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix fuseki: <http://jena.apache.org/fuseki#> .


:service1        a                fuseki:Service ;
fuseki:dataset                    <#dataset> ;
fuseki:name                       "kg_demo_movie" ;
fuseki:serviceQuery               "query" , "sparql" ;
fuseki:serviceReadGraphStore      "get" ;
fuseki:serviceReadWriteGraphStore "data" ;
fuseki:serviceUpdate              "update" ;
fuseki:serviceUpload              "upload" .


<#dataset> rdf:type ja:RDFDataset ;
	ja:defaultGraph <#model_inf> ;
	.

<#model_inf> a ja:InfModel ;
	ja:baseModel <#tdbGraph> ;

#本体文件的路径  TODO: 路径自定
ja:content [ja:externalContent <file:root/yhz/jena/apache-jena-fuseki-3.5.0/run/databases/ontology.ttl> ] ;

#启用OWL推理机
ja:reasoner [ja:reasonerURL <http://jena.hpl.hp.com/2003/OWLFBRuleReasoner>] .

<#tdbGraph> rdf:type tdb:GraphTDB ;
tdb:dataset <#tdbDataset> ;
.
# TODO 路径
<#tdbDataset> rdf:type tdb:DatasetTDB ;
tdb:location "/root/yhz/jena/tdb" ;

10. 再次运行

./fuseki-server

注意:多次运行的时候会出现报错这个时候可以先删除 tdb 文件中的所有文件
进入tdb文件夹操作命令如下
rm -f *

11. web 交互网址:

浏览器访问“http://服务器地址:3030/
脚本进行交互:

PREFIX : <http://www.kgdemo.com#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT * WHERE {
?x :movieTitle '功夫'.
?x ?p ?o.
}

12. 进行问答交流

Jena_sparql_endpoint.py 修改endpoint_url="http://服务器地址:3030/kg_demo_movie/query"
运行 query_main.py文件,
这里的url进行修改。

链接:https://pan.baidu.com/s/1By5q8246b2Z4IALCX9uq8g
提取码:w68r
–来自百度网盘超级会员V5的分享

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QuietNightThought

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值