[
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)