Gremlin 中是否有 SideEffect 的执行顺序保证
Is there any execution order guarantee for SideEffect in Gremlin
我有一些 Gremlin.Net 代码可以将一个顶点复制到一个新顶点,将旧边标记为 'ended',链接新顶点(克隆)并更新一些属性它。忽略代码片段中我自己的 DSL 代码,我的问题是,我可以依赖这些 SideEffects 的顺序吗?我需要 'update' 步骤到 运行 最后
...AddV().Property("label", __.Select<Vertex>("existing").Label()).As("clone") // new vertex
.SideEffect(__
.Select<Vertex>("existing").Properties<VertexProperty>().As("p")
.Select<Vertex>("clone")
.Property(__.Select<VertexProperty>("p").Key(), __.Select<VertexProperty>("p").Value<object>()))
.SideEffect(__
.Select<Vertex>("existing").InE(DbLabels.ComponentEdge).As("ine")
.MarkToDate(operationTime)
.AddE(linkedEdgeLabel).From("parent").To("clone")
.MarkFromDate(operationTime))
.SideEffect(__
.Select<Vertex>("clone").UpdateVertexPropertiesUnchecked(propertyDict));
如果不是,是更好的方法吗?
我不确定是否曾经记录过它们是按顺序执行的,但我认为这是一个合理的假设,因为像下面这样的查询绝对需要按 sideEffect
步骤顺序执行。我不确定是否存在 Gremlin Strategy
可能 rewrite/re-order 该查询的情况。如果我找到任何东西,我会更新这个答案。
gremlin> g.V(44).values('runways')
==>3
gremlin> g.V(44).sideEffect(properties('runways').drop()).sideEffect(property(set,'runways',99)).values('runways')
==>99
gremlin> g.V(44).values('runways')
==>99
在一天结束时,可能总是最好与您正在使用的图形存储的提供商核实。也就是说,在 TinkerPop 社区内,我们正在努力改进围绕每个 Gremlin 步骤的语义的文档,这绝对是我们应该在那里澄清的事情。
我有一些 Gremlin.Net 代码可以将一个顶点复制到一个新顶点,将旧边标记为 'ended',链接新顶点(克隆)并更新一些属性它。忽略代码片段中我自己的 DSL 代码,我的问题是,我可以依赖这些 SideEffects 的顺序吗?我需要 'update' 步骤到 运行 最后
...AddV().Property("label", __.Select<Vertex>("existing").Label()).As("clone") // new vertex
.SideEffect(__
.Select<Vertex>("existing").Properties<VertexProperty>().As("p")
.Select<Vertex>("clone")
.Property(__.Select<VertexProperty>("p").Key(), __.Select<VertexProperty>("p").Value<object>()))
.SideEffect(__
.Select<Vertex>("existing").InE(DbLabels.ComponentEdge).As("ine")
.MarkToDate(operationTime)
.AddE(linkedEdgeLabel).From("parent").To("clone")
.MarkFromDate(operationTime))
.SideEffect(__
.Select<Vertex>("clone").UpdateVertexPropertiesUnchecked(propertyDict));
如果不是,是更好的方法吗?
我不确定是否曾经记录过它们是按顺序执行的,但我认为这是一个合理的假设,因为像下面这样的查询绝对需要按 sideEffect
步骤顺序执行。我不确定是否存在 Gremlin Strategy
可能 rewrite/re-order 该查询的情况。如果我找到任何东西,我会更新这个答案。
gremlin> g.V(44).values('runways')
==>3
gremlin> g.V(44).sideEffect(properties('runways').drop()).sideEffect(property(set,'runways',99)).values('runways')
==>99
gremlin> g.V(44).values('runways')
==>99
在一天结束时,可能总是最好与您正在使用的图形存储的提供商核实。也就是说,在 TinkerPop 社区内,我们正在努力改进围绕每个 Gremlin 步骤的语义的文档,这绝对是我们应该在那里澄清的事情。