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

On Sun, 16 Nov 2008 18:41:32 -0500
Stella Mitchell <cleo@us.ibm.com> wrote:

> Hi Adrian,
> 
> I think that  ex:provide("eShop" ?buyer[ex:card->?x ex:addr->?y]) is 
> allowed

in FLD, but not in BLD. 

> and nested functions (functions within functions) and functions as 
> frame slots and values are also allowed.

This is allowed.

michael

>  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
> 
> 
> 
>  

Received on Monday, 17 November 2008 00:51:36 UTC