# Source: https://docs.hypermode.com/dgraph/concepts/dql-graphql-layering.md

# DQL and GraphQL

<Info>
  We're overhauling Dgraph's docs to make them clearer and more approachable. If
  you notice any issues during this transition or have suggestions, please
  [let us know](https://github.com/hypermodeinc/docs/issues).
</Info>

## Dgraph schemas

Dgraph natively supports GraphQL, including `GraphQL Schema`s. GraphQL schemas
"sit on top of" DQL schemas, in the sense that when a GraphQL schema is added to
Dgraph, a corresponding `DQL Schema` is automatically created.

## Dgraph queries, mutations and upserts

Similarly, GraphQL mutations are implemented on top of DQL in the sense that a
GraphQL query is converted internally into a DQL query, which is then executed.
This translation isn't particularly complex, since DQL is based on GraphQL, with
some syntax changes and some extensions.

This is generally transparent to all callers, however users should be aware that

1. Anything done in GraphQL can also be done in DQL if needed. Some small
   exceptions include the enforcement of non-null constraints and other checks
   done before Dgraph transpiles GraphQL to DQL and executes it.
2. Some logging including Request Logging and OpenTrace (Jaeger) tracing may
   show DQL converted from the GraphQL.