2013-05-17 70 views
4

隨着標籤的引入,neo4j獲得了一個管理實體的整潔機制。現在,讓我們暫時假設我們有一個包含許多不同實體的泛型圖,並且想知道哪些實體(標籤)彼此相關。這裏有一個出發點: http://console-test.neo4j.org/?id=wdnbujNeo4j/Cypher - 如何獲得所有dinstinct標籤的三倍?

Graph Setup: 
CYPHER 2.0 
create 
(_1:Crew {name:"Neo"}), 
(_2:Crew {name:"Morpheus"}), 
(_3:Crew {name:"Trinity"}), 
(_4:Language {name:"Cypher"}), 
(_5:Machines {name:"Agent Smith"}), 
(_6:Machines {name:"The Architect"}), 
_1-[:KNOWS]->_2, 
_1-[:LOVES]->_3, 
_2-[:KNOWS]->_3, 
_2-[:KNOWS]->_4, 
_4-[:KNOWS]->_5, 
_5-[:CODED_BY]->_6 

Query: 
CYPHER 2.0 
match x-[r]->y 
return head(labels(x)) as head, type(r), head(labels(y)) as tail 

這將讓我們相互關聯的實體的概述:

+--------------------------------------+ 
| head  | type(r) | tail  | 
+--------------------------------------+ 
| "Machines" | "CODED_BY" | "Machines" | 
| "Language" | "KNOWS" | "Machines" | 
| "Crew"  | "KNOWS" | "Crew"  | 
| "Crew"  | "KNOWS" | "Language" | 
| "Crew"  | "KNOWS" | "Crew"  | 
| "Crew"  | "LOVES" | "Crew"  | 
+--------------------------------------+ 

現在。是否有任何Cypher查詢會返回這些三元組的不同值?

獎金問題:我們可以得到它們的計數/頻率嗎?

回答

2

我剛剛使用你的開始查詢,添加不同的和數量。那是你在找什麼?或者你是否希望我從標籤集合中分離標籤(如果沒有某種展開功能,這很不容易)。

match x-[r]->y 
return distinct head(labels(x)) as head, type(r), head(labels(y)) as tail 

match x-[r]->y 
return head(labels(x)) as head, type(r), head(labels(y)) as tail, count(*) 
+0

Grats。你讓我覺得自己像一隻鞋子一樣愚蠢。 – Michael

+0

哈哈。獲得所有的標籤......現在,這是另一回事。 –

+0

嗯,這是一個拉請求:https://github.com/neo4j/neo4j/pull/742 現在,您可以獲取所有不同標籤組合的列表,並使用您使用的任何語言進行處理... – Michael

相關問題