Re: [UCR] Review UCR (action-624)

Hi Adrian,

I think that  ex:provide("eShop" ?buyer[ex:card->?x ex:addr->?y]) is 
allowed and nested functions (functions within functions) and functions as 
frame slots and values are also allowed.  The example use to have a frame 
as a value of a frame slot, which is not allowed.  You imply below that 
nested functions might help? 

In current 4.2, in both examples you're missing an "ex:"  before name 
(slot name) on the ?Street line.

Stella




"Adrian Paschke" <Adrian.Paschke@gmx.de> 
11/16/2008 04:15 PM

To
Stella Mitchell/Watson/IBM@IBMUS, gary.hallmark@oracle.com, 
Harold.Boley@nrc-cnrc.gc.ca, kifer@cs.stonybrook.edu
cc
public-rif-wg@w3.org
Subject
[UCR] Review UCR (action-624)






Stella, Gary, (and Michael and Harold),

I already incorporated most of your comments in the new version of RIF 
UCR. 

You both noted for use case 4.2 

http://www.w3.org/2005/rules/wiki/UCR#Negotiating_eCommerce_Transactions_Through_Disclosure_of_Buyer_and_Seller_Policies_and_Preferences


that there are many places that use "nested frame syntax" and that this is 
illegal, e.g., ex:provide("eShop" ?buyer[ex:card->?x ex:addr->?y]). 

However, the proposed solution 

And(
   ?buyer[ex:card->?x ex:addr->?y] 
    ex:provide("eShop" ?buyer)
)
 
is incorrect, too. It would mean that we need two facts to fire the rule 
(for a production rule) or prove the two goals (for derivation rules). 

Moreover, the formalization of the rules without nested frames (or nested 
functions) becomes very verbose, as you can see in 4.2. For instance, the 
definition of the customer object "Alice" which becomes a very complicated 
rule without nested frames. 

 ex:Alice[ex:card -> ?card ex:deliveryAddr -> ?deliveryAddr] :- 
   ?Date = ex:Date[ex:month -> 12 ex:year -> 2012] 
   ?Person = ex:Person[ex:lastname -> "Sure" ex:firstname -> "Alice"] 
   ?Street = ex:Street[name -> "North Street" number -> 111] 
   ?card= ex:Card[ ex:type -> "Visa" 
                            ex:holder ->  ?Person 
                            ex:number -> "123456789" 
                            ex:code -> "123" 
                            ex:expiry -> ?Date 
                         ] 
  ?deliveryAddr = ex:DeliveryAddress[ ex:name -> ?Person 
                                                        ex:street -> 
?Street 
                                                        ex:postal_code -> 
"NE3456" 
                                                        ex:city -> "New 
York" 
                                                        ex:country -> 
"USA" 
                                                       ] 

Any ideas?

-Adrian



 
-- 
Der GMX SmartSurfer hilft bis zu 70% Ihrer Onlinekosten zu sparen! 
Ideal für Modem und ISDN: http://www.gmx.net/de/go/smartsurfer

Received on Sunday, 16 November 2008 23:42:17 UTC