1、什么是圖數(shù)據(jù)庫(kù)
圖數(shù)據(jù)庫(kù)是一種使用圖數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)語義查詢的數(shù)據(jù)管理系統(tǒng),通過節(jié)點(diǎn)、邊和屬性來表示和存儲(chǔ)數(shù)據(jù)。

上面的數(shù)字1到數(shù)字6,都叫做“點(diǎn)”(或頂點(diǎn))
連接點(diǎn)與點(diǎn)之間的線,叫做“邊”
也就是說,由點(diǎn)和連接每對(duì)點(diǎn)的邊所構(gòu)成的圖就叫做“圖”(Graph)
點(diǎn)(node):稱之為頂點(diǎn)(Vertex)或點(diǎn)(node),也可以稱作實(shí)體(Entity)。
邊(edge):連接兩個(gè)點(diǎn)(node)的邊,在知識(shí)圖譜范疇內(nèi)也常被稱作關(guān)系(relation、relationship)。
圖(Graph)用至為簡(jiǎn)潔的點(diǎn)與邊,即可以表現(xiàn)出人與人、人與物、物與物之間的各種關(guān)系。
圖概念對(duì)于圖數(shù)據(jù)庫(kù)的理解至關(guān)重要。圖是一組點(diǎn)和邊的集合,“點(diǎn)”表示實(shí)體,“邊”表示實(shí)體間的關(guān)系。在圖數(shù)據(jù)庫(kù)中,數(shù)據(jù)間的關(guān)系和數(shù)據(jù)本身同樣重要,它們被作為數(shù)據(jù)的一部分存儲(chǔ)起來。這樣的架構(gòu)使圖數(shù)據(jù)庫(kù)能夠快速響應(yīng)復(fù)雜關(guān)聯(lián)查詢,因?yàn)閷?shí)體間的關(guān)系已經(jīng)提前存儲(chǔ)到了數(shù)據(jù)庫(kù)中。圖數(shù)據(jù)庫(kù)可以直觀地可視化關(guān)系,是存儲(chǔ)、查詢、分析高度互聯(lián)數(shù)據(jù)的最好辦法。
有兩種常用的圖形數(shù)據(jù)庫(kù)模型:屬性圖和 RDF 圖。屬性圖側(cè)重于分析和查詢,而 RDF 圖則側(cè)重于數(shù)據(jù)集成。這兩種圖形均是由一系列點(diǎn)(頂點(diǎn))以及這些點(diǎn)之間的連接(邊)構(gòu)成的集合。但它們是有區(qū)別的。
2、屬性圖
目前主流的圖數(shù)據(jù)庫(kù)選擇的圖模型是屬性圖。屬性圖由點(diǎn)、邊、標(biāo)簽和屬性組成,我們結(jié)合一個(gè)具體的屬性圖實(shí)例來看一下。

以上屬性圖可以幫助我們理解一些相關(guān)概念:
1) 可以為點(diǎn)設(shè)置標(biāo)簽,比如 person, war等,擁有相同標(biāo)簽的點(diǎn)我們認(rèn)為它們屬于一個(gè)分組,是一個(gè)集合,這樣劉備和曹操屬于一個(gè)分組;
2) 同樣可以為邊設(shè)置標(biāo)簽,標(biāo)簽可以為 relation等;
3) 節(jié)點(diǎn)可以擁有很多屬性,比如 style name、year等,這些屬性值以鍵值對(duì)的形式表示,例如:劉備的style name是玄德;
4) 邊也可以擁有屬性,比如army等;
5) 邊允許有方向,例如劉備和漢中之戰(zhàn)之間的邊的方向是由劉備指向漢中之戰(zhàn)的;
6) 元數(shù)據(jù)是用來描述點(diǎn)和邊的屬性信息的,元數(shù)據(jù)由若干標(biāo)簽組成,每個(gè)標(biāo)簽由若干屬性組成。
2.1 有向圖
“有向圖”,顧名思義就是能表示出方向的圖,我們則稱為“有向圖”。
與此相對(duì),邊上沒有箭頭表示出明確方向的圖,便是“無向圖”了。
有向圖:當(dāng)圖中的邊有明確的方向時(shí),且在圖中的各類操作可以利用這種方向的時(shí)候,我們稱其為有向圖。例如,區(qū)塊鏈就是典型的有向無環(huán)圖,英文簡(jiǎn)稱為DAG(Directed Acyclic Graph)。以DAG的方式,可以追溯每一筆比特幣的流向、分布、歸屬。

