Re: RDF's curious literals

Tim,

Thanks for the explanation of the distinction between "things" and 
"terms", and "URIs" and "strings", which are relevant to the issue at 
hand. Now, going back to directly attack the issue at hand, I have a 
couple of responses:

Tim Berners-Lee wrote:
>
> Now, Terms in the the language. I'll use N3, but other RDF-based 
> languages go similarly.  
> Things are identified in the language by symbols. RDF languages use 
> URIs as symbols.
> Yes, we could have used specific URIs to identify the numbers, and we 
> could indeed have had
> a common shared space like  http://numers.info/int/123 as you suggest.
> But, given that (a) it would have meant a lot of consensus-building to 
> pick the URI suffixes
> and that (b) very many computer languages used a specific syntax to 
> refer to those Things which
> are Numbers, including perl and python and SQL and XQ and so on, we 
> went with the flow and 
> put in a syntax for numbers - ints, decimals, floats, and 
> strings. ( Weren't you the one earlier saying how important it was to 
> use synatx people were used to?).

Indeed I was. I fact, I'm advocating this even more than in your 
paragraph above. I don't want to write "123"^^xsd:integer and 
"123"^^xsd:string---I want to use 123 and "123", respectively.

But just as we shouldn't confuse "things" and "terms", we shouldn't 
confuse "syntax in the serialization or query language" and 
"representation in the model". We both agree that, even if I write 123 
in N3, it gets turned into "123"^^xsd:integer and creates something 
called an rdfs:Literal. But if I were to use 
<http://numers.info/int/123>, I'd get a normal resource that wasn't an 
rdfs:Literal.

Assuming I write 123 and "123" in N3, how is the RDF model any better 
with "123"^^xsd:integer than with <http://numers.info/int/123> ? What 
value does rdfs:Literal bring? Didn't just as much consensus-building go 
into building the atrocious string "123"^^xsd:integer as it would have 
went into creating <rdfdata://xsd/integer/123> ?


> So are Numbers (say, or DateTimes, or Stings) a "different kind of 
> Resource"?  Well, they do have certain properties which are 
> particularly convenient.  Most of the information out there involves 
> lots of them.   They end up occurring in different topologies in real 
> data.    It is often more interesting to ask about all statements 
> about  a person ex:Joe than all statements about the number 2, as 2 
> gets reused so often.  This affects how a store might index them.  But 
> they are Things.   (In OWL DL there is a need for the sake of DL 
> reasons to separate datatype properties and object properties, but 
> that is an artifact of those reasoners and a limitation of OWL DL).
> Numbers have the interesting property, for example, that, when you use 
> the conventional notation terms for them, you can tell that two terms 
> (like '123' and '124') identify different things by just operating on 
> those terms.   Typically, people often read and write numbers, but in 
> a good UI shouldn't have to read and write URIs, doing drag and drop 
> of symbol-icons instead. There are lots of ways in which these 
> Numbers, DateTimes, etc are special in practice, from arbitrary other 
> Things in the universe.

So I agree (I agree! I agree!) that it's convenient to use the strings 
123 and "123" to identify an integer and a string, respectively. Please 
believe that I agree with this. Please! I'm begging of you!

But this begs the same questions that no one seems to want to answer 
(other than to say simply, "they are needed"):

   1. Even if we prefer to write 123 and "123", why is identifying a
      resource in the RDF model by "123"^^xsd:integer any better than
      identifying it by <rdfdata://xsd/integer/123> ?
   2. Even if we prefer to write 123 and "123", why should that generate
      an rdfs:Literal in the model just because we used a shortcut for
      writing the resource in N3? What value does rdfs:Literal bring us?
      How would we miss it if it were gone?
   3. Even if we prefer to write 123 and "123", why do we need
      rdfs:datatype when we can simply use rdf:type set to xsd:Integer?


Garret

Received on Wednesday, 1 August 2007 16:32:22 UTC