gremlin - 如何在janusgraph中的顶点上设置所需的属性值?

标签 gremlin janusgraph

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

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

问题是:

带有标签 personvertex 始终需要存在 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/

相关文章:

graph - 对于给定的遍历 gremlin 查询,如何在所有访问过的节点/边上应用静态步骤

azure - 具有包含 html 的大属性的元素的 Azure Cosmos DB 的性能

python - 如何将tinkergraph上传到python/gremlin?

graph-databases - JanusGraph : Please add a key named "ConfigurationManagementGraph" to the "graphs"

gremlin - 如何在 gremlin 中为空遍历添加默认值?

neo4j - 我应该使用 TitanDB 吗?

python - Web 应用程序中的 Gremlin Python

java - JanusGraph 地理索引

elasticsearch - 索引创建成功,但不会重新索引新数据

gremlin - 将 Janusgraph 与 AWSKeyspaces 结合使用。从 gremlin 控制台添加顶点时出现错误消息 `Lock write retry count exceeded`