Hello,
Matt Frantz had a good idea for AddEdgeStep -- support Scope.local and
Scope.global.
* If the addE() is getting data from Scope.local, that means its coming
from a select()/match()-projection.
- g.V.match('a',
as('a').out('created').as('b'),
as('a').out('knows').count().is(gt(0)),
as('b').has(lang,'java')).
select('a','b').addOutE('b','javaCreationBy','a')
* If the addE() is getting data from Scope.global, that means its
coming from path/sideEffect data.
-
g.V.as('a').out('created').in('created').where(neq('a')).addInE('collaborator','a')
Of course, the super cool ScopingStrategy is able to infer the scope given the
context.
https://github.com/apache/incubator-tinkerpop/blob/master/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/ScopingStrategy.java
Note that Scope has this really neat method that is used extensively by
AddEdgeStep, WhereStep, SelectStep, SelectOneStep, … (and CypherStep in
neo4j-gremlin).
https://github.com/apache/incubator-tinkerpop/blob/master/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Scope.java#L38
Here are the updated docs:
http://tinkerpop.incubator.apache.org/docs/3.0.0-SNAPSHOT/#addedge-step
Enjoy,
Marko.
http://markorodriguez.com