2017-02-13 23 views
1

Я пытаюсь прочитать внешнюю вершину JSON и добавить ее в открытый граф титана. следующим образом:Gremlin Через java чтение внешней вершины JSON и добавление к существующему открытому графику дает недопустимое исключение исключаемых вершин?

gremlin> newVertex = graph.io(GraphSONIo.build()).reader().create().readVertex(new FileInputStream("/tmp/sample_vertex.json"),null); 
gremlin> v[42092] 
gremlin> existingVertex = graph.V(4145).next(); 
gremlin> v[4145] 
gremlin> existingVertex.addEdge("has",newVertex); 
Invalid vertex provided: v[42092] 

Я уже экспортировала вершину, используя GraphSON.io следующим образом:

gremlin> graph.io(GraphSONIo.build()).writer().create().writeVertex(new FileInputStream("/tmp/sample_vertex.json"),g.V().next()); 

ответ

1

Сигнатура readVertex выглядит следующим образом:

Vertex readVertex(InputStream inputStream, Function<Attachable<Vertex>, Vertex> vertexAttachMethod) 

Если поставить null в vertexAttachMethod, то не прилагается никаких усилий, чтобы прикрепить вершину к вашему графику, и в результате вы получите непринятый StarVertex. Вместо этого рассмотрите этот подход:

gremlin> graph = TinkerGraph.open() 
==>tinkergraph[vertices:0 edges:0] 
gremlin> g = graph.traversal() 
==>graphtraversalsource[tinkergraph[vertices:0 edges:0], standard] 
gremlin> start = graph.io(GraphSONIo.build()).reader().create().readVertex(new FileInputStream('v.json'), Attachable.Method.create(graph)) 
==>v[1] 
gremlin> gremlin> g.V(start).as('start'). 
......1> addV().as('end'). 
......2> addE('has').from('start').to('end') 
==>e[1][1-has->0] 
+0

Спасибо за ответ. Это сработало для меня. , но я получаю вершину без ее «inE {}» и «outE {}». это то, что я должен настраивать ребра вручную.? @ stephen-mallette –

+0

Если вам нужны края, тогда их тоже нужно прикрепить. См. Другую перегрузку 'readVertex', которая имеет' edgeAttachMethod'. –

+0

в порядке. Я попробую. Еще одна вещь, например, я экспортировал 3 вершины, которые имеют грани между ними, чтобы json, который экспортирует 3 разных вершины json. и снова я импортировал 3 экспортированных вершины на другой граф, но проблемы - это ребра, которые не сохраняются и через JAVA i реализованы, но в графе фактически не существует. Так мне нужно совершать после добавления? –