Как я могу установить массив как свойство в janusgraph?

Я хочу установить свойство для вершины и края в качестве значения списка. Я использую янусграф. Гремлин-питон

3 ответа

Вот пример, который использует gremlin-python для создания вершины с 3 значениями, хранящимися как Set, с использованием ключа свойства mySet. Обратите внимание, что при использовании gremlin-python некоторые шаги Gremlin имеют подчеркивание после имени, чтобы избежать конфликтов с шагами Python с тем же именем.

result = ( 
    g.addV('test').
        property(Cardinality.set_,"mySet",1).
        property(Cardinality.set_,"mySet",2).
        property(Cardinality.set_,"mySet",3).
      valueMap().
      next()
)

print(result)

{'mySet': [1, 2, 3]}

В JanusGraph рекомендуется создавать схему заранее. Кардинальность LIST означает, что вам нужен ключ с массивом значений.

В консоли гремлина вы можете сделать:

mgmt = graph.openManagement(); mgmt.makePropertyKey('myProperty').dataType(String).cardinality(LIST).make(); mgmt.commit();

Затем вы связываете функции свойств в гремлине:

g.addV().property('myProperty', 'val1).property('myProperty','val2')

Если вы хотите создать схему динамически, вы можете сделать это одним вызовом гремлина. Вы предоставляете новый ключ свойства, который никогда ранее не использовался (существующие ключи по умолчанию будут иметь мощность SINGLE и не будут принимать несколько значений). Вы должны проинструктировать гремлина о кардинальности всех ваших новых вставленных значений, например:

g.addV().property(list,'myNewProperty', 'val1').property(list,'myNewProperty','val2')

Обратите внимание, как мне приходилось каждый раз добавлять ключевое слово списка.

Если вы делаете это через gremlin-python, второй вариант должен работать напрямую, как если бы это был нативный код. Первый вариант требует, чтобы вы отправляли команды схемы через клиентское соединение:

from gremlin_python.driver.client import Client

client = Client('ws://urlToServer:8182/gremlin','g')

console_command_string = """mgmt = graph.openManagement(); mgmt.makePropertyKey('myProperty').dataType(String).cardinality(LIST).make(); mgmt.commit();"""

client.submit(console_command_string)

client.close()

Установив кардинальность свойства для набора или списка, вы можете прикрепить несколько значений к ключу свойства.

Найдите приведенный ниже фрагмент кода Java.

      janusGraphVertex.property(VertexProperty.Cardinality.set, "hobbies", "cricket");
janusGraphVertex.property(VertexProperty.Cardinality.set, "hobbies", "football");
janusGraphVertex.property(VertexProperty.Cardinality.set, "hobbies", "tennis");

Реферальная ссылка .

Другие вопросы по тегам