Re: RDFa in <head>

Hi Stéphane,

> I've noticed some RDFa-enabled websites which output all the RDFa in a bunch
> of <meta> tags in the <head> of the HTML documents, see for example
> http://www.slideshare.net/danbri/danbri-foaf-talk-social-web-camp-www2009
>
> While the extracted RDF is valid and informative, is that considered best
> practice? (as opposed to inline RDFa in the body of the document).

I would say it depends on what you are trying to achieve, but I'd
certainly encourage putting the information inline in the body, where
possible, and can think of at least two benefits to doing so; more
opportunities to enrich the UI, and a more natural distinction between
the web-page, and the topic of the web-page.


ENRICHING THE UI

As you rightly point out, the SlideShare pages have information such
as dc:creator in the head of the document. By placing it there, valid
triples are still generated when parsed by an RDFa parser, but since
the original markup is not visible to the user, there isn't much else
that can be done when it comes to enriching the UI.

For example, halfway down the page is a thumbnail representing Dan,
and his user name ("danbri"). This would be an ideal place to put the
dc:creator information, since a user agent could then do something
clever with the display of Dan's name or avatar, to indicate that he
created the slideshow.


WEB-PAGES AND THEIR TOPICS

There is another weakness with the SlideShare example, which is that
the URL for the web-page is being used to identify the slideshow
itself, which is a common mistake in RDF.

Technically speaking the creator of the web-page is not 'Dan
Brickley', it's SlideShare; Dan created the slides which are hosted on
the page created by SlideShare, and Dan would still have created those
slides if he moved them to a new web-site.

This is one of those things that always proves a little ephemeral, but
one easy way to ensure the distinction is to place information in the
head element that concerns the web-page itself (publisher =
SlideShare, created on Thurdsday, etc.) and then put information about
the 'thing that the document is about' in the body (in this case, a
slideshow by Dan), with an additional identifier. For example:

  <html>
    <head>
      <title>Danbri FOAF talk, Social Web Camp, WWW2009</title>
      <meta property="dc:creator" content="SlideShare" />
    </head>
    <body>
      <div rel="media:presentation" resource="http://static.slides...-www2009">
        <div>Dimensions:
          <span property="media:width">425</span>
          x
          <span property="media:height">355</span>
        </div>
        <div>Creator:
          <span property="dc:creator">danbri</span>
        </div>
      </div>
    </body>
  </html>

(Although I'm not keen on the use of media:presentation as a
predicate, I've used it here because that's how SlideShare is doing
it, and it doesn't really affect what I'm trying to explain.)

Note a few things here. First, that the URL for the slideshow is
different to the URL for the page.

Second, all of the properties like width, height, creator, and so on,
which are features of the presentation and not the web-page, are now
correctly added to the resource of the presentation (because @resource
sets the subject for media:width, etc.)

Third, it's still easy to add properties of the document itself, such
as dc:publisher, dc:subject, etc., in the head element.

And finally, there can be as many of these div blocks as we like in a
page, each with a separate @about value. This makes it easy for a page
to contain many things that it is 'about', such as a page full of
slideshows, images, videos, etc., or even a mix of different
documents.


By the way, the reason I've answered in some detail is because I know
that lying behind your question is a more general discussion about how
Drupal should support RDFa, and obviously I'm trying to make the case
that we'll get far more from Drupal and RDFa if we avoid the
SlideShare approach! ;)

Regards,

Mark

-- 
Mark Birbeck, webBackplane

mark.birbeck@webBackplane.com

http://webBackplane.com/mark-birbeck

webBackplane is a trading name of Backplane Ltd. (company number
05972288, registered office: 2nd Floor, 69/85 Tabernacle Street,
London, EC2A 4RR)

Received on Tuesday, 5 May 2009 09:54:24 UTC