Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中将顶点添加到TitanDB图_Java_Api_Titan - Fatal编程技术网

在Java中将顶点添加到TitanDB图

在Java中将顶点添加到TitanDB图,java,api,titan,Java,Api,Titan,教程或在线文档中的示例通常使用Gremlin/groovyshell来演示TitanDBAPI。 我使用的是纯Java-8(很旧,但不太旧),我需要实现的第一件事是一种向图形添加顶点和边的有效方法 因此,要获取或创建具有字符串标识符的顶点,我执行了以下操作: private Vertex getOrCreate(TitanGraph g, String vertexId) { Iterator<Vertex> vertices = g.vertices(); if (

教程或在线文档中的示例通常使用Gremlin/groovyshell来演示TitanDBAPI。 我使用的是纯Java-8(很旧,但不太旧),我需要实现的第一件事是一种向图形添加顶点和边的有效方法

因此,要获取或创建具有字符串标识符的顶点,我执行了以下操作:

private Vertex getOrCreate(TitanGraph g, String vertexId) {
    Iterator<Vertex> vertices = g.vertices();
    if (!vertices.hasNext()) { // empty graph?
        Vertex v = g.addVertex("id", vertexId);
        return v;
    } else
        while (vertices.hasNext()) {
            Vertex nextVertex = vertices.next();
            if (nextVertex.property("id").equals(vertexId)) {
                return nextVertex;
            } else {
                Vertex v = g.addVertex("id", vertexId);
                return v;
            }
        }
    return null;
}
private Vertex getOrCreate(图g,字符串vertexId){
迭代器顶点=g.顶点();
如果(!vertices.hasNext()){//空图?
顶点v=g.addVertex(“id”,顶点id);
返回v;
}否则
while(顶点.hasNext()){
顶点nextVertex=顶点。下一步();
如果(nextVertex.property(“id”)等于(vertexId)){
返回nextVertex;
}否则{
顶点v=g.addVertex(“id”,顶点id);
返回v;
}
}
返回null;
}

这是TitanDB API提供的最有效的技术吗

首先,Gremlin Java和Groovy之间不再存在真正的分离。你可以用这两种语言写《小精灵》同样好。因此,我要说的是,只需使用Gremlin进行
getOrCreate
,这可以归结为一个基本的一行程序:

gremlin> graph = TinkerFactory.createModern()
==>tinkergraph[vertices:6 edges:6]
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.V(1).tryNext().orElseGet{graph.addVertex(id, 1)}
==>v[1]
上面的代码是Groovy语法,但Java基本相同:

g.V(1).tryNext().orElseGet(() -> graph.addVertex(id, 1));
唯一的区别是lambda/closure语法。注意,在我的例子中,
id
元素的保留属性
——它是唯一的标识符。你可能会为你的“标识符”而不是“ID”考虑一个不同的名字——也许“UNIQUID”,在这种情况下,你的<代码> GETORIGRESUB/<代码>将是这样的:

private Vertex getOrCreate(TitanGraph graph, String vertexId) {
    GraphTraversalSource g = graph.traversal();
    return g.V().has("uniqueId", vertexId).tryNext().orElseGet(() -> graph.addVertex("uniqueId", vertexId);
}
如果可以的话,我还建议您传递
GraphTraversalSource
——无需使用
graph.traversal()
方法反复创建它