W3C home > Mailing lists > Public > semantic-web@w3.org > August 2007

Re: RDF's curious literals

From: Garret Wilson <garret@globalmentor.com>
Date: Wed, 01 Aug 2007 08:18:25 -0700
Message-ID: <46B0A441.4090302@globalmentor.com>
To: Jeremy Carroll <jjc@hpl.hp.com>
CC: Tim Berners-Lee <timbl@w3.org>, Semantic Web <semantic-web@w3.org>

Jeremy Carroll wrote:
> Yes, of course, literals are just another sort of resource.
> And yes the design decision to give them a privileged position (i.e. 
> not requiring the use of the URI namespace), can be questioned.

Agreed.

> But the basic rationale for having the class rdfs:Literal and some of 
> the key subclasses such as strings, lang-strings, xsd:integer etc. is 
> based on engineering utility. Almost all SW applications need to use 
> strings, and natural-language strings, and integers etc. Thus it is 
> convenient to standardize on a representation for these.

Oh, I agree here as well. I think it's easier to talk about the integer 
123 by simply writing 123. (I don't even want to write 
"123"^^xsd:integer---that's too much for me.) And I want to talk about 
the string "123" by simply writing "123". (I don't even want to write 
"123"^^xsd:string---why would I want to do that?) I'd like to simply 
write 123 and "123" in my RDF/XML and in my N3. I'd like to make my 
SPARQL queries using 123 and "123". That's a pretty standardized 
representation, and I'm all for it 100%.

Now, how do we represent those thing in the RDF model? Do different sort 
of things get placed in our RDF data just because we have shortcut 
representations for them? I don't think so.

RDF already uses URIs to identify resources. So what if we all decide 
that the URI prefix "http://example.com/xsd/integer/" will be used to 
identify integers, and that the URI prefix 
"http://example.com/xsd/string/" will be used to identify strings? So 
you and I can go ahead and write 123 and "123" all day long. In the 
model, resources identified by URIs <http://example.com/xsd/integer/123> 
and <http://example.com/xsd/string/123>, respectively, will be created 
by the processor. I can query for 123 and "123", and the query engine 
will turn my query syntax into a query for 
<http://example.com/xsd/integer/123> and 
<http://example.com/xsd/string/123>, respectively.

We're using standardized representations in our serialization and query 
syntax. We're using consistent representations in the model. The world 
is happy.

So now that I've agreed with your points, let me say that your points 
beg certain questions, which perhaps you can answer:

   1. Where in all of this is there a need for the rdfs:Literal class?
   2. Where in all of this is there a need for rdf:datatype?
   3. Where in all of this is there a need for a literal to be
      identified *in the model* as something other than a URI?


Garret
Received on Wednesday, 1 August 2007 15:18:41 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 21:45:17 GMT