【问题标题】:how to create edge between new vertex and existing vertex using Java API in Titan Graph database如何在 Titan Graph 数据库中使用 Java API 在新顶点和现有顶点之间创建边
【发布时间】:2017-03-06 09:05:57
【问题描述】:
{
    Vertex person1 = titanGraph.addVertex(null);
    person1.setProperty("userId", 1);
    person1.setProperty("username", "abc");


    Vertex person2 = titanGraph.addVertex(null);
    person2.setProperty("userId", 2);
    person2.setProperty("username", "bcd");


    Edge knows = titanGraph.addEdge(null, person1, person2, "Knows");
}

我使用 JavaAPI 在它们之间创建了两个顶点(person1,person2)和边(“knows”)。一段时间后,我想添加顶点(person3)。如何使用 JavaAPI 在 person1 和 person3 之间创建边缘(“知道”)? 请帮我解决这个问题。

【问题讨论】:

    标签: java cassandra titan gremlin tinkerpop3


    【解决方案1】:

    这是使用 Titan 1.0.0 和 Apache TinkerPop 3.0.1 API 的一种方法:

     // lookup existing person1 by userId
     GraphTraversalSource g = titanGraph.traversal();
     Vertex person1 = g.V().has("userId", 1).next();
    
     // create person3
     Vertex person3 = titanGraph.addVertex("Person");
     person3.property("userId", 3);
     person3.property("username", "cde");
    
     // create edge from person1 to person3
     Edge knows = person1.addEdge("Knows", person3);
    

    请参考Javadocs for Titan 1.0.0Javadocs for TinkerPop 3.0.1。另请参阅这个基本的Titan + TinkerPop Java example 程序以了解更多想法。

    如果您使用的是旧版本的 Titan(例如 0.5.4),则语法会有所不同,而您问题中的代码似乎正在使用该版本。如果您要开始一个新项目,您应该使用 1.0.0。

    【讨论】:

    • @Jason..我正在尝试使用以下代码检索值: TitanGraph graph = TinkerFactory.Open("titan-cassandra-es.properties") GraphTraversalSource g = titanGraph.traversal();顶点 person1 = g.V().has("userId", 1).next(); system.out.println(v.Property("username"); 但我得到了 fastNoSuchElementException ..你能帮我解决这个问题吗?
    • 该错误意味着没有具有userId=1 的顶点。我列出的代码假定已创建具有属性 userId = 1vertex1。如果您需要创建vertex1,请执行与person3 相同的代码,而不是查找它。
    • 在 gremlin 控制台中(我已经有 property:username)v.Property("username") 返回正确的值..但是当我使用 java api 尝试相同的时候..它不起作用..
    • 您是否在 gremlin 控制台中使用 graph.tx().commit() 提交了事务?您是否使用相同的titan.properties 文件连接到相同的后端配置?请使用相关信息更新您的问题,而不是在 cmets 中添加更多问题或一起开始一个新问题。
    • 非常感谢..graph.tx().commit() 之后..它现在正在工作:)
    猜你喜欢
    • 1970-01-01
    • 2017-02-06
    • 1970-01-01
    • 1970-01-01
    • 2014-09-03
    • 2017-09-26
    • 1970-01-01
    • 2017-05-01
    • 2017-04-03
    相关资源
    最近更新 更多