- From: Robert Sanderson <azaroth42@gmail.com>
- Date: Wed, 12 Aug 2015 13:39:17 -0700
- To: Web Annotation <public-annotation@w3.org>
- Message-ID: <CABevsUGMeisPtx3xgxv1Dy52nmnUuoaRwWfi2Q10X5QJhr-0JA@mail.gmail.com>
My argument against multiple JSON serializations: We already have a primary serialization (JSON-LD) and a secondary one that we inherit primarily from the LDP specification of Turtle. There has been significant pushback against doing multiple serializations at all, wanting to avoid Turtle support as a requirement. That's fine, and would certainly make development much easier. By introducing a second (or third) serialization that MUST be supported, we make no one's life easier. So the alternative is to make all of the serialization formats optional, and you just have to pick one. Now we have some systems that only speak turtle, some that speak full JSON-LD, some that speak only one crystalization that happens to be JSON-LD, and some that speak the proposed non-LD JSON. So, as a developer, I have a choice between supporting any of these that I like the look of. The non-LD JSON looks slightly easier than the the crystalized JSON-LD, so I do that. For anyone coming to the specs who doesn't already do JSON-LD, this seems like the rationale choice. At which point, we might as well not do Linked Data at all, as we'd have a large number of implementations doing raw json, none of whom implement the translation to -LD. For current OA implementers, they probably would just do the JSON-LD form. Or not bother to upgrade at all. Then there'd be Open Annotation in RDF, and Web Annotation in JSON. Again, silos of information that don't interoperate. If someone did implement the translation algorithm, they'd likely only do it in one direction... to get access to more data. As most new implementations would simply do JSON, the likelihood of anyone doing the much harder JSON-LD to JSON translation seems very slim. So we spend a huge amount of time designing a new format to make the pattern of multiple bodies with different roles in a single annotation slightly easier to implement, with test cases and multiple implementations ... When we could spend that time making the implementation of the selected JSON-LD structure hidden behind APIs in libraries that everyone can just take and use. If it makes sense to view the content as: { "comment": "There's a typo for 'squirrel'", "change": "squirrel", "target": "http://cnn.com/" } Then great, let's write the translation layer *FROM* the interoperability specification *TO* that ease-of-use structure, or any other that's desired. There's no need to try and kludge everything together, and end up serving no one's best interest. It doesn't need to do round trips So my proposal to try and break the current stalemate: * Define the model to fully encapsulate all of the requirements without taking into consideration any serialization or convenience. * The on-the-wire bits are the JSON-LD serialization of that model. We can discuss later whether we need to require a specific crystalization or whether we can just say JSON-LD. * We provide implementations that take that serialization and further compact it into whatever structure is most useful, but those are non-normative. They're code that we can write to make developers' lives easier. Thus, developers are happy (they get to work with whatever structure they want), and we have a real interoperability specification built entirely on existing standards. Thoughts? Rob P.S. I think there's a good deal of existing cruft in the model that could be thrown out at the same time, including literal bodies, tags and semantic tags having a different structure, and so forth, that were added because of this trying to serve two masters approach, and making no one happy in the process. -- Rob Sanderson Information Standards Advocate Digital Library Systems and Services Stanford, CA 94305
Received on Wednesday, 12 August 2015 20:39:45 UTC