@@ -906,14 +906,14 @@ to establish a base IRI in order to resolve the reference.
906906
907907#### The ` $id ` Keyword {#id-keyword}
908908
909- The ` $id ` keyword identifies a schema resource. The value for this keyword MUST
910- be a string, and MUST represent a valid [ IRI reference ] ( #rfc3987 ) without a
911- fragment.
909+ An ` $id ` keyword in a schema or subschema identifies that schema or subschema as
910+ a distinct schema resource. The value for this keyword MUST be a string, and
911+ MUST represent a valid [ IRI reference ] ( #rfc3987 ) without a fragment.
912912
913913When the value of this keyword is resolved against the current base IRI, the
914914resulting absolute IRI then serves as the identifier for the schema resource and
915915as a base IRI for relative IRI references in keywords within that schema
916- resource and for nested schema resources, in accordance with [ RFC 3987 section
916+ resource and for embedded schema resources, in accordance with [ RFC 3987 section
9179176.5] ( #rfc3987 ) and [ RFC 3986 section 5.1.1] ( #rfc3986 ) regarding base IRIs
918918embedded in content.
919919
@@ -1370,20 +1370,15 @@ recursive nesting like this; the behavior is undefined.
13701370#### References to Possible Non-Schemas {#non-schemas}
13711371
13721372Subschema objects (or booleans) are recognized by their use with known
1373- applicator keywords or with location-reserving keywords such as
1374- [ ` $defs ` ] ( #defs ) that take one or more subschemas as a value. These keywords may
1375- be ` $defs ` and the standard applicators from this document or
1376- implementation-specific custom keywords.
1377-
1378- Note that single-level custom keywords with identical syntax and semantics to
1379- ` $defs ` do not allow for any intervening ` $id ` keywords, and therefore will
1380- behave correctly under implementations that attempt to use any reference target
1381- as a schema. However, this behavior is implementation-specific and MUST NOT be
1382- relied upon for interoperability.
1383-
1384- A reference target under a keyword for which the value is known not to be a
1385- schema results in undefined behavior in order to avoid burdening implementations
1386- with the need to detect such targets.[ ^ 10 ]
1373+ applicator keywords or with location-reserving keywords, such as
1374+ [ ` $defs ` ] ( #defs ) , that take one or more subschemas as a value. These keywords
1375+ include the standard applicators from this document or implementation-specific
1376+ custom keywords.
1377+
1378+ A reference target under a keyword for which the value is not explicitly known
1379+ to be a schema results in undefined behavior. Implementations MAY support
1380+ references to these locations, however such behavior is not considered
1381+ interoperable and should not be relied upon.[ ^ 10 ]
13871382
13881383[ ^ 10 ] : These scenarios are analogous to fetching a schema over HTTP but
13891384receiving a response with a Content-Type other than ` application/schema+json ` .
0 commit comments