- From: Nathan <nathan@webr3.org>
- Date: Tue, 04 Jan 2011 16:54:23 +0000
- To: Tim Berners-Lee <timbl@w3.org>
- CC: Manu Sporny <msporny@digitalbazaar.com>, RDFa WG <public-rdfa-wg@w3.org>
Hi Tim, Tim Berners-Lee wrote: > 2) I am confused a little in that these functions all return > URIs as as strings, so I am not sure how this fits with my previous comments > about having named nodes as first class objects, in which can one will need > routines to return them. > > How do you you use the API to add to the store the equivalent of this N3 > > <#Joe> foo:homepageURI "http://example.com/fred"; > foo:homepage <http://example.com/fred>. > > distinguishing the objects? In the API [1] it's the distinction between a NamedNode and a Literal rdf.createLiteral("http://example.com/fred"); // Literal rdf.createNamedNode("http://example.com/fred"); // NamedNode Then it's up to implementations on just how they expose these interfaces, for instance in one of my projects JS3 the approach would be: "http://example.com/fred" // NamedNode "http://example.com/fred".datatype = ""; // now a Literal Other approaches in the library include setting the default prefix to "http://example.com/" then doing ":fred", or using a prefix like "ex:fred" to get NamedNodes, and to get strings setting the datatype, the lang, or adding a simple method like toString() can easily address the type juggling side of things. These are just a few of many approaches, however any implementation (offering an abstraction layer) simply needs to decide whether strings which match the syntax of a URI/term/qname are taken to mean NamedNode or Literal by default, then offer a way to juggle between them. Or of course, whether to be more verbose and use the create* methods (which will always be exposed by any implementation of the API). [1] http://www.w3.org/2010/02/rdfa/sources/rdf-api/#overview Best, Nathan
Received on Tuesday, 4 January 2011 16:56:19 UTC