Ask a Question @normalize Directive With the @normalize directive, only aliased predicates are returned and the result is flattened to remove nesting. Query Example: Film name, country and first two actors (by UID order) of every Steven Spielberg movie, without initial_release_date because no alias is given and flattened by @normalize Query Go Java Python JavaScript (gRPC) JavaScript (HTTP) Curl Run Editing query... { director(func:allofterms(name@en, "steven spielberg")) @normalize { director: name@en director.film { film: name@en initial_release_date starring(first: 2) { performance.actor { actor: name@en } performance.character { character: name@en } } country { country: name@en } } } } { director(func:allofterms(name@en, "steven spielberg")) @normalize { director: name@en director.film { film: name@en initial_release_date starring(first: 2) { performance.actor { actor: name@en } performance.character { character: name@en } } country { country: name@en } } } } curl localhost:8080/query -XPOST -d 'blahblah' | python -m json.tool | less package main import ( "context" "flag" "fmt" "log" "github.com/dgraph-io/dgo" "github.com/dgraph-io/dgo/protos/api" "google.golang.org/grpc" ) var ( dgraph = flag.String("d", "127.0.0.1:9080", "Dgraph Alpha address") ) func main() { flag.Parse() conn, err := grpc.Dial(*dgraph, grpc.WithInsecure()) if err != nil { log.Fatal(err) } defer conn.Close() dg := dgo.NewDgraphClient(api.NewDgraphClient(conn)) resp, err := dg.NewTxn().Query(context.Background(), `blahblah`) if err != nil { log.Fatal(err) } fmt.Printf("Response: %s\n", resp.Json) } import io.dgraph.DgraphClient; import io.dgraph.DgraphGrpc; import io.dgraph.DgraphGrpc.DgraphStub; import io.dgraph.DgraphProto.Response; import io.grpc.ManagedChannel; import io.grpc.ManagedChannelBuilder; import java.util.Map; public class App { public static void main(final String[] args) { ManagedChannel channel = ManagedChannelBuilder.forAddress("localhost", 9080).usePlaintext(true).build(); DgraphStub stub = DgraphGrpc.newStub(channel); DgraphClient dgraphClient = new DgraphClient(stub); String query = "blahblah"; Response res = dgraphClient.newTransaction().query(query); System.out.printf("Response: %s", res.getJson().toStringUtf8()); } } import pydgraph import json def main(): client_stub = pydgraph.DgraphClientStub("localhost:9080") client = pydgraph.DgraphClient(client_stub) query = """blahblah""" res = client.txn(read_only=True).query(query) print('Response: {}'.format(json.loads(res.json))) client_stub.close() if __name__ == '__main__': try: main() except Exception as e: print('Error: {}'.format(e)) const dgraph = require("dgraph-js"); const grpc = require("grpc"); async function main() { const clientStub = new dgraph.DgraphClientStub("localhost:9080", grpc.credentials.createInsecure()); const dgraphClient = new dgraph.DgraphClient(clientStub); const query = `blahblah`; const response = await dgraphClient.newTxn().query(query); console.log("Response: ", JSON.stringify(response.getJson())); clientStub.close(); } main().then().catch((e) => { console.log("ERROR: ", e); }); const dgraph = require("dgraph-js-http"); async function main() { const clientStub = new dgraph.DgraphClientStub("http://localhost:8080"); const dgraphClient = new dgraph.DgraphClient(clientStub); const query = `blahblah`; const response = await dgraphClient.newTxn().query(query); console.log("Response: ", JSON.stringify(response.data)); } main().then().catch((e) => { console.log("ERROR: ", e); }); Response You can also apply @normalize on nested query blocks. It will work similarly but only flatten the result of the nested query block where @normalize has been applied. @normalize will return a list irrespective of the type of attribute on which it is applied. Query Go Java Python JavaScript (gRPC) JavaScript (HTTP) Curl Run Editing query... { director(func:allofterms(name@en, "steven spielberg")) { director: name@en director.film { film: name@en initial_release_date starring(first: 2) @normalize { performance.actor { actor: name@en } performance.character { character: name@en } } country { country: name@en } } } } { director(func:allofterms(name@en, "steven spielberg")) { director: name@en director.film { film: name@en initial_release_date starring(first: 2) @normalize { performance.actor { actor: name@en } performance.character { character: name@en } } country { country: name@en } } } } curl localhost:8080/query -XPOST -d 'blahblah' | python -m json.tool | less package main import ( "context" "flag" "fmt" "log" "github.com/dgraph-io/dgo" "github.com/dgraph-io/dgo/protos/api" "google.golang.org/grpc" ) var ( dgraph = flag.String("d", "127.0.0.1:9080", "Dgraph Alpha address") ) func main() { flag.Parse() conn, err := grpc.Dial(*dgraph, grpc.WithInsecure()) if err != nil { log.Fatal(err) } defer conn.Close() dg := dgo.NewDgraphClient(api.NewDgraphClient(conn)) resp, err := dg.NewTxn().Query(context.Background(), `blahblah`) if err != nil { log.Fatal(err) } fmt.Printf("Response: %s\n", resp.Json) } import io.dgraph.DgraphClient; import io.dgraph.DgraphGrpc; import io.dgraph.DgraphGrpc.DgraphStub; import io.dgraph.DgraphProto.Response; import io.grpc.ManagedChannel; import io.grpc.ManagedChannelBuilder; import java.util.Map; public class App { public static void main(final String[] args) { ManagedChannel channel = ManagedChannelBuilder.forAddress("localhost", 9080).usePlaintext(true).build(); DgraphStub stub = DgraphGrpc.newStub(channel); DgraphClient dgraphClient = new DgraphClient(stub); String query = "blahblah"; Response res = dgraphClient.newTransaction().query(query); System.out.printf("Response: %s", res.getJson().toStringUtf8()); } } import pydgraph import json def main(): client_stub = pydgraph.DgraphClientStub("localhost:9080") client = pydgraph.DgraphClient(client_stub) query = """blahblah""" res = client.txn(read_only=True).query(query) print('Response: {}'.format(json.loads(res.json))) client_stub.close() if __name__ == '__main__': try: main() except Exception as e: print('Error: {}'.format(e)) const dgraph = require("dgraph-js"); const grpc = require("grpc"); async function main() { const clientStub = new dgraph.DgraphClientStub("localhost:9080", grpc.credentials.createInsecure()); const dgraphClient = new dgraph.DgraphClient(clientStub); const query = `blahblah`; const response = await dgraphClient.newTxn().query(query); console.log("Response: ", JSON.stringify(response.getJson())); clientStub.close(); } main().then().catch((e) => { console.log("ERROR: ", e); }); const dgraph = require("dgraph-js-http"); async function main() { const clientStub = new dgraph.DgraphClientStub("http://localhost:8080"); const dgraphClient = new dgraph.DgraphClient(clientStub); const query = `blahblah`; const response = await dgraphClient.newTxn().query(query); console.log("Response: ", JSON.stringify(response.data)); } main().then().catch((e) => { console.log("ERROR: ", e); }); Response ← Cascade Directive @ignorereflex Directive →