Как сделать значение свойства обязательным для вершины в janusgraph? - PullRequest
0 голосов
/ 17 апреля 2019

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

Я добавил свойство name к вершине человека, как показано ниже, поэтому человек не будет приниматьдругие свойства, кроме имени , но мне нужно добавить ограничение на значение, чтобы оно не могло быть пустым

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

Проблема:

A vertex с меткойperson требует наличия свойства name всегда.Или эта вершина не должна быть создана.

Это достижимо в janusgraph?

1 Ответ

3 голосов
/ 17 апреля 2019

В настоящее время невозможно обеспечить наличие определенных ключей свойств для определенных вершин или меток ребер в JanusGraph.Однако это было бы хорошим дополнением для ограничений схемы, которые были введены в JanusGraph 0.3.0.Итак, не стесняйтесь создать проблему с JanusGraph для этого запроса функции.

Пока что-то подобное не будет реализовано в JanusGraph, вам, вероятно, придется реализовать логику для реализации этого в вашем приложении, котороевставляет данные.

Если вы по какой-то причине не можете или не хотите реализовать это в своем приложении (например, потому что вы не контролируете все приложения, которые вставляют данные в ваш график), то вы также можете реализоватьваш собственный TinkerPop TraversalStrategy, который проверяет каждый addV шаг, чтобы убедиться, что свойство также добавлено.Эти стратегии оцениваются для всех обходов и могут изменить (например, как оптимизацию) этапы обхода или даже вызвать исключение, если обход не является законным, что будет правильным поведением в вашем случае.Возможно, сам JanusGraph также реализует стратегию добавления этих дополнительных ограничений схемы.

...