graphql / graphql/graphql.github.io

Feedback for “Schemas and Types”; Why is a "Query" considered a "type"?

Open
#1,825 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
889
Forks
1.5k
Avg merge
4d 12h
Merged PRs (30d)
21

Description

It is more of a fundamental question in terms of naming some artifacts of a GraphQl system.

Why is a "Query" considered a "type"? It is hard for me to conceptualize the following two declarations in the same specification because their essential nature and semantics are different:

type Character {
name: String!
appearsIn: [Episode!]!
}

type Query {
droid(id: ID!): Droid
}

Character describes the type (composition) of a data object whereas Query is an operation. Conceptually, Query, Mutation, and Subscription are "operations" - not "types".

Why are we overloading the term "type" to specify the "composition of a data object" as well as an "operation"?

Saying the following may be more appropriate if we have to use the term "type":

objectType Character {
name: String!
appearsIn: [Episode!]!
}

operationType Query {
droid(id: ID!): Droid
}

Maybe you can explain it in a way that avoids this conceptual confusion between the "composition of a data object" and an "operation" indicated by the same term "type".

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.