type Query { human: Human } interface Sentient { name: String! } interface Pet { name: String! } type Dog implements Pet { name: String! barkVolume: Int } type Cat implements Pet { name: String! meowVolume: Int } union CatOrDog = Cat | Dog type Human implements Sentient { name: String! pets: [Pet!] } type Alien implements Sentient { name: String! homePlanet: String! } union HumanOrAlien = Human | Alien query getHuman { human { ...catInDogFragmentInvalid ...sentientFragment ...humanOrAlienFragment ...nonIntersectingInterfaces ...sentientFragment2 } } fragment catInDogFragmentInvalid on Dog { ... on Cat { meowVolume } } fragment sentientFragment on Sentient { ... on Dog { barkVolume } } fragment humanOrAlienFragment on HumanOrAlien { ... on Cat { meowVolume } } fragment nonIntersectingInterfaces on Pet { ...sentientFragment2 } fragment sentientFragment2 on Sentient { name }