- From: Gregg Kellogg <gregg@greggkellogg.net>
- Date: Sun, 17 Mar 2013 08:46:07 -0700
- To: Markus Lanthaler <markus.lanthaler@gmx.net>
- Cc: JSON-LD JSON <public-linked-json@w3.org>, "<public-rdf-wg@w3.org>" <public-rdf-wg@w3.org>
On Mar 17, 2013, at 7:38 AM, "Markus Lanthaler" <markus.lanthaler@gmx.net> wrote: > Hi, > > just saw this thread and haven't thought much about it yet.. So just two > questions (no offence intended): (Why would I take offense to perfectly reasonable questions ?) > - What problem are why trying to solve here? I mean which use case are we > trying to address? Why would someone want to embed JSON-LD in HTML? I > haven't seen much JSON embedded into HTML in the wild.. and JSON is > extremely popular. As I mentioned in the lead-in, HTML-based markup for expressing meta-data (think SEO) has been shown to be error-prone. Embedding JSON-LD is useful as an alternative to RDFa/microdata which is hopefully less error prone. Plus, an advantage of JSON-LD, is that common problems in expression can often be addressed by updating the context. > - If we are embedding JSON-LD (not JSON), why do we need to add another > mechanism to reference a context? People embedding JSON-LD obviously need to > understand it.. so what's the problem with @context? Good question. One reason is that when multiple objects are used, particularly when flattened, this requires using the @graph key in the top-level object. Anything else (other than @context) may change the meaning of the data. And, you might reasonably think that if the subtleties of microdata are challenging, the the subtleties of @graph may also be challenging, adding the context to the container means that multiple objects can just be expressed in array form, without needing @graph. The idea is to make it as easy as possible for people to express metadata in HTML, and I think this comes pretty close. Gregg > Cheers, > Markus > > > -- > Markus Lanthaler > @markuslanthaler > > > > >> -----Original Message----- >> From: Ivan Herman [mailto:ivan@w3.org] >> Sent: Sunday, March 17, 2013 12:28 PM >> To: Niklas Lindström >> Cc: Gavin Carothers; Gregg Kellogg; public-rdf-wg@w3.org WG; JSON-LD >> JSON >> Subject: Re: JSON-LD in HTML >> >> >> On Mar 17, 2013, at 12:13 , Niklas Lindström <lindstream@gmail.com> >> wrote: >> >>> How about: >>> >>> <link rel="http://www.w3.org/ns/json-ld#context" >>> href="http://schema.org/context.jsonld" /> >>> >>> Perhaps more precise with an @about and a script @id, like: >>> >>> <link about="#jsonld" rel="http://www.w3.org/ns/json-ld#context" >>> href="http://schema.org/context.jsonld" /> >>> <script type="application/ld+json" id="jsonld">...</script> >> >> The goal is to make JSON-LD palatable and usable for people outside >> 'our' community. I am a little bit afraid that this approach would lead >> to errors (missing <link> statements, that sort of things). >> >> :-( >> >> Ivan >> >>> >>> Cheers, >>> Niklas >>> >>> >>> On Sun, Mar 17, 2013 at 11:46 AM, Ivan Herman <ivan@w3.org> wrote: >>>> >>>> On Mar 17, 2013, at 04:13 , Gavin Carothers <gavin@carothers.name> >> wrote: >>>> >>>>> >>>>> >>>>> >>>>> On Sat, Mar 16, 2013 at 2:08 PM, Gregg Kellogg >> <gregg@greggkellogg.net> wrote: >>>>> (Retry, as my mailer seemed to have chosen a personal email address >> to send it out before. Sorry if it comes twice). >>>>> >>>>> This proposal provides a means for embedding JSON-LD in HTML >> documents, = >>>>> much in the same way that Turtle can be embedded in HTML documents. >> This = >>>>> is important for certain constituencies who have shown problems in >> = >>>>> providing correct RDFa or microdata, but who are familiar with >> JSON. = >>>>> Embedding JSON-LD in HTML, along with a JSON-LD context, allows >> fairly = >>>>> straight-forward JSONto be used for specifying metadata within an >> HTML = >>>>> document. >>>>> >>>>> The use of the @data-context attribute below is not ideal, as >> @data-* = >>>>> attributes are intended for use by other specifications, but it >> seems = >>>>> inappropriate to either re-purpose some existing HTML (or >> HTML+RDFa) = >>>>> attribute, or to define a new attribute specifically for this >> narrow = >>>>> case. >>>>> >>>>> After section 6.8 in JSON-LD Syntax, add the following section: >>>>> >>>>> Section 6.9 (new/non-normative) Embedding JSON-LD in HTML documents >>>>> >>>>> HTML script tags can be used to embed blocks of data in documents. >> = >>>>> JSON-LD can be easily embedded in HTML this way. >>>>> >>>>> <script type=3D"application/ld+json"> >>>>> { >>>>> "@context": { >>>>> "@vocab": "http://purl.org/vocab/frbr/core#", >>>>> "@language": "en", >>>>> "dc": "http://purl.org/dc/terms/", >>>>> }, >>>>> "@id": "http://books.example.com/works/45U8QJGZSQKDH8N", >>>>> "@type": "Work", >>>>> "dc:creator": "Wil Wheaton", >>>>> "dc:title": "Just a Geek", >>>>> "realization": [{ >>>>> "@id": "http://books.example.com/products/9780596007683.BOOK", >>>>> "@type": "Expression"; >>>>> "dc:type": "http://books.example.com/product-types/BOOK" >>>>> }, { >>>>> "@id": "http://books.example.com/products/9780596802189.EBOOK" >>>>> "dc:type": "http://books.example.com/product-types/EBOOK" >>>>> }] >>>>> } >>>>> </script> >>>>> >>>>> JSON-LD content should be placed in a script element with the @type >> = >>>>> attribute set to application/ld+json. For text/html, text inside of >> the = >>>>> script tags does not need to be escaped (issue: use CDATA for >> XHTML?). = >>>>> >>>>> http://dev.w3.org/html5/html-xhtml-author-guide/#script-and-style >> No, XHTML for the web can non contain script tags that contain any form >> of < or & or ]]> or --. JSON does not provide for anyway to escape >> those that I'm aware of, therefor you basically can't use JSON-LD >> inside an XHTML document intended for the web. >>>>> >>>>> ... everything else sounds great! Well... except... >>>>> >>>>> The character encoding of the embedded JSON-LD fragment will match >> the = >>>>> HTML documents encoding. >>>>> >>>>> If a processor extracts the JSON-LD content into RDF, it should >> expand = >>>>> the JSON-LD fragment into an RDF dataset using the algorithm >> defined in = >>>>> [JSON-LD-Processing] section 10.6 "Convert to RDF Algorithm". If >> the = >>>>> HTML file contains multiple JSON-LD script tags, or other RDF >> statements = >>>>> are extracted, the result is the RDF merge of the datasets. >>>>> >>>>> Other processors implementing this mechanism may choose to expand >> the = >>>>> JSON-LD and return the expanded JSON-LD output. >>>>> >>>>> Section 6.9.1 Specifying Remote Context >>>>> >>>>> In addition to the mechanism defined in section 6.9, if the = >>>>> @data-context attribute is present on the script element, its value >> is = >>>>> >>>>> @data-* SHOULD/MUST? not be used for this. >>>>> >>>>> "These attributes are not intended for use by software that is >> independent of the site that uses the attributes." >>>> >>>> Having been part of the initial discussions on this, I have found >> exactly the same problem. However... at this point I am not sure what >> the alternatives are. We can do three things: >>>> >>>> - introducing our own attribute, eg, @context; but that is a big no- >> no with the HTML WG, and it would take a loooong time to convince them >> of the necessity of one (consider the raws that surrounded @longdesc, >> @role, or the RDFa attributes). These examples worked out but for >> standard only, whereas this proposal is for an informal feature, much >> like Turtle in HTML. Bottom line: that has no chance of getting >> through, meaning that resulting HTML files would be invalid. >>>> - re-using an RDFa attribute, namely @vocab. But that means that >> validation of such a file would require validating an HTML file with an >> RDFa flag (eg, when validator.nu is used) which is strange because this >> feature has nothing to do with RDFa. And, apart from validation, it is >> conceptually wrong to reuse an attribute that has nothing to do with >> RDFa but which would introduced _for_ RDFa. So this may not be an >> option after all >>>> - using the data-* mechanism which, well, has the drawback you >> mention. >>>> >>>> We have not found any other approach:-( Anybody has a bright idea? >>>> >>>> Ivan >>>> >>>> >>>>> Cheers, >>>>> Gavin >>>>> >>>>> >>>>> provided to the JSON-LD processor in a manner equivalent to the = >>>>> treatment of the HTTP Link Header with the = >>>>> http://www.w3.org/ns/json-ld#context link relation as specified in >> = >>>>> section 6.8, except that the inline specified JSON-LD need not have >> have = >>>>> embedded context information. For example: >>>>> >>>>> <script type=3D"application/ld+json" data- >> context=3D"http://schema.org/"> >>>> >>>> >>>> ---- >>>> Ivan Herman, W3C Semantic Web Activity Lead >>>> Home: http://www.w3.org/People/Ivan/ >>>> mobile: +31-641044153 >>>> FOAF: http://www.ivan-herman.net/foaf.rdf >> >> >> ---- >> Ivan Herman, W3C Semantic Web Activity Lead >> Home: http://www.w3.org/People/Ivan/ >> mobile: +31-641044153 >> FOAF: http://www.ivan-herman.net/foaf.rdf > > >
Received on Sunday, 17 March 2013 15:46:38 UTC