- From: Jos de Bruijn <debruijn@inf.unibz.it>
- Date: Mon, 10 Dec 2007 14:04:51 +0100
- To: axel@polleres.net
- CC: public-rif-wg@w3.org
- Message-ID: <475D3973.9000603@inf.unibz.it>
> a summary of options I added in the end of the built-ins wiki page: > > http://www.w3.org/2005/rules/wg/wiki/List_of_BLD_built-ins > > Please check the new Section > "Syntactic Representation of built-ins in RIF" > on that page. > > 3 options are discussed and pros and cons listed, examples in > representation syntax and XML syntax given, as far as possible: > > a. No special representation: IRIs are sufficient to identify built-ins The proposal mentioned on the page of not allowing the use of IRIs for the representation of logical functions seems to me an absolute choose one. We are creating a language for exchange *over the Web*; so, the use of IRIs will presumably be a lot more prevalent than the use of local symbols. In fact, a lot of people (including me) have indicated that they do not need local symbols at all. Furthermore, we might want to allow people to use built-ins which are not defined by RIF, without requiring them to specify another RIF dialect. If we decide to allow that, then it is clearly necessary to distinguish built-in predicates from other predicates, to indicate that people really need to understand the built in before they can evaluate it. In general, adopting this option would violate the following resolution of F2F8: "RESOLVED: no invisible extensions (official or user extensions)" > b. Modules I would argue against this option for three reasons: - it puts an additional burden on the user; he has to specify a module whenever he wants to specify a built-in - I expect that putting modules on the critical path for phase 1 will introduce a significantly delay - I see no benefit in the use of modules for built-ins; it merely seems to impede the flexibility > c. Special syntax to distinguish evaluated predicates from logical > predicates I did not really understand the proposal. There is a production for ExtTerm, but it is not clear how this fits in the overall syntax. I assume that the atomic and term productions are meant to be changed as follows: ATOMIC ::= Uniterm | Equal | ExtTerm TERM ::= Const | Var | Uniterm | ExtTerm This seems to me the most elegant and flexible solution, which puts the least burden on the user. One small comment: I do not find the "&"-prefix solution very elegant. It suggests that "&" is a part of the name, or a modifier of the name, where as it is meant as a modifier of the complete term. I would rather propose: ExtTerm ::= ' BuiltIn( ' Uniterm ' ) ' so that it is clear that the modifier applies to the complete term. Best, Jos > > comments welcome, > Axel > -- Jos de Bruijn debruijn@inf.unibz.it +390471016224 http://www.debruijn.net/ ---------------------------------------------- If you live to be one hundred, you've got it made. Very few people die past that age. - George Burns
Received on Monday, 10 December 2007 13:05:08 UTC