Neo4j图数据库简介、安装、使用、导入RDF文件

Neo4j图数据库简介、安装、使用、导入RDF文件

一、简介

图论:图论是数学的一个分支,它以图为研究对象。图论中的图是由若干给定的点及连接两点的线所构成的图形,这种图形通常用来描述某些事物之间的某种特定关系,用点表示事务,用连接两点的线表示相应两个事物间具有这种关系。

图数据库:基于图论实现的新型数据库,图数据库的存储结构和查询方式都是以图论为基础。

Neo4j:Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中,因此他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。

Neo4j具备简单的查询语言Neo4j CQL,支持UNIQUE约束,支持完整的ACID规则,可以将数据导出到JSON和XLS格式。

二、安装

1. 安装

Mac系统可以使用Homebrew一键安装:

brew install neo4j

Windows可以前往官网下载安装,选择Community Server版本。下载解压后,配置相应的环境变量:

在这里插入图片描述

同时在path中加入%NEO4J_HOME%\bin;

2. 启动
neo4j start

启动成功后通过http://localhost:7474即可访问到,第一次进入时默认的账户密码都是neo4j。

三、使用

Neo4j是基于节点+关系的架构,保存了图形数据的基本元素。同时支持基础数据元素独特的CQL查询语法,快速方便的检索、构建复杂的图表关系结果。

通过一个简单的例子来了解节点、属性、关系的概念。

创建两个人,张三和李四,他们各自拥有年龄、性别、姓名属性,他们的关系是张三喜欢李四。

在代码区输入以下代码,点击运行。

create (p1:People {name:"张三",age:"20",sex:"男"})-[r:LIKES{since:"2020"}]
->(p2:People {name:"李四",age:"18",sex:"女"})

代码含义:create表示创建,p1是自己起的变量名,People是节点的类型,{name:“张三”,age:“20”,sex:“男”}是属性。[r:LIKES{since:“2020”}]表示两个节点间的关系,具有方向性,并且包含一个属性since。

得到如下结果:
在这里插入图片描述

删除节点和关系:

match (n:Person)-[r]-() delete n,r

节点(Nodes):通常表示一个实体和实体包含的属性。

关系(Relationshipes):表示节点和节点间的关系,具有方向性。

属性(Properties):是名称(或键)为字符串的命名值。支持的属性值:字符串,数字,布尔值。

标签(Lables):将节点分组为集合。一个节点可以标记位任意数量的标签。

四、导入RDF(ttl)文件

4.1 下载扩展插件

将RDF文件导入Neo4j中需要使用相应的插件。

下载地址:https://github.com/neo4j-labs/neosemantics/releases

  1. 根据Neo4j版本选择对应的jar包,下载好后将jar包移动到neo4j安装目录下的/plugins文件夹里。

在这里插入图片描述

  1. 修改conf/neo4j.conf文件,在最后一行添加:

    dbms.unmanaged_extension_classes=n10s.endpoint=/rdf
    
  2. 重启Neo4j,在命令栏中输入以下语句:

    :GET /rdf/ping
    

    得到如下结果,则说明安装成功:

    {"ping":"here!"}
    

在这里插入图片描述

4.2 导入RDF文件

首先初始化一些配置,在命令栏中输入:

CALL n10s.graphconfig.init();
CREATE CONSTRAINT n10s_unique_uri ON (r:Resource)
ASSERT r.uri IS UNIQUE;

导入数据:

CALL n10s.rdf.import.fetch("file:///D:\\neo4j-community-3.5.5\\import\\some_rdf_file.rdf", "RDF/XML");

文件路径为rdf文件的路径(本地或远程),本地文件需要在路径前加上file:\\\

文件格式可以是:Turtle, N-Triples, JSON-LD, RDF/XML, TriG and N-Quads,如果导入失败,尝试将要导入的文件放到neo4j的import目录下,再重新导入。

删除导入的文件:

drop constraint on (uri:Resource) assert uri.uri is unique

或:

CALL n10s.rdf.delete.fetch("https://github.com/neo4j-labs/neosemantics/raw/3.5/docs/rdf/deleteRDF/dataset.ttl","Turtle", {
  typesToLabels: true,
  keepCustomDataTypes: true,
  handleMultival: 'ARRAY'
});

创建索引和删除索引:

create index on: Resources(uri)
drop index on: Resources(uri)

清空所有数据:

MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r
  • 6
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值