To do the same in GraphQL, you can make use of interfaces.
interface Person {
id: ID!
name: String!
}
type Father implements Person {
hasChildren: [Person!]
}
That way, when you add a Father, the dgraph.type edge for that node will have both Father and Person as values.