本文主要是對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
有一個圖有三個節點,如下圖所示:

1.2.關系
1、關系是一個建立兩個節點之間關系,由源節點指向目標節點的實體;
2、一個向外的關系,是源節點由自身關聯目標節點的一種關系;
3 一個向內的關系,是源端節點自身被關聯的一種關系;
4、每一個關系都必須分配一個且唯一的關系類型;
5、關系也是實體,可以擁有屬性和屬性值;
1.2.1.關系例子1
有如下圖關系:

圖中的的關系有Student和Teacher兩種關系類型, Teacher這種關系類型有一個roles屬性,它的類型為數組類型,而Student這個關系類型中的Class屬性的數據類型為String。
1.2.2.關系例子2
自關聯關系

2.邊/路徑
1、 邊/路徑表示一個屬性圖的關系,由一系列交替的節點和關系組成;
2、 一個邊/路徑總是由開始於節點,終止於節點(成也蕭何,敗也蕭何);
3、 最小的邊/路徑只包含單個節點,這類型的邊叫做空邊/空路徑;
4、 邊/路徑有一個長度(深度),它是大於或等於0的整數,等於路徑中的關系數;
2.2.1.邊/路徑例子1
圖數據庫中邊/路徑的長度等於0,如下圖:

2.2.2.邊/路徑例子2
圖中邊/路徑的長度等於1,如下圖:


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 </div>