Id not allowed multiple times in same sub-query

This is allowed in GraphQL (although perhaps not GraphQL±). The reason I assume it’s allowed in GraphQL is that (e.g., in Relay) each fragment is colocated with with a React component, and components are written as standalone things that do not need to take into account implementation details of other components. If two components need the same field, they’ll create fragments in the same parent that request the same field (redundantly).