RE: ISSUE-76: If we fixed namespaces, does RDFa still have problems?

Hi Manu,

Thanks for the clarifications. I think that helps quite a bit.

I should note that I don't personally have any particular attachment to either RDFa or Microdata - however I do think it is very important that *something* be widely adopted on the web. It seems that a lot of people think that RDFa has problems that would make it hard for unskilled web authors to use. I don't feel I understand RDFa well enough to have a strong opinion on whether RDFa is bad or not, but I think it is useful to try to understand why people dislike it, and whether the problems are easily fixable - since having Microdata as a competing spec obviously has its own costs.

That said, I think that, if RDFa has usability problems compared to Microdata then this should be taken very very seriously. Whatever semantic markup is adopted for the web is likely to be used by many many individual authors, many of whom will not have read a spec and won't know what RDF is, and so even a tiny improvement in usability could have a very important impact on adoption. While there is obviously a cost in having vendors support a new 


Now for some comments:

[snip]

> RDFa 1.1 will allow for the use of RDFa without declaring any
> namespaces
> and using vocabularies and keywords instead. For example:
> 
> <p vocab="http://example.org/foaf.html" about="#robert"
> typeof="Person">
>    My name is <span property="name">Robert Ennals</span>.
> </p>

What is the scope of a vocab? If it is document scope, then won't you get the same problem as before, where names don't have consistent meanings. If it is node-scope then won't people get frustrated typing them in?

Personally, I'd like to have all the common types and properties be part of the default namespace, and just write:

<p type="Person">
   My name is <span property="name">Rob Ennals</span>
</p>

> > *         RDFa requires you to declare a type to get a blank node.
> Does
> > this matter? Could it be easily fixed?
> 
> You don't always need to declare a type to get a blank node... you can
> create named blank nodes:
> 
> <span about="_:bnode" property="foaf:name">Robert Ennals</span>

Yeah. You are right. But typing about="_:bnode" seems pretty awkward for end users, especially given that, in the microdata usage models, this is something we expect to see almost everywhere. Microdata's "itemscope" seems much more friendly.

A more general issue is that Microdata seems to be a much easier spec to understand, at least for the microdata use cases. I was able to feel comfortable using Microdata after a couple of minutes scanning the examples. I still don't feel I fully understand RDFa after having spent about an hour reading the spec.

It may be that the right solution for this is to define a sensible subset of RDFa that users will typically want to use on the web, and then document it very clearly, in the way that Microdata has been documented.

[snip]

> > *    RDFa requires an extra layer of indirection when putting one
> > node inside another. This is because when a node has a @rel attribute,
> > the node is the subject if the node has a type. Does this matter?
> > Could it be easily fixed?
> 
> I don't quite follow. Could you give a bit more detail? Specifically,
> could you define what you mean by "when putting one node inside
> another"? Also, please clarify what you mean by "the node is the
> subject if the node has a type".

Sorry. I should have been more clear.

In Microdata, a common idiom is to write something like the following:

<div itemscope>
   <span itemprop="name">Rob</span>
   <div itemprop="knows" itemscope>
      <span itemprop="name">Manu</span>
      <span itemprop="special-power">RDFa wizardry</span>
   </div>
</div>

This declares two blank nodes, one for me and one for you, and declares that you are my friend.

In RDFa I believe I would have to write:

<div about="_:bnode" vocab="whatever">
   <span property="name">Rob</span>
   <div rel="knows"> -- This node isn't needed in Microdata 
     <div about="_:bnode2">
       <span property="name">Manu</span>
       <span property="special-power">RDFa wizardry</span>
     </div>
</div>

In RDFa I believe I can't put the @rel on _:bnode2, because then it would be describing a property of _:bnode2. 

This is something that I would expect web users to frequently get wrong.

Obviously, I can avoid the extra node by referring to _:bnode2 directly, rather than using chaining, but that gets icky.

[snip]


-Rob

Received on Friday, 11 December 2009 20:15:10 UTC