在Java中将顶点添加到TitanDB图
教程或在线文档中的示例通常使用Gremlin/groovyshell来演示TitanDBAPI。 我使用的是纯Java-8(很旧,但不太旧),我需要实现的第一件事是一种向图形添加顶点和边的有效方法 因此,要获取或创建具有字符串标识符的顶点,我执行了以下操作:在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 (
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()
方法反复创建它