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)

posta 2 anni fa256 visualizzazioni
1 Risposta
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
con risposta 2 anni fa
  • 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)

Accesso non effettuato. Accedi per postare una risposta.

Una buona risposta soddisfa chiaramente la domanda, fornisce un feedback costruttivo e incoraggia la crescita professionale del richiedente.

Linee guida per rispondere alle domande