- From: Seaborne, Andy <andy.seaborne@hp.com>
- Date: Mon, 13 Mar 2006 14:58:05 +0000
- To: Arjohn Kampman <arjohn.kampman@aduna.biz>
- CC: public-rdf-dawg-comments@w3.org
Arjohn Kampman wrote: > Most of the built-in calls defined in the grammar in "[57] BuiltInCall" > operate on arguments of type Expression, which includes boolean and > mathematical operations. Most of these built-in calls, however, only > produce results when operating on IRIs, literals and/or blank nodes. > IMHO, it would be better to enforce this through the grammer, preventing > people from writing expressions that are correct syntactically, but not > semantically, like "lang( 3 + 4 )" and "isBlank(?var = foo:bar)". > Changing this production rule to the following should prevent such > expressions: > > FunctionOrVar ::= IRIrefOrFunction | Var > > BuiltInCall ::= 'STR' '(' FunctionOrVar ')' > | 'LANG' '(' FunctionOrVar ')' > | 'LANGMATCHES' '(' FunctionOrVar ',' String ')' > | 'DATATYPE' '(' FunctionOrVar ')' > | 'BOUND' '(' Var ')' > | 'isIRI' '(' FunctionOrVar ')' > | 'isURI' '(' FunctionOrVar ')' > | 'isBLANK' '(' FunctionOrVar ')' > | 'isLITERAL' '(' FunctionOrVar ')' > | RegexExpression > > RegexExpression ::= 'REGEX' '(' FunctionOrVar ',' String ( ',' String )? ')' > > > Considering that the spec is already in Last Call, I hope this comment > doesn't come too late. > > Regards, > > Arjohn > Arjohn, I forwarded this to the working group with some discussion: http://lists.w3.org/Archives/Public/public-rdf-dawg/2006JanMar/0418.html The working group discussed this but there was no enthusiasm for such a change. For the query writer, trying to give some type safety at this one point when there is no just assurance from elsewhere in the grammar, did not seem like a significantly useful change. The grammar would be noticeable more complicated because it isn't just FunctionOrVar each time but FunctionOrVar + appropriate kind of literal. For the implementer, these built-ins still have to be able to deal with the full set of RDF terms being passed to one of the built-ins. Any implementation can choose to issue warnings for this situation, or any other construction in a query, that the implementer wishes to bring to the application writer's attention. Such a pass over the query after parsing is a common way to do this rather than in the parser. I hope this addresses your comment - please let us know if it does. You can help our issue tracking system by prefixing the subject of your response with [CLOSED] (where this subject has [OK?]). Andy
Received on Monday, 13 March 2006 14:58:30 UTC