基于jena的知识推理机复现「建议收藏」

基于jena的知识推理机复现「建议收藏」知识推理机复现因csdn语法支持与github不太一样,欢迎访问本文github版:https://github.com/JimXiongGM/KnowledgeBasedSearch/blob/master/知识推理机复现.md目录mysql8.0准备d2rq工具安装与使用Apachejena+jena-fuseki本文复现基于jena的知识推理机,并把详细过程整理如下。…

大家好,又见面了,我是你们的朋友全栈君。

知识推理机复现

因csdn语法支持与github不太一样,欢迎访问本文github版:https://github.com/JimXiongGM/KnowledgeBasedSearch/blob/master/知识推理机复现.md

目录

本文复现基于jena的知识推理机,并把详细过程整理如下。遇到的主要问题是jena版本更新后有一些配置变化。

主要参考资料是原文(by simmerchan)资料

将如下文件放入/root/xiazai/。点击可进入文件下载页面。

  1. KG-demo-for-movie-master.zip
  2. d2rq-0.8.1.tar.gz
  3. mysql-connector-java-5.1.47.tar.gz
  4. apache-jena-3.12.0.tar.gz
  5. apache-jena-fuseki-3.12.0.tar.gz

mysql 8.0准备

安装部分参见MySQL8.0环境搭建

cd /root/xiazai;
unzip KG-demo-for-movie-master.zip;
# 移动到该路径,否则报错 The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
cp ./KG-demo-for-movie-master/data/kg_demo_movie.sql /var/lib/mysql-files/;
mysql -u root -p
输入密码

进入mysql shell

create database kg_demo_movie;
use kg_demo_movie;
source /var/lib/mysql-files/kg_demo_movie.sql;
-- 查看结果
show databases;
exit

数据准备完成。

d2rq工具安装与使用

这是一个自动将关系型数据库转为三元组的工具,只需要下载安装包和mysql的connector。运行如下命令即可。

注意,这里使用mysql5.0+的jar包,而不是使用8.0+的,否则会报错。

另外,kg_demo_movie_mapping.ttl中的连接密码需要自行修改。本文直接使用原作者提供的ttl文件。

# 需要java version >= 1.5
java -version;
cd /root/xiazai;
tar -zxvf d2rq-0.8.1.tar.gz -C /opt;
tar -zvxf mysql-connector-java-5.1.47.tar.gz;
cp mysql-connector-java-5.1.47/mysql-connector-java-5.1.47-bin.jar /opt/d2rq-0.8.1/lib/;

cd /opt/d2rq-0.8.1;
# 注意! 需要自行修改mysql连接密码
cp /root/xiazai/KG-demo-for-movie-master/kg_demo_movie_mapping.ttl ./
# 备忘:使用自带的工具生成.ttl文件
# ./generate-mapping -u root -p root -o test.ttl --verbose jdbc:mysql:///fzzk_use?useUnicode=true&characterEncoding=utf8&useSSL=false
./dump-rdf -o kg_demo_movie.nt kg_demo_movie_mapping.ttl;
# 测试
nohup ./d2r-server kg_demo_movie_mapping.ttl &
./d2r-query kg_demo_movie_mapping.ttl "SELECT * { ?s <http://www.kgdemo.com#hasActedIn> ?o } LIMIT 10";

有趣的是,该工具提供了SPARQL查询的webUI,打开http://master:2020/snorql即可使用。

Apache jena + jena-fuseki

cd /root/xiazai;
tar -zxvf apache-jena-3.12.0.tar.gz -C /opt/;
tar -zxvf apache-jena-fuseki-3.12.0.tar.gz -C /opt/;

# 使用jena将nt文件载入
cd /opt/apache-jena-3.12.0;
mkdir -p /data/jena/kg_demo_movie_database/;
./bin/tdbloader --loc=/data/jena/kg_demo_movie_database /opt/d2rq-0.8.1/kg_demo_movie.nt;

# 初始化jena-fuseki
cd /opt/apache-jena-fuseki-3.12.0/;
./fuseki-server
# ctrl+z 运行后会自动创建run文件夹
# 开启远程连接权限
sed -i 's/= localhostFilter/= anon/g' ./run/shiro.ini;

