2017-07-19 3 views
1

Ma question est la suivante. J'ai la relation de noeud suivant:Masquer les nœuds du milieu dans neo4j (Navigateur)

(Student)-[:StudiesIn]->(Class)<-[:Teaches]-(Professor) 

Je suis en train d'afficher sur le générateur de graphique dans le navigateur comme une requête:

MATCH st=(a:Student)-[]-()-[]-(sir:Professor) RETURN st 

Ce qui me rend une relation, y compris la classe. Maintenant, je ne me soucie pas vraiment de la classe pour cette visualisation particulière, et je voudrais le cacher. Y at-il un moyen de le faire sans vraiment créer (et stocker sur le disque) la relation entre l'étudiant et le professeur?

Je veux juste quelque chose comme:

MATCH (a:Student)-[]-()-[]-(sir:Professor) RETURN (a)-[{name:"HasAsProfessor"}]-(sir) 

Mais cela ne fonctionne pas. Je l'ai aussi regardé: http://grokbase.com/t/gg/neo4j/147evnv9j2/feature-request-virtual-relationships-in-result-sets où la suggestion ressemble à:

MATCH (a:Student)-[]-()-[]-(sir:Professor) RETURN {start:a, rel:"CustomRel", end:sir} 

Mais cela ne (ai et je ne suis pas le temps de re-mettre en œuvre un outil de visualisation graphique à partir de zéro) fonctionne pas dans le navigateur

Nous vous remercions de votre aide.

Répondre

2

Vous pouvez essayer d'utiliser la procédure de création virtual relationships from the APOC library:

MATCH st=(S:Student)-[:StudiesIn]->(:Class)<-[:Teaches]-(P:Professor) 
WITH S, collect(distinct P) as PS 
UNWIND PS as P 
CALL apoc.create.vRelationship(S,'HasAsProfessor',{}, P) YIELD rel 
RETURN S, rel, P 

Upd: Pour afficher dans le navigateur neo4j est un truc simple approprié pour créer et supprimer immédiatement la relation:

MATCH st=(S:Student)-[:StudiesIn]->(:Class)<-[:Teaches]-(P:Professor) 
WITH S, collect(distinct P) as PS 
UNWIND PS as P 
MERGE (S)-[r:VirtualRelationHasAsProfessor]->(P) 
DELETE r 
RETURN S, r, P 
+0

Merci! Est-ce qu'il n'y a aucun moyen de le faire sans une bibliothèque? Je n'ai pas accès à GitHub dans mon lieu de travail. – Myxoh

+0

@Myxoh Essayez mise à jour :) –

+0

Merci pour l'aide! J'ai pensé à créer et à supprimer (bien que celui-là soit plus agréable que celui que j'avais en tête). – Myxoh

1

Vous pouvez utiliser des relations virtuelles à partir APOC Procedures, qui ne sont pour l'affichage et non enregistrés dans le db:

MATCH (a:Student)-[*2]-(sir:Professor) 
RETURN a, sir, apoc.create.vRelationship(a,'HasAsProfessor',{}, sir) as rel 
+0

Merci! Est-ce qu'il n'y a aucun moyen de le faire sans une bibliothèque? Je n'ai pas accès à GitHub dans mon lieu de travail. – Myxoh

+0

@Myxoh Neo4j ne peut pas créer nativement des éléments graphiques virtuels, à ma connaissance, APOC est votre meilleur pari ici. – InverseFalcon

+0

Merci. pour l'aide! – Myxoh