[ 
https://issues.apache.org/jira/browse/TINKERPOP-2014?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16942130#comment-16942130
 ] 

Stephen Mallette commented on TINKERPOP-2014:
---------------------------------------------

Pulled a use case from my notes about my previous comment - here's a use case 
outside of testing that [~dkuppitz] presented a while back:

{code}
gremlin> 
g.V(4).both().sample(1).out('created').aggregate('x').by('name').cap('x').
......1>   
V(4).both().sample(1).both('knows').hasId(neq(4)).values('name').fold().
......2>   project('friends of josh created','friends of josh\'s friends').
......3>     by(select('x').unfold().fold()).
......4>     by().
......5>   unfold()
==>friends of josh created=[]
==>friends of josh's friends=[]
gremlin> 
g.V(4).both().sample(1).out('created').aggregate('x').by('name').cap('x').
......1>   
V(4).both().sample(1).both('knows').hasId(neq(4)).values('name').fold().
......2>   project('friends of josh created','friends of josh\'s friends').
......3>     by(select('x').unfold().fold()).
......4>     by().
......5>   unfold()
==>friends of josh created=[]
==>friends of josh's friends=[vadas]
gremlin> 
g.V(4).both().sample(1).out('created').aggregate('x').by('name').cap('x').
......1>   
V(4).both().sample(1).both('knows').hasId(neq(4)).values('name').fold().
......2>   project('friends of josh created','friends of josh\'s friends').
......3>     by(select('x').unfold().fold()).
......4>     by().
......5>   unfold()
==>friends of josh created=[lop]
==>friends of josh's friends=[]
gremlin> 
g.V(4).both().sample(1).out('created').aggregate('x').by('name').cap('x').
......1>   
V(4).both().sample(1).both('knows').hasId(neq(4)).values('name').fold().
......2>   project('friends of josh created','friends of josh\'s friends').
......3>     by(select('x').unfold().fold()).
......4>     by().
......5>   unfold()
==>friends of josh created=[lop]
==>friends of josh's friends=[vadas]
{code} 

{quote}If I'm not able to specify a seed for the sample step, I can't ensure 
that the software listed in the result was created by the same friends of josh, 
that are also friends of the people listed in the result. (edited) 
I could by aggregating those friends in another collection, emitting in cap and 
do some matching in the second query. But that would complicate things.{quote}

> Allow an ability to specify seeding for random methods such as coin, sample 
> and Order.shuffle
> ---------------------------------------------------------------------------------------------
>
>                 Key: TINKERPOP-2014
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-2014
>             Project: TinkerPop
>          Issue Type: Improvement
>          Components: process
>    Affects Versions: 3.3.3
>            Reporter: Sam Rosen
>            Priority: Minor
>
> Currently, all the methods that have non-deterministic behavior such as coin 
> and sample have no ability to set a seed. The ability to set a seed will 
> allow for reproducible and testable behavior as well as more control flow for 
> random processes. If a certain backend does not support seeding, they could 
> simply ignore it. Some possible API changes:
> graph.traversal.V().withSeed(2L).coin(.5)
> graph.traversal.V().sample(3, 0L)



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to