Is it possible to recursively expand all on reverse predicates?

I know you can start with an object and go down a deep rabbit hole with @recurse and using expand(all). I’m wondering if it’s possible to go backwards this way but using reverse edges. For example if I have a schema of City → State → Country, I can do

query {
    GetCityLocation(func: eq(City, "someCity")) @recurse {
        expand(_all_)
    }
}

But what if I want to get go backwards from the end? Even if I know the schema it won’t help since @recurse wants everything flat, is this thing possible or should I just be putting predicates that points in both directions on all the objects for this kinda thing?

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.