Imitating If behavior in queries

I Want to Do

Given a start Person, retrieve the last 10 Messages created by that user. For each Message,
return that Message, the original Post in its conversation (post), and the author of that Post (original Poster). If any of the Messages is a Post, then the original Post (post) will be the same Message, i.e. that Message will appear twice in that result.

I am unable to handle the second case where if the message itself is a post (instead of a comment in a post) then we return the message twice (thinking of it as a reply to its own post)

What I Did

query all($ID: string){
	q(func: eq(fqid, $ID)) {
		~hasCreator( orderdesc: creationDate, orderdesc: id, first:10){
			id
			content
			creationDate
			dgraph.type
			replyOf{
				id
				hasCreator{
					id
					firstName
					lastName
				}
			}
		}
	}
}

Relevant Schema

For a more visual representation of schema take a look at the specifications document (Pg. 62.)

type comment {
	fqid
	content
	length
	id
	creationDate
	hasCreator
	isLocatedIn
	replyOf
}

type forum{
	fqid
	id
	title
	creationDate
	containerOf
	hasMember
	hasTag
	hasModerator
}

type post{
	fqid
	locationIP
	browserUsed
	language
	content
	length
	hasTag
	id
	hasCreator
	isLocatedIn
}

type person{
	fqid
	id
	firstName
	lastName
	gender
	birthday
    isLocatedIn
	likes
	workAt
	email
	language
    studyAt
    knows
}


fqid                : string @index(hash) .
id                  : int .
name                : string .
url                 : string .
hasType             : uid @reverse .
locationIP          : string .
content             : string .
length              : int .
creationDate        : dateTime @index(day) .
hasCreator          : [uid] @reverse .
replyOf             : uid @reverse .
title               : string @index(exact) .
containerOf         : [uid] @reverse .
language            : string .
firstName           : string @index(hash) .
lastName            : string @index(hash) .