- From: Andy Seaborne <andy@seaborne.org>
- Date: Sun, 23 Aug 2015 11:15:42 +0100
- To: Linked JSON <public-linked-json@w3.org>
I'm having trouble pinning down what the spec status is of this input
(this is for an issue in jsonld-java).
Does the trailing content mean it is illegal JSON-LD or not or is it
outside the spec altogether in some cases?
----------------------
{
"@id" : "http://example/s",
"http://example/p" : "str"
}
xxxxxxxxx
----------------------
The question is whether the whole input is the "JSON Document" or
whether the trailing junk is considered to be outside the JSON Document.
In the first case, it is a parse error, and any output is undefined.
In the second case, there would be triples and no parse error.
I currently think that the spec says this is illegal JSON-LD but the
argument is convoluted and relies on the input coming from HTTP. If it
were some other source (a file with a non jsonld extension [tut, tut]),
it is unstated.
The spec chase:
Section 8 =>
"""
A JSON-LD document MUST be a valid JSON document as described in [RFC4627].
A JSON-LD document MUST be a single node object or an array whose
elements are each node objects at the top level.
"""
RFC4627 is the media type registration for JSON.
The definition link for "JSON-LD document" is descriptive:
"""
A JSON-LD document serializes a generalized RDF Dataset
[RDF11-CONCEPTS], which is a collection of graphs that comprises exactly
one default graph and zero or more named graphs.
"""
so it does not say, to my reading, that the "JSON-LD document" includes
or excludes the content after the "}".
RFC4627 talks about a "JSON text" when defining the media type.
Because that is the whole of the HTTP body, I think it means that "JSON
text" includes everything. Then "MUST be a single node object" applies
=> it's a parse error.
Proposed spec fix 1:
If it said that
"""
A JSON-LD document MUST be a valid JSON *text* as described in [RFC4627].
"""
then it would be clearer but still only applies if the media type can be
invoked and sometimes it can't (e.g a stream of chars from a non-HTTP
stream).
A sentence in the grammar explicitly, making it a synatx isse, not a
context issue, stating that no trailing content is permitted would cover
all cases.
Andy
Received on Sunday, 23 August 2015 10:16:13 UTC