[Copying public archive www-archive.w3.org for lack of a better option]
PROBLEM SUMMARY
GOAL: Any two JSON-LD-compliant parsers should produce the exact same
RDF triples when parsing the same JSON-LD document, except for blank
node labels and (possibly) datatype conversions.
CURRENT PROBLEM: JSON-LD is intended to be a concrete RDF syntax, but
the JSON-LD data model has some extensions to the RDF data model, and
this causes some non-determinism and/or important information loss when
interpreting JSON-LD as RDF. At present, the results of
JSON-LD-compliant parsing of a JSON-LD document to produce a set of RDF
triples is non-deterministic because JSON-LD allows blank node
predicates and RDF does not. The JSON-LD specification currently
suggests three potential solutions but does not mandate one of them: (a)
discard triples that contain blank node predicates; (b) retain triples
that contain blank node predicates; or (c) skolemize blank nodes that
are used in the predicate position.
RANGE OF POTENTIAL SOLUTIONS
1. Change JSON-LD to prohibit JSON-LD blank nodes in positions where the
RDF interpretation of JSON-LD would cause them to be mapped to illegal
RDF blank nodes.
Pros: Easy enough spec change.
Cons: Loss of JSON-LD functionality? (Is there an important use case
for having blank nodes in predicate positions in JSON-LD?)
My comments: This seems to me like the best available option.
2. Change RDF to permit blank nodes as predicates.
Pros: Avoids information loss.
Cons: Not possible in the current RDF working group, because it is
specifically specified in the charter as being out of scope:
http://www.w3.org/2011/01/rdf-wg-charter
"Some features are explicitly out of scope for the Working Group . . .
Removing current restrictions in the RDF model (e.g., . . . blank nodes
as predicates"
My comments: To my mind, this would have been a second-best option if it
were available.
3. Change the JSON-LD-to-RDF-model mapping to specify that illegal
triples are discarded.
Pros: Easy change to the JSON-LD spec.
Cons: Significant information loss when interpreting JSON-LD as RDF.
My comments: Not acceptable, due to the information loss.
4. Require skolemization of bnodes that appear in the predicate
positiont. (Note that if skolemization of a bnode is performed, it
must be performed uniformly on all instance of that bnode that arise
from that JSON-LD document.) RDF-standards-based round-trippable
skolemization would permit round-tripping of the skolemized bnodes back
to the original JSON-LD even if the return trip is performed by a
different party.
Pros: Avoids information loss.
Cons: (a) More complex than other options; (b) To avoid possible URI
clashes, the skolemizer would need a user-specific URI prefix as a
parameter, such as http://example.com/.well-known/genid/alice/
My comments: Complex, but acceptable.
Are there other options or pros/cons that I did not list? Which options
would be preferable, acceptable or not acceptable to you?
I suggest adopting #1, but also adding a note to the JSON-LD spec that
recommends that parsers offer an *option* (disabled by default) to
retain triples with a blank node predicate.
Thanks,
David