本文主要是对Neo4j属性图模型简单的介绍。

Neo4j是什么?

Neo4j是一款是由java语言实现的图数据库,图形数据库将数据以图的数据结构进行存储和管理,并且能够以高度可问的方式优雅地表示任何种类的数据,而Neo4j是基于属性图模型(Property Graph Model)的数据库。

属性图模型定义

在属性图中存在如下元素:

1、 实体(Entity)

    a) 节点(Node)

    b) 关系(Relationship)

  2、 边/路径(Path)

  3、 记号(Token)

    a) 标签(Label)

    b) 关系类型(Relationship Type)

    c) 属性key(Property Key)

  4、 属性(Property)

1.实体

1、每一个Neo4j图数据库中的实体都拥有一个用于区分实体与实体之间是否相等的唯一标识;

2、每一个Neo4j图数据中的实体都可以分配一组属性key以及对应的属值(value),同一个实体中的属性key都是唯一的,并且不能为空的以及空字符串;

1.1.节点

1、Neo4j图数据库中节点都是建立在实体的之上的一种抽象,拥有属性和属性值;

2、一个节点可以被分配一组唯一的标签;

3、一个节点可以有0个或者多个向外或向内(边/路径的指向,分为向外和向内两种)的关系;

1.1.1.节点例子1、

有一个图他只有一个节点,这个节点只有一个属性name如下图所示:

单节点例子
1.1.2.节点例子2

有一个图有三个节点,如下图所示:

节点例子2

1.2.关系

1、关系是一个建立两个节点之间关系,由源节点指向目标节点的实体;

2、一个向外的关系,是源节点由自身关联目标节点的一种关系;

3 一个向内的关系,是源端节点自身被关联的一种关系;

4、每一个关系都必须分配一个且唯一的关系类型;

5、关系也是实体,可以拥有属性和属性值;

1.2.1.关系例子1

有如下图关系:

关系例子1

图中的的关系有Student和Teacher两种关系类型, Teacher这种关系类型有一个roles属性,它的类型为数组类型,而Student这个关系类型中的Class属性的数据类型为String。

1.2.2.关系例子2

自关联关系

自关联关系

2.边/路径

1、 边/路径表示一个属性图的关系,由一系列交替的节点和关系组成;

2、 一个边/路径总是由开始于节点,终止于节点(成也萧何,败也萧何);

3、 最小的边/路径只包含单个节点,这类型的边叫做空边/空路径;

4、 边/路径有一个长度(深度),它是大于或等于0的整数,等于路径中的关系数;

2.2.1.边/路径例子1

图数据库中边/路径的长度等于0,如下图:

边/路径例子1
2.2.2.边/路径例子2

图中边/路径的长度等于1,如下图:

边/路径例子2.1
边/路径例子2.2

3.记号

记号是一个非空的Unicode字符串。

3.1.标签

标签是一个分配给节点的一个唯一的记号。

标签

3.2.关系类型

关系类型是被分配给关系的一个唯一的记号

3.3.属性key

属性key是一个存在于实体中的唯一属性字段,类似于Json对象中的key。

3.3.属性

属性由一对属性key和属性值组成,类似于Json字符串中的key:value。

到这里就结束了对Neo4j属性图模型的基本介绍了,祝大家生活愉快!

原文地址;https://www.jianshu.com/p/f7ede1586f97

