- From: Axel Polleres <axel.polleres@deri.org>
- Date: Wed, 06 May 2009 16:47:21 +0100
- To: Jos de Bruijn <debruijn@inf.unibz.it>
- CC: Chris Welty <cawelty@gmail.com>, Sandro Hawke <sandro@w3.org>, public-rif-wg@w3.org
Jos de Bruijn wrote: > I can do this. Please assign me an action. Thanks! Axel, lacking bandwidth, but nonetheless trying to get my actions done this week. > > Jos > > Chris Welty wrote: >> So who will take up the issue of binding patterns for lists in Core? >> Axel? Jos? >> >> -Chris >> >> Sandro Hawke wrote: >>> I think the DTB section on RIF lists [1] is now ready for review for >>> Last Call. A few notes and questions: >>> >>> * I removed the func:delete function, because (a) it's >>> not in xpath, >>> (b) it's confusingly similar to func:remove, and >>> (c) it's trivial emulated: func:delete(L, >>> I) = func:except(L, func:make-list(I)) >>> >>> Some other functions are trivial emulated, but they're in xpath. I >>> think the bar is higher for us adding functions. This way, the >>> only ones we're adding are is-list, list-contains, make-list, and >>> get. list-contains is that only the can be emulated: >>> list-contains(L, I) iff count(index-of(L, I)) > 0 >>> but I think we specifically discussed that and agreed it was >>> worthwhile to have list-contains. >>> >>> Obviously, if someone actually wants it, I'm okay with putting >>> func:delete back in. >>> >>> * This section has examples. I could trivially suppress them for now >>> (this wiki-text is generated by a program [2]), if they bother >>> people. I like them. They have all been checked by my demo code >>> [3]. I'm willing to make similar examples for the rest of DTB for >>> a later edition. >>> >>> * I don't know the right binding pattern for list-contains. Above, I >>> was assuming it was (b,b), but I can imagine some utility to all >>> binding patterns, and at least (b,u) seems pretty reasonable. It's >>> not clear to me whether PR systems would do what I'm imagining with >>> that, but it'd be nice to write rules like: >>> >>> forall M ( if >>> list-contains(eg:list_of_friends, M) >>> then eg:is_friend(M) >>> ) >>> >>> Without it, I guess you'd need some much more cumbersome >>> tail-recursive rules like this: >>> >>> friend_list(eg:list_of_friends) forall L M ( >>> if friend_list(L) and >>> get(L, 0) = M >>> then eg:is_friend(M) >>> ) >>> forall L ( >>> if friend_list(L) and >>> count(L) > 0 >>> then friend_list(sublist(L, 1)) >>> ) >>> >>> PR folks, what do you want, there? >>> >>> I think that it. This complete ACTION-760. >>> -- Sandro >>> >>> >>> [1] >>> http://www.w3.org/2005/rules/wiki/DTB#Functions_and_Predicates_on_RIF_Lists >>> >>> [2] http://dev.w3.org/cvsweb/2009/rif/list_builtins.py >>> >>> > -- Dr. Axel Polleres Digital Enterprise Research Institute, National University of Ireland, Galway email: axel.polleres@deri.org url: http://www.polleres.net/
Received on Wednesday, 6 May 2009 15:48:24 UTC