# 重点。更新原作者的配置文件
# 值得注意的是,这里不需要原作者从protege中导出的owl文件
echo '@prefix fuseki: <http://jena.apache.org/fuseki#> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @prefix tdb: <http://jena.hpl.hp.com/2008/tdb#> . @prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> . @prefix : <#> . <#service1> rdf:type fuseki:Service ; fuseki:name "kg_demo" ; # http://host:port/tdb fuseki:serviceQuery "sparql" ; # SPARQL query service fuseki:serviceQuery "query" ; # SPARQL query service (alt name) fuseki:serviceUpdate "update" ; # SPARQL update service fuseki:serviceUpload "upload" ; # Non-SPARQL upload service fuseki:serviceReadWriteGraphStore "data" ; # SPARQL Graph store protocol (read and write) # A separate read-only graph store endpoint: fuseki:serviceReadGraphStore "get" ; # SPARQL Graph store protocol (read only) fuseki:dataset <#dataset> ; . <#dataset> rdf:type ja:RDFDataset ; ja:defaultGraph <#modelInf> ; . <#modelInf> rdf:type ja:InfModel ; ja:reasoner [ ja:reasonerURL <http://jena.hpl.hp.com/2003/GenericRuleReasoner>; # ubuntu ja:rulesFrom <file:///opt/apache-jena-fuseki-3.12.0/run/databases/rules.ttl>; ]; ja:baseModel <#g> ; . <#g> rdf:type tdb:GraphTDB ; # ubuntu tdb:location "/data/jena/kg_demo_movie_database" ; tdb:unionDefaultGraph true ;' > ./run/configuration/fuseki_conf.ttl

# 重点。更新原作者的推理文件
echo '@prefix : <http://www.kgdemo.com#> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . [ruleComedian: (?p :hasActedIn ?m), (?m :hasGenre ?g), (?g :genreName "喜剧") -> (?p rdf:type :Comedian)] [ruleInverse: (?p :hasActedIn ?m) -> (?m :hasActor ?p)] ' > ./run/databases/rules.ttl;

# 直接启动即可,无需带参数
./fuseki-server
# 后台启动
# nohup ./fuseki-server >> /logs/jena_fuseki.log &

打开http://localhost:3030,输入命令查询喜剧演员

PREFIX : <http://www.kgdemo.com#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

SELECT ?n WHERE {
?x rdf:type :Comedian.
?x :personName ?n.
}
limit 10
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/142992.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Windows线程漫谈界面线程和工作者线程

    每个系统都有线程,而线程的最重要的作用就是并行处理,提高软件的并发率。针对界面来说,还能提高界面的响应力。线程分为界面线程和工作者线程,界面实际就是一个线程画出来的东西,这个线程维护一个“消息队列”

    2021年12月25日
  • md5 java 工具类_javamd5工具类

    md5 java 工具类_javamd5工具类importjava.io.UnsupportedEncodingException;importjava.security.MessageDigest;importjava.util.HashMap;importjava.util.Map;importjava.util.concurrent.locks.ReentrantLock;importorg.apache.commons.l…

  • Python set集合 – Python零基础入门教程

    Python set集合 – Python零基础入门教程目录一.set集合简介二.set集合常用函数三.set集合运算符四.猜你喜欢零基础Python学习路线推荐: Python学习目录 >>&#16

  • linux卸载nps,Linux NPS服务部署

    linux卸载nps,Linux NPS服务部署一.安装NFS服务rpm-qa|grepnfsrpm-qa|greprpcbindyuminstallnfs-utils#如果检查的结果是没有安装,则使用该命令安装/etc/init.d/rpcbindstart/etc/init.d/nfsstart二.NFS的软件结构1.主要配置文件:/etc/exports这个档案就是NFS的主要配置文件了!…

  • 电工电子电力拖动及自动化技术考核实训台QY-DG800D[通俗易懂]

    电工电子电力拖动及自动化技术考核实训台QY-DG800D[通俗易懂]一、产品简介QY-DG800D高性能电工电子电拖及自动化技术实训与考核装置是针对我国高等院校、职业技术教育的需求而开发的综合性实训考核装置。装置融合了电工、电子、电力拖动、PLC、变频器等实训内容,配备多块可自由组合的实训挂箱,适用各类职业院校、中专、技校电工、电子、电拖、机电一体化、自动化等专业的教学和从事相关专业的技术人员实训考核。二、产品特点装置实训屏上380V交流输出处设有单片机全程监控的一套过流保护装置,相间、线间直接短路或过载,电流超过设定值,系统即告警并切断总电源,确保设备安全.

  • Mycat读写分离的简单实现「建议收藏」

    Mycat读写分离的简单实现「建议收藏」文章目录1、Mycat读写分离的配置1.1、Mycat是什么1.2、Mycat能干什么1.2.1、数据库的读写分离1.2.2、数据库读写分离图解1.2.3、数据库分库分表1.2.3.1、水平拆分(分库)1.2.3.2、垂直拆分(分表)1.3、Mycat的搭建1.3.1、前期准备1.3.2、搭建环境1.3.3、Mycat的安装启动关闭1.3.4、Mycat的配置文件1.3.5、server.xml文件的配置1.3.6、schema.xml文件的配置1.4、测试读写分离1、Mycat读写分离的配置1.1、M

    2022年10月13日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号