+
+
+```
+
+A processor seeing a non-JSON result will note the presence of the link header and load that document instead.
+
+## 7. Embedding JSON-LD in HTML Documents[](#embedding-json-ld-in-html-documents)
+
+Note
+
+This section describes features available with a [documentLoader](https://www.w3.org/TR/json-ld11-api/#dom-jsonldoptions-documentloader) supporting [HTML script extraction](https://www.w3.org/TR/json-ld11-api/#extract-script-content). See [Remote Document and Context Retrieval](https://www.w3.org/TR/json-ld11-api/#remote-document-and-context-retrieval) for more information.
+
+JSON-LD content can be easily embedded in HTML \[[HTML](#bib-html "HTML Standard")\] by placing it in a [script element](https://html.spec.whatwg.org/multipage/scripting.html#the-script-element) with the `type` attribute set to `application/ld+json`. Doing so creates a [data block](https://html.spec.whatwg.org/multipage/scripting.html#data-block).
+
+[Example 144](#example-144-embedding-json-ld-in-html): Embedding JSON-LD in HTML
+
+Compacted (Input)
+
+Expanded (Result)
+
+Statements
+
+Turtle
+
+``` {.compacted .input .selected .nohighlight content-type="text/html"}
+
+```
+
+``` {.expanded .result result-for="Embedding JSON-LD in HTML-compacted" aria-busy="false"}
+[{
+ "@id": "http://dbpedia.org/resource/John_Lennon",
+ "http://xmlns.com/foaf/0.1/name": [{"@value": "John Lennon"}],
+ "http://schema.org/birthDate": [
+ {"@value": "1940-10-09", "@type": "http://www.w3.org/2001/XMLSchema#date"}
+ ],
+ "http://schema.org/spouse": [
+ {"@id": "http://dbpedia.org/resource/Cynthia_Lennon"}
+ ]
+}]
+```
+
+ Subject Property Value Value Type
+ ----------------------------------------- ------------------ -------------------------------------------- ------------
+ http://dbpedia.org/resource/John_Lennon foaf:name John Lennon
+ http://dbpedia.org/resource/John_Lennon schema:birthDate 1940-10-09 xsd:date
+ http://dbpedia.org/resource/John_Lennon schema:spouse http://dbpedia.org/resource/Cynthia_Lennon
+
+``` {.turtle content-type="text/turtle" result-for="Embedding JSON-LD in HTML-expanded" to-rdf="" aria-busy="false"}
+@prefix foaf: .
+@prefix schema: .
+@prefix xsd: .
+
+ foaf:name "John Lennon";
+ schema:birthDate "1940-10-09"^^xsd:date;
+ schema:spouse .
+```
+
+Defining how such data may be used is beyond the scope of this specification. The embedded JSON-LD document might be extracted as is or, e.g., be interpreted as RDF.
+
+If JSON-LD content is extracted as RDF \[[RDF11-CONCEPTS](#bib-rdf11-concepts "RDF 1.1 Concepts and Abstract Syntax")\], it *MUST* be expanded into an [RDF Dataset](https://www.w3.org/TR/rdf11-concepts/#dfn-rdf-dataset) using the [Deserialize JSON-LD to RDF Algorithm](https://www.w3.org/TR/json-ld11-api/#deserialize-json-ld-to-rdf-algorithm) \[[JSON-LD11-API](#bib-json-ld11-api "JSON-LD 1.1 Processing Algorithms and API")\]. Unless a specific script is targeted (see [§ 7.3 Locating a Specific JSON-LD Script Element](#locating-a-specific-json-ld-script-element)), all [script elements](https://html.spec.whatwg.org/multipage/scripting.html#the-script-element) with `type` `application/ld+json` *MUST* be processed and merged into a single [dataset](https://www.w3.org/TR/rdf11-concepts/#dfn-rdf-dataset) with equivalent [blank node identifiers](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node-identifier) contained in separate script elements treated as if they were in a single document (i.e., blank nodes are shared between different JSON-LD script elements).
+
+[Example 145](#example-145-combining-multiple-json-ld-script-elements-into-a-single-dataset): Combining multiple JSON-LD script elements into a single dataset
+
+HTML Embedded (Input)
+
+Statements
+
+Turtle (Result)
+
+``` {.compacted .input .selected content-type="text/html" aria-busy="false"}
+
Data describing Dave
+
+
+
Data describing Gregg
+
+```
+
+ Subject Property Value
+ -------------------------------------------- ------------- ---------------
+ https://digitalbazaar.com/author/dlongley/ rdf:type schema:Person
+ https://digitalbazaar.com/author/dlongley/ schema:name Dave Longley
+ https://greggkellogg.net/foaf#me rdf:type schema:Person
+ https://greggkellogg.net/foaf#me schema:name Gregg Kellogg
+
+``` {.turtle content-type="text/turtle" result-for="Combining multiple JSON-LD script elements into a single dataset-compacted" to-rdf="" aria-busy="false"}
+@prefix schema: .
+
+ a schema:Person;
+ schema:name "Dave Longley" .
+
+ a schema:Person;
+ schema:name "Gregg Kellogg" .
+```
+
+### 7.1 Inheriting base IRI from HTML\'s `base` element[](#inheriting-base-iri-from-html-s-base-element)
+
+When processing a JSON-LD [script element](https://html.spec.whatwg.org/multipage/scripting.html#the-script-element), the [Document Base URL](https://html.spec.whatwg.org/multipage/urls-and-fetching.html#document-base-url) of the containing HTML document, as defined in \[[HTML](#bib-html "HTML Standard")\], is used to establish the default [base IRI](https://www.w3.org/TR/rdf11-concepts/#dfn-base-iri) of the enclosed JSON-LD content.
+
+[Example 146](#example-146-using-the-document-base-url-to-establish-the-default-base-iri): Using the document base URL to establish the default base IRI
+
+Compacted (Input)
+
+Expanded (Result)
+
+Statements
+
+Turtle
+
+``` {.compacted .input .selected content-type="text/html" aria-busy="false"}
+
+
+
+
+
+
+```
+
+``` {.expanded .result result-for="Using the document base URL to establish the default base IRI-compacted" aria-busy="false"}
+[{
+ "@id": "http://dbpedia.org/resource/John_Lennon",
+ "http://xmlns.com/foaf/0.1/name": [{"@value": "John Lennon"}],
+ "http://schema.org/birthDate": [
+ {"@value": "1940-10-09", "@type": "http://www.w3.org/2001/XMLSchema#date"}
+ ],
+ "http://schema.org/spouse": [
+ {"@id": "http://dbpedia.org/resource/Cynthia_Lennon"}
+ ]
+}]
+```
+
+ Subject Property Value Value Type
+ ----------------------------------------- ------------------ -------------------------------------------- ------------
+ http://dbpedia.org/resource/John_Lennon foaf:name John Lennon
+ http://dbpedia.org/resource/John_Lennon schema:birthDate 1940-10-09 xsd:date
+ http://dbpedia.org/resource/John_Lennon schema:spouse http://dbpedia.org/resource/Cynthia_Lennon
+
+``` {.turtle content-type="text/turtle" result-for="Using the document base URL to establish the default base IRI-expanded" to-rdf="" aria-busy="false"}
+@base .
+@prefix foaf: .
+@prefix schema: .
+@prefix xsd: .
+
+ foaf:name "John Lennon";
+ schema:birthDate "1940-10-09"^^xsd:date;
+ schema:spouse .
+```
+
+HTML allows for [Dynamic changes to base URLs](https://html.spec.whatwg.org/multipage/urls-and-fetching.html#dynamic-changes-to-base-urls). This specification does not require any specific behavior, and to ensure that all systems process the [base IRI](https://www.w3.org/TR/rdf11-concepts/#dfn-base-iri) equivalently, authors *SHOULD* either use [IRIs](https://tools.ietf.org/html/rfc3987#section-2), or explicitly as defined in [§ 4.1.3 Base IRI](#base-iri). Implementations (particularly those natively operating in the \[[DOM](#bib-dom "DOM Standard")\]) *MAY* take into consideration [Dynamic changes to base URLs](https://html.spec.whatwg.org/multipage/urls-and-fetching.html#dynamic-changes-to-base-urls).
+
+### 7.2 Restrictions for contents of JSON-LD `script` elements[](#restrictions-for-contents-of-json-ld-script-elements)
+
+*This section is non-normative.*
+
+Due to the HTML [Restrictions for contents of `
+```
+
+``` {.expanded .result result-for="Embedding JSON-LD containing HTML in HTML-compacted" aria-busy="false"}
+[{
+ "@type": ["http://schema.org/WebPageElement"],
+ "http://schema.org/name": [{"@value": "Encoding Issues"}],
+ "http://schema.org/description": [
+ {"@value": "Issues list such as unescaped </script> or -->"}
+ ]
+}]
+```
+
+``` {.turtle content-type="text/turtle" result-for="Embedding JSON-LD containing HTML in HTML-expanded" to-rdf="" aria-busy="false"}
+@prefix schema: .
+
+[ a schema:WebPageElement;
+ schema:name "Encoding Issues";
+ schema:description "Issues list such as unescaped </script> or -->"
+] .
+```
+
+### 7.3 Locating a Specific JSON-LD Script Element[](#locating-a-specific-json-ld-script-element)
+
+A specific [script element](https://html.spec.whatwg.org/multipage/scripting.html#the-script-element) within an HTML document may be located using a fragment identifier matching the [unique identifier](https://dom.spec.whatwg.org/#concept-id) of the script element within the HTML document located by a URL (see \[[DOM](#bib-dom "DOM Standard")\]). A [JSON-LD processor](https://www.w3.org/TR/json-ld11-api/#dfn-json-ld-processor) *MUST* extract only the specified data block\'s contents parsing it as a standalone [JSON-LD document](#dfn-json-ld-document) and *MUST NOT* merge the result with any other markup from the same HTML document.
+
+For example, given an HTML document located at `http://example.com/document`, a script element identified by \"dave\" can be targeted using the URL `http://example.com/document#dave`.
+
+[Example 148](#example-148-targeting-a-specific-script-element-by-id): Targeting a specific script element by id
+
+Compacted (Input)
+
+Statements
+
+Turtle
+
+Targeting a script element with id \"gregg\"
+
+``` {.compacted .input .selected .nohighlight content-type="text/html"}
+
Data describing Dave
+
+
+
Data describing Gregg
+
+```
+
+ Subject Property Value
+ ---------------------------------- ------------- ---------------
+ https://greggkellogg.net/foaf#me rdf:type schema:Person
+ https://greggkellogg.net/foaf#me schema:name Gregg Kellogg
+
+``` {.turtle content-type="text/turtle" result-for="Targeting a specific script element by id-compacted" to-rdf="" data-target="#gregg" aria-busy="false"}
+@prefix schema: .
+
+ a schema:Person;
+ schema:name "Gregg Kellogg" .
+```
+
+## 8. Data Model[](#data-model)
+
+JSON-LD is a serialization format for Linked Data based on JSON. It is therefore important to distinguish between the syntax, which is defined by JSON in \[[RFC8259](#bib-rfc8259 "The JavaScript Object Notation (JSON) Data Interchange Format")\], and the data model which is an extension of the [RDF data model](https://www.w3.org/TR/rdf11-concepts/#data-model) \[[RDF11-CONCEPTS](#bib-rdf11-concepts "RDF 1.1 Concepts and Abstract Syntax")\]. The precise details of how JSON-LD relates to the RDF data model are given in [§ 10. Relationship to RDF](#relationship-to-rdf).
+
+To ease understanding for developers unfamiliar with the RDF model, the following summary is provided:
+
+- A [JSON-LD document](#dfn-json-ld-document) serializes a [RDF Dataset](https://www.w3.org/TR/rdf11-concepts/#dfn-rdf-dataset) \[[RDF11-CONCEPTS](#bib-rdf11-concepts "RDF 1.1 Concepts and Abstract Syntax")\], which is a collection of [graphs](https://www.w3.org/TR/rdf11-concepts/#dfn-rdf-graph) that comprises exactly one [default graph](https://www.w3.org/TR/rdf11-concepts/#dfn-default-graph) and zero or more [named graphs](https://www.w3.org/TR/rdf11-concepts/#dfn-named-graph).
+- The [default graph](https://www.w3.org/TR/rdf11-concepts/#dfn-default-graph) does not have a name and *MAY* be empty.
+- Each [named graph](https://www.w3.org/TR/rdf11-concepts/#dfn-named-graph) is a pair consisting of an [IRI](https://tools.ietf.org/html/rfc3987#section-2) or [blank node identifier](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node-identifier) (the [graph name](https://www.w3.org/TR/rdf11-concepts/#dfn-graph-name)) and a [graph](https://www.w3.org/TR/rdf11-concepts/#dfn-rdf-graph). Whenever practical, the [graph name](https://www.w3.org/TR/rdf11-concepts/#dfn-graph-name) *SHOULD* be an [IRI](https://tools.ietf.org/html/rfc3987#section-2).
+- A [graph](https://www.w3.org/TR/rdf11-concepts/#dfn-rdf-graph) is a labeled directed graph, i.e., a set of [nodes](https://www.w3.org/TR/rdf11-concepts/#dfn-node) connected by directed-arcs.
+- Every directed-arc is labeled with an [IRI](https://tools.ietf.org/html/rfc3987#section-2) or a [blank node identifier](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node-identifier). Within the JSON-LD syntax these arc labels are called [properties](https://www.w3.org/TR/rdf11-concepts/#dfn-property). Whenever practical, a directed-arc *SHOULD* be labeled with an [IRI](https://tools.ietf.org/html/rfc3987#section-2).
+ Note
+
+ The use of [blank node identifiers](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node-identifier) to label properties is obsolete, and may be removed in a future version of JSON-LD. Consider using a document-relative IRI, instead, such as `#`.
+- Every [node](https://www.w3.org/TR/rdf11-concepts/#dfn-node) is an [IRI](https://tools.ietf.org/html/rfc3987#section-2), a [blank node](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node), or a [literal](https://www.w3.org/TR/rdf11-concepts/#dfn-literal), although syntactically [lists](https://www.w3.org/TR/rdf-schema/#ch_collectionvocab) and native JSON values may be represented directly.
+- A [node](https://www.w3.org/TR/rdf11-concepts/#dfn-node) having an outgoing edge *MUST* be an [IRI](https://tools.ietf.org/html/rfc3987#section-2) or a [blank node](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node).
+- A [graph](https://www.w3.org/TR/rdf11-concepts/#dfn-rdf-graph) *MUST NOT* contain unconnected [nodes](https://www.w3.org/TR/rdf11-concepts/#dfn-node), i.e., nodes which are not connected by an [property](https://www.w3.org/TR/rdf11-concepts/#dfn-property) to any other [node](https://www.w3.org/TR/rdf11-concepts/#dfn-node).
+ [Example 149](#example-149-illegal-unconnected-node): Illegal Unconnected Node
+
+ ``` {ignore="" aria-busy="false"}
+ {
+ "@id": "http://example.org/1"
+ }
+ ```
+
+ Note
+
+ This effectively just prohibits unnested, empty [node objects](#dfn-node-object) and unnested [node objects](#dfn-node-object) that contain only an `@id`. A document may have [nodes](https://www.w3.org/TR/rdf11-concepts/#dfn-node) which are unrelated, as long as one or more properties are defined, or the [node](https://www.w3.org/TR/rdf11-concepts/#dfn-node) is referenced from another [node object](#dfn-node-object).
+- An [IRI](https://tools.ietf.org/html/rfc3987#section-2) (Internationalized Resource Identifier) is a string that conforms to the syntax defined in \[[RFC3987](#bib-rfc3987 "Internationalized Resource Identifiers (IRIs)")\]. [IRIs](https://tools.ietf.org/html/rfc3987#section-2) used within a [graph](https://www.w3.org/TR/rdf11-concepts/#dfn-rdf-graph) *SHOULD* return a Linked Data document describing the resource denoted by that [IRI](https://tools.ietf.org/html/rfc3987#section-2) when being dereferenced.
+- A [blank node](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node) is a [node](https://www.w3.org/TR/rdf11-concepts/#dfn-node) which is neither an [IRI](https://tools.ietf.org/html/rfc3987#section-2), nor a [JSON-LD value](#dfn-json-ld-value), nor a [list](https://www.w3.org/TR/rdf-schema/#ch_collectionvocab). A blank node is identified using a [blank node identifier](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node-identifier).
+- A [blank node identifier](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node-identifier) is a string that can be used as an identifier for a [blank node](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node) within the scope of a [JSON-LD document](#dfn-json-ld-document). Blank node identifiers begin with `_:`.
+- A [JSON-LD value](#dfn-json-ld-value) is a [typed value](#dfn-typed-value), a [string](https://infra.spec.whatwg.org/#javascript-string) (which is interpreted as a [typed value](#dfn-typed-value) with type `xsd:string`), a [number](https://tc39.es/ecma262/#sec-terms-and-definitions-number-value) ([numbers](https://tc39.es/ecma262/#sec-terms-and-definitions-number-value) with a non-zero fractional part, i.e., the result of a modulo‑1 operation, or which are too large to represent as integers (see [Data Round Tripping](https://www.w3.org/TR/json-ld11-api/#data-round-tripping)) in \[[JSON-LD11-API](#bib-json-ld11-api "JSON-LD 1.1 Processing Algorithms and API")\]), are interpreted as [typed values](#dfn-typed-value) with type `xsd:double`, all other [numbers](https://tc39.es/ecma262/#sec-terms-and-definitions-number-value) are interpreted as [typed values](#dfn-typed-value) with type `xsd:integer`), `true` or `false` (which are interpreted as [typed values](#dfn-typed-value) with type `xsd:boolean`), or a [language-tagged string](https://www.w3.org/TR/rdf11-concepts/#dfn-language-tagged-string).
+- A [typed value](#dfn-typed-value) consists of a value, which is a string, and a type, which is an [IRI](https://tools.ietf.org/html/rfc3987#section-2).
+- A [language-tagged string](https://www.w3.org/TR/rdf11-concepts/#dfn-language-tagged-string) consists of a string and a non-empty [language tag](https://www.w3.org/TR/rdf11-concepts/#dfn-language-tag) as defined by \[[BCP47](#bib-bcp47 "Tags for Identifying Languages")\]. The language tag *MUST* be well-formed according to section [2.2.9 Classes of Conformance](https://tools.ietf.org/html/bcp47#section-2.2.9) of \[[BCP47](#bib-bcp47 "Tags for Identifying Languages")\]. Processors *MAY* normalize [language tags](https://www.w3.org/TR/rdf11-concepts/#dfn-language-tag) to lowercase.
+- Either [strings](https://infra.spec.whatwg.org/#javascript-string), or [language-tagged strings](https://www.w3.org/TR/rdf11-concepts/#dfn-language-tagged-string) may include a [base direction](#dfn-base-direction), which represents an extension to the underlying [RDF data model](https://www.w3.org/TR/rdf11-concepts/#data-model).
+- A [list](https://www.w3.org/TR/rdf-schema/#ch_collectionvocab) is a sequence of zero or more [IRIs](https://tools.ietf.org/html/rfc3987#section-2), [blank nodes](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node), and [JSON-LD values](#dfn-json-ld-value). [Lists](https://www.w3.org/TR/rdf-schema/#ch_collectionvocab) are interpreted as [RDF list structures](https://www.w3.org/TR/rdf11-mt/#rdf-collections) \[[RDF11-MT](#bib-rdf11-mt "RDF 1.1 Semantics")\].
+
+[JSON-LD documents](#dfn-json-ld-document) *MAY* contain data that cannot be represented by the [data model](#dfn-data-model) defined above. Unless otherwise specified, such data is ignored when a [JSON-LD document](#dfn-json-ld-document) is being processed. One result of this rule is that properties which are not mapped to an [IRI](https://tools.ietf.org/html/rfc3987#section-2), a [blank node](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node), or [keyword](#dfn-keyword) will be ignored.
+
+Additionally, the JSON serialization format is internally represented using the [JSON-LD internal representation](https://www.w3.org/TR/json-ld11-api/#dfn-internal-representation), which uses the generic concepts of [lists](https://www.w3.org/TR/rdf-schema/#ch_collectionvocab), [maps](https://infra.spec.whatwg.org/#ordered-map), [strings](https://infra.spec.whatwg.org/#javascript-string), [numbers](https://tc39.es/ecma262/#sec-terms-and-definitions-number-value), [booleans](https://infra.spec.whatwg.org/#boolean), and [null](https://infra.spec.whatwg.org/#nulls) to describe the data represented by a JSON document.
+
+The image depicts a linked data dataset with a default graph and two named graphs.
+
+Figure 1 An illustration of a linked data dataset.\
+A [description of the linked data dataset diagram](#fig-linked-data-graph-descr) is available in the Appendix. Image available in [SVG](linked-data-graph.svg "SVG image of a linked data dataset") and [PNG](linked-data-graph.png "PNG image of a linked data dataset") formats.
+
+The dataset described in this figure can be represented as follows:
+
+[Example 150](#example-150-linked-data-dataset): Linked Data Dataset
+
+Compacted (Input)
+
+Expanded (Result)
+
+Statements
+
+TriG
+
+``` {.compacted .input .selected aria-busy="false"}
+{
+ "@context": [
+ "http://schema.org/",
+ {"@base": "http://example.com/"}
+ ],
+ "@graph": [{
+ "@id": "people/alice",
+ "gender": [
+ {"@value": "weiblich", "@language": "de"},
+ {"@value": "female", "@language": "en"}
+ ],
+ "knows": {"@id": "people/bob"},
+ "name": "Alice"
+ }, {
+ "@id": "graphs/1",
+ "@graph": {
+ "@id": "people/alice",
+ "parent": {
+ "@id": "people/bob",
+ "name": "Bob"
+ }
+ }
+ }, {
+ "@id": "graphs/2",
+ "@graph": {
+ "@id": "people/bob",
+ "sibling": {
+ "name": "Mary",
+ "sibling": {"@id": "people/bob"}
+ }
+ }
+ }]
+}
+```
+
+``` {.expanded .result result-for="Linked Data Dataset-compacted" aria-busy="false"}
+[{
+ "@id": "http://example.com/people/alice",
+ "http://schema.org/name": [{"@value": "Alice"}],
+ "http://schema.org/gender": [
+ {"@value": "weiblich","@language": "de"},
+ {"@value": "female","@language": "en"}
+ ],
+ "http://schema.org/knows": [
+ {"@id": "http://example.com/people/bob"}
+ ]
+}, {
+ "@id": "http://example.com/graphs/1",
+ "@graph": [{
+ "@id": "http://example.com/people/alice",
+ "http://schema.org/parent": [{
+ "@id": "http://example.com/people/bob",
+ "http://schema.org/name": [{"@value": "Bob"}]
+ }]
+ }]
+}, {
+ "@id": "http://example.com/graphs/2",
+ "@graph": [{
+ "@id": "http://example.com/people/bob",
+ "http://schema.org/sibling": [{
+ "http://schema.org/name": [{"@value": "Mary"}],
+ "http://schema.org/sibling": [
+ {"@id": "http://example.com/people/bob"}
+ ]
+ }]
+ }]
+}]
+```
+
+ Graph Subject Property Value Language
+ ----------------------------- --------------------------------- ---------------- ------------------------------- ----------
+ http://example.com/people/alice schema:name Alice
+ http://example.com/people/alice schema:gender weiblich de
+ http://example.com/people/alice schema:gender female en
+ http://example.com/people/alice schema:knows http://example.com/people/bob
+ http://example.com/graphs/1 http://example.com/people/bob schema:name Bob
+ http://example.com/graphs/1 http://example.com/people/alice schema:parent http://example.com/people/bob
+ http://example.com/graphs/2 http://example.com/people/bob schema:sibling \_:b0
+ http://example.com/graphs/2 \_:b0 schema:name Mary
+ http://example.com/graphs/2 \_:b0 schema:sibling http://example.com/people/bob
+
+``` {.trig content-type="application/trig" result-for="Linked Data Dataset-expanded" to-rdf="" aria-busy="false"}
+@prefix schema: .
+
+ schema:knows ;
+ schema:name "Alice";
+ schema:gender "weiblich"@de, "female"@en .
+
+ {
+ schema:parent .
+ schema:name "Bob" .
+}
+
+ {
+ schema:sibling [
+ schema:name "Mary";
+ schema:sibling
+ ] .
+}
+```
+
+Note
+
+Note the use of `@graph` at the outer-most level to describe three top-level resources (two of them [named graphs](https://www.w3.org/TR/rdf11-concepts/#dfn-named-graph)). The named graphs use `@graph` in addition to `@id` to provide the name for each graph.
+
+## 9. JSON-LD Grammar[](#json-ld-grammar)
+
+This section restates the syntactic conventions described in the previous sections more formally.
+
+A [JSON-LD document](#dfn-json-ld-document) *MUST* be valid [JSON text](https://tools.ietf.org/html/rfc8259#section-2) as described in \[[RFC8259](#bib-rfc8259 "The JavaScript Object Notation (JSON) Data Interchange Format")\], or some format that can be represented in the [JSON-LD internal representation](https://www.w3.org/TR/json-ld11-api/#dfn-internal-representation) that is equivalent to valid [JSON text](https://tools.ietf.org/html/rfc8259#section-2).
+
+A [JSON-LD document](#dfn-json-ld-document) *MUST* be a single [node object](#dfn-node-object), a [map](https://infra.spec.whatwg.org/#ordered-map) consisting of only the [entries](https://infra.spec.whatwg.org/#map-entry) `@context` and/or `@graph`, or an [array](https://infra.spec.whatwg.org/#list) of zero or more [node objects](#dfn-node-object).
+
+In contrast to JSON, in JSON-LD the keys in [objects](https://tools.ietf.org/html/rfc8259#section-4) *MUST* be unique.
+
+Whenever a [keyword](#dfn-keyword) is discussed in this grammar, the statements also apply to an alias for that [keyword](#dfn-keyword).
+
+Note
+
+JSON-LD allows [keywords](#dfn-keyword) to be aliased (see [§ 4.1.6 Aliasing Keywords](#aliasing-keywords) for details). For example, if the [active context](#dfn-active-context) defines the [term](#dfn-term) `id` as an alias for `@id`, that alias may be legitimately used as a substitution for `@id`. Note that [keyword](#dfn-keyword) aliases are not expanded during context processing.
+
+### 9.1 Terms[](#terms)
+
+A [term](#dfn-term) is a short-hand [string](https://infra.spec.whatwg.org/#javascript-string) that expands to an [IRI](https://tools.ietf.org/html/rfc3987#section-2), [blank node identifier](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node-identifier), or [keyword](#dfn-keyword).
+
+A [term](#dfn-term) *MUST NOT* equal any of the JSON-LD [keywords](#dfn-keyword), other than `@type`.
+
+When used as the [prefix](#dfn-prefix) in a [Compact IRI](#dfn-compact-iri), to avoid the potential ambiguity of a [prefix](#dfn-prefix) being confused with an IRI scheme, [terms](#dfn-term) *SHOULD NOT* come from the list of URI schemes as defined in \[[IANA-URI-SCHEMES](#bib-iana-uri-schemes "Uniform Resource Identifier (URI) Schemes")\]. Similarly, to avoid confusion between a [Compact IRI](#dfn-compact-iri) and a [term](#dfn-term), terms *SHOULD NOT* include a colon (`:`) and *SHOULD* be restricted to the form of [`isegment-nz-nc`](https://tools.ietf.org/html/rfc3987#section-2.2) as defined in \[[RFC3987](#bib-rfc3987 "Internationalized Resource Identifiers (IRIs)")\].
+
+To avoid forward-compatibility issues, a [term](#dfn-term) *SHOULD NOT* start with an `@` character followed exclusively by one or more *ALPHA* characters (see \[[RFC5234](#bib-rfc5234 "Augmented BNF for Syntax Specifications: ABNF")\]) as future versions of JSON-LD may introduce additional [keywords](#dfn-keyword). Furthermore, the term *MUST NOT* be an empty [string](https://infra.spec.whatwg.org/#javascript-string) (`""`) as not all programming languages are able to handle empty JSON keys.
+
+See [§ 3.1 The Context](#the-context) and [§ 3.2 IRIs](#iris) for further discussion on mapping [terms](#dfn-term) to [IRIs](https://tools.ietf.org/html/rfc3987#section-2).
+
+### 9.2 Node Objects[](#node-objects)
+
+A [node object](#dfn-node-object) represents zero or more properties of a [node](https://www.w3.org/TR/rdf11-concepts/#dfn-node) in the [graph](https://www.w3.org/TR/rdf11-concepts/#dfn-rdf-graph) serialized by the [JSON-LD document](#dfn-json-ld-document). A [map](https://infra.spec.whatwg.org/#ordered-map) is a [node object](#dfn-node-object) if it exists outside of a JSON-LD [context](#dfn-context) and:
+
+- it is not the top-most [map](https://infra.spec.whatwg.org/#ordered-map) in the JSON-LD document consisting of no other [entries](https://infra.spec.whatwg.org/#map-entry) than `@graph` and `@context`,
+- it does not contain the `@value`, `@list`, or `@set` keywords, and
+- it is not a [graph object](#dfn-graph-object).
+
+The [properties](https://www.w3.org/TR/rdf11-concepts/#dfn-property) of a [node](https://www.w3.org/TR/rdf11-concepts/#dfn-node) in a [graph](https://www.w3.org/TR/rdf11-concepts/#dfn-rdf-graph) may be spread among different [node objects](#dfn-node-object) within a document. When that happens, the keys of the different [node objects](#dfn-node-object) need to be merged to create the properties of the resulting [node](https://www.w3.org/TR/rdf11-concepts/#dfn-node).
+
+A [node object](#dfn-node-object) *MUST* be a [map](https://infra.spec.whatwg.org/#ordered-map). All keys which are not [IRIs](https://tools.ietf.org/html/rfc3987#section-2), [compact IRIs](#dfn-compact-iri), [terms](#dfn-term) valid in the [active context](#dfn-active-context), or one of the following [keywords](#dfn-keyword) (or alias of such a keyword) *MUST* be ignored when processed:
+
+- `@context`,
+- `@id`,
+- `@included`,
+- `@graph`,
+- `@nest`,
+- `@type`,
+- `@reverse`, or
+- `@index`
+
+If the [node object](#dfn-node-object) contains the `@context` key, its value *MUST* be [null](https://infra.spec.whatwg.org/#nulls), an [IRI reference](https://tools.ietf.org/html/rfc3987#section-1.3), a [context definition](#dfn-context-definition), or an [array](https://infra.spec.whatwg.org/#list) composed of any of these.
+
+If the [node object](#dfn-node-object) contains the `@id` key, its value *MUST* be an [IRI reference](https://tools.ietf.org/html/rfc3987#section-1.3), or a [compact IRI](#dfn-compact-iri) (including [blank node identifiers](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node-identifier)). See [§ 3.3 Node Identifiers](#node-identifiers), [§ 4.1.5 Compact IRIs](#compact-iris), and [§ 4.5.1 Identifying Blank Nodes](#identifying-blank-nodes) for further discussion on `@id` values.
+
+If the [node object](#dfn-node-object) contains the `@graph` key, its value *MUST* be a [node object](#dfn-node-object) or an [array](https://infra.spec.whatwg.org/#list) of zero or more [node objects](#dfn-node-object). If the [node object](#dfn-node-object) also contains an `@id` keyword, its value is used as the [graph name](https://www.w3.org/TR/rdf11-concepts/#dfn-graph-name) of a [named graph](https://www.w3.org/TR/rdf11-concepts/#dfn-named-graph). See [§ 4.9 Named Graphs](#named-graphs) for further discussion on `@graph` values. As a special case, if a [map](https://infra.spec.whatwg.org/#ordered-map) contains no keys other than `@graph` and `@context`, and the [map](https://infra.spec.whatwg.org/#ordered-map) is the root of the JSON-LD document, the [map](https://infra.spec.whatwg.org/#ordered-map) is not treated as a [node object](#dfn-node-object); this is used as a way of defining [node objects](#dfn-node-object) that may not form a connected graph. This allows a [context](#dfn-context) to be defined which is shared by all of the constituent [node objects](#dfn-node-object).
+
+If the [node object](#dfn-node-object) contains the `@type` key, its value *MUST* be either an [IRI reference](https://tools.ietf.org/html/rfc3987#section-1.3), a [compact IRI](#dfn-compact-iri) (including [blank node identifiers](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node-identifier)), a [term](#dfn-term) defined in the [active context](#dfn-active-context) expanding into an [IRI](https://tools.ietf.org/html/rfc3987#section-2), or an [array](https://infra.spec.whatwg.org/#list) of any of these. See [§ 3.5 Specifying the Type](#specifying-the-type) for further discussion on `@type` values.
+
+If the [node object](#dfn-node-object) contains the `@reverse` key, its value *MUST* be a [map](https://infra.spec.whatwg.org/#ordered-map) containing [entries](https://infra.spec.whatwg.org/#map-entry) representing reverse properties. Each value of such a reverse property *MUST* be an [IRI reference](https://tools.ietf.org/html/rfc3987#section-1.3), a [compact IRI](#dfn-compact-iri), a [blank node identifier](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node-identifier), a [node object](#dfn-node-object) or an [array](https://infra.spec.whatwg.org/#list) containing a combination of these.
+
+If the [node object](#dfn-node-object) contains the `@included` key, its value *MUST* be an [included block](#dfn-included-block). See [§ 9.13 Included Blocks](#included-blocks) for further discussion on [included blocks](#dfn-included-block).
+
+If the [node object](#dfn-node-object) contains the `@index` key, its value *MUST* be a [string](https://infra.spec.whatwg.org/#javascript-string). See [§ 4.6.1 Data Indexing](#data-indexing) for further discussion on `@index` values.
+
+If the [node object](#dfn-node-object) contains the `@nest` key, its value *MUST* be a [map](https://infra.spec.whatwg.org/#ordered-map) or an [array](https://infra.spec.whatwg.org/#list) of [map](https://infra.spec.whatwg.org/#ordered-map) which *MUST NOT* include a [value object](#dfn-value-object). See [§ 9.14 Property Nesting](#property-nesting) for further discussion on `@nest` values.
+
+Keys in a [node object](#dfn-node-object) that are not [keywords](#dfn-keyword) *MAY* expand to an [IRI](https://tools.ietf.org/html/rfc3987#section-2) using the [active context](#dfn-active-context). The values associated with keys that expand to an [IRI](https://tools.ietf.org/html/rfc3987#section-2) *MUST* be one of the following:
+
+- [string](https://infra.spec.whatwg.org/#javascript-string),
+- [number](https://tc39.es/ecma262/#sec-terms-and-definitions-number-value),
+- `true`,
+- `false`,
+- [null](https://infra.spec.whatwg.org/#nulls),
+- [node object](#dfn-node-object),
+- [graph object](#dfn-graph-object),
+- [value object](#dfn-value-object),
+- [list object](#dfn-list-object),
+- [set object](#dfn-set-object),
+- an [array](https://infra.spec.whatwg.org/#list) of zero or more of any of the possibilities above,
+- a [language map](#dfn-language-map),
+- an [index map](#dfn-index-map),
+- an [included block](#dfn-included-block)
+- an [id map](#dfn-id-map), or
+- a [type map](#dfn-type-map)
+
+### 9.3 Frame Objects[](#frame-objects)
+
+When [framing](https://www.w3.org/TR/json-ld11-framing/#dfn-framing), a [frame object](https://www.w3.org/TR/json-ld11-framing/#dfn-frame-object) extends a [node object](#dfn-node-object) to allow [entries](https://infra.spec.whatwg.org/#map-entry) used specifically for [framing](https://www.w3.org/TR/json-ld11-framing/#dfn-framing).
+
+- A [frame object](https://www.w3.org/TR/json-ld11-framing/#dfn-frame-object) *MAY* include a [default object](#dfn-default-object) as the value of any key which is not a [keyword](#dfn-keyword). Values of `@default` *MAY* include the value `@null`, or an [array](https://infra.spec.whatwg.org/#list) containing only `@null`, in addition to other values allowed in the grammar for values of [entry](https://infra.spec.whatwg.org/#map-entry) keys expanding to [IRIs](https://tools.ietf.org/html/rfc3987#section-2).
+- The values of `@id` and `@type` *MAY* additionally be an empty [map](https://infra.spec.whatwg.org/#ordered-map) ([wildcard](https://www.w3.org/TR/json-ld11-framing/#dfn-wildcard)), an [array](https://infra.spec.whatwg.org/#list) containing only an empty [map](https://infra.spec.whatwg.org/#ordered-map), an empty [array](https://infra.spec.whatwg.org/#list) ([match none](https://www.w3.org/TR/json-ld11-framing/#dfn-match-none)) an [array](https://infra.spec.whatwg.org/#list) of [IRIs](https://tools.ietf.org/html/rfc3987#section-2).
+- A [frame object](https://www.w3.org/TR/json-ld11-framing/#dfn-frame-object) *MAY* include an [entry](https://infra.spec.whatwg.org/#map-entry) with the key `@embed` with any value from `@always`, `@once`, and `@never`.
+- A [frame object](https://www.w3.org/TR/json-ld11-framing/#dfn-frame-object) *MAY* include [entries](https://infra.spec.whatwg.org/#map-entry) with the boolean valued keys `@explicit`, `@omitDefault`, or `@requireAll`
+- In addition to other property values, a property of a [frame object](https://www.w3.org/TR/json-ld11-framing/#dfn-frame-object) *MAY* include a [value pattern](https://www.w3.org/TR/json-ld11-framing/#dfn-value-pattern) (See [§ 9.6 Value Patterns](#value-patterns)).
+
+See \[[JSON-LD11-FRAMING](#bib-json-ld11-framing "JSON-LD 1.1 Framing")\] for a description of how [frame objects](https://www.w3.org/TR/json-ld11-framing/#dfn-frame-object) are used.
+
+### 9.4 Graph Objects[](#graph-objects)
+
+A [graph object](#dfn-graph-object) represents a [named graph](https://www.w3.org/TR/rdf11-concepts/#dfn-named-graph), which *MAY* include an explicit [graph name](https://www.w3.org/TR/rdf11-concepts/#dfn-graph-name). A [map](https://infra.spec.whatwg.org/#ordered-map) is a [graph object](#dfn-graph-object) if it exists outside of a JSON-LD [context](#dfn-context), it contains an `@graph` [entry](https://infra.spec.whatwg.org/#map-entry) (or an alias of that [keyword](#dfn-keyword)), it is not the top-most [map](https://infra.spec.whatwg.org/#ordered-map) in the JSON-LD document, and it consists of no [entries](https://infra.spec.whatwg.org/#map-entry) other than `@graph`, `@index`, `@id` and `@context`, or an alias of one of these [keywords](#dfn-keyword).
+
+If the [graph object](#dfn-graph-object) contains the `@context` key, its value *MUST* be [null](https://infra.spec.whatwg.org/#nulls), an [IRI reference](https://tools.ietf.org/html/rfc3987#section-1.3), a [context definition](#dfn-context-definition), or an [array](https://infra.spec.whatwg.org/#list) composed of any of these.
+
+If the [graph object](#dfn-graph-object) contains the `@id` key, its value is used as the identifier ([graph name](https://www.w3.org/TR/rdf11-concepts/#dfn-graph-name)) of a [named graph](https://www.w3.org/TR/rdf11-concepts/#dfn-named-graph), and *MUST* be an [IRI reference](https://tools.ietf.org/html/rfc3987#section-1.3), or a [compact IRI](#dfn-compact-iri) (including [blank node identifiers](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node-identifier)). See [§ 3.3 Node Identifiers](#node-identifiers), [§ 4.1.5 Compact IRIs](#compact-iris), and [§ 4.5.1 Identifying Blank Nodes](#identifying-blank-nodes) for further discussion on `@id` values.
+
+A [graph object](#dfn-graph-object) without an `@id` [entry](https://infra.spec.whatwg.org/#map-entry) is also a [simple graph object](#dfn-simple-graph-object) and represents a [named graph](https://www.w3.org/TR/rdf11-concepts/#dfn-named-graph) without an explicit identifier, although in the data model it still has a [graph name](https://www.w3.org/TR/rdf11-concepts/#dfn-graph-name), which is an implicitly allocated [blank node identifier](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node-identifier).
+
+The value of the `@graph` key *MUST* be a [node object](#dfn-node-object) or an [array](https://infra.spec.whatwg.org/#list) of zero or more [node objects](#dfn-node-object). See [§ 4.9 Named Graphs](#named-graphs) for further discussion on `@graph` values..
+
+### 9.5 Value Objects[](#value-objects)
+
+A [value object](#dfn-value-object) is used to explicitly associate a type or a language with a value to create a [typed value](#dfn-typed-value) or a [language-tagged string](https://www.w3.org/TR/rdf11-concepts/#dfn-language-tagged-string) and possibly associate a [base direction](#dfn-base-direction).
+
+A [value object](#dfn-value-object) *MUST* be a [map](https://infra.spec.whatwg.org/#ordered-map) containing the `@value` key. It *MAY* also contain an `@type`, an `@language`, an `@direction`, an `@index`, or an `@context` key but *MUST NOT* contain both an `@type` and either `@language` or `@direction` keys at the same time. A [value object](#dfn-value-object) *MUST NOT* contain any other keys that expand to an [IRI](https://tools.ietf.org/html/rfc3987#section-2) or [keyword](#dfn-keyword).
+
+The value associated with the `@value` key *MUST* be either a [string](https://infra.spec.whatwg.org/#javascript-string), a [number](https://tc39.es/ecma262/#sec-terms-and-definitions-number-value), `true`, `false` or [null](https://infra.spec.whatwg.org/#nulls). If the value associated with the `@type` key is `@json`, the value *MAY* be either an [array](https://infra.spec.whatwg.org/#list) or an [object](https://www.w3.org/TR/rdf11-concepts/#dfn-object).
+
+The value associated with the `@type` key *MUST* be a [term](#dfn-term), an [IRI](https://tools.ietf.org/html/rfc3987#section-2), a [compact IRI](#dfn-compact-iri), a string which can be turned into an [IRI](https://tools.ietf.org/html/rfc3987#section-2) using the [vocabulary mapping](#dfn-vocabulary-mapping), `@json`, or [null](https://infra.spec.whatwg.org/#nulls).
+
+The value associated with the `@language` key *MUST* have the [lexical form](https://tools.ietf.org/html/bcp47#section-2.1.1) described in \[[BCP47](#bib-bcp47 "Tags for Identifying Languages")\], or be [null](https://infra.spec.whatwg.org/#nulls).
+
+The value associated with the `@direction` key *MUST* be one of `"ltr"` or `"rtl"`, or be [null](https://infra.spec.whatwg.org/#nulls).
+
+The value associated with the `@index` key *MUST* be a [string](https://infra.spec.whatwg.org/#javascript-string).
+
+See [§ 4.2.1 Typed Values](#typed-values) and [§ 4.2.4 String Internationalization](#string-internationalization) for more information on [value objects](#dfn-value-object).
+
+### 9.6 Value Patterns[](#value-patterns)
+
+When [framing](https://www.w3.org/TR/json-ld11-framing/#dfn-framing), a [value pattern](https://www.w3.org/TR/json-ld11-framing/#dfn-value-pattern) extends a [value object](#dfn-value-object) to allow [entries](https://infra.spec.whatwg.org/#map-entry) used specifically for [framing](https://www.w3.org/TR/json-ld11-framing/#dfn-framing).
+
+- The values of `@value`, `@language`, `@direction` and `@type` *MAY* additionally be an empty [map](https://infra.spec.whatwg.org/#ordered-map) ([wildcard](https://www.w3.org/TR/json-ld11-framing/#dfn-wildcard)), an [array](https://infra.spec.whatwg.org/#list) containing only an empty [map](https://infra.spec.whatwg.org/#ordered-map), an empty [array](https://infra.spec.whatwg.org/#list) ([match none](https://www.w3.org/TR/json-ld11-framing/#dfn-match-none)), an [array](https://infra.spec.whatwg.org/#list) of [strings](https://infra.spec.whatwg.org/#javascript-string).
+
+### 9.7 Lists and Sets[](#lists-and-sets)
+
+A [list](https://www.w3.org/TR/rdf-schema/#ch_collectionvocab) represents an *ordered* set of values. A set represents an *unordered* set of values. Unless otherwise specified, [arrays](https://infra.spec.whatwg.org/#list) are unordered in JSON-LD. As such, the `@set` keyword, when used in the body of a JSON-LD document, represents just syntactic sugar which is optimized away when processing the document. However, it is very helpful when used within the context of a document. Values of terms associated with an `@set` or `@list` container will always be represented in the form of an [array](https://infra.spec.whatwg.org/#list) when a document is processed---even if there is just a single value that would otherwise be optimized to a non-array form in [compacted document form](#dfn-compacted-document-form). This simplifies post-processing of the data as the data is always in a deterministic form.
+
+A [list object](#dfn-list-object) *MUST* be a [map](https://infra.spec.whatwg.org/#ordered-map) that contains no keys that expand to an [IRI](https://tools.ietf.org/html/rfc3987#section-2) or [keyword](#dfn-keyword) other than `@list` and `@index`.
+
+A [set object](#dfn-set-object) *MUST* be a [map](https://infra.spec.whatwg.org/#ordered-map) that contains no keys that expand to an [IRI](https://tools.ietf.org/html/rfc3987#section-2) or [keyword](#dfn-keyword) other than `@set` and `@index`. Please note that the `@index` key will be ignored when being processed.
+
+In both cases, the value associated with the keys `@list` and `@set` *MUST* be one of the following types:
+
+- [string](https://infra.spec.whatwg.org/#javascript-string),
+- [number](https://tc39.es/ecma262/#sec-terms-and-definitions-number-value),
+- `true`,
+- `false`,
+- [null](https://infra.spec.whatwg.org/#nulls),
+- [node object](#dfn-node-object),
+- [value object](#dfn-value-object), or
+- an [array](https://infra.spec.whatwg.org/#list) of zero or more of the above possibilities
+
+See [§ 4.3 Value Ordering](#sets-and-lists) for further discussion on sets and lists.
+
+### 9.8 Language Maps[](#language-maps)
+
+A [language map](#dfn-language-map) is used to associate a language with a value in a way that allows easy programmatic access. A [language map](#dfn-language-map) may be used as a term value within a [node object](#dfn-node-object) if the [term](#dfn-term) is defined with `@container` set to `@language`, or an array containing both `@language` and `@set` . The keys of a [language map](#dfn-language-map) *MUST* be [strings](https://infra.spec.whatwg.org/#javascript-string) representing \[[BCP47](#bib-bcp47 "Tags for Identifying Languages")\] language tags, the [keyword](#dfn-keyword) `@none`, or a [term](#dfn-term) which expands to `@none`, and the values *MUST* be any of the following types:
+
+- [null](https://infra.spec.whatwg.org/#nulls),
+- [string](https://infra.spec.whatwg.org/#javascript-string), or
+- an [array](https://infra.spec.whatwg.org/#list) of zero or more of the [strings](https://infra.spec.whatwg.org/#javascript-string)
+
+See [§ 4.2.4 String Internationalization](#string-internationalization) for further discussion on language maps.
+
+### 9.9 Index Maps[](#index-maps)
+
+An [index map](#dfn-index-map) allows keys that have no semantic meaning, but should be preserved regardless, to be used in JSON-LD documents. An [index map](#dfn-index-map) may be used as a [term](#dfn-term) value within a [node object](#dfn-node-object) if the term is defined with `@container` set to `@index`, or an array containing both `@index` and `@set` . The values of the [entries](https://infra.spec.whatwg.org/#map-entry) of an [index map](#dfn-index-map) *MUST* be one of the following types:
+
+- [string](https://infra.spec.whatwg.org/#javascript-string),
+- [number](https://tc39.es/ecma262/#sec-terms-and-definitions-number-value),
+- `true`,
+- `false`,
+- [null](https://infra.spec.whatwg.org/#nulls),
+- [node object](#dfn-node-object),
+- [value object](#dfn-value-object),
+- [list object](#dfn-list-object),
+- [set object](#dfn-set-object),
+- an [array](https://infra.spec.whatwg.org/#list) of zero or more of the above possibilities
+
+See [§ 4.6.1 Data Indexing](#data-indexing) for further information on this topic.
+
+[Index Maps](#dfn-index-map) may also be used to map indexes to associated [named graphs](https://www.w3.org/TR/rdf11-concepts/#dfn-named-graph), if the term is defined with `@container` set to an array containing both `@graph` and `@index`, and optionally including `@set`. The value consists of the [node objects](#dfn-node-object) contained within the [named graph](https://www.w3.org/TR/rdf11-concepts/#dfn-named-graph) which is indexed using the referencing key, which can be represented as a [simple graph object](#dfn-simple-graph-object) if the value does not include `@id`, or a [named graph](https://www.w3.org/TR/rdf11-concepts/#dfn-named-graph) if it includes `@id`.
+
+### 9.10 Property-based Index Maps[](#property-based-index-maps)
+
+A property-based [index map](#dfn-index-map) is a variant of [index map](#dfn-index-map) were indexes are semantically preserved in the graph as property values. A property-based [index map](#dfn-index-map) may be used as a term value within a [node object](#dfn-node-object) if the [term](#dfn-term) is defined with `@container` set to `@index`, or an array containing both `@index` and `@set`, and with `@index` set to a [string](https://infra.spec.whatwg.org/#javascript-string). The values of a property-based [index map](#dfn-index-map) *MUST* be [node objects](#dfn-node-object) or [strings](https://infra.spec.whatwg.org/#javascript-string) which expand to [node objects](#dfn-node-object).
+
+When expanding, if the [active context](#dfn-active-context) contains a [term definition](#dfn-term-definition) for the value of `@index`, this [term definition](#dfn-term-definition) will be used to expand the keys of the [index map](#dfn-index-map). Otherwise, the keys will be expanded as simple [value objects](#dfn-value-object). Each [node object](#dfn-node-object) in the expanded values of the [index map](#dfn-index-map) will be added an additional property value, where the property is the expanded value of `@index`, and the value is the expanded referencing key.
+
+See [§ 4.6.1.1 Property-based data indexing](#property-based-data-indexing) for further information on this topic.
+
+### 9.11 Id Maps[](#id-maps)
+
+An [id map](#dfn-id-map) is used to associate an [IRI](https://tools.ietf.org/html/rfc3987#section-2) with a value that allows easy programmatic access. An [id map](#dfn-id-map) may be used as a term value within a [node object](#dfn-node-object) if the [term](#dfn-term) is defined with `@container` set to `@id`, or an array containing both `@id` and `@set`. The keys of an [id map](#dfn-id-map) *MUST* be [IRIs](https://tools.ietf.org/html/rfc3987#section-2) ([IRI references](https://tools.ietf.org/html/rfc3987#section-1.3) or [compact IRIs](#dfn-compact-iri) (including [blank node identifiers](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node-identifier))), the [keyword](#dfn-keyword) `@none`, or a [term](#dfn-term) which expands to `@none`, and the values *MUST* be [node objects](#dfn-node-object).
+
+If the value contains a property expanding to `@id`, its value *MUST* be equivalent to the referencing key. Otherwise, the property from the value is used as the `@id` of the [node object](#dfn-node-object) value when expanding.
+
+[Id Maps](#dfn-id-map) may also be used to map [graph names](https://www.w3.org/TR/rdf11-concepts/#dfn-graph-name) to their [named graphs](https://www.w3.org/TR/rdf11-concepts/#dfn-named-graph), if the term is defined with `@container` set to an array containing both `@graph` and `@id`, and optionally including `@set`. The value consists of the [node objects](#dfn-node-object) contained within the [named graph](https://www.w3.org/TR/rdf11-concepts/#dfn-named-graph) which is named using the referencing key.
+
+### 9.12 Type Maps[](#type-maps)
+
+A [type map](#dfn-type-map) is used to associate an [IRI](https://tools.ietf.org/html/rfc3987#section-2) with a value that allows easy programmatic access. A [type map](#dfn-type-map) may be used as a term value within a [node object](#dfn-node-object) if the [term](#dfn-term) is defined with `@container` set to `@type`, or an array containing both `@type` and `@set`. The keys of a [type map](#dfn-type-map) *MUST* be [IRIs](https://tools.ietf.org/html/rfc3987#section-2) ([IRI references](https://tools.ietf.org/html/rfc3987#section-1.3) or [compact IRI](#dfn-compact-iri) (including [blank node identifiers](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node-identifier))), [terms](#dfn-term), or the [keyword](#dfn-keyword) `@none`, and the values *MUST* be [node objects](#dfn-node-object) or [strings](https://infra.spec.whatwg.org/#javascript-string) which expand to [node objects](#dfn-node-object).
+
+If the value contains a property expanding to `@type`, and its value is contains the referencing key after suitable expansion of both the referencing key and the value, then the [node object](#dfn-node-object) already contains the type. Otherwise, the property from the value is added as a `@type` of the [node object](#dfn-node-object) value when expanding.
+
+### 9.13 Included Blocks[](#included-blocks)
+
+An [included block](#dfn-included-block) is used to provide a set of [node objects](#dfn-node-object). An [included block](#dfn-included-block) *MAY* appear as the value of a member of a node object with either the key of `@included` or an alias of `@included`. An [included block](#dfn-included-block) is either a [node object](#dfn-node-object) or an array of [node objects](#dfn-node-object).
+
+When [expanding](https://www.w3.org/TR/json-ld11-api/#dfn-expanded), multiple [included blocks](#dfn-included-block) will be coalesced into a single [included block](#dfn-included-block).
+
+### 9.14 Property Nesting[](#property-nesting)
+
+A [nested property](#dfn-nested-property) is used to gather [properties](https://www.w3.org/TR/rdf11-concepts/#dfn-property) of a [node object](#dfn-node-object) in a separate [map](https://infra.spec.whatwg.org/#ordered-map), or [array](https://infra.spec.whatwg.org/#list) of [maps](https://infra.spec.whatwg.org/#ordered-map) which are not [value objects](#dfn-value-object). It is semantically transparent and is removed during the process of [expansion](https://www.w3.org/TR/json-ld11-api/#dfn-expanded). Property nesting is recursive, and collections of nested properties may contain further nesting.
+
+Semantically, nesting is treated as if the properties and values were declared directly within the containing [node object](#dfn-node-object).
+
+### 9.15 Context Definitions[](#context-definitions)
+
+A context definition defines a [local context](#dfn-local-context) in a [node object](#dfn-node-object).
+
+A [context definition](#dfn-context-definition) *MUST* be a [map](https://infra.spec.whatwg.org/#ordered-map) whose keys *MUST* be either [terms](#dfn-term), [compact IRIs](#dfn-compact-iri), [IRIs](https://tools.ietf.org/html/rfc3987#section-2), or one of the [keywords](#dfn-keyword) `@base`, `@import`, `@language`, `@propagate`, `@protected`, `@type`, `@version`, or `@vocab`.
+
+If the [context definition](#dfn-context-definition) has an `@base` key, its value *MUST* be an [IRI reference](https://tools.ietf.org/html/rfc3987#section-1.3), or [null](https://infra.spec.whatwg.org/#nulls).
+
+If the [context definition](#dfn-context-definition) has an `@direction` key, its value *MUST* be one of `"ltr"` or `"rtl"`, or be [null](https://infra.spec.whatwg.org/#nulls).
+
+If the [context definition](#dfn-context-definition) contains the `@import` [keyword](#dfn-keyword), its value *MUST* be an [IRI reference](https://tools.ietf.org/html/rfc3987#section-1.3). When used as a reference from an `@import`, the referenced [context definition](#dfn-context-definition) *MUST NOT* include an `@import` key, itself.
+
+If the [context definition](#dfn-context-definition) has an `@language` key, its value *MUST* have the [lexical form](https://tools.ietf.org/html/bcp47#section-2.1.1) described in \[[BCP47](#bib-bcp47 "Tags for Identifying Languages")\] or be [null](https://infra.spec.whatwg.org/#nulls).
+
+If the [context definition](#dfn-context-definition) has an `@propagate` key, its value *MUST* be `true` or `false`.
+
+If the [context definition](#dfn-context-definition) has an `@protected` key, its value *MUST* be `true` or `false`.
+
+If the [context definition](#dfn-context-definition) has an `@type` key, its value *MUST* be a [map](https://infra.spec.whatwg.org/#ordered-map) with only the [entry](https://infra.spec.whatwg.org/#map-entry) `@container` set to `@set`, and optionally an entry `@protected`.
+
+If the [context definition](#dfn-context-definition) has an `@version` key, its value *MUST* be a [number](https://tc39.es/ecma262/#sec-terms-and-definitions-number-value) with the value `1.1`.
+
+If the [context definition](#dfn-context-definition) has an `@vocab` key, its value *MUST* be an [IRI reference](https://tools.ietf.org/html/rfc3987#section-1.3), a [compact IRI](#dfn-compact-iri), a [blank node identifier](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node-identifier), a [term](#dfn-term), or [null](https://infra.spec.whatwg.org/#nulls).
+
+The value of keys that are not [keywords](#dfn-keyword) *MUST* be either an [IRI](https://tools.ietf.org/html/rfc3987#section-2), a [compact IRI](#dfn-compact-iri), a [term](#dfn-term), a [blank node identifier](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node-identifier), a [keyword](#dfn-keyword), [null](https://infra.spec.whatwg.org/#nulls), or an [expanded term definition](#dfn-expanded-term-definition).
+
+#### 9.15.1 Expanded term definition[](#expanded-term-definition)
+
+An [expanded term definition](#dfn-expanded-term-definition) is used to describe the mapping between a [term](#dfn-term) and its expanded identifier, as well as other properties of the value associated with the [term](#dfn-term) when it is used as key in a [node object](#dfn-node-object).
+
+An [expanded term definition](#dfn-expanded-term-definition) *MUST* be a [map](https://infra.spec.whatwg.org/#ordered-map) composed of zero or more keys from `@id`, `@reverse`, `@type`, `@language`, `@container`, `@context`, `@prefix`, `@propagate`, or `@protected`. An [expanded term definition](#dfn-expanded-term-definition) *SHOULD NOT* contain any other keys.
+
+When the associated term is `@type`, the [expanded term definition](#dfn-expanded-term-definition) *MUST NOT* contain keys other than `@container` and `@protected`. The value of `@container` is limited to the single value `@set`.
+
+If the term being defined is not an [IRI](https://tools.ietf.org/html/rfc3987#section-2) or a [compact IRI](#dfn-compact-iri) and the [active context](#dfn-active-context) does not have an `@vocab` mapping, the [expanded term definition](#dfn-expanded-term-definition) *MUST* include the `@id` key.
+
+[Term definitions](#dfn-term-definition) with keys which are of the form of an [IRI](https://tools.ietf.org/html/rfc3987#section-2) or a [compact IRI](#dfn-compact-iri) *MUST NOT* expand to an [IRI](https://tools.ietf.org/html/rfc3987#section-2) other than the expansion of the key itself.
+
+If the [expanded term definition](#dfn-expanded-term-definition) contains the `@id` [keyword](#dfn-keyword), its value *MUST* be [null](https://infra.spec.whatwg.org/#nulls), an [IRI](https://tools.ietf.org/html/rfc3987#section-2), a [blank node identifier](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node-identifier), a [compact IRI](#dfn-compact-iri), a [term](#dfn-term), or a [keyword](#dfn-keyword).
+
+If an [expanded term definition](#dfn-expanded-term-definition) has an `@reverse` [entry](https://infra.spec.whatwg.org/#map-entry), it *MUST NOT* have `@id` or `@nest` [entries](https://infra.spec.whatwg.org/#map-entry) at the same time, its value *MUST* be an [IRI](https://tools.ietf.org/html/rfc3987#section-2), a [blank node identifier](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node-identifier), a [compact IRI](#dfn-compact-iri), or a [term](#dfn-term). If an `@container` [entry](https://infra.spec.whatwg.org/#map-entry) exists, its value *MUST* be [null](https://infra.spec.whatwg.org/#nulls), `@set`, or `@index`.
+
+If the [expanded term definition](#dfn-expanded-term-definition) contains the `@type` [keyword](#dfn-keyword), its value *MUST* be an [IRI](https://tools.ietf.org/html/rfc3987#section-2), a [compact IRI](#dfn-compact-iri), a [term](#dfn-term), [null](https://infra.spec.whatwg.org/#nulls), or one of the [keywords](#dfn-keyword) `@id`, `@json`, `@none`, or `@vocab`.
+
+If the [expanded term definition](#dfn-expanded-term-definition) contains the `@language` [keyword](#dfn-keyword), its value *MUST* have the [lexical form](https://tools.ietf.org/html/bcp47#section-2.1.1) described in \[[BCP47](#bib-bcp47 "Tags for Identifying Languages")\] or be [null](https://infra.spec.whatwg.org/#nulls).
+
+If the [expanded term definition](#dfn-expanded-term-definition) contains the `@index` [keyword](#dfn-keyword), its value *MUST* be an [IRI](https://tools.ietf.org/html/rfc3987#section-2), a [compact IRI](#dfn-compact-iri), or a [term](#dfn-term).
+
+If the [expanded term definition](#dfn-expanded-term-definition) contains the `@container` [keyword](#dfn-keyword), its value *MUST* be either `@list`, `@set`, `@language`, `@index`, `@id`, `@graph`, `@type`, or be [null](https://infra.spec.whatwg.org/#nulls) or an [array](https://infra.spec.whatwg.org/#list) containing exactly any one of those keywords, or a combination of `@set` and any of `@index`, `@id`, `@graph`, `@type`, `@language` in any order . `@container` may also be an array containing `@graph` along with either `@id` or `@index` and also optionally including `@set`. If the value is `@language`, when the [term](#dfn-term) is used outside of the `@context`, the associated value *MUST* be a [language map](#dfn-language-map). If the value is `@index`, when the [term](#dfn-term) is used outside of the `@context`, the associated value *MUST* be an [index map](#dfn-index-map).
+
+If an [expanded term definition](#dfn-expanded-term-definition) has an `@context` [entry](https://infra.spec.whatwg.org/#map-entry), it *MUST* be a valid `context definition`.
+
+If the [expanded term definition](#dfn-expanded-term-definition) contains the `@nest` [keyword](#dfn-keyword), its value *MUST* be either `@nest`, or a term which expands to `@nest`.
+
+If the [expanded term definition](#dfn-expanded-term-definition) contains the `@prefix` [keyword](#dfn-keyword), its value *MUST* be `true` or `false`.
+
+If the [expanded term definition](#dfn-expanded-term-definition) contains the `@propagate` [keyword](#dfn-keyword), its value *MUST* be `true` or `false`.
+
+If the [expanded term definition](#dfn-expanded-term-definition) contains the `@protected` [keyword](#dfn-keyword), its value *MUST* be `true` or `false`.
+
+[Terms](#dfn-term) *MUST NOT* be used in a circular manner. That is, the definition of a term cannot depend on the definition of another term if that other term also depends on the first term.
+
+See [§ 3.1 The Context](#the-context) for further discussion on [contexts](#dfn-context).
+
+### 9.16 Keywords[](#keywords)
+
+JSON-LD [keywords](#dfn-keyword) are described in [§ 1.7 Syntax Tokens and Keywords](#syntax-tokens-and-keywords), this section describes where each [keyword](#dfn-keyword) may appear within different JSON-LD structures.
+
+Within [node objects](#dfn-node-object), [value objects](#dfn-value-object), [graph objects](#dfn-graph-object), [list objects](#dfn-list-object), [set objects](#dfn-set-object), and [nested properties](#dfn-nested-property) [keyword](#dfn-keyword) aliases *MAY* be used instead of the corresponding [keyword](#dfn-keyword), except for `@context`. The `@context` [keyword](#dfn-keyword) *MUST NOT* be aliased. Within [local contexts](#dfn-local-context) and [expanded term definitions](#dfn-expanded-term-definition), [keyword](#dfn-keyword) aliases *MAY* NOT used.
+
+`@base`
+: The unaliased `@base` keyword *MAY* be used as a key in a [context definition](#dfn-context-definition). Its value *MUST* be an [IRI reference](https://tools.ietf.org/html/rfc3987#section-1.3), or [null](https://infra.spec.whatwg.org/#nulls).
+
+`@container`
+: The unaliased `@container` keyword *MAY* be used as a key in an [expanded term definition](#dfn-expanded-term-definition). Its value *MUST* be either `@list`, `@set`, `@language`, `@index`, `@id`, `@graph`, `@type`, or be [null](https://infra.spec.whatwg.org/#nulls), or an [array](https://infra.spec.whatwg.org/#list) containing exactly any one of those keywords, or a combination of `@set` and any of `@index`, `@id`, `@graph`, `@type`, `@language` in any order. The value may also be an array containing `@graph` along with either `@id` or `@index` and also optionally including `@set`.
+
+`@context`
+: The `@context` keyword *MUST NOT* be aliased, and *MAY* be used as a key in the following objects:
+ - [node objects](#dfn-node-object) (see [§ 9.2 Node Objects](#node-objects)),
+ - [value objects](#dfn-value-object) (see [§ 9.5 Value Objects](#value-objects)),
+ - [graph objects](#dfn-graph-object) (see [§ 9.4 Graph Objects](#graph-objects)),
+ - [list objects](#dfn-list-object) (see [§ 9.7 Lists and Sets](#lists-and-sets)),
+ - [set objects](#dfn-set-object) (see [§ 9.7 Lists and Sets](#lists-and-sets)),
+ - [nested properties](#dfn-nested-property) (see [§ 9.14 Property Nesting](#property-nesting)), and
+ - [expanded term definitions](#dfn-expanded-term-definition) (see [§ 9.15 Context Definitions](#context-definitions)).
+
+ The value of `@context` *MUST* be [null](https://infra.spec.whatwg.org/#nulls), an [IRI reference](https://tools.ietf.org/html/rfc3987#section-1.3), a [context definition](#dfn-context-definition), or an [array](https://infra.spec.whatwg.org/#list) composed of any of these.
+
+`@direction`
+
+: The `@direction` keyword *MAY* be aliased and *MAY* be used as a key in a [value object](#dfn-value-object). Its value *MUST* be one of `"ltr"` or `"rtl"`, or be [null](https://infra.spec.whatwg.org/#nulls).
+
+ The unaliased `@direction` *MAY* be used as a key in a [context definition](#dfn-context-definition).
+
+ See [§ 4.2.4.1 Base Direction](#base-direction) for a further discussion.
+
+`@graph`
+
+: The `@graph` keyword *MAY* be aliased and *MAY* be used as a key in a [node object](#dfn-node-object) or a [graph object](#dfn-graph-object), where its value *MUST* be a [value object](#dfn-value-object), [node object](#dfn-node-object), or an array of either [value objects](#dfn-value-object) or [node objects](#dfn-node-object).
+
+ The unaliased `@graph` *MAY* be used as the value of the `@container` key within an [expanded term definition](#dfn-expanded-term-definition).
+
+ See [§ 4.9 Named Graphs](#named-graphs).
+
+`@id`
+
+: The `@id` keyword *MAY* be aliased and *MAY* be used as a key in a [node object](#dfn-node-object) or a [graph object](#dfn-graph-object).
+
+ The unaliased `@id` *MAY* be used as a key in an [expanded term definition](#dfn-expanded-term-definition), or as the value of the `@container` key within an [expanded term definition](#dfn-expanded-term-definition).
+
+ The value of the `@id` key *MUST* be an [IRI reference](https://tools.ietf.org/html/rfc3987#section-1.3), or a [compact IRI](#dfn-compact-iri) (including [blank node identifiers](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node-identifier)).
+
+ See [§ 3.3 Node Identifiers](#node-identifiers), [§ 4.1.5 Compact IRIs](#compact-iris), and [§ 4.5.1 Identifying Blank Nodes](#identifying-blank-nodes) for further discussion on `@id` values.
+
+`@import`
+: The unaliased `@import` keyword *MAY* be used in a [context definition](#dfn-context-definition). Its value *MUST* be an [IRI reference](https://tools.ietf.org/html/rfc3987#section-1.3). See [§ 4.1.10 Imported Contexts](#imported-contexts) for a further discussion.
+
+`@included`
+: The `@included` keyword *MAY* be aliased and its value *MUST* be an [included block](#dfn-included-block). This keyword is described further in [§ 4.7 Included Nodes](#included-nodes), and [§ 9.13 Included Blocks](#included-blocks).
+
+`@index`
+
+: The `@index` keyword *MAY* be aliased and *MAY* be used as a key in a [node object](#dfn-node-object), [value object](#dfn-value-object), [graph object](#dfn-graph-object), [set object](#dfn-set-object), or [list object](#dfn-list-object). Its value *MUST* be a [string](https://infra.spec.whatwg.org/#javascript-string).
+
+ The unaliased `@index` *MAY* be used as the value of the `@container` key within an [expanded term definition](#dfn-expanded-term-definition) and as an entry in a [expanded term definition](#dfn-expanded-term-definition), where the value an [IRI](https://tools.ietf.org/html/rfc3987#section-2), a [compact IRI](#dfn-compact-iri), or a [term](#dfn-term).
+
+ See [§ 9.9 Index Maps](#index-maps), and [§ 4.6.1.1 Property-based data indexing](#property-based-data-indexing) for a further discussion.
+
+`@json`
+
+: The `@json` keyword *MAY* be aliased and *MAY* be used as the value of the `@type` key within a [value object](#dfn-value-object) or an [expanded term definition](#dfn-expanded-term-definition).
+
+ See [§ 4.2.2 JSON Literals](#json-literals).
+
+`@language`
+
+: The `@language` keyword *MAY* be aliased and *MAY* be used as a key in a [value object](#dfn-value-object). Its value *MUST* be a [string](https://infra.spec.whatwg.org/#javascript-string) with the [lexical form](https://tools.ietf.org/html/bcp47#section-2.1.1) described in \[[BCP47](#bib-bcp47 "Tags for Identifying Languages")\] or be [null](https://infra.spec.whatwg.org/#nulls).
+
+ The unaliased `@language` *MAY* be used as a key in a [context definition](#dfn-context-definition), or as the value of the `@container` key within an [expanded term definition](#dfn-expanded-term-definition).
+
+ See [§ 4.2.4 String Internationalization](#string-internationalization), [§ 9.8 Language Maps](#language-maps).
+
+`@list`
+
+: The `@list` keyword *MAY* be aliased and *MUST* be used as a key in a [list object](#dfn-list-object). The unaliased `@list` *MAY* be used as the value of the `@container` key within an [expanded term definition](#dfn-expanded-term-definition). Its value *MUST* be one of the following:
+
+ - [string](https://infra.spec.whatwg.org/#javascript-string),
+ - [number](https://tc39.es/ecma262/#sec-terms-and-definitions-number-value),
+ - `true`,
+ - `false`,
+ - [null](https://infra.spec.whatwg.org/#nulls),
+ - [node object](#dfn-node-object),
+ - [value object](#dfn-value-object), or
+ - an [array](https://infra.spec.whatwg.org/#list) of zero or more of the above possibilities
+
+ See [§ 4.3 Value Ordering](#sets-and-lists) for further discussion on sets and lists.
+
+`@nest`
+
+: The `@nest` keyword *MAY* be aliased and *MAY* be used as a key in a [node object](#dfn-node-object), where its value must be a [map](https://infra.spec.whatwg.org/#ordered-map).
+
+ The unaliased `@nest` *MAY* be used as the value of a [simple term definition](#dfn-simple-term-definition), or as a key in an [expanded term definition](#dfn-expanded-term-definition), where its value *MUST* be a string expanding to `@nest`.
+
+ See [§ 9.14 Property Nesting](#property-nesting) for a further discussion.
+
+`@none`
+: The `@none` keyword *MAY* be aliased and *MAY* be used as a key in an [index map](#dfn-index-map), [id map](#dfn-id-map), [language map](#dfn-language-map), [type map](#dfn-type-map). See [§ 4.6.1 Data Indexing](#data-indexing), [§ 4.6.2 Language Indexing](#language-indexing), [§ 4.6.3 Node Identifier Indexing](#node-identifier-indexing), [§ 4.6.4 Node Type Indexing](#node-type-indexing), [§ 4.9.3 Named Graph Indexing](#named-graph-indexing), or [§ 4.9.2 Named Graph Data Indexing](#named-graph-data-indexing) for a further discussion.
+
+`@prefix`
+: The unaliased `@prefix` keyword *MAY* be used as a key in an [expanded term definition](#dfn-expanded-term-definition). Its value *MUST* be `true` or `false`. See [§ 4.1.5 Compact IRIs](#compact-iris) and [§ 9.15 Context Definitions](#context-definitions) for a further discussion.
+
+`@propagate`
+: The unaliased `@propagate` keyword *MAY* be used in a [context definition](#dfn-context-definition). Its value *MUST* be `true` or `false`. See [§ 4.1.9 Context Propagation](#context-propagation) for a further discussion.
+
+`@protected`
+: The unaliased `@protected` keyword *MAY* be used in a [context definition](#dfn-context-definition), or an [expanded term definition](#dfn-expanded-term-definition). Its value *MUST* be `true` or `false`. See [§ 4.1.11 Protected Term Definitions](#protected-term-definitions) for a further discussion.
+
+`@reverse`
+
+: The `@reverse` keyword *MAY* be aliased and *MAY* be used as a key in a [node object](#dfn-node-object).
+
+ The unaliased `@reverse` *MAY* be used as a key in an [expanded term definition](#dfn-expanded-term-definition).
+
+ The value of the `@reverse` key *MUST* be an [IRI reference](https://tools.ietf.org/html/rfc3987#section-1.3), or a [compact IRI](#dfn-compact-iri) (including [blank node identifiers](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node-identifier)).
+
+ See [§ 4.8 Reverse Properties](#reverse-properties) and [§ 9.15 Context Definitions](#context-definitions) for further discussion.
+
+`@set`
+
+: The `@set` keyword *MAY* be aliased and *MUST* be used as a key in a [set object](#dfn-set-object). Its value *MUST* be one of the following:
+
+ - [string](https://infra.spec.whatwg.org/#javascript-string),
+ - [number](https://tc39.es/ecma262/#sec-terms-and-definitions-number-value),
+ - `true`,
+ - `false`,
+ - [null](https://infra.spec.whatwg.org/#nulls),
+ - [node object](#dfn-node-object),
+ - [value object](#dfn-value-object), or
+ - an [array](https://infra.spec.whatwg.org/#list) of zero or more of the above possibilities
+
+ The unaliased `@set` *MAY* be used as the value of the `@container` key within an [expanded term definition](#dfn-expanded-term-definition).
+
+ See [§ 4.3 Value Ordering](#sets-and-lists) for further discussion on sets and lists.
+
+`@type`
+
+: The `@type` keyword *MAY* be aliased and *MAY* be used as a key in a [node object](#dfn-node-object) or a [value object](#dfn-value-object), where its value *MUST* be a [term](#dfn-term), [IRI reference](https://tools.ietf.org/html/rfc3987#section-1.3), or a [compact IRI](#dfn-compact-iri) (including [blank node identifiers](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node-identifier)).
+
+ The unaliased `@type` *MAY* be used as a key in an [expanded term definition](#dfn-expanded-term-definition), where its value may also be either `@id` or `@vocab`, or as the value of the `@container` key within an [expanded term definition](#dfn-expanded-term-definition).
+
+ Within a context, `@type` may be used as the key for an [expanded term definition](#dfn-expanded-term-definition), whose entries are limited to `@container` and `@protected`.
+
+ This keyword is described further in [§ 3.5 Specifying the Type](#specifying-the-type) and [§ 4.2.1 Typed Values](#typed-values).
+
+`@value`
+: The `@value` keyword *MAY* be aliased and *MUST* be used as a key in a [value object](#dfn-value-object). Its value key *MUST* be either a [string](https://infra.spec.whatwg.org/#javascript-string), a [number](https://tc39.es/ecma262/#sec-terms-and-definitions-number-value), `true`, `false` or [null](https://infra.spec.whatwg.org/#nulls). This keyword is described further in [§ 9.5 Value Objects](#value-objects).
+
+`@version`
+: The unaliased `@version` keyword *MAY* be used as a key in a [context definition](#dfn-context-definition). Its value *MUST* be a [number](https://tc39.es/ecma262/#sec-terms-and-definitions-number-value) with the value `1.1`. This keyword is described further in [§ 9.15 Context Definitions](#context-definitions).
+
+`@vocab`
+: The unaliased `@vocab` keyword *MAY* be used as a key in a [context definition](#dfn-context-definition) or as the value of `@type` in an [expanded term definition](#dfn-expanded-term-definition). Its value *MUST* be an [IRI reference](https://tools.ietf.org/html/rfc3987#section-1.3), a [compact IRI](#dfn-compact-iri), a [blank node identifier](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node-identifier), a [term](#dfn-term), or [null](https://infra.spec.whatwg.org/#nulls). This keyword is described further in [§ 9.15 Context Definitions](#context-definitions), and [§ 4.1.2 Default Vocabulary](#default-vocabulary).
+
+## 10. Relationship to RDF[](#relationship-to-rdf)
+
+JSON-LD is a [concrete RDF syntax](https://www.w3.org/TR/rdf11-concepts/#dfn-concrete-rdf-syntax) as described in \[[RDF11-CONCEPTS](#bib-rdf11-concepts "RDF 1.1 Concepts and Abstract Syntax")\]. Hence, a JSON-LD document is both an RDF document *and* a JSON document and correspondingly represents an instance of an [RDF data model](https://www.w3.org/TR/rdf11-concepts/#data-model). However, JSON-LD also extends the RDF data model to optionally allow JSON-LD to serialize [generalized RDF Datasets](https://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset). The JSON-LD extensions to the RDF data model are:
+
+- In JSON-LD [properties](https://www.w3.org/TR/rdf11-concepts/#dfn-property) can be [IRIs](https://tools.ietf.org/html/rfc3987#section-2) or [blank nodes](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node) whereas in RDF properties ([predicates](https://www.w3.org/TR/rdf11-concepts/#dfn-predicate)) have to be [IRIs](https://tools.ietf.org/html/rfc3987#section-2). This means that JSON-LD serializes [generalized RDF Datasets](https://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset).
+- In JSON-LD [lists](https://www.w3.org/TR/rdf-schema/#ch_collectionvocab) use native JSON syntax, either contained in a list object, or described as such within a context. Consequently, developers using the JSON representation can access list elements directly rather than using the vocabulary for collections described in \[[RDF-SCHEMA](#bib-rdf-schema "RDF Schema 1.1")\].
+- RDF values are either typed *literals* ([typed values](#dfn-typed-value)) or [language-tagged strings](https://www.w3.org/TR/rdf11-concepts/#dfn-language-tagged-string) whereas JSON-LD also supports JSON\'s native data types, i.e., [number](https://tc39.es/ecma262/#sec-terms-and-definitions-number-value), [strings](https://infra.spec.whatwg.org/#javascript-string), and the boolean values `true` and `false`. The JSON-LD 1.1 Processing Algorithms and API specification \[[JSON-LD11-API](#bib-json-ld11-api "JSON-LD 1.1 Processing Algorithms and API")\] defines the [conversion rules](https://www.w3.org/TR/json-ld11-api/#data-round-tripping) between JSON\'s native data types and RDF\'s counterparts to allow round-tripping.
+- As an extension to the [RDF data model](https://www.w3.org/TR/rdf11-concepts/#data-model), literals without an explicit datatype *MAY* include a [base direction](#dfn-base-direction). As there is currently no standardized mechanism for representing the [base direction](#dfn-base-direction) of [RDF literals](https://www.w3.org/TR/rdf11-concepts/#dfn-literal), the JSON-LD to standard RDF transformation loses the base direction. However, the [Deserialize JSON-LD to RDF Algorithm](https://www.w3.org/TR/json-ld11-api/#deserialize-json-ld-to-rdf-algorithm) provides a means of representing [base direction](#dfn-base-direction) using mechanisms which will preserve round-tripping through non-standard RDF.
+
+Note
+
+The use of [blank node identifiers](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node-identifier) to label properties is obsolete, and may be removed in a future version of JSON-LD, as is the support for [generalized RDF Datasets](https://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset).
+
+Summarized, these differences mean that JSON-LD is capable of serializing any RDF [graph](https://www.w3.org/TR/rdf11-concepts/#dfn-rdf-graph) or [dataset](https://www.w3.org/TR/rdf11-concepts/#dfn-rdf-dataset) and most, but not all, JSON-LD documents can be directly interpreted as RDF as described in RDF 1.1 Concepts \[[RDF11-CONCEPTS](#bib-rdf11-concepts "RDF 1.1 Concepts and Abstract Syntax")\].
+
+Authors are strongly encouraged to avoid labeling properties using [blank node identifiers](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node-identifier), instead, consider one of the following mechanisms:
+
+- a [relative IRI reference](https://tools.ietf.org/html/rfc3987#section-6.5), either relative to the document or the vocabulary (see [§ 4.1.4 Using the Document Base for the Default Vocabulary](#document-relative-vocabulary-mapping) for a discussion on using the document base as part of the [vocabulary mapping](#dfn-vocabulary-mapping)),
+- a URN such as `urn:example:1`, see \[[URN](#bib-urn "URN Syntax")\], or
+- a \"Skolem IRI\" as per [Replacing Blank Nodes with IRIs](https://www.w3.org/TR/rdf11-concepts/#section-skolemization) of \[[RDF11-CONCEPTS](#bib-rdf11-concepts "RDF 1.1 Concepts and Abstract Syntax")\].
+
+The normative algorithms for interpreting JSON-LD as RDF and serializing RDF as JSON-LD are specified in the JSON-LD 1.1 Processing Algorithms and API specification \[[JSON-LD11-API](#bib-json-ld11-api "JSON-LD 1.1 Processing Algorithms and API")\].
+
+Even though JSON-LD serializes [RDF Datasets](https://www.w3.org/TR/rdf11-concepts/#dfn-rdf-dataset), it can also be used as a [graph source](https://www.w3.org/TR/rdf11-concepts/#dfn-rdf-source). In that case, a consumer *MUST* only use the [default graph](https://www.w3.org/TR/rdf11-concepts/#dfn-default-graph) and ignore all [named graphs](https://www.w3.org/TR/rdf11-concepts/#dfn-named-graph). This allows servers to expose data in languages such as Turtle and JSON-LD using [HTTP content negotiation](https://en.wikipedia.org/wiki/Content_negotiation).
+
+Note
+
+Publishers supporting both [dataset](https://www.w3.org/TR/rdf11-concepts/#dfn-rdf-dataset) and [graph](https://www.w3.org/TR/rdf11-concepts/#dfn-rdf-graph) syntaxes have to ensure that the primary data is stored in the [default graph](https://www.w3.org/TR/rdf11-concepts/#dfn-default-graph) to enable consumers that do not support [datasets](https://www.w3.org/TR/rdf11-concepts/#dfn-rdf-dataset) to process the information.
+
+### 10.1 Serializing/Deserializing RDF[](#serializing-deserializing-rdf)
+
+*This section is non-normative.*
+
+The process of serializing RDF as JSON-LD and deserializing JSON-LD to RDF depends on executing the algorithms defined in [RDF Serialization-Deserialization Algorithms](https://www.w3.org/TR/json-ld11-api/#rdf-serialization-deserialization-algorithms) in the JSON-LD 1.1 Processing Algorithms and API specification \[[JSON-LD11-API](#bib-json-ld11-api "JSON-LD 1.1 Processing Algorithms and API")\]. It is beyond the scope of this document to detail these algorithms any further, but a summary of the necessary operations is provided to illustrate the process.
+
+The procedure to deserialize a JSON-LD document to RDF involves the following steps:
+
+1. Expand the JSON-LD document, removing any context; this ensures that properties, types, and values are given their full representation as [IRIs](https://tools.ietf.org/html/rfc3987#section-2) and expanded values. [Expansion](https://www.w3.org/TR/json-ld11-api/#dfn-expanded) is discussed further in [§ 5.1 Expanded Document Form](#expanded-document-form).
+2. Flatten the document, which turns the document into an array of [node objects](#dfn-node-object). Flattening is discussed further in [§ 5.3 Flattened Document Form](#flattened-document-form).
+3. Turn each [node object](#dfn-node-object) into a series of [triples](https://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple).
+
+For example, consider the following JSON-LD document in compact form:
+
+[Example 151](#example-151-sample-json-ld-document): Sample JSON-LD document
+
+``` {aria-busy="false"}
+{
+ "@context": {
+ "name": "http://xmlns.com/foaf/0.1/name",
+ "knows": "http://xmlns.com/foaf/0.1/knows"
+ },
+ "@id": "http://me.markus-lanthaler.com/",
+ "name": "Markus Lanthaler",
+ "knows": [
+ {
+ "@id": "http://manu.sporny.org/about#manu",
+ "name": "Manu Sporny"
+ }, {
+ "name": "Dave Longley"
+ }
+ ]
+}
+```
+
+Running the JSON-LD [Expansion](https://www.w3.org/TR/json-ld11-api/#expansion-algorithm) and [Flattening](https://www.w3.org/TR/json-ld11-api/#flattening-algorithm) algorithms against the JSON-LD input document in the example above would result in the following output:
+
+[Example 152](#example-152-flattened-and-expanded-form-for-the-previous-example): Flattened and expanded form for the previous example
+
+``` {aria-busy="false"}
+[
+ {
+ "@id": "_:b0",
+ "http://xmlns.com/foaf/0.1/name": "Dave Longley"
+ }, {
+ "@id": "http://manu.sporny.org/about#manu",
+ "http://xmlns.com/foaf/0.1/name": "Manu Sporny"
+ }, {
+ "@id": "http://me.markus-lanthaler.com/",
+ "http://xmlns.com/foaf/0.1/name": "Markus Lanthaler",
+ "http://xmlns.com/foaf/0.1/knows": [
+ { "@id": "http://manu.sporny.org/about#manu" },
+ { "@id": "_:b0" }
+ ]
+ }
+]
+```
+
+Deserializing this to RDF now is a straightforward process of turning each [node object](#dfn-node-object) into one or more [triples](https://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple). This can be expressed in Turtle as follows:
+
+[Example 153](#example-153-turtle-representation-of-expanded-flattened-document): Turtle representation of expanded/flattened document
+
+``` {content-type="text/turtle" result-for="Flattened and expanded form for the previous example" to-rdf="" aria-busy="false"}
+@prefix foaf: .
+
+_:b0 foaf:name "Dave Longley" .
+
+ foaf:name "Manu Sporny" .
+
+ foaf:name "Markus Lanthaler" ;
+ foaf:knows , _:b0 .
+```
+
+The process of serializing RDF as JSON-LD can be thought of as the inverse of this last step, creating an expanded JSON-LD document closely matching the triples from RDF, using a single [node object](#dfn-node-object) for all triples having a common subject, and a single [property](https://www.w3.org/TR/rdf11-concepts/#dfn-property) for those triples also having a common [predicate](https://www.w3.org/TR/rdf11-concepts/#dfn-predicate). The result may then be framed by using the [Framing Algorithm](https://www.w3.org/TR/json-ld11-framing/#framing-algorithm) described in \[[JSON-LD11-FRAMING](#bib-json-ld11-framing "JSON-LD 1.1 Framing")\] to create the desired object embedding.
+
+### 10.2 The `rdf:JSON` Datatype[](#the-rdf-json-datatype)
+
+RDF provides for JSON content as a possible [literal value](https://www.w3.org/TR/rdf11-concepts/#dfn-literal). This allows markup in literal values. Such content is indicated in a [graph](https://www.w3.org/TR/rdf11-concepts/#dfn-rdf-graph) using a [literal](https://www.w3.org/TR/rdf11-concepts/#dfn-literal) whose datatype is set to `rdf:JSON`.
+
+The `rdf:JSON` datatype is defined as follows:
+
+The IRI denoting this datatype
+: is `http://www.w3.org/1999/02/22-rdf-syntax-ns#JSON`.
+
+The lexical space
+: is the set of UNICODE \[[UNICODE](#bib-unicode "The Unicode Standard")\] strings which conform to the [JSON Grammar](https://tools.ietf.org/html/rfc4627#section-2) as described in [Section 2 JSON Grammar](https://tools.ietf.org/html/rfc8259#section-2) of \[[RFC8259](#bib-rfc8259 "The JavaScript Object Notation (JSON) Data Interchange Format")\].
+
+The value space
+: is the set of UNICODE \[[UNICODE](#bib-unicode "The Unicode Standard")\] strings which conform to the [JSON Grammar](https://tools.ietf.org/html/rfc4627#section-2) as described in [Section 2 JSON Grammar](https://tools.ietf.org/html/rfc8259#section-2) of \[[RFC8259](#bib-rfc8259 "The JavaScript Object Notation (JSON) Data Interchange Format")\], and furthermore comply with the following constraints:
+ - It *MUST NOT* contain any unnecessary whitespace,
+ - Keys in objects *MUST* be ordered lexicographically,
+ - Native Numeric values *MUST* be serialized according to [Section 7.1.12.1](https://tc39.es/ecma262/#sec-tostring-applied-to-the-number-type) of \[[ECMASCRIPT](#bib-ecmascript "ECMAScript Language Specification")\],
+ - Strings *MUST* be serialized with Unicode codepoints from `U+0000` through `U+001F` using lower case hexadecimal Unicode notation (`\uhhhh`) unless in the set of predefined JSON control characters `U+0008`, `U+0009`, `U+000A`, `U+000C` or `U+000D` which *SHOULD* be serialized as `\b`, `\t`, `\n`, `\f` and `\r` respectively. All other Unicode characters *SHOULD* be serialized \"as is\", other than `U+005C` (`\`) and `U+0022` (`"`) which *SHOULD* be serialized as `\\` and `\"` respectively.
+
+ Issue
+
+ The JSON Canonicalization Scheme (JCS) \[[RFC8785](#bib-rfc8785 "JSON Canonicalization Scheme (JCS)")\] is an emerging standard for JSON canonicalization. This specification will likely be updated to require such a canonical representation. Users are cautioned from depending on the [JSON literal](#dfn-json-literal) lexical representation as an [RDF literal](https://www.w3.org/TR/rdf11-concepts/#dfn-literal), as the specifics of serialization may change in a future revision of this document.
+
+ Despite being defined as a set of strings, this value space is considered distinct from the value space of `xsd:string`, in order to avoid side effects with existing specifications.
+
+The lexical-to-value mapping
+: maps any element of the lexical space to the result of
+ 1. parsing it into an internal representation consistent with \[[ECMASCRIPT](#bib-ecmascript "ECMAScript Language Specification")\] representation created by using the `JSON.parse` function as defined in [Section 24.5 The JSON Object](https://tc39.es/ecma262/#sec-json-object) of \[[ECMASCRIPT](#bib-ecmascript "ECMAScript Language Specification")\],
+ 2. then serializing it in the JSON format \[[RFC8259](#bib-rfc8259 "The JavaScript Object Notation (JSON) Data Interchange Format")\] in compliance with the constraints of the value space described above.
+
+The canonical mapping
+: maps any element of the value space to the identical string in the lexical space.
+
+### 10.3 The `i18n` Namespace[](#the-i18n-namespace)
+
+*This section is non-normative.*
+
+The `i18n` namespace is used for describing combinations of [language tag](https://www.w3.org/TR/rdf11-concepts/#dfn-language-tag) and [base direction](#dfn-base-direction) in [RDF literals](https://www.w3.org/TR/rdf11-concepts/#dfn-literal). It is used as an alternative mechanism for describing the \[[BCP47](#bib-bcp47 "Tags for Identifying Languages")\] [language tag](https://www.w3.org/TR/rdf11-concepts/#dfn-language-tag) and [base direction](#dfn-base-direction) of [RDF literals](https://www.w3.org/TR/rdf11-concepts/#dfn-literal) that would otherwise use the `xsd:string` or `rdf:langString` datatypes.
+
+Datatypes based on this namespace allow round-tripping of JSON-LD documents using base direction, although the mechanism is not otherwise standardized.
+
+The [Deserialize JSON-LD to RDF Algorithm](https://www.w3.org/TR/json-ld11-api/#deserialize-json-ld-to-rdf-algorithm) can be used with the [rdfDirection](https://www.w3.org/TR/json-ld11-api/#dom-jsonldoptions-rdfdirection) option set to `i18n-datatype` to generate [RDF literals](https://www.w3.org/TR/rdf11-concepts/#dfn-literal) using the `i18n` base to create an IRI encoding the [base direction](#dfn-base-direction) along with optional [language tag](https://www.w3.org/TR/rdf11-concepts/#dfn-language-tag) (normalized to lower case) from value objects containing `@direction` by appending to `https://www.w3.org/ns/i18n#` the value of `@language`, if any, followed by an underscore (`"_"`) followed by the value of `@direction`.
+
+For improved interoperability, the [language tag](https://www.w3.org/TR/rdf11-concepts/#dfn-language-tag) is normalized to lower case when creating the datatype IRI.
+
+The following example shows two statements with literal values of `i18n:ar-EG_rtl`, which encodes the language tag `ar-EG` and the base direction `rtl`.
+
+``` {.turtle-dt .nohighlight content-type="text/turtle" options="rdfDirection=i18n-datatype" to-rdf=""}
+@prefix ex: .
+@prefix i18n: .
+
+# Note that this version preserves the base direction using a non-standard datatype.
+[
+ ex:title "HTML و CSS: تصميم و إنشاء مواقع الويب"^^i18n:ar-eg_rtl;
+ ex:publisher "مكتبة"^^i18n:ar-eg_rtl
+] .
+```
+
+See [§ 4.2.4.1 Base Direction](#base-direction) for more details on using [base direction](#dfn-base-direction) for strings.
+
+### 10.4 The `rdf:CompoundLiteral` class and the `rdf:language` and `rdf:direction` properties[](#the-rdf-compoundliteral-class-and-the-rdf-language-and-rdf-direction-properties)
+
+*This section is non-normative.*
+
+This specification defines the `rdf:CompoundLiteral` class, which is in the domain of `rdf:language` and `rdf:direction` to be used for describing RDF literal values containing base direction and a possible language tag to be associated with the string value of `rdf:value` on the same subject.
+
+`rdf:CompoundLiteral`
+: A class representing a compound literal.
+
+`rdf:language`
+: An RDF [property](https://www.w3.org/TR/rdf11-concepts/#dfn-property). The range of the property is an `rdfs:Literal`, whose value *MUST* be a well-formed \[[BCP47](#bib-bcp47 "Tags for Identifying Languages")\] [language tag](https://www.w3.org/TR/rdf11-concepts/#dfn-language-tag). The domain of the property is `rdf:CompoundLiteral`.
+
+`rdf:direction`
+: An RDF [property](https://www.w3.org/TR/rdf11-concepts/#dfn-property). The range of the property is an `rdfs:Literal`, whose value *MUST* be either `"ltr"` or `"rtl"`. The domain of the property is `rdf:CompoundLiteral`.
+
+The [Deserialize JSON-LD to RDF Algorithm](https://www.w3.org/TR/json-ld11-api/#deserialize-json-ld-to-rdf-algorithm) can be used with the [rdfDirection](https://www.w3.org/TR/json-ld11-api/#dom-jsonldoptions-rdfdirection) option set to `compound-literal` to generate [RDF literals](https://www.w3.org/TR/rdf11-concepts/#dfn-literal) using these properties to describe the [base direction](#dfn-base-direction) and optional [language tag](https://www.w3.org/TR/rdf11-concepts/#dfn-language-tag) (normalized to lower case) from value objects containing `@direction` and optionally `@language`.
+
+For improved interoperability, the [language tag](https://www.w3.org/TR/rdf11-concepts/#dfn-language-tag) is normalized to lower case when creating the datatype IRI.
+
+The following example shows two statements with compound literals representing strings with the [language tag](https://www.w3.org/TR/rdf11-concepts/#dfn-language-tag) `ar-EG` and [base direction](#dfn-base-direction) `rtl`.
+
+``` {.turtle-dt .nohighlight content-type="text/turtle" options="rdfDirection=compound-literal" to-rdf=""}
+@prefix ex: .
+
+# Note that this version preserves the base direction using a bnode structure.
+[
+ ex:title [
+ rdf:value "HTML و CSS: تصميم و إنشاء مواقع الويب",
+ rdf:language "ar-eg",
+ rdf:direction "rtl"
+ ];
+ ex:publisher [
+ rdf:value "مكتبة",
+ rdf:language "ar-eg",
+ rdf:direction "rtl"
+ ]
+] .
+```
+
+See [§ 4.2.4.1 Base Direction](#base-direction) for more details on using [base direction](#dfn-base-direction) for strings.
+
+## 11. Security Considerations[](#security)
+
+See, [Security Considerations](#iana-security) in [§ C. IANA Considerations](#iana-considerations).
+
+Note
+
+Future versions of this specification may incorporate subresource integrity \[[SRI](#bib-sri "Subresource Integrity")\] as a means of ensuring that cached and retrieved content matches data retrieved from remote servers; see [issue 86](https://github.com/w3c/json-ld-syntax/issues/86).
+
+## 12. Privacy Considerations[](#privacy)
+
+The retrieval of external contexts can expose the operation of a JSON-LD processor, allow intermediate nodes to fingerprint the client application through introspection of retrieved resources (see \[[fingerprinting-guidance](#bib-fingerprinting-guidance "Mitigating Browser Fingerprinting in Web Specifications")\]), and provide an opportunity for a man-in-the-middle attack. To protect against this, publishers should consider caching remote contexts for future use, or use the [documentLoader](https://www.w3.org/TR/json-ld11-api/#dom-jsonldoptions-documentloader) to maintain a local version of such contexts.
+
+## 13. Internationalization Considerations[](#internationalization)
+
+As JSON-LD uses the RDF data model, it is restricted by design in its ability to properly record [JSON-LD Values](#dfn-json-ld-value) which are [strings](https://infra.spec.whatwg.org/#javascript-string) with left-to-right or right-to-left direction indicators. Both JSON-LD and RDF provide a mechanism for specifying the language associated with a string ([language-tagged string](https://www.w3.org/TR/rdf11-concepts/#dfn-language-tagged-string)), but do not provide a means of indicating the [base direction](#dfn-base-direction) of the string.
+
+Unicode provides a mechanism for signaling direction within a string (see [Unicode Bidirectional Algorithm](https://www.unicode.org/reports/tr9/tr9-42.html) \[[UAX9](#bib-uax9 "Unicode Bidirectional Algorithm")\]), however, when a string has an overall [base direction](#dfn-base-direction) which cannot be determined by the beginning of the string, an external indicator is required, such as the \[[HTML](#bib-html "HTML Standard")\] [dir attribute](https://html.spec.whatwg.org/multipage/dom.html#the-dir-attribute), which currently has no counterpart for [RDF literals](https://www.w3.org/TR/rdf11-concepts/#dfn-literal).
+
+The issue of properly representing [base direction](#dfn-base-direction) in RDF is not something that this Working Group can handle, as it is a limitation or the core RDF data model. This Working Group expects that a future RDF Working Group will consider the matter and add the ability to specify the base direction of [language-tagged strings](https://www.w3.org/TR/rdf11-concepts/#dfn-language-tagged-string).
+
+Until a more comprehensive solution can be addressed in a future version of this specification, publishers should consider this issue when representing strings where the [base direction](#dfn-base-direction) of the string cannot otherwise be correctly inferred based on the content of the string. See \[[string-meta](#bib-string-meta "Strings on the Web: Language and Direction Metadata")\] for a discussion best practices for identifying language and base direction for strings used on the Web.
+
+## A. Image Descriptions[](#image-descriptions)
+
+*This section is non-normative.*
+
+### A.1 Linked Data Dataset[](#fig-linked-data-graph-descr)
+
+*This section is non-normative.*
+
+This section describes the [Linked Data Dataset figure](#fig-linked-data-graph) in [§ 8. Data Model](#data-model).
+
+The image consists of three dashed boxes, each describing a different [linked data graph](https://www.w3.org/TR/rdf11-concepts/#dfn-rdf-graph). Each box consists of shapes linked with arrows describing the linked data relationships.
+
+The first box is titled \"default graph: \\" describes two resources: `http://example.com/people/alice` and `http://example.com/people/bob` (denoting \"Alice\" and \"Bob\" respectively), which are connected by an arrow labeled `schema:knows` which describes the knows relationship between the two resources. Additionally, the \"Alice\" resource is related to three different literals:
+
+Alice
+: an RDF literal with no datatype or language.
+
+weiblich \| de
+: an language-tagged string with the value \"weiblich\" and [language tag](https://www.w3.org/TR/rdf11-concepts/#dfn-language-tag) \"de\".
+
+female \| en
+: an language-tagged string with the value \"female\" and [language tag](https://www.w3.org/TR/rdf11-concepts/#dfn-language-tag) \"en\".
+
+The second and third boxes describe two [named graphs](https://www.w3.org/TR/rdf11-concepts/#dfn-named-graph), with the graph names \"http://example.com/graphs/1\" and \"http://example.com/graphs/1\", respectively.
+
+The second box consists of two resources: `http://example.com/people/alice` and `http://example.com/people/bob` related by the `schema:parent` relationship, and names the `http://example.com/people/bob` \"Bob\".
+
+The third box consists of two resources, one named `http://example.com/people/bob` and the other unnamed. The two resources related to each other using `schema:sibling` relationship with the second named \"Mary\".
+
+## B. Relationship to Other Linked Data Formats[](#relationship-to-other-linked-data-formats)
+
+*This section is non-normative.*
+
+The JSON-LD examples below demonstrate how JSON-LD can be used to express semantic data marked up in other linked data formats such as Turtle, RDFa, and Microdata. These sections are merely provided as evidence that JSON-LD is very flexible in what it can express across different Linked Data approaches.
+
+### B.1 Turtle[](#turtle)
+
+*This section is non-normative.*
+
+The following are examples of transforming RDF expressed in \[[Turtle](#bib-turtle "RDF 1.1 Turtle")\] into JSON-LD.
+
+#### B.1.1 Prefix definitions[](#prefix-definitions)
+
+The JSON-LD context has direct equivalents for the Turtle `@prefix` declaration:
+
+[Example 154](#example-154-a-set-of-statements-serialized-in-turtle): A set of statements serialized in Turtle
+
+``` {content-type="text/turtle" result-for="The same set of statements serialized in JSON-LD" to-rdf="" aria-busy="false"}
+@prefix foaf: .
+
+ a foaf:Person;
+ foaf:name "Manu Sporny";
+ foaf:homepage .
+```
+
+[Example 155](#example-155-the-same-set-of-statements-serialized-in-json-ld): The same set of statements serialized in JSON-LD
+
+``` {aria-busy="false"}
+{
+ "@context": {
+ "foaf": "http://xmlns.com/foaf/0.1/"
+ },
+ "@id": "http://manu.sporny.org/about#manu",
+ "@type": "foaf:Person",
+ "foaf:name": "Manu Sporny",
+ "foaf:homepage": { "@id": "http://manu.sporny.org/" }
+}
+```
+
+#### B.1.2 Embedding[](#embedding-0)
+
+Both \[[Turtle](#bib-turtle "RDF 1.1 Turtle")\] and JSON-LD allow embedding, although \[[Turtle](#bib-turtle "RDF 1.1 Turtle")\] only allows embedding of [blank nodes](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node).
+
+[Example 156](#example-156-embedding-in-turtle): Embedding in Turtle
+
+``` {content-type="text/turtle" to-rdf="" result-for="Same embedding example in JSON-LD" aria-busy="false"}
+@prefix foaf: .
+
+
+ a foaf:Person;
+ foaf:name "Manu Sporny";
+ foaf:knows [ a foaf:Person; foaf:name "Gregg Kellogg" ] .
+```
+
+[Example 157](#example-157-same-embedding-example-in-json-ld): Same embedding example in JSON-LD
+
+``` {aria-busy="false"}
+{
+ "@context": {
+ "foaf": "http://xmlns.com/foaf/0.1/"
+ },
+ "@id": "http://manu.sporny.org/about#manu",
+ "@type": "foaf:Person",
+ "foaf:name": "Manu Sporny",
+ "foaf:knows": {
+ "@type": "foaf:Person",
+ "foaf:name": "Gregg Kellogg"
+ }
+}
+```
+
+#### B.1.3 Conversion of native data types[](#conversion-of-native-data-types)
+
+In JSON-LD numbers and boolean values are native data types. While \[[Turtle](#bib-turtle "RDF 1.1 Turtle")\] has a shorthand syntax to express such values, RDF\'s abstract syntax requires that numbers and boolean values are represented as typed literals. Thus, to allow full round-tripping, the JSON-LD 1.1 Processing Algorithms and API specification \[[JSON-LD11-API](#bib-json-ld11-api "JSON-LD 1.1 Processing Algorithms and API")\] defines conversion rules between JSON-LD\'s native data types and RDF\'s counterparts. [Numbers](https://tc39.es/ecma262/#sec-terms-and-definitions-number-value) without fractions are converted to `xsd:integer`-typed literals, numbers with fractions to `xsd:double`-typed literals and the two boolean values `true` and `false` to a `xsd:boolean`-typed literal. All typed literals are in canonical lexical form.
+
+[Example 158](#example-158-json-ld-using-native-data-types-for-numbers-and-boolean-values): JSON-LD using native data types for numbers and boolean values
+
+``` {aria-busy="false"}
+{
+ "@context": {
+ "ex": "http://example.com/vocab#"
+ },
+ "@id": "http://example.com/",
+ "ex:numbers": [ 14, 2.78 ],
+ "ex:booleans": [ true, false ]
+}
+```
+
+[Example 159](#example-159-same-example-in-turtle-using-typed-literals): Same example in Turtle using typed literals
+
+``` {content-type="text/turtle" result-for="JSON-LD using native data types for numbers and boolean values" to-rdf="" aria-busy="false"}
+@prefix ex: .
+@prefix xsd: .
+
+
+ ex:numbers "14"^^xsd:integer, "2.78E0"^^xsd:double ;
+ ex:booleans "true"^^xsd:boolean, "false"^^xsd:boolean .
+```
+
+Note
+
+Note that this interpretation differs from \[[Turtle](#bib-turtle "RDF 1.1 Turtle")\], in which the literal `2.78` translates to an `xsd:decimal`. The rationale is that most JSON tools parse numbers with fractions as *floating point numbers*, so `xsd:double` is the most appropriate datatype to render them back in RDF.
+
+#### B.1.4 Lists[](#lists-0)
+
+Both JSON-LD and \[[Turtle](#bib-turtle "RDF 1.1 Turtle")\] can represent sequential lists of values.
+
+[Example 160](#example-160-a-list-of-values-in-turtle): A list of values in Turtle
+
+``` {content-type="text/turtle" to-rdf="" result-for="Same example with a list of values in JSON-LD" aria-busy="false"}
+@prefix foaf: .
+
+ a foaf:Person;
+ foaf:name "Joe Bob";
+ foaf:nick ( "joe" "bob" "jaybee" ) .
+```
+
+[Example 161](#example-161-same-example-with-a-list-of-values-in-json-ld): Same example with a list of values in JSON-LD
+
+``` {aria-busy="false"}
+{
+ "@context": {
+ "foaf": "http://xmlns.com/foaf/0.1/"
+ },
+ "@id": "http://example.org/people#joebob",
+ "@type": "foaf:Person",
+ "foaf:name": "Joe Bob",
+ "foaf:nick": {
+ "@list": [ "joe", "bob", "jaybee" ]
+ }
+}
+```
+
+### B.2 RDFa[](#rdfa)
+
+*This section is non-normative.*
+
+The following example describes three people with their respective names and homepages in RDFa \[[RDFA-CORE](#bib-rdfa-core "RDFa Core 1.1 - Third Edition")\].
+
+[Example 162](#example-162-rdfa-fragment-that-describes-three-people): RDFa fragment that describes three people
+
+``` {.nohighlight content-type="text/html" to-rdf="" result-for="Same description in JSON-LD (context shared among node objects)"}
+
+```
+
+An example JSON-LD implementation using a single [context](#dfn-context) is described below.
+
+[Example 163](#example-163-same-description-in-json-ld-context-shared-among-node-objects): Same description in JSON-LD (context shared among node objects)
+
+``` {aria-busy="false"}
+{
+ "@context": {
+ "foaf": "http://xmlns.com/foaf/0.1/",
+ "foaf:homepage": {"@type": "@id"}
+ },
+ "@graph": [
+ {
+ "@type": "foaf:Person",
+ "foaf:homepage": "http://example.com/bob/",
+ "foaf:name": "Bob"
+ }, {
+ "@type": "foaf:Person",
+ "foaf:homepage": "http://example.com/eve/",
+ "foaf:name": "Eve"
+ }, {
+ "@type": "foaf:Person",
+ "foaf:homepage": "http://example.com/manu/",
+ "foaf:name": "Manu"
+ }
+ ]
+}
+```
+
+### B.3 Microdata[](#microdata)
+
+*This section is non-normative.*
+
+The HTML Microdata \[[MICRODATA](#bib-microdata "HTML Microdata")\] example below expresses book information as a Microdata Work item.
+
+[Example 164](#example-164-html-that-describes-a-book-using-microdata): HTML that describes a book using microdata
+
+``` {content-type="text/html" result-for="Same book description in JSON-LD (avoiding contexts)" to-rdf="" aria-busy="false"}
+
+
Title
+
Just a Geek
+
By
+
Wil Wheaton
+
Format
+
+
+ Print
+
+
+
+ Ebook
+
+
+```
+
+Note that the JSON-LD representation of the Microdata information stays true to the desires of the Microdata community to avoid contexts and instead refer to items by their full [IRI](https://tools.ietf.org/html/rfc3987#section-2).
+
+[Example 165](#example-165-same-book-description-in-json-ld-avoiding-contexts): Same book description in JSON-LD (avoiding contexts)
+
+``` {aria-busy="false"}
+[
+ {
+ "@id": "http://purl.oreilly.com/works/45U8QJGZSQKDH8N",
+ "@type": "http://purl.org/vocab/frbr/core#Work",
+ "http://purl.org/dc/elements/1.1/title": "Just a Geek",
+ "http://purl.org/dc/elements/1.1/creator": "Wil Wheaton",
+ "http://purl.org/vocab/frbr/core#realization":
+ [
+ {"@id": "http://purl.oreilly.com/products/9780596007683.BOOK"},
+ {"@id": "http://purl.oreilly.com/products/9780596802189.EBOOK"}
+ ]
+ }, {
+ "@id": "http://purl.oreilly.com/products/9780596007683.BOOK",
+ "@type": "http://purl.org/vocab/frbr/core#Expression",
+ "http://purl.org/dc/elements/1.1/type": {"@id": "http://purl.oreilly.com/product-types/BOOK"}
+ }, {
+ "@id": "http://purl.oreilly.com/products/9780596802189.EBOOK",
+ "@type": "http://purl.org/vocab/frbr/core#Expression",
+ "http://purl.org/dc/elements/1.1/type": {"@id": "http://purl.oreilly.com/product-types/EBOOK"}
+ }
+]
+```
+
+## C. IANA Considerations[](#iana-considerations)
+
+This section has been submitted to the Internet Engineering Steering Group (IESG) for review, approval, and registration with IANA.
+
+### application/ld+json[](#iana-considerations)
+
+Type name:
+: application
+
+Subtype name:
+: ld+json
+
+Required parameters:
+: N/A
+
+Optional parameters:
+
+:
+
+ `profile`
+
+ : A non-empty list of space-separated URIs identifying specific constraints or conventions that apply to a JSON-LD document according to \[[RFC6906](#bib-rfc6906 "The 'profile' Link Relation Type")\]. A profile does not change the semantics of the resource representation when processed without profile knowledge, so that clients both with and without knowledge of a profiled resource can safely use the same representation. The `profile` parameter *MAY* be used by clients to express their preferences in the content negotiation process. If the profile parameter is given, a server *SHOULD* return a document that honors the profiles in the list which it recognizes, and *MUST* ignore the profiles in the list which it does not recognize. It is *RECOMMENDED* that profile URIs are dereferenceable and provide useful documentation at that URI. For more information and background please refer to \[[RFC6906](#bib-rfc6906 "The 'profile' Link Relation Type")\].
+
+ This specification defines six values for the `profile` parameter.
+
+ `http://www.w3.org/ns/json-ld#expanded`
+ : To request or specify [expanded JSON-LD document form](#dfn-expanded-document-form).
+
+ `http://www.w3.org/ns/json-ld#compacted`
+ : To request or specify [compacted JSON-LD document form](#dfn-compacted-document-form).
+
+ `http://www.w3.org/ns/json-ld#context`
+ : To request or specify a [JSON-LD context document](#dfn-context-document).
+
+ `http://www.w3.org/ns/json-ld#flattened`
+ : To request or specify [flattened JSON-LD document form](#dfn-flattened-document-form).
+
+ `http://www.w3.org/ns/json-ld#frame`
+ : To request or specify a [JSON-LD frame document](https://www.w3.org/TR/json-ld11-framing/#dfn-frame).
+
+ `http://www.w3.org/ns/json-ld#framed`
+ : To request or specify [framed JSON-LD document form](#dfn-framed-document-form).
+
+ All other URIs starting with `http://www.w3.org/ns/json-ld` are reserved for future use by JSON-LD specifications.
+
+ Other specifications may publish additional `profile` parameter URIs with their own defined semantics. This includes the ability to associate a file extension with a `profile` parameter.
+
+ When used as a [media type parameter](https://tools.ietf.org/html/rfc4288#section-4.3) \[[RFC4288](#bib-rfc4288 "Media Type Specifications and Registration Procedures")\] in an [HTTP Accept header](https://httpwg.org/specs/rfc7231.html#rfc.section.5.3.2) \[[RFC7231](#bib-rfc7231 "Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content")\], the value of the `profile` parameter *MUST* be enclosed in quotes (`"`) if it contains special characters such as whitespace, which is required when multiple profile URIs are combined.
+
+ When processing the \"profile\" media type parameter, it is important to note that its value contains one or more URIs and not IRIs. In some cases it might therefore be necessary to convert between IRIs and URIs as specified in [section 3 Relationship between IRIs and URIs](https://tools.ietf.org/html/rfc3986#section-5.1) of \[[RFC3987](#bib-rfc3987 "Internationalized Resource Identifiers (IRIs)")\].
+
+Encoding considerations:
+: See [RFC 8259, section 11](https://tools.ietf.org/html/rfc8259#section-11).
+
+Security considerations:
+
+: See [RFC 8259, section 12](https://tools.ietf.org/html/rfc8259#section-12) \[[RFC8259](#bib-rfc8259 "The JavaScript Object Notation (JSON) Data Interchange Format")\]
+
+ Since JSON-LD is intended to be a pure data exchange format for directed graphs, the serialization *SHOULD NOT* be passed through a code execution mechanism such as JavaScript\'s `eval()` function to be parsed. An (invalid) document may contain code that, when executed, could lead to unexpected side effects compromising the security of a system.
+
+ When processing JSON-LD documents, links to remote contexts and frames are typically followed automatically, resulting in the transfer of files without the explicit request of the user for each one. If remote contexts are served by third parties, it may allow them to gather usage patterns or similar information leading to privacy concerns. Specific implementations, such as the API defined in the JSON-LD 1.1 Processing Algorithms and API specification \[[JSON-LD11-API](#bib-json-ld11-api "JSON-LD 1.1 Processing Algorithms and API")\], may provide fine-grained mechanisms to control this behavior.
+
+ JSON-LD contexts that are loaded from the Web over non-secure connections, such as HTTP, run the risk of being altered by an attacker such that they may modify the JSON-LD [active context](#dfn-active-context) in a way that could compromise security. It is advised that any application that depends on a remote context for mission critical purposes vet and cache the remote context before allowing the system to use it.
+
+ Given that JSON-LD allows the substitution of long IRIs with short terms, JSON-LD documents may expand considerably when processed and, in the worst case, the resulting data might consume all of the recipient\'s resources. Applications should treat any data with due skepticism.
+
+ As JSON-LD places no limits on the IRI schemes that may be used, and vocabulary-relative IRIs use string concatenation rather than IRI resolution, it is possible to construct IRIs that may be used maliciously, if dereferenced.
+
+Interoperability considerations:
+: Not Applicable
+
+Published specification:
+: http://www.w3.org/TR/json-ld
+
+Applications that use this media type:
+: Any programming environment that requires the exchange of directed graphs. Implementations of JSON-LD have been created for JavaScript, Python, Ruby, PHP, and C++.
+
+Additional information:
+
+:
+
+ Magic number(s):
+ : Not Applicable
+
+ File extension(s):
+ : .jsonld
+
+ Macintosh file type code(s):
+ : TEXT
+
+Person & email address to contact for further information:
+: Ivan Herman \
+
+Intended usage:
+: Common
+
+Restrictions on usage:
+: N/A
+
+Author(s):
+: Manu Sporny, Dave Longley, Gregg Kellogg, Markus Lanthaler, Niklas Lindström
+
+Change controller:
+: W3C
+
+Fragment identifiers used with [application/ld+json](#application-ld-json) are treated as in RDF syntaxes, as per [RDF 1.1 Concepts and Abstract Syntax](https://www.w3.org/TR/rdf11-concepts/#section-fragID) \[[RDF11-CONCEPTS](#bib-rdf11-concepts "RDF 1.1 Concepts and Abstract Syntax")\].
+
+This registration is an update to the original definition for [application/ld+json](https://www.w3.org/TR/2014/REC-json-ld-20140116/#application-ld-json) in \[[JSON-LD10](#bib-json-ld10 "JSON-LD 1.0")\].
+
+### C.1 Examples[](#iana-examples)
+
+*This section is non-normative.*
+
+The following examples illustrate different ways in which the profile parameter may be used to describe different acceptable responses.
+
+[Example 166](#example-166-http-request-with-profile-requesting-an-expanded-document): HTTP Request with profile requesting an expanded document
+
+``` {content-type="http" ignore="" aria-busy="false"}
+GET /ordinary-json-document.json HTTP/1.1
+Host: example.com
+Accept: application/ld+json;profile=http://www.w3.org/ns/json-ld#expanded
+```
+
+Requests the server to return the requested resource as JSON-LD in [expanded document form](#dfn-expanded-document-form).
+
+[Example 167](#example-167-http-request-with-profile-requesting-a-compacted-document): HTTP Request with profile requesting a compacted document
+
+``` {content-type="http" ignore="" aria-busy="false"}
+GET /ordinary-json-document.json HTTP/1.1
+Host: example.com
+Accept: application/ld+json;profile=http://www.w3.org/ns/json-ld#compacted
+```
+
+Requests the server to return the requested resource as JSON-LD in [compacted document form](#dfn-compacted-document-form). As no explicit context resource is specified, the server compacts using an application-specific default context.
+
+[Example 168](#example-168-http-request-with-profile-requesting-a-compacted-document-with-a-reference-to-a-compaction-context): HTTP Request with profile requesting a compacted document with a reference to a compaction context
+
+``` {content-type="http" ignore="" aria-busy="false"}
+GET /ordinary-json-document.json HTTP/1.1
+Host: example.com
+Accept: application/ld+json;profile="http://www.w3.org/ns/json-ld#flattened http://www.w3.org/ns/json-ld#compacted"
+```
+
+Requests the server to return the requested resource as JSON-LD in both [compacted document form](#dfn-compacted-document-form) and [flattened document form](#dfn-flattened-document-form). Note that as whitespace is used to separate the two URIs, they are enclosed in double quotes (`"`).
+
+## D. Open Issues[](#open-issues)
+
+*This section is non-normative.*
+
+The following is a list of issues open at the time of publication.
+
+[Issue 108](https://github.com/w3c/json-ld-syntax/issues/108): Consider context by reference with metadata [defer-future-version](https://github.com/w3c/json-ld-syntax/issues/?q=is%3Aissue+is%3Aopen+label%3A%22defer-future-version%22)[privacy-tracker](https://github.com/w3c/json-ld-syntax/issues/?q=is%3Aissue+is%3Aopen+label%3A%22privacy-tracker%22)[security-tracker](https://github.com/w3c/json-ld-syntax/issues/?q=is%3Aissue+is%3Aopen+label%3A%22security-tracker%22)
+
+Consider context by reference with metadata.
+
+[Issue 191](https://github.com/w3c/json-ld-syntax/issues/191): Compact IRI expansion support for non-trivial prefix term definitions [defer-future-version](https://github.com/w3c/json-ld-syntax/issues/?q=is%3Aissue+is%3Aopen+label%3A%22defer-future-version%22)[spec:enhancement](https://github.com/w3c/json-ld-syntax/issues/?q=is%3Aissue+is%3Aopen+label%3A%22spec%3Aenhancement%22)
+
+Compact IRI expansion support for non-trivial prefix term definitions.
+
+[Issue 280](https://github.com/w3c/json-ld-syntax/issues/280): language-maps don\'t allow separate base direction [defer-future-version](https://github.com/w3c/json-ld-syntax/issues/?q=is%3Aissue+is%3Aopen+label%3A%22defer-future-version%22)
+
+Language-maps don\'t allow separate base direction.
+
+[Issue 328](https://github.com/w3c/json-ld-syntax/issues/328): \@default in \@context in JSON-LD core syntax [defer-future-version](https://github.com/w3c/json-ld-syntax/issues/?q=is%3Aissue+is%3Aopen+label%3A%22defer-future-version%22)
+
+`@default` in `@context` in JSON-LD core syntax.
+
+[Issue 329](https://github.com/w3c/json-ld-syntax/issues/329): Suggestion about \`@prefix\` [defer-future-version](https://github.com/w3c/json-ld-syntax/issues/?q=is%3Aissue+is%3Aopen+label%3A%22defer-future-version%22)
+
+Suggestion about `@prefix`.
+
+[Issue 335](https://github.com/w3c/json-ld-syntax/issues/335): Type Coercion / Node Conversion: \@coerce keyword or similar [defer-future-version](https://github.com/w3c/json-ld-syntax/issues/?q=is%3Aissue+is%3Aopen+label%3A%22defer-future-version%22)
+
+Type Coercion / Node Conversion: \@coerce keyword or similar.
+
+## E. Changes since 1.0 Recommendation of 16 January 2014[](#changes-from-10)
+
+*This section is non-normative.*
+
+- A context may contain a `@version` [entry](https://infra.spec.whatwg.org/#map-entry) which is used to set the [processing mode](#dfn-processing-mode).
+- An [expanded term definition](#dfn-expanded-term-definition) can now have an `@context` property, which defines a [context](#dfn-context) used for values of a [property](https://www.w3.org/TR/rdf11-concepts/#dfn-property) identified with such a [term](#dfn-term).
+- `@container` values within an [expanded term definition](#dfn-expanded-term-definition) may now include `@id`, `@graph` and `@type`, corresponding to [id maps](#dfn-id-map) and [type maps](#dfn-type-map).
+- An [expanded term definition](#dfn-expanded-term-definition) can now have an `@nest` property, which identifies a term expanding to `@nest` which is used for containing properties using the same `@nest` mapping. When expanding, the values of a property expanding to `@nest` are treated as if they were contained within the enclosing [node object](#dfn-node-object) directly.
+- The JSON syntax has been abstracted into an [internal representation](https://www.w3.org/TR/json-ld11-api/#dfn-internal-representation) to allow for other serializations that are functionally equivalent to JSON.
+- Added [§ 4.6.3 Node Identifier Indexing](#node-identifier-indexing) and [§ 4.6.4 Node Type Indexing](#node-type-indexing).
+- Both [language maps](#dfn-language-map) and [index maps](#dfn-index-map) may legitimately have an `@none` key, but [JSON-LD 1.0](https://www.w3.org/TR/2014/REC-json-ld-20140116/) only allowed [string](https://infra.spec.whatwg.org/#javascript-string) keys. This has been updated to allow `@none` keys.
+- The value for `@container` in an [expanded term definition](#dfn-expanded-term-definition) can also be an [array](https://infra.spec.whatwg.org/#list) containing any appropriate container keyword along with `@set` (other than `@list`). This allows a way to ensure that such property values will always be expressed in [array](https://infra.spec.whatwg.org/#list) form.
+- In JSON-LD 1.1, terms will be chosen as [compact IRI](#dfn-compact-iri) prefixes when compacting only if a [simple term definition](#dfn-simple-term-definition) is used where the value ends with a URI [gen-delim](https://tools.ietf.org/html/rfc3986#section-2.2) character, or if their [expanded term definition](#dfn-expanded-term-definition) contains a `@prefix` [entry](https://infra.spec.whatwg.org/#map-entry) with the value `true`. The 1.0 algorithm has been updated to only consider terms that map to a value that ends with a URI [gen-delim](https://tools.ietf.org/html/rfc3986#section-2.2) character.
+- Values of properties where the associated [term definition](#dfn-term-definition) has `@container` set to `@graph` are interpreted as [implicitly named graphs](#dfn-implicitly-named-graph), where the associated graph name is assigned from a new [blank node identifier](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node-identifier). Other combinations include `["@container", "@id"]`, `["@container", "@index"]` each also may include `"@set"`, which create maps from the graph identifier or index value similar to [index maps](#dfn-index-map) and [id maps](#dfn-id-map).
+
+Additionally, see [§ F. Changes since JSON-LD Community Group Final Report](#changes-from-cg).
+
+## F. Changes since JSON-LD Community Group Final Report[](#changes-from-cg)
+
+*This section is non-normative.*
+
+- [Lists](https://www.w3.org/TR/rdf-schema/#ch_collectionvocab) may now have items which are themselves [lists](https://www.w3.org/TR/rdf-schema/#ch_collectionvocab).
+- Values of `@type`, or an alias of `@type`, may now have their `@container` set to `@set` to ensure that `@type` [entries](https://infra.spec.whatwg.org/#map-entry) are always represented as an array. This also allows a term to be defined for `@type`, where the value *MUST* be a [map](https://infra.spec.whatwg.org/#ordered-map) with `@container` set to `@set`.
+- The use of [blank node identifiers](https://www.w3.org/TR/rdf11-concepts/#dfn-blank-node-identifier) to label properties is obsolete, and may be removed in a future version of JSON-LD, as is the support for [generalized RDF Datasets](https://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset).
+- The [vocabulary mapping](#dfn-vocabulary-mapping) can be a [relative IRI reference](https://tools.ietf.org/html/rfc3987#section-6.5), which is evaluated either against an existing default vocabulary, or against the document base. This allows vocabulary-relative IRIs, such as the keys of [node objects](#dfn-node-object), are expanded or compacted relative to the document base. (See [Security Considerations](#iana-security) in [§ C. IANA Considerations](#iana-considerations) for a discussion on how string vocabulary-relative IRI resolution via concatenation. )
+- Added support for `"@type": "@none"` in a [term definition](#dfn-term-definition) to prevent value compaction. Define the `rdf:JSON` datatype.
+- [Term definitions](#dfn-term-definition) with keys which are of the form of an [IRI reference](https://tools.ietf.org/html/rfc3987#section-1.3) or a [compact IRI](#dfn-compact-iri) *MUST NOT* expand to an [IRI](https://tools.ietf.org/html/rfc3987#section-2) other than the expansion of the key itself.
+- A [frame](https://www.w3.org/TR/json-ld11-framing/#dfn-frame) may also be located within an HTML document, identified using type `application/ld+json;profile=http://www.w3.org/ns/json-ld#frame`.
+- Term definitions can now be [protected](#protected-term-definitions), to limit the ability of other contexts to override them.
+- A [context](#dfn-context) defined in an [expanded term definition](#dfn-expanded-term-definition) may also be used for values of `@type`, which defines a [context](#dfn-context) to use for [node objects](#dfn-node-object) including the associated type.
+- By default, all contexts are propagated when traversing [node objects](#dfn-node-object), other than [type-scoped contexts](#dfn-type-scoped-context). This can be controlled using the `@propagate` [entry](https://infra.spec.whatwg.org/#map-entry) in a [local context](#dfn-local-context).
+- A context may contain an `@import` [entry](https://infra.spec.whatwg.org/#map-entry) used to reference a remote context within a context, allowing `JSON-LD 1.1` features to be added to contexts originally authored for `JSON-LD 1.0`.
+- A [node object](#dfn-node-object) may include an [included block](#dfn-included-block), which is used to contain a set of [node objects](#dfn-node-object) which are treated exactly as if they were [node objects](#dfn-node-object) defined in an [array](https://infra.spec.whatwg.org/#list) including the containing [node object](#dfn-node-object). This allows the use of the object form of a JSON-LD document when there is more than one [node object](#dfn-node-object) being defined, and where those [node objects](#dfn-node-object) are not embedded as values of the containing [node object](#dfn-node-object).
+- The `alternate` link relation can be used to supply an alternate location for retrieving a JSON-LD document when the returned document is not JSON.
+- [Value objects](#dfn-value-object), and associated [context](#dfn-context) and [term definitions](#dfn-term-definition) have been updated to support `@direction` for setting the [base direction](#dfn-base-direction) of strings.
+- The [processing mode](#dfn-processing-mode) is now implicitly `json-ld-1.1`, unless set explicitly to `json-ld-1.0`.
+- Improve notation using [IRI](https://tools.ietf.org/html/rfc3987#section-2), [IRI reference](https://tools.ietf.org/html/rfc3987#section-1.3), and [relative IRI reference](https://tools.ietf.org/html/rfc3987#section-6.5).
+- Warn about forward-compatibility issues for terms of the form (`"@"1*ALPHA`).
+- When creating an `i18n` datatype or `rdf:CompoundLiteral`, [language tags](https://www.w3.org/TR/rdf11-concepts/#dfn-language-tag) are normalized to lower case to improve interoperability between implementations.
+
+## G. Changes since Candidate Release of 12 December 2019[](#changes-from-cr)
+
+*This section is non-normative.*
+
+- Expand [§ 4.1.5 Compact IRIs](#compact-iris) to describe the behavior of `"@prefix": false` for [compact IRIs](#dfn-compact-iri), and to note that this affects both expansion of [compact IRIs](#dfn-compact-iri) and compaction of [IRIs](https://tools.ietf.org/html/rfc3987#section-2) to [compact IRIs](#dfn-compact-iri).
+- Adding a missing normative definition of the `@index` keyword used within an [expanded term definition](#dfn-expanded-term-definition) to [§ 9.15.1 Expanded term definition](#expanded-term-definition).
+- Changed normative definition of the `rdf:JSON` datatype in [§ 10.2 The `rdf:JSON` Datatype](#the-rdf-json-datatype) to describe a normative canonicalization. This is in response to [Issue 323](https://github.com/w3c/json-ld-syntax/issues/323).
+- Updated the non-normative definitions of the `i18n` based datatype in [§ 10.3 The `i18n` Namespace](#the-i18n-namespace) and `rdf:CompoundLiteral` class in [§ 10.4 The `rdf:CompoundLiteral` class and the `rdf:language` and `rdf:direction` properties](#the-rdf-compoundliteral-class-and-the-rdf-language-and-rdf-direction-properties) to normalize language tags to lowercase when generating RDF.
+
+## H. Changes since Proposed Recommendation Release of 7 May 2020[](#changes-from-pr)
+
+*This section is non-normative.*
+
+- Removed remaining \"at-risk\" notes.
+- Update bibliographic reference for JCS to \[[RFC8785](#bib-rfc8785 "JSON Canonicalization Scheme (JCS)")\].
+- Fixed typo in [§ 9.3 Frame Objects](#frame-objects), which was unintentionally diverging from the normative description of the `@embed` keyword in [JSON-LD 1.1 Framing](https://www.w3.org/TR/json-ld11-framing/). This is in response to [Issue 358](https://github.com/w3c/json-ld-syntax/issues/358).
+
+## I. Acknowledgements[](#ack)
+
+*This section is non-normative.*
+
+The editors would like to specially thank the following individuals for making significant contributions to the authoring and editing of this specification:
+
+- Timothy Cole (University of Illinois at Urbana-Champaign)
+- Gregory Todd Williams (J. Paul Getty Trust)
+- Ivan Herman (W3C Staff)
+- Jeff Mixter (OCLC (Online Computer Library Center, Inc.))
+- David Lehn (Digital Bazaar)
+- David Newbury (J. Paul Getty Trust)
+- Robert Sanderson (J. Paul Getty Trust, chair)
+- Harold Solbrig (Johns Hopkins Institute for Clinical and Translational Research)
+- Simon Steyskal (WU (Wirschaftsuniversität Wien) - Vienna University of Economics and Business)
+- A Soroka (Apache Software Foundation)
+- Ruben Taelman (Imec vzw)
+- Benjamin Young (Wiley, chair)
+
+Additionally, the following people were members of the Working Group at the time of publication:
+
+- Steve Blackmon (Apache Software Foundation)
+- Dan Brickley (Google, Inc.)
+- Newton Calegari (NIC.br - Brazilian Network Information Center)
+- Victor Charpenay (Siemens AG)
+- Sebastian Käbisch (Siemens AG)
+- Axel Polleres (WU (Wirschaftsuniversität Wien) - Vienna University of Economics and Business)
+- Leonard Rosenthol (Adobe)
+- Jean-Yves ROSSI (CANTON CONSULTING)
+- Antoine Roulin (CANTON CONSULTING)
+- Manu Sporny (Digital Bazaar)
+- Clément Warnier de Wailly (CANTON CONSULTING)
+
+A large amount of thanks goes out to the [JSON-LD Community Group](https://www.w3.org/community/json-ld/) participants who worked through many of the technical issues on the mailing list and the weekly telecons: Chris Webber, David Wood, Drummond Reed, Eleanor Joslin, Fabien Gandon, Herm Fisher, Jamie Pitts, Kim Hamilton Duffy, Niklas Lindström, Paolo Ciccarese, Paul Frazze, Paul Warren, Reto Gmür, Rob Trainer, Ted Thibodeau Jr., and Victor Charpenay.
+
+## J. References[](#references)
+
+### J.1 Normative references [](#normative-references)
+
+\[BCP47\]
+: [Tags for Identifying Languages](https://tools.ietf.org/html/bcp47). A. Phillips; M. Davis. IETF. September 2009. IETF Best Current Practice. URL:
+
+\[DOM\]
+: [DOM Standard](https://dom.spec.whatwg.org/). Anne van Kesteren. WHATWG. Living Standard. URL:
+
+\[ECMASCRIPT\]
+: [ECMAScript Language Specification](https://tc39.es/ecma262/). Ecma International. URL:
+
+\[HTML\]
+: [HTML Standard](https://html.spec.whatwg.org/multipage/). Anne van Kesteren; Domenic Denicola; Ian Hickson; Philip Jägenstedt; Simon Pieters. WHATWG. Living Standard. URL:
+
+\[IANA-URI-SCHEMES\]
+: [Uniform Resource Identifier (URI) Schemes](https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml). IANA. URL:
+
+\[JSON\]
+: [The application/json Media Type for JavaScript Object Notation (JSON)](https://tools.ietf.org/html/rfc4627). D. Crockford. IETF. July 2006. Informational. URL:
+
+\[JSON-LD10\]
+: [JSON-LD 1.0](https://www.w3.org/TR/2014/REC-json-ld-20140116/). Manu Sporny; Gregg Kellogg; Marcus Langhaler. W3C. 16 January 2014. W3C Recommendation. URL:
+
+\[JSON-LD11-API\]
+: [JSON-LD 1.1 Processing Algorithms and API](https://www.w3.org/TR/json-ld11-api/). Gregg Kellogg; Dave Longley; Pierre-Antoine Champin. W3C. 7 May 2020. W3C Proposed Recommendation. URL:
+
+\[JSON-LD11-FRAMING\]
+: [JSON-LD 1.1 Framing](https://www.w3.org/TR/json-ld11-framing/). Dave Longley; Gregg Kellogg; Pierre-Antoine Champin. W3C. 7 May 2020. W3C Proposed Recommendation. URL:
+
+\[RDF-SCHEMA\]
+: [RDF Schema 1.1](https://www.w3.org/TR/rdf-schema/). Dan Brickley; Ramanathan Guha. W3C. 25 February 2014. W3C Recommendation. URL:
+
+\[RDF11-CONCEPTS\]
+: [RDF 1.1 Concepts and Abstract Syntax](https://www.w3.org/TR/rdf11-concepts/). Richard Cyganiak; David Wood; Markus Lanthaler. W3C. 25 February 2014. W3C Recommendation. URL:
+
+\[RDF11-MT\]
+: [RDF 1.1 Semantics](https://www.w3.org/TR/rdf11-mt/). Patrick Hayes; Peter Patel-Schneider. W3C. 25 February 2014. W3C Recommendation. URL:
+
+\[RFC2119\]
+: [Key words for use in RFCs to Indicate Requirement Levels](https://tools.ietf.org/html/rfc2119). S. Bradner. IETF. March 1997. Best Current Practice. URL:
+
+\[RFC3986\]
+: [Uniform Resource Identifier (URI): Generic Syntax](https://tools.ietf.org/html/rfc3986). T. Berners-Lee; R. Fielding; L. Masinter. IETF. January 2005. Internet Standard. URL:
+
+\[RFC3987\]
+: [Internationalized Resource Identifiers (IRIs)](https://tools.ietf.org/html/rfc3987). M. Duerst; M. Suignard. IETF. January 2005. Proposed Standard. URL:
+
+\[RFC4288\]
+: [Media Type Specifications and Registration Procedures](https://tools.ietf.org/html/rfc4288). N. Freed; J. Klensin. IETF. December 2005. Best Current Practice. URL:
+
+\[RFC5234\]
+: [Augmented BNF for Syntax Specifications: ABNF](https://tools.ietf.org/html/rfc5234). D. Crocker, Ed.; P. Overell. IETF. January 2008. Internet Standard. URL:
+
+\[RFC6839\]
+: [Additional Media Type Structured Syntax Suffixes](https://tools.ietf.org/html/rfc6839). T. Hansen; A. Melnikov. IETF. January 2013. Informational. URL:
+
+\[RFC6906\]
+: [The \'profile\' Link Relation Type](https://tools.ietf.org/html/rfc6906). E. Wilde. IETF. March 2013. Informational. URL:
+
+\[RFC7231\]
+: [Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content](https://tools.ietf.org/html/rfc7231). R. Fielding, Ed.; J. Reschke, Ed. June 2014. Proposed Standard. URL:
+
+\[RFC8174\]
+: [Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words](https://tools.ietf.org/html/rfc8174). B. Leiba. IETF. May 2017. Best Current Practice. URL:
+
+\[RFC8259\]
+: [The JavaScript Object Notation (JSON) Data Interchange Format](https://tools.ietf.org/html/rfc8259). T. Bray, Ed.. IETF. December 2017. Internet Standard. URL:
+
+\[RFC8288\]
+: [Web Linking](https://tools.ietf.org/html/rfc8288). M. Nottingham. October 2017. Proposed Standard. URL:
+
+\[UAX9\]
+: [Unicode Bidirectional Algorithm](https://www.unicode.org/reports/tr9/tr9-42.html). Mark Davis; Aharon Lanin; Andrew Glass. Unicode Consortium. 12 February 2020. Unicode Standard Annex #9. URL:
+
+\[UNICODE\]
+: [The Unicode Standard](https://www.unicode.org/versions/latest/). Unicode Consortium. URL:
+
+### J.2 Informative references [](#informative-references)
+
+\[fingerprinting-guidance\]
+: [Mitigating Browser Fingerprinting in Web Specifications](https://www.w3.org/TR/fingerprinting-guidance/). Nick Doty. W3C. 28 March 2019. W3C Note. URL:
+
+\[INFRA\]
+: [Infra Standard](https://infra.spec.whatwg.org/). Anne van Kesteren; Domenic Denicola. WHATWG. Living Standard. URL:
+
+\[JSON.API\]
+: [JSON API](https://jsonapi.org/format/). Steve Klabnik; Yehuda Katz; Dan Gebhardt; Tyler Kellen; Ethan Resnick. 29 May 2015. unofficial. URL:
+
+\[ld-glossary\]
+: [Linked Data Glossary](https://www.w3.org/TR/ld-glossary/). Bernadette Hyland; Ghislain Auguste Atemezing; Michael Pendleton; Biplav Srivastava. W3C. 27 June 2013. W3C Note. URL:
+
+\[LINKED-DATA\]
+: [Linked Data Design Issues](https://www.w3.org/DesignIssues/LinkedData.html). Tim Berners-Lee. W3C. 27 July 2006. W3C-Internal Document. URL:
+
+\[MICRODATA\]
+: [HTML Microdata](https://www.w3.org/TR/microdata/). Charles \'chaals\' (McCathie) Nevile; Dan Brickley; Ian Hickson. W3C. 26 April 2018. W3C Working Draft. URL: