- From: Kingsley Idehen <kidehen@openlinksw.com>
- Date: Thu, 01 Aug 2013 14:51:18 -0400
- To: public-linked-json@w3.org
- Message-ID: <51FAAE26.8070206@openlinksw.com>
On 8/1/13 2:36 PM, Robert Sanderson wrote:
> Hi Markus,
>
> Sorry about the HTML... must have been from cut/pasting out of the spec.
> As the framing issue is solved, thanks!, I changed the subject.
>
> I have to disagree philosophically with you here. I think that the
> JSON-ness (is "jsonic" a word?) of JSON-LD is a huge strength. Perhaps
> the fundamental strength of JSON-LD over any other RDF serialization.
> As Manu implies in his blog post on nuclear rdf, the fact that RDF/XML
> is unable to be usefully processed by XML tools or understood by
> people familiar with XML is a massive failing that has negatively
> impacted the adoption of RDF in general for many years.
+10000...
>
> And to quote the post:
> "RDF is plumbing... and developers don't need to know about it to
> use JSON-LD"
>
> If you want to understand why your tools are adding this stupid
> "@graph" and "@id": "_:b1" crud all over your nice JSON, the answer
> is... RDF. But not even just RDF, it's a choice in the algorithms to
> include them as there's nothing in the spec that says they have to be
> there when not necessary. That a JSON developer can look at an RDF
> serialization and instantly understand what is going on, without
> knowing the underlying model, is /the/ saving grace for the semantic
> web, IMO. It is all about being easy /and/ semantic.
>
> So I would implore you to please reconsider the "anti-pattern" stance.
>
> Rob
+1
The doctrine is "deceptively simple" its what makes the Web work,
actually. JSON-LD *potentially* (subject to the shape and form of its
final description narrative) provides a "deceptively simple" pathway
into the world of RDF based Linked Data for typical Web Developers.
Kingsley
>
> > Yes, understood. So if we want to specify the serialization of an
> > Annotation in JSON-LD, we therefore should include @graph in the
> > expected shape of the output JSON, right?
> >
> > Thus our basic annotation becomes:
> >
> > {
> > "@context": "http://www.w3.org/ns/oa-context-20130208.json",
> > "@graph": [{
> > "@type": "oa:Annotation",
> > "hasBody": "http://www.example.org/body1",
> > "hasTarget": "http://www.example.org/target1"
> > }]
> > }
>
> No, I don't think you should do that. Why would you? A consumer
> can't and
> shouldn't rely on a specific shape anyway.
>
>
> >>> The issue that I (at least) have with this is that the JSON-LD
> docs
> >>> bury @graph in a "Named Graph" section rather than being up
> front and
> >>> saying that you need to worry about it all the time, even if
> you don't
> >>> have a named graph.
> >>
> >> I don't see this as a problem. You are reading a JSON-LD
> document so you
> >> have to expect every keyword unless you have some out-of-band
> contract
> with
> >> the publisher which allows you to rely on a specific structure.
> >
> > My concern here is the different (and thus likely not interoperable)
> > implementations that developers with different back-end stacks will
> > come to.
> > A JSON based developer will end up with an object without @graph,
> > because in the documentation it's described more as an edge case for
> > named graphs. As he doesn't have a named graph, he should feel
> pretty
> > confident in leaving it out from the serialization, and not
> processing
> > it in a client.
> >
> > Then a developer with an RDF stack, on the other hand, will
> always get
> > a blank node named @graph out from her tools. She also doesn't
> think she
> > has a named graph, but will code her clients to expect it. Now
> these
> > two implementations won't work together, and I think it's hard
> given the
> > current documentation, to explain why the JSON developer needs
> to always
> > look for @graph.
>
> That has nothing to do with the publisher (backend) but solely
> with the
> consumer. If you need to support JSON-only consumers, i.e.,
> clients that
> rely on the structure and the property names to process the
> document, you
> need to specify it. A goal of JSON-LD is to eliminate that
> coupling which
> all too often results in very brittle systems. So the question you
> should
> ask yourself is: "Do we need to support clients that process
> OpenAnnotation
> documents as JSON"?
>
> If the answer is no, you don't have to do anything. JSON-LD
> capable clients
> will transform the document to a form suitable for them. They
> might frame
> it. Or they might flatten it. You don't know - and don't have to.
>
> On the other hand, if you need to support JSON-only clients as
> well, you
> need to specify in all details how documents are structured. Then
> you would
> define a profile and use JSON-LD's profile media type parameter to
> signal
> that the documents conforms to that structure. Similarly, a client can
> request a document in that form in conneg.
>
> I see that as an anti-pattern and just useful for legacy systems.
> So I would
> recommend you to not go down that route. That would be similar to
> prescribing how the Turtle serialization should look like.
>
--
Regards,
Kingsley Idehen
Founder & CEO
OpenLink Software
Company Web: http://www.openlinksw.com
Personal Weblog: http://www.openlinksw.com/blog/~kidehen
Twitter/Identi.ca handle: @kidehen
Google+ Profile: https://plus.google.com/112399767740508618350/about
LinkedIn Profile: http://www.linkedin.com/in/kidehen
Attachments
- application/pkcs7-signature attachment: S/MIME Cryptographic Signature
Received on Thursday, 1 August 2013 18:51:40 UTC