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

Re: FOL versus Rule Languages - A tutorial

From: Michael Kifer <kifer@cs.sunysb.edu>
Date: Sat, 27 Aug 2005 02:03:59 -0400
To: Sandro Hawke <sandro@w3.org>
Cc: public-rule-workshop-discuss@w3.org
Message-Id: <20050827060359.E7E00CB5D4@kiferserv.kiferhome.com>


> 
> > > > MMS is non-monotonic in that anything that cannot be proved
> > > > true in MMS is concluded to be false.  Adding any (non-provable)
> > > > ground statement or rule to a Herbrand model, limits the Herbrand
> > > > space and falsifies the conclusions that various statements are
> > > > false obtained from the earlier model.
> > > 
> > > So MMS necessarily brings with it the CWA?
> > > 
> > > I guess Flora-2 and Triple do this in a clever way, so they have MMS
> > > but their CWA is somehow scoped?
> > 
> > Actually, there is nothing really clever in what Flora-2 or Triple do. :-)
> > What they do is not a semantic trick, but a syntactic one.  They allow the
> > user to specify the scope of any inference (positive or negation)
> > explicitly, but the semantics remains like in traditional systems.
> > (Actually, Triple didn't have SNAF originally -- only positive scoped
> > inference. I am not sure if some later versions of Triple have default
> > negation, but this is not important here.)
> > 
> > I already hinted at how this is done when discussing Dan's example.
> > Basically, every rule-head (or fact) defined in a particular module
> > is treate d as a predicate with a prefix that is specific to that
> > module, and different modules have different prefixes. In this way,
> > if you ask a negated query against any predicate in a given module,
> > then NAF and SNAF give the same result because nothing outside of
> > the module matters due to the uniqueness of the predicate names that
> > are local to that module.
> 
> Can one also define shared/global predicates, for which facts are
> allowed to come from multiple sources?  I imagine S/NAF would not be
> available for them?
> 
>       -- sandro

There can be predicates that feed on several other predicates coming from
other modules. For instance, 

p(X) :- q(X)@foo.
p(X) :- r(X)@bar.


But every predicate belongs to some module. So, one can negate any
predicate.


	--michael  
Received on Saturday, 27 August 2005 16:41:36 GMT

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