neo4j导入protege的owl文件

本文主要讨论,neo4j导入 rdf/xml文件 和 rdf文件 的区别

注:1. owl文件用的是protege导出的
       2.参考某乎::如何将owl/RDF文件导入neo4j
       3.本文主要对比两种导入方式的不同之处

一.前言

    Protégé软件是斯坦福大学医学院生物信息研究中心基于Java语言开发的本体编辑和知识获取软件,或者说是本体开发工具
    Neo4j是一个高性能的图形数据库,也可以被看作是一个高性能的图引擎
    protege里的本体也能以图的形式表现,希望将protege的本体在neo4j里展示

二. protege导出owl文件

    参考的某乎相关教程,neo4j的导入命令中的owl文件格式为 ‘RDF/XML’,此处姑且直接导出该类型文件(其他类型文件未测试)
neo4j导入protege的owl文件_第1张图片
踏踏的creature.owl文件:
(如果需要,可以直接用我这个~
链接:https://pan.baidu.com/s/1XkG3GE4RwoMCWwo8qy1u1w
提取码:mgb2)
neo4j导入protege的owl文件_第2张图片

三. 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=semantics.extension=/rdf
3.重新启动 neo4j
4.访问web端neo4j并登录,查看列表中是否包含可扩展的rdf、owl
    在查询语句输入栏输入语句:call dbms.procedures()
(下图仅供参考—踏踏也不确定哪个是最主要的,反正塔塔 stop后start,就出来了一堆semantics开头的东东。。。) neo4j导入protege的owl文件_第3张图片

3.2 两种导入方法对比

3.2.1 方法一:直接导入owl文件(不可取!)

(此owl文件是protege导出的RDF/XML格式的owl文件)

①导入:neo4j输入命令:

CALL semantics.liteOntoImport('file:///C:/Users/user/Desktop/creature.owl', 'RDF/XML')  

(中文的owl本体文件也可以哦~)

  结果:只成功加载了19个元素
neo4j导入成功示意图
②查询所有节点:

match(n) return n

(双击可查看折叠的关系链~)neo4j导入protege的owl文件_第4张图片
由图可知,直接导入protege的RDF/XML格式的文件不可取—>无实例

3.2.1 方法二:将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 creature.owl creature.turtle

②导入neo4j:
(此处,踏踏先将neo4j stop了,把自己的第二个图数据库(E:\neo4j-community-3.5.26\data\databases 下可以自己添加图数据库哦,具体请百度 )删了,重新启动的neo4j)

在neo4j里先输入:

CREATE INDEX ON:Resource(uri)

再输入:

CALL semantics.importRDF('file:///C:/Users/user/Desktop/creature.turtle', 'RDF/XML',{})

导入成功:neo4j导入protege的owl文件_第5张图片
③neo4j中具体内容:
查询所有节点:

match(n) return n

neo4j导入protege的owl文件_第6张图片
由图可知,导入结果依然不理想,虽然能将实例导入,但是原owl文件的实例与所属类的关系不存在了,实例的属性信息不存在,会多出几个不被需要的节点

3.3 对比小结

    综上,还是第二种方法更可靠一些,但也并不完美,还需人工操作neo4j以达到预期图库
    掌握了规律会使工作更流畅哦~
    如有更好更完美的导入方式,欢迎评论哦~ 踏踏不胜感激~

四. 本次使用的cypher语句(菜鸟使用neo4j)

①清空所有数据

MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r

②查询整个图形数据库

 match(n) return n

③导入owl文件
方法一:

CALL semantics.liteOntoImport('file:///C:/Users/user/Desktop/creature.owl', 'RDF/XML')  

方法二:

CREATE INDEX ON:Resource(uri)

CALL semantics.importRDF('file:///C:/Users/user/Desktop/creature.turtle', 'RDF/XML',{})

你可能感兴趣的:(小tips,KG,neo4j)