- From: Richard Cyganiak <richard@cyganiak.de>
- Date: Wed, 1 Aug 2007 10:32:07 +0200
- To: Garret Wilson <garret@globalmentor.com>
- Cc: Story Henry <henry.story@bblfish.net>, Tim Berners-Lee <timbl@w3.org>, Semantic Web <semantic-web@w3.org>
On 1 Aug 2007, at 01:49, Garret Wilson wrote:
> So let me state this another way: to say that non-literal resources
> use URIs as identifiers and literal resources use strings as
> identifiers is a false dichotomy. RDF uses strings for all its
> identifiers. It's just that for non-literals, these strings conform
> to a format called URI
That's simply not true.
<http://dbpedia.org/wiki/George_W._Bush>
and
"http://dbpedia.org/wiki/George_W._Bush"
do not identify the same resource. The first identifies a person, the
43rd president of the U.S.. The second identifies a string of Unicode
characters that happens to conform to the URI syntax.
Best,
Richard
> so as to reduce clashes. There's no reason why we can't have the
> strings identifying literals conform to this same format as well by
> pre/postpending the appropriate information--- perhaps a
> "rdfliteral" prefix and a ";datatype" postfix. Then we use URI-
> conforming strings for everything.
>
>> Still it is convenient to have literals, you have to admit.
>> Because when you see one, you know how to deal with it
>> immediately. And we are engineers, so we do like to have some
>> conveniences.
>
> I have no idea what this statement means. I think it is convenient
> to have integers. I think it is convenient to have strings. I think
> it is convenient to have boolean values. When I see any of them, I
> know how to deal with with them automatically. But what does this
> have to do with literals?
>
> You may be saying, "when I see the strings '123', '\"123\"', and
> 'true', I know instantly that these are an integer, a string, and a
> boolean value." (Now you're back to JSON.) And that's fine---have
> your processor automatically turn "123" into an integer, "\"123\""
> into a string, and "true" into a boolean. But that doesn't mean
> that I should get a special thing called a literal in my data
> model. I should get three resources in my data model, perhaps
> identified by URIs <rdfliteral:123;xsd:integer>, <rdfliteral:
> 123;xsd:string>, and <rdfliteral:123;xsd:boolean>.
>
> If you want to have a serialization format and/or a library that
> gives you special shortcuts for working with integers, strings,
> booleans, or even US presidents, that's great. But none of those
> shortcuts should affect the model.
>
>>
>>> But wait---if I decide that it's easier to represent this
>>> resource using a string, I could create the resource "George W.
>>> Bush"^^foaf:Person.
>>
>> Please have a closer look at N3, or else we will keep repeating
>> the same points.
>
> Point well taken regarding the meaning of ^^ in N3...
>
> ...but please note that my point here is that there is no need for
> rdf:datatype or some odd ^^ indirection (or some special
> xsd:integer property that some anonymous subject has) if literals
> are just resources. In the example above, I'm saying that I want an
> rdf:type of foaf:Person for George W. Bush, and that identifying
> him by a string shouldn't change how he appears in the graph.
>
>> Also to refer to people via a String is not helpful, because they
>> can have different names. Since the
>> following is necessarily false
>>
>> "George W. Bush" = "George Bush" .
>
> But that's just one particular domain (which I could rectify by
> using an rdf:datatype with a controlled lexical vocabulary for US
> presidents), and it's missing my point. Let's talk about planets in
> our solar system. I can identify two planets, <eg:Planet
> rdf:about="http://example.com/planets/mars"/> and <eg:Planet
> rdf:about="http://example.com/planets/uranus"/>, and
> "Mars"^^eg:planet and "Uranus"^^eg:planet. These both identify the
> same two planets, but why is Uranus (hee hee) a normal resource in
> one and a literal in the other? Why does the first form have an
> rdf:type and the second form have some sort of odd indirect-
> reflexive rdf:datatype? This shouldn't be the case.
>
>> That is ok. A person can have two name relations different
>> strings. URIs are Universal Names.
>
> Every ordered pair (lexical form, rdf:datatype URI) is a Universal
> Names, too, just as much as a URI is.
>
> Let me state the whole case differently: URIs don't clash because
> they have some sort of domain specifier (hey, it's even called
> domain---fancy that!) prepended to the string (e.g. "http://
> example.org/" prepended to "string"). RDF typed literals don't
> clash because they have a *separate* string (an rdf:datatype URI)
> that is a domain specifier for the string. So there is no
> difference between URI domain+string and rdf:datatype+lexical form.
> So why not combine the lexical form and the datatype, resulting in
> a URI, and bring literals back into the resource fold?
>
> Garret
>
>
Received on Wednesday, 1 August 2007 08:32:55 UTC