2013-05-17 6 views
4

С внедрением меток neo4j получил аккуратные механизмы управления объектами. Теперь давайте предположим на мгновение, что у нас есть общий граф с множеством разных сущностей и хотелось бы узнать, какие сущности (метки) связаны друг с другом. Вот отправная точка: http://console-test.neo4j.org/?id=wdnbujNeo4j/Cypher - как я могу получить все триггерные трюки?

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

Lol. Получение всех этикеток ... вот это еще одна история. –

+0

Ну, есть запрос на растяжение: https://github.com/neo4j/neo4j/pull/742 Теперь вы можете просто получить список всех различных комбинаций меток и обработать, используя любой язык, который вы используете ... – Michael

Смежные вопросы