Marko A. Rodriguez created TINKERPOP-1240:
---------------------------------------------

             Summary: Provide support g.script("V().map{closure}")
                 Key: TINKERPOP-1240
                 URL: https://issues.apache.org/jira/browse/TINKERPOP-1240
             Project: TinkerPop
          Issue Type: Improvement
          Components: process
    Affects Versions: 3.1.1-incubating
            Reporter: Marko A. Rodriguez


We have lots in place for remoting traversals -- {{RemoteStep}} and 
{{TraversalVertexProgramStep}}. I think the final piece to this puzzle is 
sending closure-based traversals. I believe we should add:

{code}
g.V().out().script("map{it.bulk()}").sum()
{code}

I think this would direct compile to:

{code}
[GraphStep,VertexStep,ScriptStep,SumStep]
{code}

What happens is that this gets fully compiled remotely for both {{RemoteGraph}} 
and {{GraphComputer}}. When a full compilation happens, it will look like:

{code}
[GraphStep,VertexStep,MapStep,SumStep]
{code} 

There will exist {{ScriptStrategy}} that will do this:

* Can be defined by 
{{g.withStrategy(ScriptStrategy.build().engine("gremlin-groovy").create())}}.
* Will find all {{ScriptSteps}}, evaluate their {{ScriptTraversal}} and then 
insert their steps into the master {{Traversal}}.

Thats it.

This also allows people to go so far as:

{code}
g.script("V().out().map{..}.in().blah()"}
{code}

If they don't want to move between....

This would allow us to completely deprecate {{:>}} for both {{GremlinServer}} 
and {{HadoopRemoteAcceptor}}... which I believe are the only places they are 
used.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to