Some questions about query

Take a look at this post

This

{
	person(func: uid("0x59179e7")) {
		~hasCreator @filter(has(replyOf)) {
			uid
			content
			imageFile
			creationDate
			replyOf{
				uid
			}
		}
	}
}

You can’t. That should be done at the application level. You could potentially do using Math feature and some variables. But it works for INT only.

I’m not sure about this cypher feature. Is it a Recurse?

I tried to create some pseudo-DQL query. Based on that cypher one you’ve shared.

{
 
  q(func: type(Person)) @filter(eq(id, "person_933")) {
    <~HAS_CREATOR> @filter(type(Comment)) (orderdesc: creationDate) { #don't need this filter
      id : commentId
      content : messageContent
      creationDate : messageCreationDate
      REPLY_OF @filter(type(Post)) {
        id : originalPostId
        HAS_CREATOR {
          id : originalPostAuthorId
          firstName
          lastName
        }
        
      }
    }
    
  }
    
}
{

  
  var(func: type(Person)) @filter(eq(id, "person_933")) {
    <~HAS_CREATOR> @filter(type(Comment)) (orderdesc: creationDate) { #don't need this filter
      id : commentId
      content : messageContent
      creationDate : messageCreationDate
      REPLY_OF @filter(type(Post))  { RP as uid }
    }
  }
      q(func: uid(RP), first: 10) @recurse(depth: 3){
        id : originalPostId
        HAS_CREATOR {
          id : originalPostAuthorId
          firstName
          lastName
        }
      }
}

You have to pay attention that they are both totally different approaches in language and storing methods. You can’t replicate 100% the same behavior on DQL from Cypher.

I don’t understand this concept. In Dgraph we have the depth of hops/traversing nodes.