Jena 和 Fuseki安装与SPARQL查询
简介
Apache Jena是一个开源的Java语义网框架(open source Semantic Web Framework for Java),用于构建语义网和链接数据应用。
架构图如下:
TDB:用于存储RDF的组件
Jena提供了RDFS、OWL和通用规则推理机
Fuseki:Jena提供的SPARQL服务器,也就是SPARQL endpoint
安装
下载地址如下:
http://jena.apache.org/download/index.cgi
http://central.maven.org/maven2/org/apache/jena/apache-jena-fuseki/3.8.0/
下载安装包解压到自己电脑目录下,进行环境配置即可:
- 环境配置
path的路径上增加:
%JENA_HOME%\bat;%JENA_HOME%\bin
- 安装成功
注意要将jdk更改为1.80,否则会出现错误
jdk的切换见:https://blog.csdn.net/weixin_41104835/article/details/88636642
基本使用
- 将RDF数据转换以TDB的方式存储
tdbloader.bat --loc="F:\AZtools\apache-jena-3.10.0\tdb" "F:\AZtools\d2rq-0.8.1\kg_movie.nt"
注意:“–loc”指定tdb存储的位置;第二个参数是由Mysql数据转换得到的RDF数据。
-
指定位置已经有了文件夹
-
tdb文件中已生成数据
-
通过Fuseki进行开启服务
进入fuseki目录,执行“fuseki-server.bat”,然后退出。程序会为我们在当前目录自动创建“run”文件夹。
将我们的本体文件“kg_movie_ontology.owl”移动到“run”文件夹下的“databases”文件夹中,并将“owl”后缀名改为“ttl”。
在“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_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> ;
#本体文件的路径
ja:content [ja:externalContent <file:///F:/AZtools/apache-jena-fuseki-3.8.0/run/databases/kg_movie_ontology.ttl> ] ;
#启用OWL推理机
ja:reasoner [ja:reasonerURL <http://jena.hpl.hp.com/2003/OWLFBRuleReasoner>] .
<#tdbGraph> rdf:type tdb:GraphTDB ;
tdb:dataset <#tdbDataset> ;
.
<#tdbDataset> rdf:type tdb:DatasetTDB ;
tdb:location "F:/AZtools/apache-jena-3.10.0/tdb" ;
.
- 再次执行“fuseki-server.bat”
出现错误:
[2019-03-18 20:13:18] Server INFO Apache Jena Fuseki 3.8.0
[2019-03-18 20:13:18] Config INFO FUSEKI_HOME=F:\AZtools\apache-jena-fuseki-3.8.0\.
[2019-03-18 20:13:18] Config INFO FUSEKI_BASE=F:\AZtools\apache-jena-fuseki-3.8.0\run
[2019-03-18 20:13:18] Config INFO Shiro file: file://F:\AZtools\apache-jena-fuseki-3.8.0\run\shiro.ini
[2019-03-18 20:13:19] Config INFO Configuration file: F:\AZtools\apache-jena-fuseki-3.8.0\run\config.ttl
[2019-03-18 20:13:19] riot WARN [line: 5, col: 9 ] Bad IRI: <F:\AZtools\apache-jena-fuseki-3.8.0\run\config.ttl#> Code: 4/UNWISE_CHARACTER in PATH: The character matches no grammar rules of URIs/IRIs. These characters are permitted in RDF URI References, XML system identifiers, and XML Schema anyURIs.
[2019-03-18 20:13:19] Config INFO Load configuration: file:///F:/AZtools/apache-jena-fuseki-3.8.0/run/configuration/fuseki_conf.ttl
[2019-03-18 20:13:19] Server ERROR Exception in initialization: Failed reading assembler description: java.nio.charset.MalformedInputException: Input length = 1
[2019-03-18 20:13:19] WebAppContext WARN Failed startup of context o.e.j.w.WebAppContext@2289aca5{/,file:///F:/AZtools/apache-jena-fuseki-3.8.0/webapp/,UNAVAILABLE}
org.apache.jena.sparql.ARQException: Failed reading assembler description: java.nio.charset.MalformedInputException: Input length = 1
-
解决方案
找了一圈、尝试了好久也没有解决。。。。。
暂时先放在这了。。。。。。。。。 -
问题解决不了,可是还要往下走啊,只有手动来了:
删除文件tdb,以及run文件
执行“fuseki-server.bat”,如下
在浏览器输入http://localhost:3030 ,结果如下:
扫描二维码关注公众号,回复: 12496697 查看本文章 -
创建数据库
-
上传数据
-
选择RDF数据
-
点击查询数据,以及显示的结果如下:
(补充)更正上面出现错误的方法
参考:https://www.jianshu.com/p/80de773c5f23
突然发现不需要更改owl本体文件,以及添加配置文件信息就可以进行创建数据库查询了,具体如下(很简单):
- 将元组数据导入到TDB数据库中
进入jena的目录下F:\AZtools\apache-jena-3.10.0运行命令:
tdbloader.bat --loc="F:\AZtools\apache-jena-3.10.0\tdb" "F:\AZtools\d2rq-0.8.1\kg_movie.nt"
结果:该tdb文件夹下已有数据
- 运行fuseki服务器
进入fuseki目录下,运行命令:
fuseki-server --loc=F:\AZtools\apache-jena-3.10.0\tdb /kg_movie
–loc的参数是上一步TDB数据库的路径
kg_movie是显示的数据库名
结果:fuseki目录下生成run文件
在浏览器输入http://localhost:3030
显示了数据库名kg_movie:
进行查询:
也可以得到如下效果:
参考:
[1]https://zhuanlan.zhihu.com/p/42773071
[2]https://zhuanlan.zhihu.com/p/33224431
[3]https://zhuanlan.zhihu.com/p/56449967