Head's Up! These forums are read-only. All users and content have migrated. Please join us at community.neo4j.com.
07-21-2020 01:17 PM
In a graph, there are multiple relationships between nodes with the same label to connect them together.
What I want to do is to find all the paths to a specific node(e.g. node A
), and only through a specific type of relationships.
The graph is shown below: I only want to keep DEPEND_ON relationships between Artifacts, without NEXT relationships.
MATCH p = (connected)-[:DEPEND_ON*]->(root:Artifact {gav: "com.twitter:finagle-core_2.11:6.25.0"})
WHERE root <> connected
RETURN distinct connected,root,relationships(p)
Solved! Go to Solution.
07-22-2020 02:32 AM
The problem is that's coming from Neo4j Desktop and not from Cypher, I don't know why they develop that feature. But don't worry, it's only when you display the graph, if you just want to display data, it won't appear
Your Cypher query looks optimized
07-21-2020 03:44 PM
Hello @jayxu688
On Neo4j Desktop, when you access the parameters of the interface:
You should be able to uncheck the box, do it and restart your query
Regards,
Cobra
07-22-2020 02:28 AM
Hi, Cobra.
Thanks for the quick reply.
But we have a little bit of misunderstanding here.
I mean I want to use cypher query to get the result set, not using Neo4j desktop to hide the relationships in the result set.
What I want to do here is using "DEPEND_ON" relationships to get all the paths(nodes connected using “DEPEND_ON” relationships) to the node with certain "gav" property value. In other word, using cypher query to exclude the "NEXT" relationships from the resulted subgraph, only keeping all the nodes directly or indirectly "DEPEND_ON" the Artifact node with "com.twitter:finagle-core_2.11:6.25.0" value.
If you can give me some methods to optimizing Cypher to speed up the query, it would be more excellent.
07-22-2020 02:32 AM
The problem is that's coming from Neo4j Desktop and not from Cypher, I don't know why they develop that feature. But don't worry, it's only when you display the graph, if you just want to display data, it won't appear
Your Cypher query looks optimized
07-22-2020 02:47 AM
Wow. Thanks for your knowhow.
I was struggling on this for days.
I Think I only returned the "DEPEND_ON" relationships and the nodes on the path, but the result makes me wonder I was doing wrong.
A further question:
when I wanted to do the query for the node with GAV property value of "org.slf4j:slf4j-api:1.6.1", which is a node directly or indirectly depended on by tons of projects in this Maven Central Repository graph. The result set may be over 1 million or something. Can neo4j handle this, OR, shall I add depth like [DEPEND_ON*1..3] after the relationship.
Regards,
Jay
07-22-2020 02:55 AM
Neo4j will limit the nodes displayed on the screen, by default it's 300 I guess.
[DEPEND_ON*1..3]
will limit the number of hop for each node (3 hop in your case), if you want to limit the number of results you can also use LIMIT
07-22-2020 03:04 AM
I want to get the whole graph and hops.
But the performance of my cypher I wrote above to get a big subgraph like this is nearly 0 . I was not able to get the result.
And are there any ways for me to get this kind of big result set in a proper way.
Sorry for my English, it’s not my first language. I know it may make the communication inefficient.
07-22-2020 03:07 AM
You will need a good computer if you want to be able to display the whole graph, Neo4j Desktop has not been done for this, you should have a look at Neo4j Bloom
07-22-2020 03:12 AM
Thank you very much for your patient answering, I will go to check it out immediately.
09-08-2020 11:55 PM
MATCH (c:Artifact) WHERE c.gov = "com.twitter:finagle-core_2.11:6.25.0"
CALL apoc.path.subgraphAll(c, {relationshipFilter:'DEPEND_ON', maxLevel: 2, limit:300)
YIELD nodes, relationships
RETURN nodes, relationships
Select maxLevel. You can also export the results to JSON file. Results display only 'DEPEND_ON' relationship.
All the sessions of the conference are now available online