【问题标题】:Creation of graph of multiple nodes in gremlin在 gremlin 中创建多个节点的图
【发布时间】:2017-04-17 08:11:15
【问题描述】:

我正在 gremlin 中创建 Tinkergraph。

实际上,我想创建 50 个节点的图,它们通过边随机连接。

我通过以下方式创建了 50 个节点:

(0..<50).each{graph.addVertex().property("NodeId",it)}

创建 50 个节点。

我无法正确创建图形,通过边连接节点。不应该留下一个节点。

我也试过这个:

v = g.V().has("NodeId",0).next(); (0..<50).each{v.addEdge("childs",g.V().has("NodeId",it).next())}

它创建所有节点都连接到唯一一个节点的图形。

有什么解决办法吗?

创建 50 个节点并通过边连接的 Tinkergraph。

【问题讨论】:

    标签: graph gremlin


    【解决方案1】:

    你的问题对我来说不是很清楚。您是否在问如何将每个顶点相互连接?如果是这样,你去:

    gremlin> g = TinkerGraph.open().traversal()
    ==>graphtraversalsource[tinkergraph[vertices:0 edges:0], standard]
    gremlin> g.addV().emit().repeat(property("NodeId", loops()).addV()).times(49).as("x").
    ......1>   sideEffect(hasNot("NodeId").property("NodeId", 49)).barrier().
    ......2>   V().where(neq("x")).addE("childs").from("x").iterate()
    

    此时,您将拥有一个包含 50 个顶点的图,每个顶点与图中的每个顶点之间都有一条 child 边。

    gremlin> g
    ==>graphtraversalsource[tinkergraph[vertices:50 edges:2450], standard]
    

    让我们选择一个随机顶点来验证它实际上连接到图中除自身之外的所有顶点。

    gremlin> g.V().has("NodeId", 30).out("childs").values("NodeId").fold().order(local)
    ==>[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49]
    

    【讨论】:

    • 我想以二叉树模式连接节点
    • g.addV().repeat(__.as("a").union(addV().addE("left").from("a"), addV().addE("right").from("a")).inV()).times(5).iterate() -- 这会创建一个深度为 5 的二叉树。但是,这似乎与您最初的问题没有太大关系,因此我仍然不确定,如果它回答了你的问题,
    猜你喜欢
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-12
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    相关资源
    最近更新 更多