diff --git a/jsonschema-core.xml b/jsonschema-core.xml index 0181a388..d529424f 100644 --- a/jsonschema-core.xml +++ b/jsonschema-core.xml @@ -1362,31 +1362,10 @@ If present, the value for this keyword MUST be a string, and MUST represent a valid IRI-reference. This IRI-reference SHOULD be normalized, and MUST resolve to an - absolute-IRI (without a fragment), - or to a IRI with an empty fragment. + absolute-IRI (without a fragment). - The empty fragment form is NOT RECOMMENDED and is retained only - for backwards compatibility, and because the - application/schema+json media type defines that a IRI with an - empty fragment identifies the same resource as the same IRI - with the fragment removed. However, since this equivalence is not - part of the RFC 3986 normalization process, - implementers and schema authors cannot rely on generic IRI libraries - understanding it. - - - Therefore, "$id" MUST NOT contain a non-empty fragment, and SHOULD NOT - contain an empty fragment. The absolute-IRI form MUST be considered - the canonical IRI, regardless of the presence or absence of an empty fragment. - - An empty fragment is currently allowed because older meta-schemas have - an empty fragment in their $id (or previously, id). - A future draft may outright forbid even empty fragments in "$id". - - - - The absolute-IRI also serves as the base IRI for relative IRI-references + The resulting absolute-IRI serves as the base IRI for relative IRI-references in keywords within the schema resource, in accordance with RFC 3987 section 6.5 and RFC 3986 section 5.1.1 regarding base IRIs @@ -1477,11 +1456,6 @@ an error condition. Otherwise the result is undefined, and even if documented will not be interoperable. - - Note that due to the semantics of JSON Pointer fragments, schema IRIs - that differ only by the presence or absence of an empty fragment MUST - be considered duplicates. -
diff --git a/meta/core.json b/meta/core.json index 087ebd37..5c550ccb 100644 --- a/meta/core.json +++ b/meta/core.json @@ -11,8 +11,8 @@ "properties": { "$id": { "$ref": "#/$defs/iriReferenceString", - "$comment": "Non-empty fragments not allowed.", - "pattern": "^[^#]*#?$" + "$comment": "Fragments not allowed.", + "pattern": "^[^#]*$" }, "$schema": { "$ref": "#/$defs/iriString" }, "$ref": { "$ref": "#/$defs/iriReferenceString" },