我想在特定顶点标签上添加属性约束,以禁止空值或插入没有特定属性的顶点
我将 name 属性添加到 person 顶点,如下所示,因此 person 不会采用除 name 之外的其他属性但我需要对值添加约束,使其不能为 null
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()
问题是:
带有标签 person
的 vertex
始终需要存在 name
属性。或者不应创建此顶点。
这可以在 janusgraph 中实现吗?
最佳答案
目前无法强制 JanusGraph 中某些顶点或边标签存在某些属性键。然而,这对于 JanusGraph 0.3.0 中引入的模式约束来说是一个很好的补充。所以,请随意create an issue with JanusGraph对于此功能请求。
在 JanusGraph 中实现类似的功能之前,您可能必须实现一个逻辑来在插入数据的应用程序中强制执行此操作。
如果您出于某种原因不能或不想在您的应用程序中实现此功能(例如,因为您不控制在图表中插入数据的所有应用程序),那么您也可以实现您自己的 TinkerPop TraversalStrategy
检查每个 addV
步骤以确保该属性也已添加。这些策略针对所有遍历进行评估,并且可以更改(例如作为优化)遍历的步骤,甚至如果遍历不合法,则抛出异常,这在您的情况下是正确的行为。 JanusGraph 本身可能也会实现一种策略来添加这些额外的架构约束。
关于gremlin - 如何在janusgraph中的顶点上设置所需的属性值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55725080/