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

             Summary: TraversalSource.script() as a general-solution to :>
                 Key: TINKERPOP-1145
                 URL: https://issues.apache.org/jira/browse/TINKERPOP-1145
             Project: TinkerPop
          Issue Type: Improvement
          Components: process
    Affects Versions: 3.1.0-incubating, 3.1.1-incubating
            Reporter: Marko A. Rodriguez


In {{GraphComputer}}, if the traversal uses a lambda, the user has to use a 
"remote connection" and submit their traversal as a script-engine {{String}} 
via:

{code}
gremlin> :> g.V().group().by{it.name[0]} 
{code}

For Gremlin Server, {{:>}} is currently the only way to submit traversals in 
the Gremlin Console.

This is all bad. Why? Its Gremlin Console specific and we can solve it more 
elegantly with the work in TINKERPOP-971 and TINKERPOP-575.

{code}
g = graph.traversal().withComputer()
g.V().group().by("name") // CURRENT AND GOOD
{code}

{code}
g = graph.traversal().withComputer()
g.script("g.V().group().by{it.name[0]}") // PROPOSED
{code}

{code}
g = graph.traversal().withServer('127.0.0.1:8080')
g.script("g.V().group().by{it.name[0]}") // PROPOSED
{code}

See {{TraversalScriptFunction}} for some pieces of the implementation.

We could then make {{:>}} simply be shorthand for {{g.script()}}. However, 
outside the console, {{g.script()}} just works.

Next, we can assume {{gremlin-groovy}}, but we could also allow:

{code}
g = 
graph.traversal().withServer('127.0.0.1:8080').withStrategies(ScriptEngineStrategy.for("gremlin-scala"))
g.script("g.V().group().by(??)") // PROPOSED
{code}





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

Reply via email to