如何在 janusgraph 中的顶点上设置 属性 值?
How to make property value required on a vertex in janusgraph?
我想在特定顶点标签上添加 属性 约束以禁止空值或插入没有特定属性的顶点
我将名字 属性 添加到 person 顶点,如下所示,所以这个人不会使用除 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()
问题是:
带有标签 person
的 vertex
需要始终存在 name
属性。或者这个顶点不应该被创建。
这在 janusgraph 中可以实现吗?
目前无法为 JanusGraph 中的某些顶点或边标签强制存在某些 属性 键。但是,这对于 JanusGraph 0.3.0 中引入的模式约束来说是一个很好的补充。因此,请随时 create an issue with JanusGraph 提出此功能请求。
在 JanusGraph 中实现类似的东西之前,您可能必须在插入数据的应用程序中实现一个逻辑来强制执行此操作。
如果您出于某种原因不能或不想在您的应用程序中实现它(例如,因为您不控制所有在您的图表中插入数据的应用程序),那么您也可以实现自己的 TinkerPop TraversalStrategy
检查每个 addV
步骤以确保还添加了 属性。这些策略针对所有遍历进行评估,并且可以更改(例如作为优化)遍历的步骤,或者如果遍历不合法,甚至抛出异常,这在您的情况下是正确的行为。 JanusGraph 本身也可能会实施一种策略来添加这些额外的模式约束。
我想在特定顶点标签上添加 属性 约束以禁止空值或插入没有特定属性的顶点
我将名字 属性 添加到 person 顶点,如下所示,所以这个人不会使用除 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()
问题是:
带有标签 person
的 vertex
需要始终存在 name
属性。或者这个顶点不应该被创建。
这在 janusgraph 中可以实现吗?
目前无法为 JanusGraph 中的某些顶点或边标签强制存在某些 属性 键。但是,这对于 JanusGraph 0.3.0 中引入的模式约束来说是一个很好的补充。因此,请随时 create an issue with JanusGraph 提出此功能请求。
在 JanusGraph 中实现类似的东西之前,您可能必须在插入数据的应用程序中实现一个逻辑来强制执行此操作。
如果您出于某种原因不能或不想在您的应用程序中实现它(例如,因为您不控制所有在您的图表中插入数据的应用程序),那么您也可以实现自己的 TinkerPop TraversalStrategy
检查每个 addV
步骤以确保还添加了 属性。这些策略针对所有遍历进行评估,并且可以更改(例如作为优化)遍历的步骤,或者如果遍历不合法,甚至抛出异常,这在您的情况下是正确的行为。 JanusGraph 本身也可能会实施一种策略来添加这些额外的模式约束。