Neo4j属性图模型简单介绍的更多相关文章

  1. 图像切割之(五)活动轮廓模型之Snake模型简单介绍

    图像切割之(五)活动轮廓模型之Snake模型简单介绍 zouxy09@qq.com http://blog.csdn.net/zouxy09 在"图像切割之(一)概述"中咱们简单了 ...

  2. Android Mediaplayer各种属性和方法简单介绍

    主要涉及类:MediaPlayer (1) 当一个MediaPlayer对象被创建或者调用reset()方法之后,它处于空闲状态,调用release()方法后处于结束状态 1,一个MediaPlaye ...

  3. netty学习(一)--linux下的网络io模型简单介绍

    linux的内核将全部的外部设备都看作一个文件来操作,对一个文件的读写操作会调用内核提供的系统命令 ,返回一个file descriptor(fd.文件描写叙述符).而对一个socket的读写也会有对 ...

  4. 网络 IO 模型简单介绍

    一.同步阻塞 IO(BIO) 当用户线程调用了 read 系统调用,内核(kernel)就开始了 IO 的第一个阶段:准备数据.很多时候,数据在一开始还没有到达(比如,还没有收到一个完整的Socket ...

  5. UML动态模型图简单介绍

    UML动态模型图描述了系统动态行为的各个方面,包括用例图.序列图.协作图.活动图和状态图.下面就每种图做一个简单介绍: 用例图 用例图描述系统外部的执行者与系统提供的用例之间的某种联系.所谓用例是指对 ...

  6. 简单介绍一下R中的几种统计分布及常用模型

    统计学上分布有很多,在R中基本都有描述.因能力有限,我们就挑选几个常用的.比较重要的简单介绍一下每种分布的定义,公式,以及在R中的展示. 统计分布每一种分布有四个函数:d――density(密度函数) ...

  7. CMake 简单介绍 图

    http://tech.uc.cn/?p=914     CMake特点 CMake需要用户用CMake规范的语法编写CMake脚本,该语法简单易用,入门极其顺手 原生支持 C/C++/Fortran ...

  8. 向量空间模型(VSM)在文档相似度计算上的简单介绍

    C#实现在: http://blog.csdn.net/Felomeng/archive/2009/03/25/4023990.aspx 向量空间模型(VSM:Vector space model)是 ...

  9. Git flow的分支模型与及经常使用命令简单介绍

    Git flow是git的一个扩展集,它基于Vincent Driessen 的分支模型,文章"A successful Git branching model"对这一分支模型进行 ...

随机推荐

  1. 基于MFC的实时可视化项目中视图刷新消息的严谨使用

    在实时可视项目中,视图的实时刷新显示对软件的体验感来说非常重要,当算法的效率达到实时,比如一秒40帧,如果实时显示帧率更不上,则体验感将大大折扣,让用户感觉你的算法并没有40帧,当然最关键的是解决显示 ...

  2. 大文件传输 分片上传 上传id 分片号 授权给第三方上传

    https://www.zhihu.com/question/39593108 作者:ZeroOne链接:https://www.zhihu.com/question/39593108/answer/ ...

  3. C++写矩阵的转置

    (2019年2月19日注:这篇文章原先发在自己github那边的博客,时间是2017年2月5日) 对于任意非n阶矩阵的转置,用c++应该怎么写代码,思考了一下,发现并没有那么简单,上网找到了一个比较好 ...

  4. 左神算法进阶班5_4设计可以变更的缓存结构(LRU)

    [题目] 设计一种缓存结构,该结构在构造时确定大小,假设大小为K,并有两个功能: set(key, value):将记录(key, value)插入该结构. get(key):返回key对应的valu ...

  5. .Net Core微服务系列--服务发现

    什么是服务发现 首先我们先思考一个问题,当我们在浏览器中输入一个域名比如baidu.com,然后发生了什么才能让我们访问到百度的网页?简单来说,浏览器会首先从主机的hosts文件中查看是否有baidu ...

  6. 可怜的baidu,可怜的音库

    baidu词典中用的中文音库竟然全都是汉典的中文音库   真可怜,baidu这么大个公司竟然连着1250个发音都懒得录   汉典的音库布都是同一格式,导致一部分音频文件MCI函数无法播放   真他妈可 ...

  7. java虚拟机(十四)--字节码指令

    字节码指令其实是很重要的,在之前学习String等内容,深入到字节码层面很容易找到答案,而不是只是在网上寻找答案,还有可能是错误的. PS:本文基于jdk1.8 首先写个简单的类: public cl ...

  8. Web前后端缓存技术(缓存的主要作用是什么)

    Web前后端缓存技术Web前后端缓存技术(缓存的主要作用是什么) 一.总结 一句话总结: 加快页面打开速度 减少网络带宽消耗 降低服务器压力 1.在Web应用中,应用缓存的地方有哪些? 主要有浏览器缓 ...

  9. 如何实现shell并发 一个入门级可控多线程shell脚本方案

     如何实现shell并发      很多人都问我如何写shell脚本,如何实现同时给三台ftp服务器上传文件,如何同时检测三台服务器是否alive等,其实这就是想实现shell的并发.那么shell并 ...

  10. Jeecg-Boot 开发环境准备(二):开发工具安装

    目录索引: 后端开发工具 前端开发工具 Nodejs镜像 WebStorm入门配置 JeecgBoot采用前后端分离的架构,官方推荐开发工具 前端开发: Webstrom 或者 IDEA 后端开发: ...