как вернуть определенную вершину при обходе, которая создает две вершины, соединенные ребром (DSE 5.0 Graph)

У меня есть обход, в котором я создаю две вершины и соединяю их таким ребром:

    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 

Как я могу сделать так, чтобы набор результатов содержал только определенную вершину, например, исходную вершину "a"?

Я знаю, что мог бы сделать вместо этого:

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

но я ищу такое решение, как

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

Спасибо!


person Michail Michailidis    schedule 20.12.2016    source источник


Ответы (1)


Ответ, который сработал, использует select:

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

or

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