- From: Seaborne, Andy <andy.seaborne@hp.com>
- Date: Sun, 20 Feb 2005 19:20:32 +0000
- To: Steve Harris <S.W.Harris@ecs.soton.ac.uk>
- Cc: 'RDF Data Access Working Group' <public-rdf-dawg@w3.org>
Steve Harris wrote:
> It seems logical. I havent implemented it so dont grok the problems yet,
> but I have a few minor concerns:
>
> On Sun, Feb 20, 2005 at 02:00:03PM +0000, Andy Seaborne wrote:
>
>>Proposal:
>>
>>1/ str(type literal) return lexical form for the typed literals, without
>>canonicalization
>
>
> Seems reasonable and useful.
>
>
>>2/ str(bNode) is an evaluation error
>
>
> Is it out of the question to get a string with the same form as a N3 bNode
> back? eg _:a. I'm not sure I'd argue for that, but I think that rejecting
> all solutions which feature str(?x) where ?x binds to a bNode will be
> inconvient and supprising in some cases.
Would the str(bNode) => "" regardless of label be useful? It avoids
rejecting the solution or requiring a sprinkling of
isBlank(?x) || str(?x) ...
to change the sense of ?x being a bNode.
Exposing the internal bNode label seems inappropriate (and, as the label has
no meaning except to distinguish bNodes) meaningless. Otherwise str() and
isBlank() could be used to find a bNode again :-)
BTW - does it say somewhere that || and && only evaluate the RHS if the LHS
is false/true respectively?
[ Looking in XQuery 1.0 I found:
http://www.w3.org/TR/xquery/#id-logical-expressions
"""
The following expression may return either false or raise a dynamic error:
1 eq 2 and 3 idiv 0 = 1
"""
]
>
>
>>3/ str(expression) is legal - change the grammar production
>
>
> This seems right, but interacts a bit oddly with 1/ in that str(?x) and
> str(?x + 0) are quite different, even when ?x is bound to an integer:
>
> ex:foo rdf:value "001"^^xsd:Integer .
>
> SELECT ?x WHERE (ex:foo rdf:value ?x) AND str(?x+0) != "999"
>
> Quite possbily not an issue, but ?x and ?x+0 seem similar to me.
Hadn't thought of that. It's different again if it were 0.0. There is a
distiction between value and lexical comparision.
str(?x+0) => "001"
then
ex:foo rdf:value "001"^^xsd:integer .
ex:bar rdf:value "01"^^xsd:integer .
SELECT ?x ?y
WHERE (ex:foo rdf:value ?x) (ex:bar rdf:value ?y)
AND str(?x) ne str(?y)
but
AND ?x == ?y
also
AND str(?x+0) eq str(?y+0)
>
>
>>The only other choice I see is that str() only apply (syntactically) to a
>>variable but is we have value-based constraints, this is a rather odd.
>
>
> Yes, that seems odd.
>
> - Steve
>
Andy
Received on Sunday, 20 February 2005 19:26:07 UTC