How does DQL judge whether a predicate has duplicate values in dgraph?

It doesn’t. You can have multiple duplicate values attached to a predicate. You can use @groupby with an aggregate function to figure out how “unique” your preds are