- From: Ivan Herman <ivan@w3.org>
- Date: Sun, 23 Dec 2007 13:34:46 +0100
- To: Mark Birbeck <mark.birbeck@formsPlayer.com>
- CC: Ben Adida <ben@adida.net>, Manu Sporny <msporny@digitalbazaar.com>, RDFa <public-rdf-in-xhtml-tf@w3.org>
- Message-ID: <476E55E6.4020005@w3.org>
Mark, thanks for the explanation but... with all due respect, that may have a historical interest, but it is not an explanation in terms of the current features of RDFa. The issue is how can we properly give a good mental model for the user or, put it another way, which solution solves a majority of use cases. The rest, as they say, is history:-) I have just reworked my foaf.html file to abide to the new rules (change in @src, new chaining rules, etc) and I also tried to live with the @instanceof rule as they have been described. Sure, of course, in many cases they worked (I may have had to move the @instanceof from a parent to a child, but that is fine). But I did hit a situation which I could not properly solve. Here is what I wanted to express: <http:://www.ivan-herman.net/Ivan_Herman> foaf:holdsAccount <http://www.facebook.com/p/Ivan_Herman/555188827>; foaf:foaf:publications <http://www.ivan-herman.net/professional/CV/publist.rdf>. <http://www.facebook.com/p/Ivan_Herman/555188827> rdf:type foaf:OnlineAccount; foaf:accountServiceHomepage <http://www.facebook.com> foaf:accountName "555188827". And here is the only way I found to express it succinctly: <div about="http:://www.ivan-herman.net/Ivan_Herman"> <p rel="foaf:foaf:publications" resource="http://www.ivan-herman.net/professional/CV/publist.rdf"> Some text here </p> <span rel="foaf:holdsAccount" resource="http://www.facebook.com/p/Ivan_Herman/555188827"> <span rel="rdf:type" resource="foaf:OnlineAccount"> </span> <a rel="foaf:accountServiceHomepage" href="http://www.facebook.com">facebook</a> (acc. <span property="foaf:accountName">555188827</span>) </span> </div> wherever I tried to put an @instanceof for the online account it would have created a new bnode ie, create a different graph. Even having it as a separate element did not work, so... I had to fall back on an explicit rdf:type. Had @instanceof behave with the @rel semantics, the code could be: <div about="http:://www.ivan-herman.net/Ivan_Herman"> <p rel="foaf:foaf:publications" resource="http://www.ivan-herman.net/professional/CV/publist.rdf"> Some text here </p> <span rel="foaf:holdsAccount" resource="http://www.facebook.com/p/Ivan_Herman/555188827"> <a instanceof="foaf:OnlineAccount" rel="foaf:accountServiceHomepage" href="http://www.facebook.com">facebook</a> (acc. <span property="foaf:accountName">555188827</span>) </span> </div> Did I miss something obvious? I know that whatever we do, there will be awkward use cases and we will have to live with that. Ie, if the whole group is convinced about the validity of that @instanceof model then, obviously, that will be the one and I promise to shut up at last:-). But I must say that at the moment I do not have a convincing 'story' to tell at, say, an RDFa tutorial on why this is the natural way of doing things... Ivan Mark Birbeck wrote: > Hi Ivan, > >> - the rules that you describe above have the merit;-) to be >> clear. I may >> have missed it before, but that is the first time I see them so >> clearly >> stated; thanks!!!! >> >> - but... why? I mean: why is it necessary to introduce an >> extra rule? >> Why isn't it good enough to equate it to the behaviour of >> @rel and that >> is it? > > I'm pretty sure I agree with everything Ben has said, and I think he > has explained it particularly clearly. So I'll just look at one aspect > of what you say, which is that @instanceof is 'equivalent' to a @rel > with rdf:type as its value, and why do we need an additional rule. It > isn't actually the case that they are equivalent...at least not in > terms of the evolution of the idea. > > This was mentioned a few times in my long emails to try to explain > this whole thing, which probably got lost. (I know...they were very > long emails...) But the evolution of RDFa was such that at one point > we had this: > > <div about="A"> > <link rel="[B]" href="C" /> > </div> > > We decided at a certain point that link/meta as children of an element > would 'attach' a property to the element they were a child of, and if > the element they were a child of had no subject, one would be created. > In other words, we made link/meta children behave in a way that was > different to, say, span. > > Which means that this: > > <div> > <link rel="[B]" href="C" /> > </div> > > is equivalent to this: > > <div about="_:a"> > <link rel="[B]" href="C" /> > </div> > > but this is not: > > <div> > <div rel="[B]" href="C" /> > </div> > > Now, you might say 'hang on...I've never heard of this!', and you > might be right. :) > > The reason is that although we never 'dropped' this behaviour of > link/meta in the 'big picture', when we (Ben, I think) discovered that > some browsers relocate any link/meta elements that appear in the body > to the head, we had to say that we couldn't support this feature, at > least for XHTML+RDFa. > > But we've not abandoned this feature in principle, and for example, it > is still in XHTML 2+RDFa. > > Anyway...the point is that although we are unable to support this > feature in XHTML+RDFa now, the fact is that @instanceof (and @class > before it) remains a shorthand for it. Which means that this: > > <div instanceof="C"> > ... > </div> > > is equivalent to this: > > <div> > <link rel="rdf:type" href="C" /> > </div> > > which as I said, is the same as this: > > <div about="_:a"> > <link rel="rdf:type" href="C" /> > </div> > > This consistency is quite important, because I think we'll find going > forward that there are a number of situations where 'creating a new > item and giving it properties' is the right thing to do with certain > types of predicates. > > (I won't go into the rationale here, for why link/meta were made to > behave differently to span/div, etc., but it's quite an important idea > in RDFa, and it solved a lot of problems that were extremely tricky > before we made that change. These problems are not obvious in > XHTML+RDFa, but they definitely are in XHTML 2+RDFa, and this solution > turned out to be extremely helpful there.) > > Regards, > > Mark > -- Ivan Herman, W3C Semantic Web Activity Lead Home: http://www.w3.org/People/Ivan/ PGP Key: http://www.ivan-herman.net/pgpkey.html FOAF: http://www.ivan-herman.net/foaf.rdf
Received on Sunday, 23 December 2007 12:35:08 UTC