Re: Last Call comments on RDFa Core

The following is not an official WG response - just my initial thoughts.

On Sun, 12 Dec 2010 19:26:17 -0000 (GMT)
"Harry Halpin" <hhalpin@w3.org> wrote:

> 1) Remove any reference to @href and @src to the XHTML and HTML5
> documents about using RDFa. They do not really make sense in the
> core, as the are obviously specialized for use in making RDFa easier
> to use with a certain number of HTML elements, i.e. <a> and <img>.
> Having them in RDFa core needlessly complicates the document, and
> makes the parsing algorithm much more complicated. It's OK to keep
> them in XHTML or HTML5 profiles of RDFa for ease of hand-authoring I
> assume, although much of their work can just be done by use of <span>
> tags.

Removing them from the parsing algorithm in Core would make that
parsing algorithm unable to cope with XHTML+RDFa 1.0 as it exists in
the wild.

@href in particular is especially important, not just in HTML/XHTML
hosts, but also in Atom and potentially in SVG.

> 2) Please pick either @rel or @property for marking predicates, and
> do not encourage the use of both.

Without both, how does one express this:

<a about="#me"
   rel="foaf:homepage" href="http://tobyinkster.co.uk/"
   property="foaf:name">Toby Inkster</a>

> Note that OGP already treats @property as something marking out URIs,
> not literals, i.e. from [1]:
> 
> <meta property="og:url"
> content="http://www.imdb.com/title/tt0117500/" /> <meta
> property="og:image"
> content="http://ia.media-imdb.com/images/rock.jpg" />

I don't see why everyone takes this as an indication that RDFa is too
complex. Personally whether OGP were being expressed in Turtle, RDF/XML
or some other RDF serialisation, I'd day that the value of og:url
should be a literal. Why? Because you're actually talking about the URI
itself, not about the resource identified by the URI. og:image is
a somewhat more questionable case, but only slightly.

> 6) Lastly, as shown by OGP, there's two distinct use-cases for
> vocabularies, one where one is talking about the things a web-page is
> about, and the other a web-page. Right now RDFa is optimized to talk
> about the web-page.

This is perhaps something better handled at the RDF layer, by designing
vocabularies that fit naturally with RDFa - vocabularies where the
most common properties take an information resource as the subject,
and either a literal or another information resource as the object. OGP
is an example of such a vocabulary, the XHTML vocabulary is another.

As a case in point, the xfn:friend-hyperlink property in Richard
Cyganiak's port of XFN to RDF. This has a domain and range of
foaf:Document.

	<alice.html> xfn:friend-page <bob.html> .

With some rules-based reasoning, you can infer:

	_:a foaf:page <alice.html> ; xfn:friend _:b .
	_:b foaf:page <bob.html> .

> 8) Also, I can't tell if this is allowed (again, thanks to Kavi for
> the example):
> 
> Let's say I have a review about a restaurant. The markup to convey the
> relationship is:
> <span typeof="abc:Review">
>    <span rel="abc:itemReviewed">
>       <span typeof="abc:Restaurant">
> 
> Microdata and microformats both remove one layer of nested html
> elements for this scenario. For example in microdata, it is:
> 
> <span itemtype="site.com/Review">
>    <span itemprop="itemReviewed" itemscope
> itemtype="site.com/Restaurant">
> 
> And in microformats it would be shorter still:
> <span class="hreview">
>    <span class="item hrestaurant">
> 
> Can we just have in RDFa?
> 
> <span typeof="abc:Review">
>    <span rel="abc:itemReviewed" typeof="abc:Restaurant">
> 
> I can't see why not, but not sure what the parsing algorithm does
> here.

That last sample parses as:

	_:node1 a abc:Review .
	_:node2 a abc:Restaurant ; abc:itemReviewed ?x .

Where ?x is whatever's described inside that inner <span> element.

Why? You can understand it easier if we swap the attributes around...

    <span typeof="abc:Review">
        <span typeof="abc:Restaurant" rel="abc:itemReviewed">

But it can still be reduced to two elements in RDFa, just not the way
you've done it:

  <span typeof="abc:Review" rel="abc:itemReviewed">
      <span typeof="abc:Restaurant">

If you don't mind leaving out the rdf:type triple for the the
restaurant, you can reduce it to just one element:

  <span typeof="abc:Review" rel="abc:itemReviewed" resource="_:node1">

Here's a full restaurant review in RDFa 1.1:

 	<div
		vocab="http://example.com/review#"
		typeof="Review"
		property="text"
		rel="item">
		<a typeof="Restaurant"
			rel="url" href="http://example.net/"
			property="name"
			>Il Massimo Tramezzino</a> is great!
	</div>

Two elements. It corresponds to the following six triples in Turtle:

	@prefix : <http://example.com/review#> .
	[] a :Review ;
	   :text "Il Massimo Tramezzino is great!" ;
	   :item _:x1 .
	_:x1 a :Restaurant ;
	   :url <http://example.net/> ;
	   :name "Il Massimo Tramezzino" .

-- 
Toby A Inkster
<mailto:mail@tobyinkster.co.uk>
<http://tobyinkster.co.uk>

Received on Sunday, 12 December 2010 22:47:32 UTC