如何在JanusGraph中为特殊顶点类型创建属性

时间:2018-01-25 17:05:14

标签: gremlin janusgraph

我正在尝试为特定的顶点类型添加属性。假设我的图表架构中有personcar个顶点类型,如何才能将namebirthday属性仅添加到person顶点?

创建firstName属性的示例:

graph.openManagement().makePropertyKey('firstName')
     .dataType‌​(String.class).cardi‌​nality(Cardinality.S‌​INGLE).make();

这里我正在创建顶点的新属性但是如何将其限制为特定类型的顶点?

提前致谢。

1 个答案:

答案 0 :(得分:6)

使用新的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

我更新了我之前所说的答案,他们现在还不能进行架构限制。