Neo4j_01属性图

参考自作者悦光阴 http://www.cnblogs.com/ljhdo/

在深入学习图形数据库之前,首先理解属性图的基本概念。一个属性图是由顶点(Vertex),边(Edge),标签(Label),关系类型和属性(Property)组成的有向图。顶点也称作节点(Node),边也称作关系(Relationship);在图形中,节点和关系是最重要的实体,所有的节点是独立存在的,为节点设置标签,那么拥有相同标签的节点属于一个分组,一个集合;关系通过关系类型来分组,类型相同的关系属于同一个集合。关系是有向的,关系的两端是起始节点和结束节点,通过有向的箭头来标识方向,节点之间的双向关系通过两个方向相反的关系来标识。节点可有零个,一个或多个标签,但是关系必须设置关系类型,并且只能设置一个关系类型。Neo4j图形数据库的查询语言是Cypher,用于操作属性图,是图形语言中事实上的标准。

一,图形数据库的基本概念

Neo4j创建的图(Graph)基于属性图模型,在该模型中,每个实体都有ID(Identity)唯一标识,每个节点由标签(Label)分组,每个关系都有一个唯一的类型,属性图模型的基本概念有:

  • 实体(Entity)是指节点(Node)和关系(Relationship);

    • 每个实体都有一个唯一的ID;
    • 每个实体都有零个,一个或多个属性,一个实体的属性键是唯一的;
    • 每个节点都有零个,一个或多个标签,属于一个或多个分组;
    • 每个关系都只有一个类型,用于连接两个节点;
  • 路径(Path)是指由起始节点和终止节点之间的实体(节点和关系)构成的有序组合;
  • 标记(Token)是非空的字符串,用于标识标签(Label),关系类型(Relationship Type),或属性键(Property Key);
    • 标签:用于标记节点的分组,多个节点可以有相同的标签,一个节点可以有多个Label,Label用于对节点进行分组;
    • 关系类型:用于标记关系的类型,多个关系可以有相同的关系类型;
    • 属性键:用于唯一标识一个属性;
  • 属性(Property)是一个键值对(Key/Value Pair),每个节点或关系可以有一个或多个属性;属性值可以是标量类型,或这标量类型的列表(数组);

二,图形示例

在下面的图形中,存在三个节点和两个关系共5个实体;Person和Movie是Label,ACTED_ID和DIRECTED是关系类型,name,title,roles等是节点和关系的属性。

实体包括节点和关系,节点有标签和属性,关系是有向的,链接两个节点,具有属性和关系类型。

1,实体

在示例图形中,包含三个节点,分别是:

包含两个关系,分别是:

  • 两个关系类型:ACTED_IN和DIRECTED,
  • 两个关系:连接name属性为Tom Hank节点和Movie节点的关系,连接name属性为Robert Zemechis的节点和Movie节点的关系。

其中一个关系如下图:

