For the extraction of a random graph, I use:
// assume already matched to start node n
MATCH r = (n)-[:I]-()
WITH apoc.coll.randomItems(collect(r), 10) as r1
UNWIND r1 as r
WITH r1, last(nodes(r)) as n
MATCH r = (n)-[:I]-()
WITH r1, apoc.coll.randomItems(collect(r), 10) as r2
UNWIND r2 as r
WITH r1, r2, last(nodes(r)) as n
MATCH r = (n)-[:I]-()
WITH r1, r2, apoc.coll.randomItems(collect(r), 10) as r3
UNWIND r3 as r
WITH r1, r2, r3, last(nodes(r)) as n
MATCH r = (n)-[:I]-()
WITH r1, r2, r3, apoc.coll.randomItems(collect(r), 10) as r4
RETURN r1 + r2 + r3 + r4
but I would like to add a constraint as :
MATCH r = (n)-[z:I]-()
WHERE z.grow CONTAINS "xxx"
WITH apoc.coll.randomItems(collect(r), 10) as r1
but it doesn't work. In fact, it works as if there was no constraint.
Also,
MATCH r = (n)-[:I]-()
WHERE r.grow CONTAINS "xxx"
WITH apoc.coll.randomItems(collect(r), 10) as r1
is not understood.
It is possible to add such a constraint ?