- From: Dave Longley <dlongley@digitalbazaar.com>
- Date: Wed, 18 Jan 2012 23:28:57 -0500
- To: public-linked-json@w3.org
On 01/18/2012 10:08 PM, Markus Lanthaler wrote:
> On Thursday, January 19, 2012 5:02 AM, Alexandre Passant:
>> On Wed, Jan 18, 2012 at 8:16 PM, Manu Sporny
>>> After some discussion with Dave Longley, both of us feel that we
>> should
>>> kill this feature. It overly complicates the number of ways that you
>> can
>>> express a plain literal.
>> You mean killing the "bar" : { "@value": "foo" } feature, and allowing
>> it only it it comes together with a @type, @language or other
>> attribute ?
>>
>> If so, the markup schema would change when one decide to add the
>> @language in an existing JSON-LD documents. JSON(non-LD) parser that
>> were using "bar" : "foo" will eventually not work anymore. So I'd
>> rather keep it for making things uniform and more easily extendable.
> I agree with Alexandre on this. As your fix showed it's trivial to
> implement. We should not encourage this construct, but there's no reason to
> not support it. That would just add another corner case IMO.
The fix only worked because the input is being ignored by the current
processor. The turtle serializer simply works on the output from the
processor. The processor itself doesn't handle this syntax and would
have to be changed, which is more complex.
The complexities include, at least, changing the expansion algorithm so
that an object (instead of a string) is used for all plain literals and
changing the compaction algorithm so that objects containing only @value
are converted to strings. I assume that we would need to make these
changes to ensure consistency in the compaction and expansion algorithms
and formats. I also assume that it would not be optional (via the
@context) to specify whether or not plain literal objects are changed to
strings during compaction (similar to type coercion).
These changes can be made, but understand that if we support this syntax
it isn't simply that we're handling a corner-case where some people
might use this instead of the simpler "string for plain literals"
syntax. Rather, it should be the official "expanded form" syntax for
plain literals. Otherwise we'll be introducing inconsistency where there
wasn't any before. Unless I'm mistaken, this will also be the first
example of a "built-in" difference between compact form and expanded
form, where the @context doesn't specify how the syntax is different, it
is just "known" that compact form uses strings for plain literals and
expanded form uses objects with a @value property.
> Can we add a test case for that? I don't know if we currently test the
> Turtle output!?
We should add test cases for this, yes, and, no, we don't currently test
turtle output, but obviously we should.
--
Dave Longley
CTO
Digital Bazaar, Inc.
Received on Thursday, 19 January 2012 04:29:27 UTC