- From: Richard Cyganiak <richard@cyganiak.de>
- Date: Mon, 14 Jul 2008 20:34:17 +0100
- To: Mark Birbeck <mark.birbeck@webbackplane.com>
- Cc: "Tom Heath" <Tom.Heath@talis.com>, "Kingsley Idehen" <kidehen@openlinksw.com>, public-lod@w3.org, semantic-web@w3.org
(Public notice: anyone sick of document-versus-thing debates and 303
redirects may safely skip this message! ;-)
On 14 Jul 2008, at 17:38, Mark Birbeck wrote:
> Let's flip the whole thing on its head, to begin with. Let's say that
> our RDF/XML document is referring to a car:
>
> <rdf:Description rdf:about="http://cars.org/123456">
> <dc:creator>BMW</dc:creator>
> <dc:date>2008-07-14</dc:date>
> ...
> </rdf:Description>
>
> That's fine, and we could have hundreds of cars in our RDF/XML
> document. However, let's stick to one car, and serve it from the same
> URL as its subject.
HTTP has an axiom: If you serve something at a URI, then the URI
identifies a document.
All the troubles you describe below are caused by your attempt to
publish the RDF/XML at the car's URI. This triggers the axiom and
turns the thing into a document. So now you have a resource that
evidently is a car and a document. If that causes problems, then DON'T
DO THAT.
As per [1], either use a hash URI like <cars.org/123456#it> for the
car, or configure a 303 redirect from <cars.org/123456> to, say,
<cars.org/123456.rdf> and serve the RDF/XML there.
Note that if you follow this advice and publish the RDF/XML at
<cars.org/123456.rdf>, then it's perfectly fine to add some extra
triples, such as
<cars.org/123456.rdf> dc:publisher "Richard" .
<cars.org/123456.rdf> foaf:primaryTopic <cars.org/123456> .
So: Yes, RDF/XML documents can talk about themselves.
But: Usually, in an RDF/XML document, you want to talk about
*something else* than the document itself, so give a different URI to
that other thing! That's what hash URIs and 303 URIs are for.
Best,
Richard
[1] http://www.w3.org/TR/cooluris/
> As you rightly say we can abbreviate the @about to
> refer to the 'current document':
>
> At http://cars.org/123456:
>
> <rdf:Description rdf:about="">
> <dc:creator>BMW</dc:creator>
> <dc:date>2008-07-14</dc:date>
> ...
> </rdf:Description>
>
> Hopefully that is still so far so good. Now let's add your publisher
> information:
>
>
> At http://cars.org/123456:
>
> <rdf:Description rdf:about="">
> <dc:creator>BMW</dc:creator>
> <dc:publisher>Richard</dc:publisher>
> <dc:date>2008-07-14</dc:date>
> ...
> </rdf:Description>
>
> Why does dc:publisher suddenly apply to the document and not the car?
>
> If it does, how did you (or your software) know to apply it that way?
>
> And even if you knew that dc:publisher applies to documents, (a) how
> do you know to apply it to the RDF/XML document, and not
> <http://cars.org/123456> (which might be a document), and (b) even if
> you can resolve that, how would you decide what to apply the dc:date
> to? Should it apply to the car or to the RDF/XML document?
>
> For these reasons I have always viewed RDF/XML as 'scaffolding' that
> holds triples which can be about *anything* you like...anything, that
> is, except itself. :)
>
> 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 Monday, 14 July 2008 19:35:06 UTC