Skip to content

Commit 7f04f62

Browse files
committed
further edits for $id and referencing unknown location
1 parent 4d6fdb5 commit 7f04f62

File tree

1 file changed

+13
-18
lines changed

1 file changed

+13
-18
lines changed

jsonschema-core.md

+13-18
Original file line numberDiff line numberDiff line change
@@ -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

913913
When the value of this keyword is resolved against the current base IRI, the
914914
resulting absolute IRI then serves as the identifier for the schema resource and
915915
as 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
917917
6.5](#rfc3987) and [RFC 3986 section 5.1.1](#rfc3986) regarding base IRIs
918918
embedded in content.
919919

@@ -1370,20 +1370,15 @@ recursive nesting like this; the behavior is undefined.
13701370
#### References to Possible Non-Schemas {#non-schemas}
13711371

13721372
Subschema 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
13891384
receiving a response with a Content-Type other than `application/schema+json`.

0 commit comments

Comments
 (0)