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

Re: JSON-LD in HTML

From: Gavin Carothers <gavin@carothers.name>
Date: Sat, 16 Mar 2013 20:13:15 -0700
Message-ID: <CAPqY83xCwctAnrg_R3tztHwJ9urzoEii0LZO8tf=_ODyNN0qAQ@mail.gmail.com>
To: Gregg Kellogg <gregg@greggkellogg.net>
Cc: "public-rdf-wg@w3.org WG" <public-rdf-wg@w3.org>, JSON-LD JSON <public-linked-json@w3.org>
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."

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/">
>
Received on Sunday, 17 March 2013 03:13:44 UTC

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