如何使janusgraph的顶点上要求的属性值?

时间:2019-04-17 10:07:54

标签: gremlin janusgraph

我想在特定的顶点标签上添加属性约束,以禁止空值或插入没有特定属性的顶点

我将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()

问题是:

带有标签vertex的{​​{1}}要求始终存在person属性。否则不应创建此顶点。

在janusgraph中可以实现吗?

1 个答案:

答案 0 :(得分:3)

当前无法在JanusGraph中为某些顶点或边缘标签强制使用某些属性键。但是,这对于JanusGraph 0.3.0中引入的架构约束将是一个很好的补充。因此,随时create an issue with JanusGraph接受此功能请求。

直到在JanusGraph中实现了类似的功能,您可能必须实现一种逻辑来在插入数据的应用程序中强制执行此操作。

如果由于某种原因您不能或不想在应用程序中实现此功能(例如,因为您不控制所有在图形中插入数据的应用程序),那么您也可以实现自己的TinkerPop TraversalStrategy会检查每个addV步骤,以确保还添加了该属性。这些策略会针对所有遍历进行评估,并且可以更改(例如,作为优化)遍历的步骤,或者如果遍历不合法(这在您的情况下是正确的行为),甚至会引发异常。 JanusGraph本身也可能会实施一项策略,以添加这些其他架构约束。