How is it possible to display all predicates of a node and its edges?

I have three types of nodes (we will not go into details why it is done this way):

type person {
	created_at: time
	name: string
	date_of_birth: time
	phone_number: string
	email: string
	address: string
}

type client {
	created_at: time
	login: string
	pass: password
	persons: [person]
}

type client_x {
	created_at: time
	extends: client
}

I do not want to get too attached to specific predicates, but intend to get everything from the Client type (do not forget that they can change), while I need to get only a specific Person (for example, by phone number, but let’s say I don’t need 1000 others).
I won’t be able to simply get all predicates via expand (all), since I still need to restrict the elements of the person list.
Is it possible to do this?

{  
	var(func: type(person), first: 1) @filter(eq(phone_number, "9021324631")) {   
		~persons (first: 1) {
			cl as uid
		}
	}
  
	list(func: uid(cl)) {
		uid
		expand(_all_) {
			uid
			expand(_all_)
		}
	}
}

I have not yet written the request itself, as it stalled, and this is still a sketch.

I’m a bit lost here. Don’t get it.

What do you mean?

This isn’t right. You should search by the phone_number at root, not the type. You use the type when doing a broad query.