Как я могу создать свойство для особого типа вершины в JanusGraph

Я пытаюсь добавить свойство для определенного типа вершины. Предполагая, что у меня есть типы вершин person и car в моей схеме графа, как я могу добавить свойства name и birthday только к вершине person?

Пример создания свойства firstName:

graph.openManagement().makePropertyKey('firstName')
     .dataType‌​(String.class).cardi‌​nality(Cardinality.S‌​INGLE).make();

Здесь я создаю новое свойство вершины, но как я могу ограничить его определенным типом вершины?

Заранее спасибо.


person janus graph    schedule 25.01.2018    source источник
comment
Не могли бы вы показать, что у вас есть? Что ты пробовал?   -  person melwil    schedule 25.01.2018
comment
graph.openManagement (). makePropertyKey ('firstName'). dataType (String.class) .cardinality (Cardinality.SINGLE) .make (); Здесь я создаю новое свойство вершины, но как я могу указать, для какого типа вершины?   -  person janus graph    schedule 25.01.2018


Ответы (1)


В новом выпуске JanusGraph 0.3.0 теперь можно создавать ограничения схемы, которые делают именно то, что вы хотите. Поскольку эти ограничения по умолчанию отключены, их сначала нужно включить, установив schema.constraints в true. Теперь вы можете создать такое ограничение:

mgmt = graph.openManagement()
person = mgmt.makeVertexLabel('person').make()
name = mgmt.makePropertyKey('firstName').dataType(String.class).
    cardinality(Cardinality.SINGLE).make()
mgmt.addProperties(person, name)
mgmt.commit()

это означает, что ключ свойства firstName может использоваться только для вершины с меткой person.

Когда вы теперь попытаетесь добавить это свойство к вершине с другой меткой, она выдаст исключение:

gremlin> g.addV('car').property('firstName','test')
Property Key constraint does not exist for given Vertex Label [car] and property key [firstName].

Дополнительную информацию см. В официальной документации JanusGraph об ограничениях схемы.

Я обновил свой ответ, поскольку ранее в нем говорилось, что ограничения схемы еще не возможны, а они есть сейчас.

person Florian Hockmann    schedule 26.01.2018
comment
Спасибо за разъяснения, буду отслеживать прогресс. - person janus graph; 30.01.2018