@@ -875,7 +875,9 @@ The meta-schema serves two purposes:
875875Declaring the vocabularies in use: The ` $vocabulary `  keyword, when it appears in
876876a meta-schema, declares which vocabularies are available to be used in schemas
877877that refer to that meta-schema. Vocabularies define keyword semantics, as well
878- as their general syntax.
878+ as their general syntax. By combining various vocabularies, distinct
879+ sets of keywords can be made available for use in a schema. This collection of
880+ vocabularies defines a dialect.
879881
880882Describing valid schema syntax: A schema MUST successfully validate against its
881883meta-schema, which constrains the syntax of the available keywords. The syntax
@@ -893,29 +895,51 @@ vocabulary's keywords.
893895Meta-schema authoring is an advanced usage of JSON Schema, so the design of
894896meta-schema features emphasizes flexibility over simplicity.
895897
898+ #### Dialect Determination  
899+ 
900+ When evaluation encounters a new schema resource (i.e. the lexical scope
901+ changes), the first task is to determine the dialect used by the schema.
902+ Implementations MUST determine the dialect using the following prioritized
903+ steps.
904+ 
905+ 1 .  The ` $schema `  keyword - Implementations MUST process the schema according to
906+    the dialect it declares.
907+ 2 .  ` application/schema+json `  media type with a ` schema `  parameter -
908+    Implementations which support media type parameter inputs MUST process the
909+    schema according to the dialect the parameter declares. A media type will
910+    generally only be available if the schema has been retrieved from an external
911+    source and only applies to the document root.
912+ 3 .  Parent dialect - An embedded schema resource which does not itself contain a
913+    ` $schema `  keyword MUST be processed using the same dialect as the schema
914+    which contains it. If the schema is embedded in a non-schema document, the
915+    semantics for determining the dialect MAY be determined by any specification
916+    which applies to that document.
917+ 4 .  User configuration - Implementations MAY provide means for the user to
918+    configure the dialect under which a schema should be processed.
919+ 
920+ (Note that steps 2 and 3 are mutually exclusive.)
921+ 
922+ If the dialect is not specified through one of these methods, the implementation
923+ MUST refuse to process the schema, as with unsupported required vocabularies.
924+ 
896925#### The ` $schema `  Keyword {#keyword-schema}  
897926
898927The ` $schema `  keyword is both used as a JSON Schema dialect identifier and as
899928the identifier of a resource which is itself a JSON Schema, which describes the
900- set of valid schemas written for this particular dialect.
929+ set of valid schemas written for this particular dialect. The identified dialect
930+ applies to the resource in which it is declared as well as any embedded schema
931+ resources, unless such a resource itself declares a different dialect by
932+ including the ` $schema `  keyword with a different value.
901933
902- The value of this keyword MUST be a [ IRI] ( #rfc3987 )  (containing a scheme) and
903- this IRI MUST be normalized. The current schema MUST be valid against the
904- meta-schema identified by this IRI.
934+ The value of this keyword MUST be an [ IRI] ( #rfc3987 )  (containing a scheme) and
935+ this IRI MUST be normalized.
905936
906937If this IRI identifies a retrievable resource, that resource SHOULD be of media
907938type ` application/schema+json ` .
908939
909940The ` $schema `  keyword SHOULD be used in the document root schema object, and MAY
910- be used in the root schema objects of embedded schema resources. It MUST NOT
911- appear in non-resource root schema objects. If absent from the document root
912- schema, the resulting behavior is implementation-defined, but MUST fall within
913- the following options:
914- 
915- -  Refuse to process the schema, as with unsupported required vocabularies
916- -  Assume a specific, documented meta-schema
917- -  Document the process by which it examines the schema and determines which of a
918-   specific set of meta-schemas to assume
941+ be used in the root schema objects of embedded schema resources. When the
942+ keyword appears in a non-resource root schema object, the behavior is undefined.
919943
920944Values for this property are defined elsewhere in this and other documents, and
921945by other parties.
0 commit comments