W3C home > Mailing lists > Public > public-rif-wg@w3.org > December 2008

Re: [test] disjunctive entailment without equality

From: Chris Welty <cawelty@gmail.com>
Date: Mon, 01 Dec 2008 23:21:05 -0500
Message-ID: <4934B7B1.307@gmail.com>
To: Jos de Bruijn <debruijn@inf.unibz.it>
CC: kifer@cs.sunysb.edu, RIF WG <public-rif-wg@w3.org>

Jos de Bruijn wrote:
>>>>> Thanks, Jos.
>>>>> This gets me wondering.  Clearly the converse of Jos' test case also holds,
>>>>> e.g. that:
>>>>> Document(
>>>>>   Prefix(ex http://example.com/example#)
>>>>>   Prefix(pred http://www.w3.org/2007/rif-builtin-predicate#)
>>>>>   Group(
>>>>>     ex:p(ex:a)
>>>>>     Forall ?x (q(?x) :- And (ex:p(?x) External(pred:isInteger(ex:a))))))
>>>>> |= (or q(ex:a) External(pred:isNotInteger(ex:a)))
>>>> Why is this outside the language?
>>> By outside the language I mean that you cannot say (or q(ex:a) 
>>> External(pred:isNotInteger(ex:a))) in BLD, it is syntactically invalid.  The 
>>> whole point of Jos' test cases was being able to entail something that can't be 
>>> expressed in the language (in this case disjunction in the conclusion).
>> This is not outside of the language. It is a condition formula and a completely
>> kosher goal. Such goals are normal not only in 1-order logic, but also in
>> logic programming.
> Indeed.  Even if one would not allow disjunction in condition formulas,
> one could simply write two rules with the same head, with the disjuncts
> as the individual rule bodies.
> See also my response [1] to similar e-mail by Dave.

Err....now I'm completely confused.  The

(or q(ex:a) external(pred:isNotInteger(ex:a))))

is not a condition, its a conclusion.  I do not know how to rewrite a rule so 
that disjunction in the conclusion is possible, except for the test cases here. 
   What are you talking about?

I searched for "kosher goal" (and also "goal") in the BLD spec and it speaks 
nothing of such things.  What are you talking about?

I interpreted this test case as showing that you could "sneak" disjunction into 
the conclusion of a rule using negative guards.  Now you are talking about 
conditions, which already allow disjunction.  So who cares about this test case? 
  Why is it important?


> Best, Jos
> [1] http://lists.w3.org/Archives/Public/public-rif-wg/2008Nov/0191.html
>>>> The problem here is that without
>>>> any kind of closed-world assumption or a unique name assumption the above leads
>>>> to a disjunction, which cannot be taken apart, unlike in logic programming.
>>> The problem I'm talking about is that the language has entailments that fall 
>>> outside its expressivity.
>> It is outside of the expressivity only if we add negation as we did (through
>> the  back door).
>>>> So, with negative guards we are introducing negation through the back door, but
>>>> do not inject the standard antidotes to keep disjunction away.
>>> I'm suggesting negative guards don't create a new problem here.  We already know 
>>> implication is negation + disjunction, so even without negative guards you can 
>>> write rules whose entailments are outside the language, including disjunction in 
>>> the conclusion.
>> No you cannot! If you have pure Horn clauses then disjunctive goals are NOT
>> outside of the expressivity of the language.
>>> So, why not just take the usual route in such cases and say that anything 
>>> outside the expressiveness of the language is not entailed (or not
>>> necessarily entailed, I guess).
>> See above.
>> michael

Dr. Christopher A. Welty                    IBM Watson Research Center
+1.914.784.7055                             19 Skyline Dr.
cawelty@gmail.com                           Hawthorne, NY 10532
Received on Tuesday, 2 December 2008 04:21:51 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 17:07:51 UTC