Создание вершины в БД Scala gremlin titan graph

Я использую графическую БД Titan Cassandra, используя scala. Создание вершины и ребер для

val conf = new BaseConfiguration ()
conf.setProperty("storage.backend", inmemory)
TitanFactory.open (conf)

val graph = TitanFactory.open (conf)
val v0 = graph + "test1"
val V1 = graph + "test2"
v1 ---("test", a→ 20, b → 30) --> v2

Он создает 2 вершины и 1 ребро с этими свойствами. Мой вопрос,

В следующий раз, когда я выполняю его, я создаю еще две вершины с его краем. Мне не нужно создавать вершину с меткой, такой же, как у вершины.

Или есть ли способ создать вершину с идентификатором, что-то вроде этого v (test1) вместо случайной последовательности

Спасибо


person Gopi    schedule 28.09.2016    source источник


Ответы (1)


Обычно вы хотите создать собственное уникальное свойство, которое будет служить идентификатором. Из gremlin-scala видно, что есть два способа сделать это:

val vertex = graph + ("A Vertex", ID → "1")

or

val vertex = graph + "A Vertex"
vertex.setProperty(ID, "1")

Таким образом, позже вы можете выполнить следующий обход, чтобы найти эту вершину:

graph.traversal().V().has("ID", "1").next()

Примечание: Поскольку вы используете Titan, вы, скорее всего, захотите указать Titan, что это свойство должно быть проиндексировано и оно должно быть уникальным. На этой странице показано, как создавать уникальные индексы в Titan. .

person Filipe Teixeira    schedule 28.09.2016
comment
Есть ли способ проверить, существует ли вершина или нет. В настоящее время я делаю, как показано ниже graph.containsVertexLabel("label"). если не существует, создайте или не делайте - person Gopi; 28.09.2016
comment
Там может быть более быстрый способ, но вы можете сделать быстрый обход. g.traversal().V().hasLabel("label").hasNext() - person Filipe Teixeira; 28.09.2016