I finally finished to read the example fully, and I now start reading the source code.
Question about https://github.com/vvvvalvalval/d2q/blob/master/src/d2q/api.clj#L16 : Is it supposed to be something equivalent of union types
in GraphQL? https://graphql.org/learn/schema/#union-types
Not exactly; to me GraphQL's Union Type are an artifact of GraphQL having both a nominal type system (which d2q doesn't) and name collisions between Fields.
This is closer to GraphQL type conditions, e.g "I want the field 'name' but only if it's a person."