圖資料庫常規的有:neo4j(支援超多語言)、janusgraph/titan(分布式)、orientdb,google也開源了圖資料庫cayley(go語言構成)、postgresql儲存rdf格式資料。
—- 目前的幾篇相關:—–
neo4j︱圖資料庫基本概念、操作羅列與整理(一)
neo4j︱cypher 查詢語言簡單案例(二)
neo4j︱cypher完整案例csv匯入、關係聯通、高階查詢(三)
neo4j系列第二篇,乙個簡單的demo案例,從構建-基本內容查詢。
基本用法:
match (node:label) return node.property
match (node1:label1)-->(node2:label2)
where node1.propertya =
return node2.propertya, node2.propertyb
我們通常用圓括號來包含節點標示符(當然也可以不用)。裡面的內容也叫變數,變數不是單指某乙個節點,而是服從條件的節點組合。如(p: person),如果想新增屬性:(p: person )。 注意:節點標籤、關係型別和屬性名稱區分大小寫。
其中節點之間用:』–>』,包含關係的可以用』->』
有以下幾種關係型寫法:
-[rel:knows]-> //單關係,關係的變數名為rel,型別是 knows
(a)-[:knows|:like]->(b) //查詢a到b的兩類關係
--> //附加屬性
-[:knows*..4]-> example: a -[rel: type*minhop..maxhop]-> b
//從a節點到b節點最少可經過minhop、最大可經過maxhop個節點
關係表達,cypher語法:
舉例:
match (n1:label1)-[rel:type]->(n2:label2)
where rel.property >
return rel.property, type(rel)
其功能為:patterns can be used to match and create data, but also (evaluating to a list of paths) in expressions, predicates and results.
patterns 模式由乙個或多個路徑組成,路徑間用逗號分隔,一條路徑就是乙個節點和關係的序列,這個序列指定開始和結束節點,如:(a) –> (b),這條路徑開始於a,通過outgoing關係指向b。如果你不在乎具體是哪個節點,不用指定它,只需要用空括號來表示就可以了,如:a –>()–>b。模式是cypher中的關鍵部分,靈活書寫模式能幫我們正確獲取、實現推測計算等等各種任務。
比較費解…
match到』you』節點之後,新建一條關係,是』you』-『like』-『neo4j』。
當create之後,return之後,就會返回三個實體,2個節點+1條關係。
match中,變數-變數,可以用』–>』,關係型的指向用』->』
其中,foreach表示迴圈,反覆create。再來看乙個foreach的案例(from:3.3.15. foreach):
通過關係查詢』you』的朋友圈
建立了』anna』-『amanda』的朋友關係,建立了』amanda』-『neo』的工作關係。
同時,定義了』amanda』的』expert』身份。
先定位自己you,然後去尋找朋友中誰懂neo4j:person->neo,然後尋找最短路徑的:you-person即可達到目的。
不能用you直接關聯neo,而是通過朋友,二度跳轉到neo4j。
此時的(expert)->(neo)
值得新手去理解一下,這裡expert不是單獨指定到某個人,而是指代所有worked_with neo的人。
Neo4J Cypher語句 學習
以下節點標籤為people,friend,使用者自己也可以設定成其他標籤,查詢時需要用到標籤。這個標籤可以模擬為關聯式資料庫中的表名 建立節點 小紅 create n people return n 建立關係 小明送禮物給小紅 小明節點id為0,小紅節點id為1 start a node 0 b n...
Cypher查詢語言 Neo4j 綜合 四
目錄 返回節點 返回關係 返回屬性 帶特殊字元的識別符號 列的別名 可選屬性 特別的結果 查詢中的返回部分,返回途中定義的感興趣的部分。可以為節點 關係或其上的屬性。圖返回乙個節點,在返回語句中列出即可。查詢 start n node 2 return n 結果 查詢 start n node 1 ...
Neo4j 空間查詢
1.neo4j自帶函式進行簡單計算 neo4j自帶distance point1,point2 函式,返回乙個浮點數,表示同一座標參照系中兩點之間的測地距離,可以使用round函式來進行四捨五入。目前neo4j3.3版本不支援return直接返回point型別,3.4版本可以。節點型別 節點格式 詳...