Yes, like this
query {
GetCityLocation(func: eq(City, "someCity")) @recurse {
<~predicate1>
<~predicate2>
<~predicate3>
<~predicate4>
}
}
About expand all, not possible. As reverse edges aren’t part of the schema.