一.前言
webProtégé软件是斯坦福大学医学院生物信息研究中心基于Java语言开发的本体编辑和知识获取软件,或者说是本体开发工具
Neo4j是一个高性能的图形数据库,也可以被看作是一个高性能的图引擎
webprotege里的本体也能以图的形式表现,希望将webprotege的本体在neo4j里展示
二. webprotege导出owl文件
参考的某乎相关教程,neo4j的导入命令中的owl文件格式为 ‘RDF/XML’,此处姑且直接导出该类型文件(其他类型文件未测试)
下载后解压后放在一个固定的目录里面
{将owl文件通过jar包转换成rdf文件,再导入
①转换:
1>owl文件还是上述creature.owl文件(protege导出的)
2>jar包:rdf2rdf-1.0.1-2.3.1.jar下载
3>将jar包与owl文件放在同一目录下
4> 进入owl文件所在目录,进入cmd,输入并执行命令
java -jar rdf2rdf-1.0.1-2.3.1.jar 目标文件.owl 要转成的文件.rdf
}
三. neo4j导入owl文件
3.1 下载相关jar包,用于neo4j使用owl文件
1.下载扩展neosemantics jar包,将jar复制到neo4j/plugins目录下
注:**
neosemantics jar包必须与Neo4J版本相匹配!
**
github链接-选择版本 2.修改配置文件:
在neo4j/neo4j.conf文件中添加以下内容:
dbms.unmanaged_extension_classes=n10s.endpoint=/rdf
3.重新启动 neo4j
4.访问web端neo4j并登录,查看列表中是否包含可扩展的rdf、owl
在查询语句输入栏输入语句:call dbms.procedures() 检查插件安装成功。
5.另外还需要用到apoc,我是用的是apoc-4.4.0.3-all版本,放在neo4j的plugins目录下。
四.数据导入
将插件n10s-4.x.x.x.jar包复制到neo4j的plugins目录下(版本必须对应)
create constraint n10s_unique_uri on (r:Resource) assert r.uri is unique
执行 call n10s.graphconfig.init()
在neo4j的cypher语句窗口执行:
call n10s.rdf.import.fetch(‘file:///D:/rdfs/upb.owl’, ‘RDF/XML’)
五.更新补充neo4j
MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r
call n10s.graphconfig.init()
call n10s.rdf.import.fetch('file:///D:/rdfs/urn_webprotege.owl', 'RDF/XML',{handleVocabUris: "IGNORE"})
OWL/RDF导入neo4j前缀消除
网上的两个参数选择,以3的版本为例,选择这个插入语句(只用handleVocabUris: "IGNORE"就可以了)
typesToLabels: false,//生成实例与类相连,无类别
handleVocabUris: "IGNORE",生成实例与类别不相连,有类别标签
清除生成的节点前缀
直接在neo4j上用cypher语句修改
http://www.xxx.com#为你的前缀名,substring(n.uri,22)是一个子字符串函数,数下你的前缀多长,修改长度,http://www.xxx.com#是22
match(n) where n.uri=~"http://www.kgtest.com#.*" set n.uri=substring(n.uri,22) return n