如何在 JanusGraph 中为特殊顶点类型创建 属性
How can I create a property for a special vertex type in JanusGraph
我正在尝试为特定顶点类型添加 属性。假设我的图形模式中有 person
和 car
顶点类型,我如何才能将 name
和 birthday
属性仅添加到 person
顶点?
创建示例 firstName
属性:
graph.openManagement().makePropertyKey('firstName')
.dataType(String.class).cardinality(Cardinality.SINGLE).make();
这里我正在创建新的 属性 顶点,但是如何将其限制为特定类型的顶点?
提前致谢。
随着新的 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].
有关详细信息,请参阅 official JanusGraph documentation on schema constraints。
我更新了我的答案,因为它之前说过模式约束还不可能像现在这样。
我正在尝试为特定顶点类型添加 属性。假设我的图形模式中有 person
和 car
顶点类型,我如何才能将 name
和 birthday
属性仅添加到 person
顶点?
创建示例 firstName
属性:
graph.openManagement().makePropertyKey('firstName')
.dataType(String.class).cardinality(Cardinality.SINGLE).make();
这里我正在创建新的 属性 顶点,但是如何将其限制为特定类型的顶点?
提前致谢。
随着新的 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].
有关详细信息,请参阅 official JanusGraph documentation on schema constraints。
我更新了我的答案,因为它之前说过模式约束还不可能像现在这样。