-
Notifications
You must be signed in to change notification settings - Fork 72
/
Copy pathtg_random_walk.gsql
30 lines (26 loc) · 1.01 KB
/
tg_random_walk.gsql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
CREATE QUERY tg_random_walk(INT step = 8, INT path_size = 4, STRING filepath = "/home/tigergraph/path.csv", SET<STRING> edge_types, INT sample_num) SYNTAX V1 {
FILE f(filepath);
ListAccum<ListAccum<VERTEX>> @recv_seque_list;
ListAccum<ListAccum<VERTEX>> @send_seque_list;
start (ANY) = {ANY};
start = SELECT s
FROM start:s
POST-ACCUM s.@send_seque_list += [s];
WHILE true LIMIT step DO
tmp = SELECT t
FROM start:s-(edge_types:e)->:t
SAMPLE sample_num EDGE WHEN s.outdegree() >= 1
ACCUM t.@recv_seque_list += s.@send_seque_list
POST-ACCUM
t.@send_seque_list.clear(),
FOREACH PATH IN t.@recv_seque_list DO
CASE WHEN PATH.size() == path_size - 1 THEN
f.println(PATH + [t])
ELSE
t.@send_seque_list += PATH + [t]
END
END,
t.@send_seque_list += [t],
t.@recv_seque_list.clear();
END;
}