- From: Steven Pemberton <Steven.Pemberton@cwi.nl>
- Date: Thu, 16 Jul 2009 18:02:51 +0200
- To: "Mark Birbeck" <mark.birbeck@webbackplane.com>, "Julian Reschke" <julian.reschke@gmx.de>
- Cc: "Manu Sporny" <msporny@digitalbazaar.com>, "RDFa Developers" <public-rdf-in-xhtml-tf@w3.org>, "HTMLWG WG" <public-html@w3.org>
Thanks for describing this so carefully Mark. However, I have to say I disagree. If a document has a statement <link rel="profile" href="http://example.com/profile"/> and a RDFa processor uses this information in the processing, it doesn't mean that the resulting graph can't or shouldn't contain <> <http://www.w3.org/1999/xhtml#profile> <http://example.com/profile> By the time you have the graph, you have done the RDFa processing. The statement "This document uses a profile of http://example.com/profile" is true, whether or not the profile has been used in the generation of the graph. There is no contradiction, Gödelian or other. Best wishes, Steven On Tue, 14 Jul 2009 11:06:59 +0200, Mark Birbeck <mark.birbeck@webbackplane.com> wrote: > Hi Julian, > >> I have one question with respect to >> <http://dev.w3.org/html5/rdfa/rdfa-module.html#document-conformance>: >> >> "There has also been strong support from the RDFa Task Force that the >> profile attribute should be retained in HTML5, as it provides an >> "out-of-band" mechanism for signaling that the document contains RDFa. >> The >> profile attribute may also be used extensively to provide [RDFa >> Profiles] >> support. Adding profile to the list of rel values and using it to signal >> that the document contains RDFa places document processing instructions >> into >> the RDF graph, which is problematic." >> >> I'm with you in that I'd like to see head/@profile be carried over from >> HTML4, but I have trouble understanding the last sentence: >> >> "Adding profile to the list of rel values and using it to signal that >> the >> document contains RDFa places document processing instructions into the >> RDF >> graph, which is problematic." >> >> How is that different from other link relations, such as "stylesheet", >> "nofollow", whatnot? > > I'm struggling to think of a good metaphor here...many apologies. > > The core issue is that if you need some information to guide the > processing of a graph, then that information shouldn't be in the graph > itself, but should be in some kind of 'meta' place. > > So say we wanted to create the following triple (a graph is a > collection of triples, so this is a graph as well): > > <#me> <http://xmlns.com/foaf/0.1/name> "Julian" . > > This graph means that: > > There is something with the name of '#me'... > > ...and it has a property of 'http://xmlns.com/foaf/0.1/name'... > > ...and the value of that property is 'Julian'. > > Now, for convenience, we might map the URI > 'http://xmlns.com/foaf/0.1/' to a token of 'foaf', so that we can use > it in places. By convention, a mapping like this would take the > following form: > > <#me> foaf:name "Julian" . > > But note that what this 'means' is still the same as the first triple: > > <#me> <http://xmlns.com/foaf/0.1/name> "Julian" . > > It's merely a convenience that we have 'foaf' as a token, and doesn't > change the underlying meaning. > > Anyway, the question is, where do we put the information that tells us > about this mapping? Could we put it into the graph itself?: > > <http://xmlns.com/foaf/0.1/> <http://example.com/mapsto> "foaf" . > <#me> foaf:name "Julian" . > > (Remember, a graph is a collection of triples, so this is now a graph > with two triples.) > > The problem with putting information like this, that guides > processing, into the graph, is that we create a lot of potential for > confusion. We now have values in our graph that are supposed to be > plucked out of the graph before the graph can be understood; a > processor would have to scan this graph for values of 'mapsto' before > it could understand the graph...making it inherently brittle. > > In other words, to process the graph, you have to first process the > graph! > > (I'm not a mathematician, but I wouldn't be surprised if Godel would > have something to say about this on a theoretical level.) > > So, by convention, we take these mappings out of the graph: > > @prefix foaf: <http://xmlns.com/foaf/0.1/> > > <#me> foaf:name "Julian" . > > Now it's clear that the information about the mapping of 'foaf' is > distinct from the graph itself; now a processor would know that it had > to load these mappings first (anything beginning with @prefix), before > using those mappings to help understand the graph. > > I realise this probably seems like we're in > counting-angels-on-the-head-of-a-pin territory, but the key thing is > that when you have a collection of data -- be it a relational > database, a CSV file, or some RDF -- you invariably need something > outside of that data that tells you how to process it. And if you mix > this information in with the data, then you have the problem that in > order to process the data, you first need to process it. > > I've used prefix mappings to make the case, but @profile also falls > into this category. > > A value of @profile on <head> has always been defined in HTML as a way > to instruct a processor about how to interpret tokens that are used in > a document. The mechanism itself has never been defined before, but > the fact remains that the attribute is there for that express purpose. > > In RDFa we'd like to use this attribute to be very precise about the > meanings of tokens used in your graphs, and it's ideal, because it's > 'out-of-band', in the sense that the information about processing is > not in the resulting graph. > > A value of @rel="profile" on the other hand may _seem_ to amount to > the same, but it would fall into the same category as our 'foaf' > example above, in that it would require special pre-processing of the > graph before you can know how to interpret the graph. > > Of course, you could say that an RDFa processor shouldn't put triple's > that use @rel="profile" into the graph, but then you no longer have a > generic parser. And you can also be sure that in a few weeks time, > someone will be proposing another value to go into the list of 'values > to do special processing with', and before you know it, we have a > right mess on our hands. > > One last thing; the proposal is to use @profile to point to another > document, which might in turn contain further RDFa, telling you how to > map the tokens. That may seem at first sight to fall foul of the same > issue I'm describing, but in fact it's ok -- the data loaded from > subsequent graphs is still out-of-band to the 'primary' graph. > > So the key point is not 'don't use RDFa to describe how to interpret > RDFa' -- the key message here is that 'instructions on how to process > a graph cannot go into the graph itself'. > > Regards, > > Mark >
Received on Thursday, 16 July 2009 16:03:54 UTC