- From: Dave Beckett <dave.beckett@bristol.ac.uk>
- Date: Mon, 6 Jun 2005 15:25:49 +0100
- To: Eric Prud'hommeaux <eric@w3.org>
- Cc: RDF Data Access Working Group <public-rdf-dawg@w3.org>
On Mon, 6 Jun 2005 00:52:47 -0400, Eric Prud'hommeaux <eric@w3.org> wrote: > On Wed, Jun 01, 2005 at 11:01:40AM +0100, Dave Beckett wrote: > > > > So, I'd like a new operator CAST > > > > CAST(URI u, Unicode string s) returning what would be written as s^^u ... > I think the only functionality we get out of casting a binding to a > type with no defined support is the ability to compare it to another > binding of the same type. (If there is library support for this alien > type, then the query will only be useful on certain systems, and the > lack of interop on the query will make interop of casting moot.) Any > comparisons on an alien type will be strictly lexical; the same > functionality comes of casting both to str before comparing them. > > Can you think of a query that will be interoperable if cast were added > to the language that you can't do with casting to string? > ... I had a look what XQuery says on casting [[The name of a constructor function is the same as the name of the [XML Schema Part 2: Datatypes Second Edition] built-in type (see 5.1 Constructor Functions for XML Schema Built-in Types) or user-derived type (see 5.3 Constructor Functions for User-Defined Types) that is the target for the conversion, and the semantics are exactly the same as for a cast expression; for example," xs:date("2003-01-01") " means exactly the same as " "2003-01-01" cast as xs:date? ".]] -- http://www.w3.org/TR/xpath-functions/#casting However what I was thinking of was the second case, user defined which is in 5.3: [[For every atomic type in the static context (See Section 2.1.1 Static ContextXP) that is derived from a primitive type, there is a constructor function (whose name is the same as the name of the type) whose effect is to create a value of that type from the supplied argument. ...] -- http://www.w3.org/TR/xpath-functions/#constructor-functions-for-user-defined-types I think the crucial different from SPARQL is that XQuery allows declarations of types, so you can tell when you have a user-defined one versus a built-in one. Since SPARQL doesn't, having casting for user datatypes is not so useful. So given there was no other interest in CAST, I withdraw the suggestion. I note though, that XQuery does say that the constructor functions are named the same as the built-in type. We should make that note in SPARQL too. Calling them constructor functions and refering to the XQuery section would be good also. The words in SPARQL Query Table 11.2 at http://www.w3.org/TR/2005/WD-rdf-sparql-query-20050217/#tests don't mention this and it's not quite so clear in section 11.1 either. Dave
Received on Monday, 6 June 2005 14:31:20 UTC