本文主要是對(duì)Neo4j屬性圖模型簡(jiǎn)單的介紹。
Neo4j是什么?
Neo4j是一款是由java語(yǔ)言實(shí)現(xiàn)的圖數(shù)據(jù)庫(kù),圖形數(shù)據(jù)庫(kù)將數(shù)據(jù)以圖的數(shù)據(jù)結(jié)構(gòu)進(jìn)行存儲(chǔ)和管理,并且能夠以高度可問(wèn)的方式優(yōu)雅地表示任何種類(lèi)的數(shù)據(jù),而Neo4j是基于屬性圖模型(Property Graph Model)的數(shù)據(jù)庫(kù)。
屬性圖模型定義
在屬性圖中存在如下元素:
1、 實(shí)體(Entity)
????a) 節(jié)點(diǎn)(Node)
????b) 關(guān)系(Relationship)
??2、 邊/路徑(Path)
??3、 記號(hào)(Token)
????a) 標(biāo)簽(Label)
????b) 關(guān)系類(lèi)型(Relationship Type)
????c) 屬性key(Property Key)
??4、 屬性(Property)
1.實(shí)體
1、每一個(gè)Neo4j圖數(shù)據(jù)庫(kù)中的實(shí)體都擁有一個(gè)用于區(qū)分實(shí)體與實(shí)體之間是否相等的唯一標(biāo)識(shí);
2、每一個(gè)Neo4j圖數(shù)據(jù)中的實(shí)體都可以分配一組屬性key以及對(duì)應(yīng)的屬值(value),同一個(gè)實(shí)體中的屬性key都是唯一的,并且不能為空的以及空字符串;
1.1.節(jié)點(diǎn)
1、Neo4j圖數(shù)據(jù)庫(kù)中節(jié)點(diǎn)都是建立在實(shí)體的之上的一種抽象,擁有屬性和屬性值;
2、一個(gè)節(jié)點(diǎn)可以被分配一組唯一的標(biāo)簽;
3、一個(gè)節(jié)點(diǎn)可以有0個(gè)或者多個(gè)向外或向內(nèi)(邊/路徑的指向,分為向外和向內(nèi)兩種)的關(guān)系;
1.1.1.節(jié)點(diǎn)例子1、
有一個(gè)圖他只有一個(gè)節(jié)點(diǎn),這個(gè)節(jié)點(diǎn)只有一個(gè)屬性name如下圖所示:

1.1.2.節(jié)點(diǎn)例子2
有一個(gè)圖有三個(gè)節(jié)點(diǎn),如下圖所示:

1.2.關(guān)系
1、關(guān)系是一個(gè)建立兩個(gè)節(jié)點(diǎn)之間關(guān)系,由源節(jié)點(diǎn)指向目標(biāo)節(jié)點(diǎn)的實(shí)體;
2、一個(gè)向外的關(guān)系,是源節(jié)點(diǎn)由自身關(guān)聯(lián)目標(biāo)節(jié)點(diǎn)的一種關(guān)系;
3 一個(gè)向內(nèi)的關(guān)系,是源端節(jié)點(diǎn)自身被關(guān)聯(lián)的一種關(guān)系;
4、每一個(gè)關(guān)系都必須分配一個(gè)且唯一的關(guān)系類(lèi)型;
5、關(guān)系也是實(shí)體,可以擁有屬性和屬性值;
1.2.1.關(guān)系例子1
有如下圖關(guān)系:

圖中的的關(guān)系有Student和Teacher兩種關(guān)系類(lèi)型, Teacher這種關(guān)系類(lèi)型有一個(gè)roles屬性,它的類(lèi)型為數(shù)組類(lèi)型,而Student這個(gè)關(guān)系類(lèi)型中的Class屬性的數(shù)據(jù)類(lèi)型為String。
1.2.2.關(guān)系例子2
自關(guān)聯(lián)關(guān)系

2.邊/路徑
1、 邊/路徑表示一個(gè)屬性圖的關(guān)系,由一系列交替的節(jié)點(diǎn)和關(guān)系組成;
2、 一個(gè)邊/路徑總是由開(kāi)始于節(jié)點(diǎn),終止于節(jié)點(diǎn)(成也蕭何,敗也蕭何);
3、 最小的邊/路徑只包含單個(gè)節(jié)點(diǎn),這類(lèi)型的邊叫做空邊/空路徑;
4、 邊/路徑有一個(gè)長(zhǎng)度(深度),它是大于或等于0的整數(shù),等于路徑中的關(guān)系數(shù);
2.2.1.邊/路徑例子1
圖數(shù)據(jù)庫(kù)中邊/路徑的長(zhǎng)度等于0,如下圖:

2.2.2.邊/路徑例子2
圖中邊/路徑的長(zhǎng)度等于1,如下圖:


3.記號(hào)
記號(hào)是一個(gè)非空的Unicode字符串。
3.1.標(biāo)簽
標(biāo)簽是一個(gè)分配給節(jié)點(diǎn)的一個(gè)唯一的記號(hào)。

3.2.關(guān)系類(lèi)型
關(guān)系類(lèi)型是被分配給關(guān)系的一個(gè)唯一的記號(hào)
3.3.屬性key
屬性key是一個(gè)存在于實(shí)體中的唯一屬性字段,類(lèi)似于Json對(duì)象中的key。
3.3.屬性
屬性由一對(duì)屬性key和屬性值組成,類(lèi)似于Json字符串中的key:value。
到這里就結(jié)束了對(duì)Neo4j屬性圖模型的基本介紹了,祝大家生活愉快!