Conversion of query from cypher to gremlin

0

I have cypher query: MATCH p=(c:Customer)-[:HAS_LOCATION|HAS_EMAIL|HAS_PHONE*1..25]-(n) return p

Now I want same query in gremlin .I have written this for gremlin is it right or can we write more optimized query

g.V().hasLabel('Customer').as('c') .repeat( both('HAS_LOCATION', 'HAS_EMAIL', 'HAS_PHONE') .simplePath() ) .times(1, 25) .path() .from('c') .toList()

asked 6 months ago187 views
1 Answer
1
Accepted Answer

A similar query in Gremlin would be:

g.V().hasLabel('Customer').
    repeat(bothE('HAS_LOCATION', 'HAS_EMAIL', 'HAS_PHONE') .otherV().simplePath()).
    emit().
    times(25).
    path().by(elementMap())

One thing to realize is that openCypher and Gremlin differ in how they build paths. By default, openCypher will only cross an edge once. With Gremlin and using simplePath(), a vertex/node is only traversed once.

This could also be an expensive query to execute if there are many nodes with a label of Customer. I would suggest that if using Neptune that you look to constrain the starting point for this query to one, or a subset, of starting nodes.

profile pictureAWS
answered 6 months ago
profile picture
EXPERT
reviewed 23 days ago
  • Thankyou for response

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions