- From: Richard Cyganiak <richard@cyganiak.de>
- Date: Thu, 2 Aug 2007 19:23:25 +0200
- To: Garret Wilson <garret@globalmentor.com>
- Cc: Tim Berners-Lee <timbl@w3.org>, Sandro Hawke <sandro@w3.org>, Story Henry <henry.story@bblfish.net>, Semantic Web <semantic-web@w3.org>
On 2 Aug 2007, at 16:14, Garret Wilson wrote: >> On 1 Aug 2007, at 18:32, Garret Wilson wrote: >>> 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? >> >> Why do you keep railing against rdf:datatype? It is merely an >> artifact of the RDF/XML syntax. It does not exist in the RDF >> abstract syntax (which you call the “RDF model”). > > What? If that were true, there would be no such things as typed > literals in the model, because once you suck RDF/XML or N3 into the > model and then re-serialize it, you'd just have plain literals again. Garret, you say things like “why do we need rdf:datatype” and “death to rdf:datatype”. rdf:datatype is an XML attribute in the RDF/XML sytnax. Nothing else. You quote RDF Concepts and Abstract Syntax. You will find that the document does not mention rdf:datatype. The only specification that mentions rdf:datatype is the RDF/XML spec. Now, of course, there *is* a distinction between typed literals and other resources in the RDF abstract syntax. So, when you say, “death to rdf:datatype”, do you mean “death to rdf:datatype” or do you mean “death to the distinction between typed literals and URIs in the RDF abstract syntax”? You know, it's kind of hard to follow your arguments when you mix up terms. [snip] > So that means, in an API, if I want to see if an object is a US > president or an integer, I would have to do the following: Do you? No. An API is just another surface syntax, and you can do whatever pleases you in an RDF API. The abstract syntax doesn't in any way limit or prescribe API design decisions. All it gives you is some well-defined terminology that you *can* use in your API. You can do all kinds of convenient shortcuts and use whatever terminology you like in your API, just as you can do all kinds of convenient shortcuts in your RDF serialization of choice. Discussions of APIs are not very relevant to questions about the RDF abstract syntax. No one is trying to stop you from unifying URIs and literals *in your API*. Which I think would be a good idea. But we are talking about the RDF abstract model here, don't we? To use an XML metaphor, the RDF abstract syntax isn't like the DOM (an API for XML), it's like the XML Infoset (an abstract data model for XML). > Resource resource=getResourceSomehow(); > if(resource instanceof Literal) //we can't look at the datatype > unless this is a literal > { > if(XSD_INTEGER.equals(((Literal)resource).getDataType())) > { > //this is an integer > } > } > else //if this is not a literal, we can check rdf:type > { > if(US_PRESIDENT.equals(resource.getProperty(RDF_TYPE))) > { > //this is a US president > } > } > > Do you see why I still claim that the RDF abstract syntax is > inconsistent, “Inconsistent” means “containing a contradiction”. The example above might demonstrate poor API design or a certain redundancy or awkwardness in the RDF abstract syntax. But I don't see a contradiction anywhere. Now you'll certainly say that this is all totally beside the point, and that you didn't really mean to say “inconsistent” but something else, and that we should consider your argument based on what you *mean*, not on what you *say*. Go ahead. Best, Richard > which you disputed in a separate email to this thread? Why must I > use two separate ways to check the types of literal resources and > non-literal resources? > >> >> And we wouldn't want anyone to mix up surface serialization syntax >> and abstract model in this thread, wouldn't we? ;-) > > We wouldn't indeed. ;) > >> >> (Just kidding -- I think I understood the point you are trying to >> make.) > > Thanks! It's nice to hear that once in a while. :) > > Best, > > Garret > > P.S. Does this mean I can keep railing against rdf:datatype? ;) >
Received on Thursday, 2 August 2007 15:23:33 UTC