Dgraph GraphQL Tour


Data types, Schema and Type System

It’s time to talk about data types and scalars.

Type System

A GraphQL API is a strictly-typed API. Every node is required to have a specific type. A GraphQL API built with Dgraph does some “magic” for you so, when you add data it assigns types, and it makes it easy to filter by types when querying data.

You might have noticed from Load Data that the data in triple format includes a predicate for <dgraph.type>. The values from these predicates match the GraphQL type definition of the node. If you load the data using Bulk Loader, Live Loader, or DQL mutations, you will need to set these type predicates if you want the node to be accessible through the GraphQL API.

Data types and schema

There was some “magic” in the last query because some of the queried fields returned a value (name and age), but some were edges to other nodes (friend and ownsPets) that themselves had further fields.

The GraphQL schema tells us how to interpret every field. Run the example introspection query and have a look at the JSON result.

There are two kinds of fields in a graph: nodes and values (or literals). In the example, nodes representing people have a name field with a string value and an age field to an int value. They also have edges that connect to other nodes. A value can’t have any edges coming out of it.

Here are the types available to store values in Dgraph:

Dgraph Type Description
ID Unique Identifier (UID)
Int signed 32-bit integer
Int64 signed 64-bit integer
Float double-precision floating-point number
String string
Boolean Boolean
DateTime RFC3339 time format with optional timezone like: 2006-01-02T15:04:05.999999999+10:00 or 2006-01-02T15:04:05.999999999
Point Geolocation types (see docs)
PointList Geolocation types (see docs)
Polygon Geolocation types (see docs)
MultiPolygon Geolocation types (see docs)

The schema tells us the Person type has a friends field that goes from one node of type Person to another node (also of type Person) but not to a value.

There’s a lot more to learn about schemas later in the tutorial. For now, though, you know enough about schemas to better understand the structure of our graph and the types of nodes and values included in its dataset.

2.3 Data types, Schema and Type System