For the record I found a way, but it requires a reverse index on word predicate :
{
games as var(func: type(Game)) { // plus game filters
uid
words as word
}
me(func: uid(words), first: 3) {
~word @filter(uid(games)) (first: 1) {
uid
word { uid }
}
}
}
And now all returned games are on a different word:
"data": {
"me": [
{
"~word": [
{
"uid": "0xbef2f7", // game 1
"word": {
"uid": "0xbef275" // word
}
}
]
},
{
"~word": [
{
"uid": "0xbef2ed", // game 2
"word": {
"uid": "0xbef276" // word
}
}
]
},
{
"~word": [
{
"uid": "0xbef328", // game 3
"word": {
"uid": "0xbef277" // word
}
}
]
}
]
}