- From: Charles Young <Charles.Young@solidsoft.com>
- Date: Fri, 31 Dec 2010 16:44:33 +0000
- To: "public-rif-comments@w3.org" <public-rif-comments@w3.org>
- Message-ID: <A11D33879A3D25478650ADB3952BED461CE6BE0678@EX02.solidsoft.com>
RIF PRD Recommendation 22 June 2010 There are several errors in the presentation syntax of the ‘running example’ given in Example 9.1. I have described these in the attached document together with some additional minor issues concerning the grammar. Here is a corrected version that parses successfully according to the EBNF productions provided in the specification. Document( Prefix( ex1 <http://example.com/2009/prd2> ) (* ex1:CheckoutRuleset *) Group rif:forwardChaining ( (* ex1:GoldRule *) Group 10 ( Forall ?customer such that And(?customer # ex1:Customer ?customer[ex1:status->"Silver"]) (Forall ?shoppingCart such that ?customer[ex1:shoppingCart->?shoppingCart] (If Exists ?value (And(?shoppingCart[ex1:value->?value] External(pred:numeric-greater-than-or-equal(?value 2000)))) Then Do(Modify(?customer[ex1:status->"Gold"]))))) (* ex1:DiscountRule *) Group ( Forall ?customer such that And(?customer # ex1:Customer ) (If Or( ?customer[ex1:status->"Silver"] ?customer[ex1:status->"Gold"]) Then Do ((?s ?customer[ex1:shoppingCart-> ?s]) (?v ?s[ex1:value->?v]) Modify(?s [ex1:value->External(func:numeric-multiply (?v 0.95))])))) (* ex1:NewCustomerAndWidgetRule *) Group ( Forall ?customer such that And(?customer # ex1:Customer ?customer[ex1:status->"New"] ) (If Exists ?shoppingCart ?item (And(?customer[ex1:shoppingCart->?shoppingCart] ?shoppingCart[ex1:containsItem->?item] ?item # ex1:Widget ) ) Then Do( (?s ?customer[ex1:shoppingCart->?s]) (?val ?s[ex1:value->?val]) (?voucher ?customer[ex1:voucher->?voucher]) Retract(?customer[ex1:voucher->?voucher]) Retract(?voucher) Modify(?s[ex1:value->External(func:numeric-multiply(?val 0.90))])))) (* ex1:UnknownStatusRule *) Group ( Forall ?customer such that ?customer # ex1:Customer (If Not(Exists ?status (And(?customer[ex1:status->?status] External(pred:list-contains(List("New" "Bronze" "Silver" "Gold") ?status)) ))) Then Do( Execute(act:print(External(func:concat("New customer: " ?customer)))) Assert(?customer[ex1:status->"New"])))) ) ) Regards Charles Charles Young Principal Consultant Solidsoft: People ▪ Processes ▪ Systems ■ Connected [cid:image001.jpg@01CBA90A.00B96BF0] Microsoft's Global Partner of the Year Finalist 2010 : Custom Development Solutions Microsoft's Global Partner of the Year Finalist 2008/9 : Business Process and Integration Microsoft's Global Partner of the Year Winner 2006/7 : Business Process and Integration • Office +44 (0) 1256 375 700 • Mobile +44 (0) 7817 678 783 • Fax +44 (0) 1256 476 361 • Web Site http://www.solidsoft.com<blocked::http://www.solidsoft.com/> • Registered Office Grove House, Lutyens Close, Chineham Court, Basingtoke, RG24 8AG • Registration No Registered in England Number 2853022
Attachments
- image/jpeg attachment: image001.jpg
- application/msword attachment: RIF PRD EBNF report.doc
Received on Saturday, 1 January 2011 17:55:30 UTC