- From: Axel Polleres <axel.polleres@deri.org>
- Date: Fri, 01 Feb 2008 22:01:55 +0000
- To: RIF WG <public-rif-wg@w3.org>
In the last Teleconf, I was asked to try o separate the issues coming up about fct vs predicate forms for builtins. Let's go: I think that there were several questions: a) whether to allow only predicates, and no predicates, i.e. generally model functions as predicates. For explanation, any n-ary built-in function (with a single return value) f(p1, ... , pn) in a RIF rule head or body, can be rewritten to an n+1-ary predicate as follows: Head :- ..., Pred(...,f(p1, ... , pn),...),... . -> Head :- ..., Pred(...,Val_f,...),..., P_f(p1, ... , pn,Val_f). This also shoud work in the rule head: Pred(...,f(p1, ... , pn),...) :- ..., . -> Pred(...,Val_f,...) :- ...,,..., P_f(p1, ... , pn,Val_f). so, theoretically, built-in functions are not needed, although they provide more concise writing, especially, when they are nested, imagine: Head :- ..., Pred(...,p1+p2*p3-p4,...),... . te rewriting looks farily ugly: Head :- ..., Pred(...,Val_3,...),... Mult(p2,p3,Val_1), Add(p1,Val_1,Val_2) Minus(Val_2,p4, Val_3). An "intermediate" proposed solution in the last teleconf was to have one special predicate to evalutate (possibly nested) functional terms similar to the "is" predicate in Prolog. b) whether the same built-in should be (dis)allowed to have both a function and a predicate version. This is, if we allow both, built-in functions and predicates, whether there should be both a built-inpredicate And functions for the same purpose. That was all as far as I could get it. Additions/Clarifications welcome before the next Telecon! Axel -- Dr. Axel Polleres email: axel@polleres.net url: http://www.polleres.net/ rdf:Resource owl:differentFrom xsd:anyURI .
Received on Friday, 1 February 2008 22:03:15 UTC