知识图谱构建5——Jena 和 Fuseki安装与SPARQL查询
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 ,结果如下:
-
创建数据库
-
上传数据
-
选择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
- sparql和elasticsearch构建知识图谱搜索引擎
- [知识图谱构建] 一.Neo4j图数据库安装初识及药材供应图谱实例
- JENA的安装和配置+Myeclipse的破解及安装+sparql查询的例子
- Jena搭建SPARQL查询RDF数据
- 知识图谱构建摸索
- Jena搭建SPARQL查询RDF数据
- 知识图谱构建技术综述
- ☆☆构建知识图谱,让自己更值钱
- 知识图谱构建技术综述
- 技术文章 | 项目实战:如何构建知识图谱
- 3-知识图谱构建-知识图谱-自然语言处理
- Jena搭建SPARQL查询RDF数据
- Jena搭建SPARQL查询RDF数据
- 技术人,为什么需要构建知识图谱 (转载)
- 技术人,为什么需要构建知识图谱
- 医学知识图谱构建技术与研究进展
- jena SPARQL查询的简单应用
- Jena搭建SPARQL查询RDF数据
- 大规模知识图谱的构建、推理及应用
- 知识图谱基础知识之二——知识图谱的构建方法