Re: function library summary and issues

On 2010-11-28, at 15:34, Andy Seaborne wrote:
> 
> On 28/11/10 15:14, Steve Harris wrote:
>>> >  If we require it, it seems natural to me to have:
>>> >
>>> >    CONCAT("a"@en, "b"@en) ->  "ab"@en
>>> >    CONCAT("a"@en, "b"@fr) ->  "ab"  (or error)
>>> >    CONCAT("a"@en, "b") ->  "ab"  (or error)
>> There are legitimate cases where you might have some literals without tags, and some with, and want to concatenate them, without having loads of logic.
> 
> (just sorting out the small details)
> 
> This can be achieved by using STR:
> 
> CONCAT(STR("a"@en), STR("b"@fr)) ->  "ab"
> 
> Is that too much logic?

That's not what I was thinking of as logic, but then you can't preserve the lang tag, if one applies. Might not matter though.

I was thinking of cases like:

<distilation> a :Process ;
              :name "Distillation", "Дестилация"@ru ;
              :produces "C2H5OH" .

SELECT (CONCAT(?name, " -> ", ?produces))
WHERE {
  ?process a :Process ;
           :name ?name ;
           :produces ?produces .
   FILTER(lang(?name) = "ru" || lang(?name) = "")
   FILTER(lang(?produces) = "ru" || lang(?produces) = "")
}

If we preserve lang tags then you'll get:

"Дестилация -> C2H5OH"@ru
"Distillation -> C2H5OH"

With STR() you'd lose the lang tag.

This might be nonsense scientifically speaking, the example I'm most familiar with is from signal processing, but it's hard to explain without a lot of context. I hope it makes the point though.

> GROUP_CONCAT does require use of STR becuase it uses fn:string-join.

That wasn't intentional though.

- Steve

-- 
Steve Harris, CTO, Garlik Limited
1-3 Halford Road, Richmond, TW10 6AW, UK
+44 20 8439 8203  http://www.garlik.com/
Registered in England and Wales 535 7233 VAT # 849 0517 11
Registered office: Thames House, Portsmouth Road, Esher, Surrey, KT10 9AD

Received on Sunday, 28 November 2010 16:31:30 UTC