RE: Function Library TF (ACTION-75)

SPARQL already uses/requires XSD evaluation in FILTER functions and the F&O work provides URIs.  My take on the library issue is that we identity a core (small?) set of appropriate functions sufficiently useful in general without becoming an unwieldy burden on implementers.  Providing the test case in SPAQL the test framework would be useful help.

"appropriate" => nothing to do with sequences, which SPARQL does not have.

I took a quick pass over F&O to provide the list below.

I don’t think we should require support for any more datatypes -- but if we are adding any, I support adding required support for xsd:date.

=== SPARQL

Things that are missing: constructors 

IRI(string) -> IRI

Probably not :-)    BNODE(string) -> blank node. 

LITERAL(str) -> 
LITERAL(str, IRI) ->  (not strictly needed -- xsd:integer("123") does it.)
LITERAL(str, string) ->

With URIs
And also URIs for existing operators.

=== F&O

Things marked (()) are already in SPARQL as operator symbols.

A minimal approach would be to add the string operations - in my experience, these are the most requested.

((Already:
        6.2.1 op:numeric-add
        6.2.2 op:numeric-subtract
        6.2.3 op:numeric-multiply
        6.2.4 op:numeric-divide
        6.2.5 op:numeric-integer-divide
        6.2.6 op:numeric-mod
        6.2.7 op:numeric-unary-plus
        6.2.8 op:numeric-unary-minus
    6.3 Comparison Operators on Numeric Values
        6.3.1 op:numeric-equal
        6.3.2 op:numeric-less-than
        6.3.3 op:numeric-greater-than
))

    6.4 Functions on Numeric Values
        6.4.1 fn:abs
        6.4.2 fn:ceiling
        6.4.3 fn:floor
        6.4.4 fn:round
        6.4.5 fn:round-half-to-even

        
((        7.3.2 fn:compare))

        7.4.1 fn:concat

        7.4.3 fn:substring
        7.4.4 fn:string-length

        7.4.7 fn:upper-case
        7.4.8 fn:lower-case

        7.5.1 fn:contains     (collation form optional)
        7.5.2 fn:starts-with
        7.5.3 fn:ends-with

((
        9.2.1 op:boolean-equal
        9.2.2 op:boolean-less-than
        9.2.3 op:boolean-greater-than
        9.3.1 fn:not
))

Without requiring xsd:date:

((
        10.4.6 op:dateTime-equal
        10.4.7 op:dateTime-less-than
        10.4.8 op:dateTime-greater-than
))        

??
        10.5.7 fn:year-from-dateTime
        10.5.8 fn:month-from-dateTime
        10.5.9 fn:day-from-dateTime
        10.5.10 fn:hours-from-dateTime
        10.5.11 fn:minutes-from-dateTime
        10.5.12 fn:seconds-from-dateTime
        10.5.13 fn:timezone-from-dateTime

Received on Monday, 31 August 2009 14:36:32 UTC