[ 
https://issues.apache.org/jira/browse/TINKERPOP-571?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

stephen mallette closed TINKERPOP-571.
--------------------------------------
    Resolution: Won't Do

I don't think we'll see this as part of TinkerPop 3.x and as it's not really 
"graph" it might be something else all together - closing.

> [Proposal] Provide a way to process arbitrary objects with GraphComputer
> ------------------------------------------------------------------------
>
>                 Key: TINKERPOP-571
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-571
>             Project: TinkerPop
>          Issue Type: Improvement
>          Components: process
>    Affects Versions: 3.0.2-incubating
>            Reporter: Marko A. Rodriguez
>            Priority: Major
>
> I want to be able to do this in OLAP:
> {code}
> __(12,21,3,4,75).is(gt,10).sum()
> {code} 
> An idea is this... For any {{Iterator<Object>}}, we need to be able to 
> generate a Graph where:
> {code}
> g.addVertex(id,12)
> g.addVertex(id,21)
> g.addVertex(id,3)
> g.addVertex(id,4)
> g.addVertex(id,75)
> {code}
> ...and then the start of the OLAP traversal has a "hidden prefix" of 
> {{g.V.id}} thus, behind the scenes, what is being executed is:
> {code}
> g.V.id.is(gt,10).sum()
> {code}
> If we can make OLAP object processing just as natural as graph processing, 
> then I don't see why Gremlin is not the craziest functional language to date:
>   * single machine or distributed
>   * supports non-terminal sideEffects (i.e. {{groupCount()}} is not the "end" 
> (sideEffect is key S-x->S))
>   * has natural branching constructs -- not just serial stream processing.
>   * supports an execution structure that is a graph, not a DAG (e.g. 
> {{repeat()}}, {{back()}}, ...)
>       * fundamentally an arbitrary execution graph with {{jump()}} 
> (low-level, but there)
>       * this provides turing completeness as we have a non-serial "program 
> counter" (the step ID is analogous to instruction's location in RAM and a 
> traverser can jump to any step ID it wants). Moreover we have two random 
> access memories ({{sack}} (local) and {{sideEffect}} (global)).
>   * can be easily expressed in any host language as its represented using a 
> fundamental concept in all programming languages -- fluent function chaining 
> (monoid state modulation)
>     * for JVM languages, simply {{import Traversal}} and use the syntax of 
> the importing language (e.g. Jython, Rhino, Groovy, Scala, Clojure, etc.)
>   * can be used as a database query language (and/)or an arbitrary data flow 
> language (given this proposal).
>   * has numerous execution engines 
> (Giraph,MapReduce,Spark,Fulgora,TinkerGraph,...) with different time/space 
> complexities.
>   * has remote execution functionality via GremlinServer (with monitoring).
>   * ...and, native support for the most complex data structure there is, the 
> graph (i.e. {{outE}}, {{in}}, etc.)
>  
> Its mind boggling actually... I can't think of anything else like this. 
> [~mbroecheler] @dkuppitz [~spmallette] @joshsh



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to