Nested type definition in GraphQL:: Address, City, State, Country

I have the following address relationship.

:Address-[r:LIVES_IN]->:City
:City-[r2:PART_OF]->State
:State-[r3:BELONGS_TO]->Country

Please clarify how do we define our type definition in GraphQL.

type Country {
countryId: ID!
name: String!
}
type State {
stateId: ID!
name: String!
belongs_to: Country @relation(direction: OUT, name: "BELONGS_TO")
}

type City {
cityId: ID!
name: String!
part_of: State @relation(direction: OUT, name: "PART_OF")
}

type Address {
address1: String!
address2: String
address3: String
location: Point
city: City @relation(name: "LIVES_IN", direction: OUT)
state: ?? <<<<<< Should i use Cypher with Merge?
country: ?? <<<<< Should I use Cyper with Merge?
}

Please clarify!