es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo crear aristas dentro de nodos bajo el mismo nodo padre en Gremlin.

Soy nuevo(a) en Gremlin. Quiero conectar nodos “hijo” bajo el mismo nodo “padre” con una arista “hermano”.

Estado inicial:
– (:padre {nombre: ‘A’})-[padrede]->(:hijo {nombre: ‘A1’})
– (:padre {nombre: ‘A’})-[padre
de]->(:hijo {nombre: ‘A2’})
– (:padre {nombre: ‘B’})-[padrede]->(:hijo {nombre: ‘B1’})
– (:padre {nombre: ‘B’})-[padre
de]->(:hijo {nombre: ‘B2’})

Resultado esperado:
– Estado inicial +
– (:hijo {nombre: ‘A1’})-[hermano]->(:hijo {nombre: ‘A2’})
– (:hijo {nombre: ‘A2’})-[hermano]->(:hijo {nombre: ‘A1’})
– (:hijo {nombre: ‘B1’})-[hermano]->(:hijo {nombre: ‘B2’})
– (:hijo {nombre: ‘B2’})-[hermano]->(:hijo {nombre: ‘B1’})

Imagen esperada:
Ilustración esperada

¿Cómo debo escribir una consulta Gremlin para esto?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para conectar los nodos “child” bajo el mismo nodo “parent” con el borde “sibling”, puedes utilizar la siguiente consulta en Gremlin:

    g.V().hasLabel('parent').as('p')
      .out('parent_of').as('c1','c2')
      .where('c1', neq('c2'))
      .select('c1','c2')
      .addE('sibling').to('c2').from('c1')
    

    Esta consulta comienza encontrando todos los nodos con la etiqueta “parent” y los asocia con el alias “p”. Luego, se desplaza hacia sus nodos hijos con el borde “parent_of” y los asocia con los alias “c1” y “c2”. El paso “where” filtra los casos en los que “c1” y “c2” son el mismo nodo. Por último, la consulta selecciona tanto “c1” como “c2” y agrega un borde “sibling” entre ellos.

    Esto dará como resultado el gráfico esperado con los bordes “sibling” conectando los nodos child bajo el mismo nodo parent.

Comments are closed.