Why multiple queries can only be placed in the filter, and the root query can only have one condition
Given that Dgraph can store a large amount of data, the constraints around the root function is a way to keep searches efficient. A root function backed by an appropriate index is the recommended way to start a query. From the tour doc here:
From the set of nodes matched in the root filter, Dgraph then follows edges to satisfy the remainder of the query. The filters on blocks inside the root are only applied to the nodes reached by following listed edges to them.