無向圖:
無向圖指的是忽略了邊的方向。在實(shí)際的圖數(shù)據(jù)庫(kù)實(shí)現(xiàn)中,通常都采用雙向邊存儲(chǔ)的方式來實(shí)現(xiàn)無向圖。

2.2 加權(quán)圖
由點(diǎn)和邊所構(gòu)成的圖,還可以給邊加上一個(gè)值。這個(gè)值就叫作邊的“權(quán)重”或“權(quán)”,加了權(quán)的圖被稱為“加權(quán)圖”。
沒有權(quán)的邊只能表示兩個(gè)點(diǎn)的連接狀態(tài),而有權(quán)的邊就可以表示頂點(diǎn)之間的“連接程度”。

這個(gè)“程度”是什么意思呢?
就是根據(jù)“圖”的內(nèi)容不同,“程度”表示的意思也不同。
比如在地鐵線路中,如果把車站與車站間的票價(jià)加在邊上,就能在“圖”中看出乘車費(fèi)了。
2.3 屬性圖的局限性
在屬性圖的應(yīng)用中,以下的需求是常見的但是卻難以滿足:
支持對(duì)圖中模式的捕獲
支持驗(yàn)證和數(shù)據(jù)完整性
支持捕捉豐富的規(guī)則
支持繼承和推理
支持全局唯一標(biāo)識(shí)符
支持可替換的標(biāo)識(shí)符
圖之間的連通性
圖形可進(jìn)化性的更好解決方案
這些是屬性圖設(shè)計(jì)中沒有解決的基本限制,原則上,在屬性圖中添加其中一些這樣的功能是可能的——但實(shí)現(xiàn)起來并不容易或便捷。
3 RDF圖
RDF 圖(RDF 即資源描述框架)符合一系列 W3C(萬維網(wǎng)聯(lián)盟)標(biāo)準(zhǔn),旨在表示各種語句,適合用于表示復(fù)雜的元數(shù)據(jù)和主數(shù)據(jù)。它們通常用于關(guān)聯(lián)數(shù)據(jù)、數(shù)據(jù)集成和知識(shí)圖譜。它們可以表示域中的復(fù)雜概念,也可以提供豐富的語義和數(shù)據(jù)推斷。
在 RDF 模型中,語句由三個(gè)元素表示:一條邊連接兩個(gè)頂點(diǎn),反映語句的主語、謂語和賓語 — 叫做 RDF 三元組。每個(gè)頂點(diǎn)和邊都由唯一的 URI(即唯一資源標(biāo)識(shí)符)來標(biāo)識(shí)。RDF 模型支持通過定義明確的語義以標(biāo)準(zhǔn)格式發(fā)布數(shù)據(jù),從而實(shí)現(xiàn)信息交換。政府統(tǒng)計(jì)機(jī)構(gòu)、制藥公司和醫(yī)療機(jī)構(gòu)現(xiàn)已廣泛采用 RDF 圖。
RDF模型在頂點(diǎn)和邊上沒有屬性,只有一個(gè)資源描述符,這是RDF與屬性圖模型間最根本的區(qū)別。在RDF中每增加一條信息都要用一個(gè)單獨(dú)的節(jié)點(diǎn)表示。比如,在圖中給表示人的節(jié)點(diǎn)添加姓名。在屬性圖中只需要在節(jié)點(diǎn)添加屬性即可,而在RDF中必須添加一個(gè)名字的單獨(dú)加節(jié)點(diǎn),并用hasName與原始節(jié)點(diǎn)相連。
就是所有的信息都是節(jié)點(diǎn),無論是張三這個(gè)名字,還是張三這個(gè)人,他們都屬于節(jié)點(diǎn)
張三相關(guān)節(jié)點(diǎn)為張三,身份證號(hào),住所等等
