Marko A. Rodriguez created TINKERPOP3-962:
---------------------------------------------

             Summary: Provide "vertex query" selectivity when importing data in 
OLAP.
                 Key: TINKERPOP3-962
                 URL: https://issues.apache.org/jira/browse/TINKERPOP3-962
             Project: TinkerPop 3
          Issue Type: Improvement
          Components: process
    Affects Versions: 3.1.0-incubating
            Reporter: Marko A. Rodriguez
            Assignee: Marko A. Rodriguez


Currently, when you do:

{code}
graph.compute().program(PageRankVertexProgram).submit()
{code}

We are pulling the entire {{graph}} into the OLAP engine. We should allow the 
user to limit the amount of data pulled via "vertex query"-type filter. For 
instance, we could support the following two new methods on {{GraphComputer}}.

{code}
graph.compute().program(PageRankVertexProgram).vertices(hasLabel('person')).edges(out,
 hasLabel('knows','friend').has('weight',gt(0.8)).submit()
{code}

The two methods would be defined as:

{code}
public interface GraphComputer {
...
GraphComputer vertices(final Traversal<Vertex,Vertex> vertexFilter)
GraphComputer edges(final Direction direction, final Traversal<Edge,Edge> 
edgeFilter)
{code}

If the user does NOT provide a {{vertices()}} (or {{edges()}}) call, then the 
{{Traversal}} is assumed to be {{IdentityTraversal}}. Finally, in terms of 
execution order, first {{vertices()}} is called and if "false" then don't call 
edges. Else, call edges on all the respective incoming and outgoing edges. 
Don't really like {{Direction}} there and perhaps its just:

{code}
GraphComputer edges(final Traversal<Vertex,Edge> edgeFilter)
{code}

And then all edges that pass through are added to OLAP vertex. You don't want 
{{both}}? Then its {{outE('knows',friend').has('weight',gt(0.8))}}.



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

Reply via email to