W3C home > Mailing lists > Public > public-rule-workshop-discuss@w3.org > August 2005

Re: SNAF, NAF, and monotonicity [was: Comments on * DRAFT * Rules...]

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
Message-id: <430EE54A.4080501@deri.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 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 8 January 2008 14:16:23 GMT