- From: doug foxvog <doug.foxvog@deri.org>
- Date: Fri, 26 Aug 2005 10:47:54 +0100
- To: Michael Kifer <kifer@cs.sunysb.edu>
- Cc: Dan Connolly <connolly@w3.org>, public-rule-workshop-discuss@w3.org
Michael Kifer wrote: > Dan Connolly <connolly@w3.org> wrote:> >>On Thu, 2005-08-25 at 16:30 -0400, Michael Kifer wrote: >>[...] >>> We assume that the info about the cars (over which we are going to >>> close off) is in module allAboutCars and the facts there have the form >>> >>> 12345:car[color->red]. >>> 45678:car[color->blue]. >>> ... >>> >>> The 12345 thing is supposed to be the vehicle id number or something. >>> The first fact says that 12345 is an object in class car and the attribute >>> color has the value red, etc. >>> >>> The above info on cars could be on some Web site, for example. >>> >>> Now, to express N3's >>> this log:forAll :car. >>> { :car.auto:specification log:notIncludes {:car auto:color []}} >>> => {:car auto:color auto:black}. >>> >>> one would write something like this: >>> ?X[realColor->?Color] :- ?X[color->?Color]@allAboutCars. (***) >>> ?X[realColor->black] :- not ?X.color[]@allAboutCars. (****) >>> The first rule says that if the module allAboutCars has an explicit color >>> for a car, then it is the real color of that car. You don't have this rule >>> in your N3 example, but of course it is easy to add. >>> The second rule says that if allAboutCars says nothing about a particular >>> car's color then its color is black. This is a counterpart of your default >>> rule, which involves log:notIncludes. >>> >>>Now, let us assume that all the above formulas constitute the set A in (**). >>> >>>Let's suppose 00007 is a car on the allAboutCars site, for which no color >>>information is available. Let 00007[color->black] be our formula F in (**). >>> >>>Because allAboutCars says nothing about the color of 00007, we conclude >>>that 00007.color[] is false (00007.color[] means that there is some value >>>for the color attr in object 00007. We didn't find any, so it's >>>false). >> >>Are you abbreviating there? I would think we conclude that >> 00007.color[]@allAboutCars >>is false. > Yes, 00007.color[]@allAboutCars. Sorry for the typo. >>(aside: In any case, in N3, the negation is not separated from the >>question of whether 00007.color[] occurs in allAboutCars. >>In N3, the notIncludes relation between syntactic formulas is just >>like stringNotMatch operation on strings or a notDivisorOf operation >>on integers; it's a decideable/computable recursive function. ) Thus a notIncludes relation cannot be asserted as part of the set of formulas. It is outside the language for describing Set A. > I would be more comfortable if this all were defined more formally. > I gave my best shot at informally talking about informal semantics of N3, > but we cannot really argue about logical properties of a language that > hasn't been given a model theoretic semantics. >>> Therefore, we derive 00007[color->black] using the rule >>>(****). (The rule (***) doesn't fire, since its premise is false.) >>>Therefore, >>> >>> A |= F >>> >>>Now, let B be 00007[color->yellow], which we would like to add to the >>>allAboutCars site. >>add to the site? You mean change what @allAboutCars denotes? To do >>that is to consider a different interpretation of the formula(s) A, >>not to consider an additional set of formulas B. > No. We have a bunch of formulas This seems to be where the argument lies. Dan is considering @allAboutCars to be a set of formulas, while Michael is considering it to be a bunch of formulas (or possibly a container of or a pointer to a bunch of formulas) that happen to exist in a logical world. Not knowing N3, i can't judge whose interpretation is correct. Mathematical sets are unchanging: one cannot add something to a set and still have the same set. Monotonicity is about adding formulas to a logical world. If @ is merely a namespace identifier, it wouldn't be a reference to a set, merely a method of abbreviation. It seems unlikely to me that N3 fixes in stone any namespace as soon as an "@" sign is used to indicate it. Again, with the caveat that i don't know N3, it seems that Michael is correct, and adding the formula B does not "change what @allAboutCars denotes". If this is the case, adding the formula B to @allAboutCars, results in A union B |/= F > 12345[color->red]. > 45678[color->blue]. > > at allAboutCars. Formally, being at allAboutCars means that all predicates > and methods there have a unique prefix (the same for the same module). So, > the above two being @allAboutCars really means that we have formulas like > > 12345['$&^allAboutCars*^%color'->red]. > 45678['$&^allAboutCars*^%color'->blue]. (*****) > etc. > > Adding 00007[color->yellow] to @allAboutCars means that B really is > > 00007['$&^allAboutCars*^%color'->yellow] (******) > > and now we have the set of formulas A union B. > > Recall that A was that bunch of formulas (*****) plus those pair of rules. > So, A union B is (*****), (******), and the rules (***)/(****). > > Now we are making inference and what was a consequence of A is no longer a > consequence of A union B. > > > >>> Now, rule (***) fires, but (****) doesn't. So, we derive >>>00007[color->yellow], but we don't derive 00007[color->black]. Therefore, >>> >>> A union B |/= F >>> >>>so it is nonmonotonic. >>> >>> >>>The same thing basically happens in your N3 example. >>> >>>There auto:specification is an attribute, which returns a set of objects >>>(which would formally be treated as terms). Somewhere you will need to >>>have a set of formulas (which will be part of the set A), which >>>would say which specific cars have which specifications. >>> >>>So, if you have a car whose spec doesn't include color then you will derive >>>{... auto:calor auto:black} for that car. But if you throw in another >>>formula (our B above), which will give a color spec to that car then >>>{ :car.auto:specification log:notIncludes {:car auto:color []}} >>>will not be satisfied and so the rule will not fire. >> >>As I say, it seems to me that this is not exhibiting another set >>of formulas B, but just considering a different interpretation of >>the formulas A. In that interpretation, the premise is false and >>the conclusion is false, yes, but this doesn't seem to demonstrate >>non-monotonicity. > No, see above. It is a union of A and B. It is precisely what > nonmonotonicity means. > ... > --michael ========================================================== douglas foxvog doug.foxvog@deri.org +353 (91) 495 150 Digital Enterprise Research Institute (DERI) National University of Ireland, Galway Galway, Ireland http://www.deri.ie ==========================================================
Received on Friday, 26 August 2005 09:48:03 UTC