@@ -2252,23 +2252,26 @@ DirectiveArgumentCoordinate : @ Name ( Name : )
2252
2252
_schema element_ within a GraphQL Schema .
2253
2253
2254
2254
:: A _schema element_ can be a named type , a field , an input field , an enum
2255
- value , a field argument , a directive , or a directive argument .
2255
+ value , a field argument , a directive , or a directive argument defined within a
2256
+ schema (including built-in types and directives).
2257
+
2258
+ Note : Meta -fields are not defined within a schema , and thus are not _schema
2259
+ element_ . By extension , an introspection type is not a _schema element_ .
2256
2260
2257
2261
:: The _containing element_ of a _schema element_ is the schema element with one
2258
2262
fewer {Name } token that syntactically contains it . Specifically :
2259
2263
2260
- - { MemberCoordinate } has a {TypeCoordinate } containing element .
2261
- - { ArgumentCoordinate } has a {MemberCoordinate } containing element .
2262
- - {DirectiveArgumentCoordinate } has a {DirectiveCoordinate } containing element .
2264
+ - The containing element of an { ArgumentCoordinate } is a {MemberCoordinate } .
2265
+ - The containing element of a {MemberCoordinate } is a { TypeCoordinate } .
2266
+ - The containing element of a {DirectiveArgumentCoordinate } is a {DirectiveCoordinate }.
2263
2267
- {TypeCoordinate } and {DirectiveCoordinate } have no containing element .
2264
2268
2265
- A _schema coordinate_ is always unique . Each non meta - field _schema element_ can
2266
- be referenced by exactly one possible schema coordinate .
2269
+ A _schema coordinate_ is always unique . Each _schema element_ can be referenced
2270
+ by exactly one possible schema coordinate .
2267
2271
2268
2272
A _schema coordinate_ may refer to either a defined or built -in _schema
2269
2273
element_ . For example , `String ` and `@deprecated (reason :)` are both valid schema
2270
- coordinates which refer to built -in schema elements . Meta -fields may also be
2271
- referenced . For example , `Business .__typename ` is a valid schema coordinate .
2274
+ coordinates which refer to built -in schema elements .
2272
2275
2273
2276
Note : Union members are not valid _schema coordinate_ as they reference existing
2274
2277
types in the schema . This preserves the uniqueness property of a _schema
@@ -2290,6 +2293,11 @@ If the _schema element_ cannot be found, the resolve function will not yield a
2290
2293
value (without raising an error). However , an error will be raised if any
2291
2294
non -leaf nodes within a _schema coordinate_ cannot be found in the {schema }.
2292
2295
2296
+ Note : Although it is syntactically possible to describe a meta -field or element
2297
+ of the introspection schema with a schema coordinate (e.g. `Business.__typename`
2298
+ or `__Type.fields(includeDeprecated :)`), they are not _schema element_ and
2299
+ therefore resolving such coordinates results in implementation -defined behavior .
2300
+
2293
2301
TypeCoordinate : Name
2294
2302
2295
2303
1. Let {typeName } be the value of {Name }.
@@ -2336,16 +2344,6 @@ DirectiveArgumentCoordinate : @ Name ( Name : )
2336
2344
5. Return the argument of {directive } named {directiveArgumentName } if it
2337
2345
exists .
2338
2346
2339
- **Resolving Meta -fields **
2340
-
2341
- Resolving the _schema coordinate_ of a meta -field is undefined behavior , since
2342
- these fields may be implemented in such a way that makes it impossible to return
2343
- a unique value specific to that instance of the meta -field .
2344
-
2345
- Therefore , it is left up to the implementation to decide whether or not to
2346
- return a value for a meta -field . If a value is returned , it must meet the
2347
- requirement that it is unique to that _schema coordinate_ .
2348
-
2349
2347
**Examples **
2350
2348
2351
2349
| Element Kind | _Schema Coordinate_ | _Schema Element_ |
0 commit comments