clarify that `@none @id` are blank nodes, swap Examples 104 and 105
- Example 104 https://w3c.github.io/json-ld-syntax/#example-indexing-data-in-json-ld-by-node-identifiers-with-set-representation shows
@index: @idwith@setrepresentation but doesn't explain its utility, since all such arrays are necessarily singletons - Example 105 https://w3c.github.io/json-ld-syntax/#example-indexing-data-in-json-ld-by-node-identifiers-using-none shows that an
@idindex being@noneis mapped to a blank node. Then it hit me: there can be multiple blank nodes, and they will all be represented as@none, so now we need an array.
I suggest the following editorial changes:
- Edit Example 105
-
The special index
@noneis used for indexing node objects which do not have an@id, which is useful to maintain a normalized representation. -
The special index
@noneis used for indexing node objects which do not have an@id, i.e. are blank nodes. This is useful to maintain a normalized representation. In cases where multiple blank nodes may be present, it is useful to combine@idwith@set, see the next example
-
- Swap Examples 104 and 105
- Edit the old Example 104:
-
When compacting, this ensures that a JSON-LD processor will use the array form for all values of node identifiers.
-
When compacting, this ensures that a JSON-LD processor will use the array form for all values of node identifiers. This ensures a normalized representation in case of blank nodes, all of which will be mapped to
@noneand therefore need an array to hold their values. - Edit its code to the following (last 2 blocks changed):
-
{
"@context": {
"@version": 1.1,
"schema": "http://schema.org/",
"name": "schema:name",
"body": "schema:articleBody",
"words": "schema:wordCount",
"post": {
"@id": "schema:blogPost",
"@container": ["@id", "@set"]
}
},
"@id": "http://example.com/",
"@type": "schema:Blog",
"name": "World Financial News",
"post": {
"http://example.com/posts/1/en": [{
"body": "World commodities were up today with heavy trading of crude oil...",
"words": 1539
}],
"http://example.com/posts/1/de": [{
"body": "Die Werte an Warenbörsen stiegen im Sog eines starken Handels von Rohöl...",
"words": 1204
}],
"@none": [{
"body": "First object without an @id",
"words": 201
},
{
"body": "Second object without an @id",
"words": 202
}]
}
}
A similar edit could be done to Examples 107 and 108 https://w3c.github.io/json-ld-syntax/#example-indexing-data-in-json-ld-by-type-with-set-representation. In such case the code in Example 108 https://w3c.github.io/json-ld-syntax/#example-indexing-data-in-json-ld-by-type-using-none could be changed to eg
"none": [{
"@id": "https://greggkellogg.net/",
"name": "Gregg Kellogg"
}, {
"@id": "http://champin.net/",
"name": "Pierre-Antoine Champin"
}]
In the same train of thought: Example 122 https://w3c.github.io/json-ld-syntax/#example-referencing-named-graphs-using-an-id-map-with-none shows precisely two anonymous (blank node) graphs.
So I think the note above it is misleading because no graphs are merged (check in the Expanded and TriX tabs):
Note, however, that if multiple graphs are represented without an
@id, they will be merged on expansion. To prevent this, use@nonejudiciously, and consider giving graphs their own distinct identifier.
Suggest to change it to:
But using anonymous graphs is not recommended because it could lead to confusion. So use
@nonejudiciously, and consider giving graphs their own distinct identifier.