- From: Leora Morgenstern <leora@us.ibm.com>
- Date: Tue, 11 Nov 2008 11:42:43 -0500
- To: Gary Hallmark <gary.hallmark@oracle.com>
- Cc: rif WG <public-rif-wg@w3.org>, public-rif-wg-request@w3.org
- Message-ID: <OF9AEB633F.8FECEC3A-ON852574FE.005B5D19-852574FE.005BCC71@us.ibm.com>
Hi Gary, You write: >4.6 >Again, the use of logical functions puts this outside Core, but there >isn't any deep need for logical functions here. You could just as >easily include T as the last argument of the predicates, I think. >I don't think its wise to draw attention to the fact that Core lacks >logical functions by using them in ways that are trivial to flatten. It is certainly true that the rules in UCR 4.6 can be easily changed so that they contain only predicates, not logical functions. When I wrote these rules back in 2006, Core didn't exist, so there were no restrictions against having such functions. However, it is worth noting that the standard method among AI practitioners for representing events, actions, and time --- whether one uses the situation calculus, event calculus, fluent calculus, or similar --- uses some sort of a Holds predicate which takes as arguments a unit (point or interval) of time and a term of the form function(arg1, ..., argn). This is the standard because it makes it much easier to state principles that are important for temporal reasoning, such as the principle of inertia. So, while we can easily change this example, in general, it will make it much more difficult for AI practitioners to use RIF if they have to write their rules without using such functions. This should probably be noted in the text of this example. (I'd be happy to propose a paragraph or two about this point.) Leora Gary Hallmark <gary.hallmark@oracle.com> Sent by: public-rif-wg-request@w3.org 11/10/2008 04:57 PM To rif WG <public-rif-wg@w3.org> cc Subject [UCR] Review UCR (action-624) This is from the wiki as of 10/24: Section 3 (Structure of RIF) This is where the notion of RIF-Core should be explained. A Venn diagram would be useful here, with DTB in the middle, surrounded by Core, with PRD and BLD intersecting such that the intersection includes Core and finally FLD surrounding BLD (but not all of PRD). It is important to explain Core, because a number of the code examples are in fact Core and not BLD or PRD specific (and that is a good selling point to emphasize) Section 4 As noted above, many examples are Core. I don't know why we want 2 buttons to hide BLD and PRD examples. We certainly don't want 3, I think. I suggest just one button to hide all examples. 4.1 is a Core example func:subtract-numeric cannot be applied to datetimes (many places) ex:ware and ex:receiver are not legal argNames (I think) In the frame example, ?item[ex:delivered->"John:] should not be a conclusion (it is a condition) The PRD examples are exactly the BLD examples, since both are Core. Remove them. change pred:numeric-smaller-than to pred:numeric-less-than 4.2 uses logical functions and thus must be BLD and not Core or PRD. However, one could have translated the English rule to RIF without using logical functions, e.g. permit_access(?x) instead of permit(access(?x)). This should be explained. Also, the PRD variant also uses a logical function, and so is illegal PRD. Suggestion: don't use logical functions (they aren't needed) and just present the Core dialect. there are many places that use "nested frame syntax" e.g. ex:provide("eShop" ?buyer[ex:card->?x ex:addr->?y]) this is illegal. must use And(?buyer[ex:card->?x ex:addr->?y] ex:provide("eShop" ?buyer)). This is repeated in many places. I don't understand the translation of the last rule, which is an integrity constraint: never provide both birthdate and postal code I would translate it as integrityConstraintViolation("never provide...") :- providedBirthdateTo(?shop) and providedPostalCodeTo(?shop) BLD can be a little stronger and define 0=1 :- integrityConstraintViolation(?x) 4.3 The first rule should use PRD's negation. misspelling: engergy These rules need to handle changing values over time. I.e. a band may be available now, but not in a minute from now. We can use production rules, whose truth values can change over time, or use BLD and an event calculus axiomatization. I would rather not assume an external function like detect energy. I would model it as an ordinary frame or predicate with a timestamp. But if it is external, it needs the External wrapper in the syntax. 4.4 This "example" is weak and adds very little to section 4.1. I would merge with 4.1 (mainly keep 1st 2 paragraphs of 4.4) 4.5 all rules are integrity constraints so we need a standard phrasing of integrity constraints as rules (see preceding 4.2 comment) I think the first rule requires negation (PRD's for example) I think the other rules can be Core. 4.6 Again, the use of logical functions puts this outside Core, but there isn't any deep need for logical functions here. You could just as easily include T as the last argument of the predicates, I think. I don't think its wise to draw attention to the fact that Core lacks logical functions by using them in ways that are trivial to flatten. 4.7 This is a trivial Core rule. 4.8 This example has a confusing mix of rdf:type and #. I don't think it needs to use both. # is clearer (to non-rdf readers). 4.9 These examples look like prolog with side-effects. They should instead use PRD to modify (retract then assert) a score fact. It might also be nice to have a logical example, although its not very nice without aggregation. Maybe we could use the proposed FLD aggregation here. 4.10 These examples have nested membership forumlas (?Movie#ex:Movie). These must be unnested. The examples imply that we have a standard way to call Java methods. The examples use other syntax shortcuts, like x,y instead of And(x y) and implicit universal quantification. I hope we can make some of these standard in the PS. But if not, these will have to change. 5.2 delete all the "motivated by" sections. These are just clutter. E.g., consider "RIF must be able to pass comments". No use case seems to need this more or less than the others. Yet we list 3 use cases that motivate this requirement. That's just nonsense.
Received on Tuesday, 11 November 2008 16:43:26 UTC