Graph gremlin中的依赖属性

Graph gremlin中的依赖属性,graph,metadata,gremlin,janusgraph,Graph,Metadata,Gremlin,Janusgraph,考虑以下JanusGraph中的模式 g.addV('node1').next() g.addV('node2').next() g.addV('node3').next() g.V().hasLabel('node1').as('fromV').V().hasLabel('node2').as('toV').addE('rel').from('fromV').to('toV').property('property1',1).iterate() g.V().hasLabel('node1'

考虑以下JanusGraph中的模式

g.addV('node1').next()
g.addV('node2').next()
g.addV('node3').next()

g.V().hasLabel('node1').as('fromV').V().hasLabel('node2').as('toV').addE('rel').from('fromV').to('toV').property('property1',1).iterate()

g.V().hasLabel('node1').as('fromV').V().hasLabel('node3').as('toV').addE('rel1').from('fromV').to('toV').property('property2',2).iterate()
3个节点:节点1、节点2和节点3 2关系:节点1->rel->node2和节点1->rel1->node3

我希望rel1关系的property2依赖于公式2*property1的rel关系的property1。 例子: 如果属性1=4,则属性2=2*4=8

是否可以在更新属性1时自动更新属性2?如何更新?
如果无法自动更新,如何使用查询进行更新?

您必须自己构建该功能作为应用程序的一部分,因为TinkerPop或JanusGraph中没有允许您指定此类规则的内容。不过,有些东西可能会帮助您构建此类功能:

  • -您可以尝试侦听边缘属性上的突变事件,然后触发更改
  • -也许您可以直接监听JanusGraph的事务日志,然后触发更改
  • -也许您可以将您的逻辑构建到自定义DSL步骤中,这样当您注意到对
    属性('property1')的调用时,
    您就可以插入额外的Gremlin步骤来更新另一个边缘属性
  • 如果不需要实时数据,显然可以使用批处理作业来更新
    property2
    值。如果您有一个非常大的图形,那么您将需要考虑使用类似Spark的东西来并行执行这样的作业