2017-07-05 6 views
0

Ist es möglich, in neo4j Beziehungen zu "kollabieren"? Ich versuche, Beziehungen zwischen Menschen zu zeichnen, und sie können auf verschiedene Arten miteinander in Beziehung gebracht werden - ein gemeinsamer Kurs, gemeinsam verfasste Artikel, RT oder Tweet. Im Moment modelliere ich Leute, Kurse, Artikel und Tweets als Knoten. Aber was ich wirklich interessiert, ist das Modellieren der Person-Person-Beziehungen, die durch diese Zwischenknoten gehen. Ist es möglich, die implizite Beziehung (Person-Kurs-Person) explizit (Person-Person) darzustellen, während der Kurs als Knoten beibehalten wird? So etwas wie http://catalhoyuk.stanford.edu/network/teams/ - Folie 2 und 3.Collapse Beziehungen Neo4j?

Alle anderen Daten Modellierung Vorschläge begrüßen.

Antwort

0

Ja, Sie können es tun. Die Abfrage

MATCH(a:Person)-->(:Course)<--(b:Person) 
CREATE (a)-[:IMPLICIT_RELATIONSHIP]->(b) 

Willen Kiste eine Beziehung mit Typ :IMPLICIT_RELATIONSHIP zwischen allen Menschen, die auf den gleichen Kurs in Zusammenhang stehen. Aber wahrscheinlich brauchen Sie es nicht, da Sie von a zu b und von b zu a ohne diese zusätzliche und nicht notwendige Beziehung transversieren können. Wenn Sie eine virtuelle Beziehung zur Abfragezeit in einer Projektion verwenden möchten, können Sie auch APOC procedureapoc.create.vRelationship verwenden.

Die APOC Verfahren docs sagt:

virtuellen Knoten und Beziehungen existieren nicht in der Grafik, sie sind nur auf die UI/Benutzer zurückgegeben einen Graphen Projektion zur Darstellung. Sie können visualisiert oder anderweitig verarbeitet werden. Bitte beachten Sie, dass sie negative IDs haben.

Verwandte Themen