W3C home > Mailing lists > Public > public-linked-json@w3.org > March 2013

RE: JSON-LD in HTML

From: Markus Lanthaler <markus.lanthaler@gmx.net>
Date: Sun, 17 Mar 2013 15:38:22 +0100
To: "'JSON-LD JSON'" <public-linked-json@w3.org>
Cc: <public-rdf-wg@w3.org>
Message-ID: <016401ce231d$14c28840$3e4798c0$@lanthaler@gmx.net>
Hi,

just saw this thread and haven't thought much about it yet.. So just two
questions (no offence intended):

- 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.

- 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?


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 14:38:56 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 20:53:21 UTC