W3C home > Mailing lists > Public > public-vocabs@w3.org > August 2013

RE: Proposal: Looking inside tables

From: Markus Lanthaler <markus.lanthaler@gmx.net>
Date: Thu, 15 Aug 2013 15:55:13 +0200
To: 'Stéphane Corlosquet' <scorlosquet@gmail.com>, 'Omar Benjelloun (عمر بنجلون)' <benjello@google.com>
Cc: "'W3C Vocabularies'" <public-vocabs@w3.org>, "'Ramanathan Guha'" <guha@google.com>, "'Dan Brickley'" <danbri@google.com>
Message-ID: <014401ce99bf$11452330$33cf6990$@lanthaler@gmx.net>
On Wednesday, August 14, 2013 8:32 PM, Stéphane Corlosquet wrote:
> From the proposal:
> 
> <table typeof="Painting" vocab="http://schema.org/">
>   <thead>
>     <tr>
>       <th property="image">Image</th>
>       <th property="name">Title</th>
>       <th property="dateCreated">Year</th>
>       <th>Technique</th>
>       <th>Dimensions</th>
>       <th property="contentLocation">Gallery</th>
>     </tr>
>   </thead>
> <tbody>...</tbody>
> </table>
> 
> It should be noted that parsers which are not aware of this table
> extension would generate this information:
>
> <>
>    rdf:type schema:Painting;
>    schema:image "Image";
>    schema:name "Title";
>    schema:dateCreated "Year";
>    schema:contentLocation "Gallery" .
> 
> How do you plane to cope with this situation? Leave it be? Would it
> have unintended consequences on some applications?

Thanks Stéphane, I was going to ask the same question. I think the problem is even more apparent if you look at the JSON-LD examples in the draft:

{
  "@context": "http://schema.org/",
  "@type": "Painting",
  "dateCreated" : "{http://wp.org/rembrandt-paintings.csv#col:Year}",
  "contentLocation" : "{http://wp.org/rembrandt-paintings.csv#col:Gallery}",
  "author": "http://en.wikipedia.org/wiki/Rembrandt"
}

Why not define something which is a bit more explicit at the price of being a bit more verbose? Something like

{
  "@context": "http://schema.org/"
    "rp" : "http://wp.org/rembrandt-paintings.csv#"
  }, 
  "@type": "Table",   ----- in lack of a better name
  "columnDefinitions": [
    {
      "@id": "rp:col:Title",
      "mapsTo": "http://schema.org/name" -- can also be abbrev. to "name"
    },
    {
      "@id": "rp:col:Year",
      "mapsTo": "dateCreated"
    {
      "@id": "rp:col:Gallery",
      "mapsTo": "contentLocation"
    {
      "constants": {
        "@type": "Painting",
        "author": "http://en.wikipedia.org/wiki/Rembrandt"
      }
    }
  ]
}

Or in HTML

<table typeof="Table" vocab="http://schema.org/">
  <thead rel="columnDefinitions">
    <tr>
      <th about="#image" property="mapsTo" resource="schema:image">Image</th>
      <th about="#title" property="mapsTo" resource="schema:name">Title</th>
      <th about="#year" property="mapsTo" resource="schema:dateCreated">Year</th>
...


Cheers,
Markus


--
Markus Lanthaler
@markuslanthaler
Received on Thursday, 15 August 2013 13:55:43 UTC

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