How to implement propagation algorithms in Neptune

0

I need to implement a custom propagation algorithm that starts from a given node and visits its neighbors and update their properties accordingly based on the previous node properties. Example use case is, a quality flag that changed in a given node from good to bad and I need to make all the subsequent nodes become bad.

What is the recommend way of implement this efficiently in Neptune? (I'm trying to avoid to have client code to have this graph traversal one hop at a time)

asked 2 years ago248 views
1 Answer
1

So something like the following?

Sample graph:

g.addV('Product').property(id,'prod1').property('name','widget').property('quality','good').as('p1').
addV('Product').property(id,'prod2').property('name','sproket').property('quality','good').as('p2').
addV('Product').property(id,'prod3').property('name','screw').property('quality','good').as('p3').
addV('Product').property(id,'prod4').property('name','bolt').property('quality','good').as('p4').
addE('connectedTo').from('p1').to('p2').
addE('connectedTo').from('p1').to('p3').
addE('connectedTo').from('p1').to('p4')

Sample query:

g.V('prod1').as('p1').property(single,'quality','bad').
    out('connectedTo').
    property(single,'quality',select('p1').values('quality'))

This query would alter the property on the "root" vertex and apply the same property value to the children vertices.

UPDATE: If wanting to propagate this down an entire tree, you could use a repeat() step:

g.V('prod1').as('p1').property(single,'quality','bad').
    repeat(
        out('connectedTo').
        property(single,'quality',select('p1').values('quality'))
    )
profile pictureAWS
answered 2 years ago
  • interesting so I can make search query and then basically call property on the traversal to set the value of the property!

  • Is this recursing or it will just propagate to direct children of p1, I see you only use out not sure if this will grab all subsequent nodes (i.e. children of children)

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