2016-12-20 1 views
0

J'ai un traversal que je crée deux sommets et les connecter avec un bord comme ça:comment revenir vertex spécifique traversal qui crée deux sommets reliés par le bord (DSE 5,0 Graphique)

DseCluster dseCluster = null; 
    dseCluster = DseCluster.builder() 
      .addContactPoint(DbC.dseHost) 
      .build(); 
    DseSession dseSession = dseCluster.connect(); 
    GraphTraversalSource g = DseGraph.traversal(dseSession, new GraphOptions().setGraphName(DbC.graphName)); 

    GraphTraversal traversal = g 
    .addV("aLabel").as("a") 
    .addV("aLabel").as("b") 
    .addE("edgeLabel").from("a").to("b") 

    GraphStatement graphStatement = DseGraph.statementFromTraversal(traversal); 
    GraphResultSet grs = dseSession.executeGraph(graphStatement.setGraphName(DbC.graphName)); 
    //grs contains an edge only 

Comment Puis-je faire en sorte que le résultat ne contienne qu'un sommet spécifique comme "un" sommet source par exemple?

Je sais que je pouvais faire à la place:

GraphTraversal traversal = g 
    .addV("aLabel").as("a") 
    .addV("aLabel").as("b") 
    .addE("edgeLabel").from("a").to("b").outV() // this returns a 

mais je me dans une solution comme

GraphTraversal traversal = g 
    .addV("aLabel").as("a") 
    .addV("aLabel").as("b") 
    .addE("edgeLabel").from("a").to("b").emit("a") // this doesn't work 

Merci!

Répondre

0

La réponse qui a travaillé utilise select:

GraphTraversal<Vertex,Vertex> traversal = g 
    .addV("aLabel").as("a") 
    .addV("aLabel").as("b") 
    .addE("edgeLabel").from("a").to("b").select("a") 

ou

Vertex v = g 
     .addV("aLabel").as("a") 
     .addV("aLabel").as("b") 
     .addE("edgeLabel").from("a").to("b").<Vertex>select("a").next();