@@ -39,11 +39,11 @@ such as output formats.
3939
4040The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
4141"SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be
42- interpreted as described in [ RFC 2119] ( # rfc2119) .
42+ interpreted as described in [ RFC 2119] ( https://www.rfc-editor.org/info/ rfc2119) .
4343
4444The terms "JSON", "JSON text", "JSON value", "member", "element", "object",
4545"array", "number", "string", "boolean", "true", "false", and "null" in this
46- document are to be interpreted as defined in [ RFC 8259] ( # rfc8259) .
46+ document are to be interpreted as defined in [ RFC 8259] ( https://www.rfc-editor.org/info/ rfc8259) .
4747
4848## Overview
4949
@@ -242,10 +242,10 @@ are using.
242242
243243#### Root Schema and Subschemas and Resources {#root}
244244
245- A JSON Schema resource is a schema which is [ canonically] ( # rfc6596) identified
246- by an [ absolute IRI] ( # rfc3987) . Schema resources MAY also be identified by IRIs,
245+ A JSON Schema resource is a schema which is [ canonically] ( https://www.rfc-editor.org/info/ rfc6596) identified
246+ by an [ absolute IRI] ( https://www.rfc-editor.org/info/ rfc3987) . Schema resources MAY also be identified by IRIs,
247247including IRIs with fragments, if the resulting secondary resource (as defined
248- by [ section 3.5 of RFC 3986] ( # rfc3986) ) is identical to the primary resource.
248+ by [ section 3.5 of RFC 3986] ( https://www.rfc-editor.org/info/ rfc3986) ) is identical to the primary resource.
249249This can occur with the empty fragment, or when one schema resource is embedded
250250in another. Any such IRIs with fragments are considered to be non-canonical.
251251
@@ -285,7 +285,7 @@ are processed in the same way, with the same available behaviors.
285285
286286## Fragment Identifiers {#fragments}
287287
288- In accordance with section 3.1 of [ RFC 6839] ( # rfc6839) , the syntax and semantics
288+ In accordance with section 3.1 of [ RFC 6839] ( https://www.rfc-editor.org/info/ rfc6839) , the syntax and semantics
289289of fragment identifiers specified for any +json media type SHOULD be as
290290specified for ` application/json ` . (At publication of this document, there is no
291291fragment identification syntax defined for ` application/json ` .)
@@ -296,7 +296,7 @@ identifier structures: plain names and JSON Pointers. The
296296structure: JSON Pointers.
297297
298298The use of JSON Pointers as IRI fragment identifiers is described in [ RFC
299- 6901] ( # rfc6901) . For ` application/schema+json ` , which supports two fragment
299+ 6901] ( https://www.rfc-editor.org/info/ rfc6901) . For ` application/schema+json ` , which supports two fragment
300300identifier syntaxes, fragment identifiers matching the JSON Pointer syntax,
301301including the empty string, MUST be interpreted as JSON Pointer fragment
302302identifiers.
@@ -306,9 +306,9 @@ identifiers](#w3cwd-fragid-best-practices-20121025), plain name fragment
306306identifiers in ` application/schema+json ` are reserved for referencing locally
307307named schemas.
308308
309- Plain name fragments MUST follow XML's [ ` NCName ` production] ( # xml-names ) , which
309+ Plain name fragments MUST follow XML's [ ` NCName ` production] ( http://www.w3.org/TR/2006/REC- xml-names11-20060816 ) , which
310310allows for compatibility with the recommended plain name
311- [ syntax] ( #w3crec -xptr-framework-20030325) for XML-based media types. For
311+ [ syntax] ( https://www.w3.org/TR/2003/REC -xptr-framework-20030325/ ) for XML-based media types. For
312312convenience, the ` NCName ` syntax is reproduced here in ABNF form, using
313313a minimal set of rules:
314314
@@ -336,7 +336,7 @@ keyword](#anchors) section.
336336
337337### Range of JSON Values
338338
339- An instance may be any valid JSON value as defined by [ JSON] ( # rfc8259) . JSON
339+ An instance may be any valid JSON value as defined by [ JSON] ( https://www.rfc-editor.org/info/ rfc8259) . JSON
340340Schema imposes no restrictions on type: JSON Schema can describe any JSON value,
341341including, for example, null.
342342
@@ -352,7 +352,7 @@ describable by JSON.
352352Keywords MAY use regular expressions to express constraints, or constrain the
353353instance value to be a regular expression. These regular expressions SHOULD be
354354valid according to the regular expression dialect described in [ ECMA-262,
355- section 21.2.1] ( #ecma262 ) .
355+ section 21.2.1] ( https://www.ecma-international.org/ecma-262/11.0/index.html ) .
356356
357357Unless otherwise specified by a keyword, regular expressions MUST NOT be
358358considered to be implicitly anchored at either end. All regular expression
@@ -367,7 +367,7 @@ schema authors SHOULD limit themselves to the following regular expression
367367tokens:
368368
369369- individual Unicode characters, as defined by the [ JSON
370- specification] ( # rfc8259) ;
370+ specification] ( https://www.rfc-editor.org/info/ rfc8259) ;
371371- simple atoms: ` . ` (any character except line terminator);
372372- simple character classes (` [abc] ` ), range character classes (` [a-z] ` );
373373- complemented simple character classes (` [^abc] ` );
@@ -653,7 +653,7 @@ behalf of applications.
653653
654654Unless otherwise specified, the value of an annotation keyword is the keyword's
655655value. However, other behaviors are possible. For example, [ JSON
656- Hyper-Schema's] ( #json-hyper- schema) ` links ` keyword is a complex annotation that
656+ Hyper-Schema's] ( https://datatracker.ietf.org/doc/html/draft-handrews-json- schema-hyperschema-02 ) ` links ` keyword is a complex annotation that
657657produces a value based in part on the instance data.
658658
659659While "short-circuit" evaluation is possible for assertions, collecting
@@ -685,7 +685,7 @@ based on the schema location that contributed the value. This is intended to
685685allow flexible usage. Collecting the schema location facilitates such usage.
686686
687687For example, consider this schema, which uses annotations and assertions from
688- the [ Validation specification] ( #json-schema -validation) :
688+ the [ Validation specification] ( ./jsonschema -validation) :
689689
690690Note that some lines are wrapped for clarity.
691691
@@ -880,7 +880,7 @@ applies to the resource in which it is declared as well as any embedded schema
880880resources, unless such a resource itself declares a different dialect by
881881including the ` $schema ` keyword with a different value.
882882
883- The value of this keyword MUST be an [ IRI] ( # rfc3987) (containing a scheme) and
883+ The value of this keyword MUST be an [ IRI] ( https://www.rfc-editor.org/info/ rfc3987) (containing a scheme) and
884884this IRI MUST be normalized.
885885
886886If this IRI identifies a retrievable resource, that resource SHOULD be of media
@@ -896,26 +896,26 @@ by other parties.
896896### Base IRI, Anchors, and Dereferencing
897897
898898To differentiate between schemas in a vast ecosystem, schema resources are
899- identified by [ absolute IRIs] ( # rfc3987) (without fragments). These identifiers
899+ identified by [ absolute IRIs] ( https://www.rfc-editor.org/info/ rfc3987) (without fragments). These identifiers
900900are used to create references between schema resources. When comparing IRIs for
901901the purposes of resource identification, implementations SHOULD first follow the
902- IRI normalization procedures defined in [ RFC 3987] ( # rfc3987) , section 5.3.
902+ IRI normalization procedures defined in [ RFC 3987] ( https://www.rfc-editor.org/info/ rfc3987) , section 5.3.
903903
904- Several keywords can accept a relative [ IRI reference] ( # rfc3987) , or a value
904+ Several keywords can accept a relative [ IRI reference] ( https://www.rfc-editor.org/info/ rfc3987) , or a value
905905used to construct a relative IRI reference. For these keywords, it is necessary
906906to establish a base IRI in order to resolve the reference.
907907
908908#### The ` $id ` Keyword {#id-keyword}
909909
910910An ` $id ` keyword in a schema or subschema identifies that schema or subschema as
911911a distinct schema resource. The value for this keyword MUST be a string, and
912- MUST represent a valid [ IRI reference] ( # rfc3987) without a fragment.
912+ MUST represent a valid [ IRI reference] ( https://www.rfc-editor.org/info/ rfc3987) without a fragment.
913913
914914When the value of this keyword is resolved against the current base IRI, the
915915resulting absolute IRI then serves as the identifier for the schema resource and
916916as a base IRI for relative IRI references in keywords within that schema
917917resource and for embedded schema resources, in accordance with [ RFC 3987 section
918- 6.5] ( # rfc3987) and [ RFC 3986 section 5.1.1] ( # rfc3986) regarding base IRIs
918+ 6.5] ( https://www.rfc-editor.org/info/ rfc3987) and [ RFC 3986 section 5.1.1] ( https://www.rfc-editor.org/info/ rfc3986) regarding base IRIs
919919embedded in content and RFC 3986 section 5.1.2 regarding encapsulating entities.
920920
921921Note that this IRI is an identifier and not necessarily a network locator. In
@@ -933,7 +933,7 @@ given in {{initial-base}}.
933933##### Identifying the root schema
934934
935935The root schema of a JSON Schema document SHOULD contain an ` $id ` keyword with
936- an [ absolute IRI] ( # rfc3987) (containing a scheme, but no fragment).
936+ an [ absolute IRI] ( https://www.rfc-editor.org/info/ rfc3987) (containing a scheme, but no fragment).
937937
938938#### Defining location-independent identifiers {#anchors}
939939
@@ -951,7 +951,7 @@ The base IRI to which the resulting fragment is appended is the canonical IRI of
951951the schema resource containing the ` $anchor ` or ` $dynamicAnchor ` in question.
952952As discussed in the previous section, this is either the nearest ` $id ` in the
953953same or parent schema object, or the base IRI for the document as determined
954- according to [ RFC 3987] ( # rfc3987) and [ RFC 3986] ( # rfc3986) .
954+ according to [ RFC 3987] ( https://www.rfc-editor.org/info/ rfc3987) and [ RFC 3986] ( https://www.rfc-editor.org/info/ rfc3986) .
955955
956956Separately from the usual usage of IRIs, ` $dynamicAnchor ` indicates that the
957957fragment is an extension point when used with the ` $dynamicRef ` keyword. This
@@ -1087,20 +1087,20 @@ MUST NOT be collected as an annotation result.
10871087
10881088#### Initial Base IRI {#initial-base}
10891089
1090- [ RFC 3987 Section 6.5] ( # rfc3987) and [ RFC 3986 Section 5.1] ( # rfc3986) defines
1090+ [ RFC 3987 Section 6.5] ( https://www.rfc-editor.org/info/ rfc3987) and [ RFC 3986 Section 5.1] ( https://www.rfc-editor.org/info/ rfc3986) defines
10911091how to determine the default base IRI of a document.
10921092
10931093Informatively, the initial base IRI of a schema is the IRI at which it was
10941094found, whether that was a network location, a local filesystem, or any other
10951095situation identifiable by a IRI of any known scheme.
10961096
10971097If a schema document defines no explicit base IRI with ` $id ` (embedded in
1098- content), the base IRI is that determined per [ RFC 3987 Section 6.5] ( # rfc3987)
1099- and [ RFC 3986 section 5] ( # rfc3986) .
1098+ content), the base IRI is that determined per [ RFC 3987 Section 6.5] ( https://www.rfc-editor.org/info/ rfc3987)
1099+ and [ RFC 3986 section 5] ( https://www.rfc-editor.org/info/ rfc3986) .
11001100
11011101If no source is known, or no IRI scheme is known for the source, a suitable
11021102implementation-specific default IRI MAY be used as described in [ RFC 3987
1103- Section 6.5] ( # rfc3987) and [ RFC 3986 Section 5.1.4] ( # rfc3986) . It is RECOMMENDED
1103+ Section 6.5] ( https://www.rfc-editor.org/info/ rfc3987) and [ RFC 3986 Section 5.1.4] ( https://www.rfc-editor.org/info/ rfc3986) . It is RECOMMENDED
11041104that implementations document any default base IRI that they assume.
11051105
11061106If a schema object is embedded in a document of another media type, then the
@@ -1152,7 +1152,7 @@ expect such features to be interoperable across implementations.
11521152Schemas can be identified by any IRI that has been given to them, including a
11531153JSON Pointer or their IRI given directly by ` $id ` . In all cases, dereferencing a
11541154` $ref ` reference involves first resolving its value as a IRI reference against
1155- the current base IRI per [ RFC 3986] ( # rfc3986) .
1155+ the current base IRI per [ RFC 3986] ( https://www.rfc-editor.org/info/ rfc3986) .
11561156
11571157If the resulting IRI identifies a schema within the current document, or within
11581158another schema document that has been made available to the implementation, then
@@ -1424,24 +1424,24 @@ all annotation results), would result in a resolution failure.
14241424JSON has been adopted widely by HTTP servers for automated APIs and robots. This
14251425section describes how to enhance processing of JSON documents in a more RESTful
14261426manner when used with protocols that support media types and [ Web
1427- linking] ( # rfc8288) .
1427+ linking] ( https://www.rfc-editor.org/info/ rfc8288) .
14281428
14291429##### Linking to a Schema
14301430
14311431It is RECOMMENDED that instances described by a schema provide a link to a
14321432downloadable JSON Schema using the link relation "describedby", as defined by
1433- [ Linked Data Protocol 1.0, section 8.1] ( #w3crec -ldp-20150226) .
1433+ [ Linked Data Protocol 1.0, section 8.1] ( https://www.w3.org/TR/2015/REC -ldp-20150226) .
14341434
14351435In HTTP, such links can be attached to any response using the [ Link
1436- header] ( # rfc8288) . An example of such a header would be:
1436+ header] ( https://www.rfc-editor.org/info/ rfc8288) . An example of such a header would be:
14371437
14381438```
14391439Link: <https://example.com/my-hyper-schema>; rel="describedby"
14401440```
14411441
14421442##### Usage Over HTTP
14431443
1444- When used for hypermedia systems over a network, [ HTTP] ( # rfc7231) is frequently
1444+ When used for hypermedia systems over a network, [ HTTP] ( https://www.rfc-editor.org/info/ rfc7231) is frequently
14451445the protocol of choice for distributing schemas. Misbehaving clients can pose
14461446problems for server maintainers if they pull a schema over the network more
14471447frequently than necessary, when it's instead possible to cache a schema for a
@@ -1955,7 +1955,7 @@ SHOULD use the terms defined by this document to do so.
19551955## Security Considerations {#security}
19561956
19571957Both schemas and instances are JSON values. As such, all security considerations
1958- defined in [ RFC 8259] ( # rfc8259) apply.
1958+ defined in [ RFC 8259] ( https://www.rfc-editor.org/info/ rfc8259) apply.
19591959
19601960Instances and schemas are both frequently written by untrusted third parties, to
19611961be deployed on public Internet servers. Implementations should take care that
@@ -1994,7 +1994,7 @@ Subtype name:: schema+json
19941994Required parameters:: N/A
19951995
19961996Encoding considerations:: Encoding considerations are identical to those
1997- specified for the ` application/json ` media type. See [ JSON] ( # rfc8259) .
1997+ specified for the ` application/json ` media type. See [ JSON] ( https://www.rfc-editor.org/info/ rfc8259) .
19981998
19991999Security considerations:: See {{security}} above.
20002000
@@ -2015,7 +2015,7 @@ Subtype name:: schema-instance+json
20152015Required parameters:: N/A
20162016
20172017Encoding considerations:: Encoding considerations are identical to those
2018- specified for the ` application/json ` media type. See [ JSON] ( # rfc8259) .
2018+ specified for the ` application/json ` media type. See [ JSON] ( https://www.rfc-editor.org/info/ rfc8259) .
20192019
20202020Security considerations:: See {{security}} above.
20212021
@@ -2024,116 +2024,6 @@ Interoperability considerations:: See Sections [6.2](#language),
20242024
20252025Fragment identifier considerations:: See {{fragments}}
20262026
2027- ## References
2028-
2029- ### Normative References
2030-
2031- #### [ RFC2119] {#rfc2119}
2032-
2033- Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14,
2034- RFC 2119, DOI 10.17487/RFC2119, March 1997,
2035- << https://www.rfc-editor.org/info/rfc2119 > >.
2036-
2037- #### [ RFC3986] {#rfc3986}
2038-
2039- Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform Resource Identifier
2040- (URI): Generic Syntax", STD 66, RFC 3986, DOI 10.17487/RFC3986, January 2005,
2041- << https://www.rfc-editor.org/info/rfc3986 > >.
2042-
2043- #### [ RFC3987] {#rfc3987}
2044-
2045- Duerst, M. and M. Suignard, "Internationalized Resource Identifiers (IRIs)", RFC
2046- 3987, DOI 10.17487/RFC3987, January 2005,
2047- << https://www.rfc-editor.org/info/rfc3987 > >.
2048-
2049- #### [ RFC6839] {#rfc6839}
2050-
2051- Hansen, T. and A. Melnikov, "Additional Media Type Structured Syntax Suffixes",
2052- RFC 6839, DOI 10.17487/RFC6839, January 2013,
2053- << https://www.rfc-editor.org/info/rfc6839 > >.
2054-
2055- #### [ RFC6901] {#rfc6901}
2056-
2057- Bryan, P., Ed., Zyp, K., and M. Nottingham, Ed., "JavaScript Object Notation
2058- (JSON) Pointer", RFC 6901, DOI 10.17487/RFC6901, April 2013,
2059- << https://www.rfc-editor.org/info/rfc6901 > >.
2060-
2061- #### [ RFC8259] {#rfc8259}
2062-
2063- Bray, T., Ed., "The JavaScript Object Notation (JSON) Data Interchange Format",
2064- STD 90, RFC 8259, DOI 10.17487/RFC8259, December 2017,
2065- << https://www.rfc-editor.org/info/rfc8259 > >.
2066-
2067- #### [ W3C.REC-ldp-20150226] {#w3crec-ldp-20150226}
2068-
2069- Malhotra, A., Ed., Arwe, J., Ed., and S. Speicher, Ed., "Linked Data Platform
2070- 1.0", W3C REC REC-ldp-20150226, W3C REC-ldp-20150226, 26 February 2015,
2071- << https://www.w3.org/TR/2015/REC-ldp-20150226/ > >.
2072-
2073- #### [ ecma262] {#ecma262}
2074-
2075- "ECMA-262, 11th edition specification", June 2020,
2076- << https://www.ecma-international.org/ecma-262/11.0/index.html > >.
2077-
2078- ### Informative References
2079-
2080- #### [ RFC6596] {#rfc6596}
2081-
2082- Ohye, M. and J. Kupke, "The Canonical Link Relation", RFC 6596, DOI
2083- 10.17487/RFC6596, April 2012, << https://www.rfc-editor.org/info/rfc6596 > >.
2084-
2085- #### [ RFC7049] {#rfc7049}
2086-
2087- Bormann, C. and P. Hoffman, "Concise Binary Object Representation (CBOR)", RFC
2088- 7049, DOI 10.17487/RFC7049, October 2013,
2089- << https://www.rfc-editor.org/info/rfc7049 > >.
2090-
2091- #### [ RFC7231] {#rfc7231}
2092-
2093- Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer Protocol (HTTP/1.1):
2094- Semantics and Content", RFC 7231, DOI 10.17487/RFC7231, June 2014,
2095- << https://www.rfc-editor.org/info/rfc7231 > >.
2096-
2097- #### [ RFC8288] {#rfc8288}
2098-
2099- Nottingham, M., "Web Linking", RFC 8288, DOI 10.17487/RFC8288, October 2017,
2100- << https://www.rfc-editor.org/info/rfc8288 > >.
2101-
2102- #### [ W3C.WD-fragid-best-practices-20121025]
2103- {#w3cwd-fragid-best-practices-20121025}
2104-
2105- Tennison, J., Ed., "Best Practices for Fragment Identifiers and Media Type
2106- Definitions", W3C WD WD-fragid-best-practices-20121025, W3C
2107- WD-fragid-best-practices-20121025, 25 October 2012,
2108- << https://www.w3.org/TR/2012/WD-fragid-best-practices-20121025/ > >.
2109-
2110- #### [ W3C.REC-xptr-framework-20030325] {#w3crec-xptr-framework-20030325}
2111-
2112- Maler, E., Ed., Marsh, J., Ed., Walsh, N., Ed., and P. Grosso, Ed., "XPointer
2113- Framework", W3C REC REC-xptr-framework-20030325, W3C
2114- REC-xptr-framework-20030325, 25 March 2003,
2115- << https://www.w3.org/TR/2003/REC-xptr-framework-20030325/ > >.
2116-
2117- #### [ json-schema-validation] {#json-schema-validation}
2118-
2119- Wright, A., Andrews, H., and B. Hutton, "JSON Schema Validation: A Vocabulary
2120- for Structural Validation of JSON", Work in Progress, Internet-Draft,
2121- draft-bhutton-json-schema-validation-01, June 2022,
2122- << https://datatracker.ietf.org/doc/html/draft-bhutton-json-schema-validation-01 > >.
2123-
2124- #### [ json-hyper-schema] {#json-hyper-schema}
2125-
2126- Andrews, H. and A. Wright, "JSON Hyper-Schema: A Vocabulary for Hypermedia
2127- Annotation of JSON", Work in Progress, Internet-Draft,
2128- draft-handrews-json-schema-hyperschema-02, November 2017,
2129- << https://datatracker.ietf.org/doc/html/draft-handrews-json-schema-hyperschema-02 > >.
2130-
2131- #### [ xml-names] {#xml-names}
2132-
2133- Bray, T., Ed., Hollander, D., Ed., Layman, A., Ed., and R. Tobin, Ed.,
2134- "Namespaces in XML 1.1 (Second Edition)", August 2006,
2135- << http://www.w3.org/TR/2006/REC-xml-names11-20060816 > >.
2136-
21372027## %appendix% Schema identification examples {#idexamples}
21382028
21392029Consider the following schema, which shows ` $id ` being used to identify both the
@@ -2163,7 +2053,7 @@ name fragment identifiers.
21632053```
21642054
21652055The schemas at the following locations (indicated by plain
2166- [ JSON Pointers] ( # rfc6901) relative to the root document) have the following base
2056+ [ JSON Pointers] ( https://www.rfc-editor.org/info/ rfc6901) relative to the root document) have the following base
21672057IRIs, and are identifiable by any listed IRI in accordance with {{fragments}}
21682058and {{embedded}} above.
21692059
0 commit comments