W3C home > Mailing lists > Public > www-rdf-logic@w3.org > November 2004

Re: Safe rules in SWRL

From: Enrico Franconi <franconi@inf.unibz.it>
Date: Thu, 18 Nov 2004 19:09:17 +0100
Message-Id: <F628F046-398C-11D9-8B7A-000A9575BDDE@inf.unibz.it>
Cc: www-rdf-logic@w3.org
To: axel.polleres@deri.org

On 18 Nov 2004, at 11:19, Axel Polleres wrote:
> Enrico Franconi wrote:
>>  From the latest SWRL document:
>> "As usual, only variables that occur in the antecedent of a rule may
>> occur in the consequent (a condition usually referred to as "safety").
>> This safety condition does not, in fact, restrict the expressive power
>> of the language (because existentials can already be captured using 
>> OWL
>> someValuesFrom restrictions)."
> >
> > I believe that the safety condition does restrict the expressive 
> power
> > of the language, since a rule with a conjunction of atoms in the
> > consequent with joint existential variables can not be transformed 
> into
> > multiple rules each with an atomic consequent. Moreover, even in the
> > case of a rule with an atomic consequent with existential variables,
> > you need an ontology language with inverse roles, otherwise
> > existentials can not fully encoded in the ontology.
> In rules, all variables are implicitly universally quantified, right?

Variables that are shared between head and body are universally 
quantified. Variables that appear only on one side are locally 
existentially quantified. The local existential in the body becomes a 
global universal quantifier; so, if rules are safe, you will see only 
universal quantifier hanging around.

> The only existentials in the head would come from someValuesFrom 
> restrictions in the head, right?
> but, for this existentials you don't have a variable, or no? I.e.,
> the part which is existentially quantified does not appear 
> syntactically:
> i.e
>  C(?x)  => \exists ?y R(?x,?y)
> amounts in abstract syntax to:
> Implies(Antecedent (C(?x))
>         Consequent(restriction R someValues(C)(?x)
> yes? So, I don't see the problem. I am not sure whether I got it 
> right. Can you explain in more detail?

C(?x)  => \exists ?y R(?y,?x)
then you can encode it as above but with the inverse role.

My other point was about the impossibility of reducing an unsafe rule 
with a conjunctive head with existential variable to a set of safe 
rules with atomic heads.

Received on Thursday, 18 November 2004 18:09:53 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 2 March 2016 11:10:43 UTC