2,标签(Label

在图形结构中,标签用于对节点进行分组,相当于节点的类型,拥有相同标签的节点属于同一个分组。一个节点可以拥有零个,一个或多个标签,因此,一个节点可以属于多个分组。对分组进行查询,能够缩小查询的节点范围,提高查询的性能。

在示例图形中,有两个标签Person和Movie,两个节点是Person,一个节点是Movie,标签有点像节点的类型,但是,每个节点可以有多个标签。

3,属性(Property)

属性是一个键值对(Key/Value),用于为节点或关系提供信息。一般情况下,每个节点都由name属性,用于命名节点。

在示例图形中,Person节点有两个属性name和born,Movie节点有两个属性:title和released,

关系类型ACTED_IN有一个属性:roles,该属性值是一个数组,而关系类型为DIRECTED的关系没有属性

三,遍历(Traversal)

遍历一个图形,是指沿着关系及其方向,访问图形的节点。关系是有向的,连接两个节点,从起始节点沿着关系,一步一步导航(navigate)到结束节点的过程叫做遍历,遍历经过的节点和关系的有序组合称作路径(Path)。

在示例图形中,查找Tom Hanks参演的电影,遍历的过程是:从Tom Hanks节点开始,沿着ACTED_IN关系,寻找标签为Movie的目标节点。

遍历的路径如图:

时间: 2024-12-13 08:21:26

Neo4j_01属性图的相关文章

Android自定义View——多边形网格属性图

多边形网格属性图 事先说明: 该View涉及到Path类的运用,如果对Path类不熟悉的,可以看http://blog.sina.com.cn/s/blog_4d9c3fec0102vyhs.html,这篇文章通熟易懂 该View还涉及到数学的Cos和Sin式子,也就是一些圆的基本知识,如果不了解的话请补补高中知识吧 效果图:     步骤一:分析变量信息 //-------------我们必须给的模拟数据------------- //n边形 private int n = 5; //文字 p

GIS可视化——属性图

一.简介 SuperMap iClient for JavaScript 提供了UTFGrid图层(属性图),用于客户端属性信息的快速交互. UTFGrid图层从UTFGrid切片数据源读取数据,其本质是基于JSON的ASCII 码’字符画’与属性数据的结合. UTFGrid图层不能被可视化渲染,在地图中使用这个图层, 必须同时添加 SuperMap.Control.UTFGrid 控件类来控制触发事件类型. 原理:通过请求瓦片数据(非图片),将属性信息保存到客服端UTFGrid图层中,提高客户

Spark GraphX 属性图操作

package Spark_GraphX import org.apache.spark.graphx._ import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} object 属性图 { def main(args: Array[String]): Unit = { val conf=new SparkConf().setAppName("SimpleGraphX").setM

GraphX 的属性图

package main.scala import org.apache.spark.graphx.{Edge, Graph, VertexId} import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} object graph_test { // define hadoop_home directory System.setProperty("hadoop.home.dir",

UML之类图

一.类:通常可以分为三种,分别是实体类(Entity Class).控制类(Control Class)和边界类(Boundary Class),下面对这三种类加以简要说明: (1) 实体类:实体类对应系统需求中的每个实体,它们通常需要保存在永久存储体中,一般使用数据库表或文件来记录,实体类既包括存储和传递数据的类,还包括操作数据的类.实体类来源于需求说明中的名词,如学生.商品等. (2) 控制类:控制类用于体现应用程序的执行逻辑,提供相应的业务操作,将控制类抽象出来可以降低界面和数据库之间的耦

RelativeLayout的属性设置

设有两个控件one和two,以控件one为基准.由于代码比较简单就不贴了,直接上效果图. 一.第一组:将控件two放在控件one的上.下.左.右.开始.结束. android:layout_below="" 上         android:layout_above="" 下         android:layout_toLeftOf="" 左         android:layout_toRightOf="" 右 

RoughSets属性约简算法

参考资料:http://baike.baidu.com/link?url=vlCBGoGR0_97l9SQ-WNeRv7oWb-3j7c6oUnyMzQAU3PTo0fx0O5MVXxckgqUlP871xR2Le-puGfFcrA4-zIntq 更多挖掘算法:https://github.com/linyiqun/DataMiningAlgorithm 介绍 RoughSets算法是一种比较新颖的算法,粗糙集理论对于数据的挖掘方面提供了一个新的概念和研究方法.本篇文章我不会去介绍令人厌烦的学术

delphi控件属性大全-详解-简介

button 组件: CAPTION 属性 :用于在按钮上显示文本内容Cancel     属性:是否设置成默认的取消按钮,当设置为真的时候(true) 按ESC触发改按钮的事件!Default 属性:是否设置成默认的确认按钮,当设置为真的时候 按ENTER键的时候触发事件Hint 属性:设置当鼠标在按钮上短暂停留是显示的提示内容.Showhint 属性: 是否显示提示内容默认为假! Bitbtn 组件Kind 属性: 他的值就是位图按钮组件上所显示的图标!GLYPH 属性: 用于在位图按钮上显

delphi控件属性和事件

常用[属性] Action:该属性是与组件关联的行为,允许应用程序集中响应用户命令 Anchors:与组件连接的窗体的位置点 Align:确定组件的对齐方式 AutoSize:确定组件是否自动调整其大小 BiDiMode:(所有组件) 为从右向左写的语言提供支持 BoundsRect:定义组件边框矩形(只适用于运行时) Borderwidth:(窗口化组件)边框的宽度 BorberStyle:设置组件边框形状(样式) Brush:可确定组件的风格和颜色 Caption:使用该属性可指定标注组件的