W3C home > Mailing lists > Public > www-rdf-rules@w3.org > November 2003

Re: Rules WG -- draft charter -- NAF

From: Benjamin Grosof <bgrosof@mit.edu>
Date: Thu, 13 Nov 2003 09:21:00 -0500
Message-Id: <>
To: Sandro Hawke <sandro@w3.org>, adrianw@snet.net
Cc: www-rdf-rules@w3.org

Hi Sandro and all,

At 12:57 AM 11/13/2003 -0500, Sandro Hawke wrote:

>[Converted from HTML to plain text]
> > On another point though, you may like to think a bit before
> > legislating against negation-as-failure in the core language. NAF is
> > similar in concept to the way most applications use relational
> > databases.  Roughly speaking, it allows you to deduce, from a
> > database table of people in W3C, that if Fred is not listed, then
> > Fred is not a member of W3C. Again roughly speaking, if you stick to
> > classical logic instead of using NAF, you are required to list in
> > your database tables all the people who are NOT members of
> > W3C. Obviously, this can quickly get completely out of hand when you
> > have tables with more than one column. The same kinds of problems
> > arise with declaratively interpreted rules, unless you allow NAF.
>This is an excellent point for discussion, and comes up in Benjamin's
>proposed changes [1] as well.
>I think it hinges on a basic point: being a Semantic Web rule language
>means more than just being a "standard" rule language.  If the goal
>were just to make a common language that Prolog, OPS-5, and SQL
>systems could use, then where would the Web come in?  No, the point I
>think is to allow everyone to publish their rules as reusable data, as
>assertions of one's belief about the world.  Others can then wander by
>a pick up a random rule or two as being useful.  (Whether they chose
>to believe it is a separate matter.)
>This makes NAF rather more tricky, I think, than in traditional rule
>systems.  This is the motivation for calling it out-of-scope.  Let's
>see....  Imagine the rule "If a game has no errors, it's a perfect
>      { ?game a Game.
>        Not { ?game error ?e }.
>      }
>      =>
>      { ?game a PerfectGame }
>But, as you say, this means someone has to SAY the game has no errors,
>they can't just not list any errors and still have the conclusion be
>supported.    So you want something more like:
>      { ?game a Game.
>        NotKnown { ?game error ?e }.
>      }
>      =>
>      { ?game a PerfectGame }
>But... Well, at very least that's non-monotonic.   Any conclusion you
>reach like this MUST NOT be re-published, right?  Or, they must always
>carry with them the warning "if we assume my knowledge of the world is
>complete, then...."   And people wondering by and picking up this rule
>... well, do you have any reason to think they would know where to
>look for errors?   The naive user/software is almost certain to get
>false results from NAF rules like this.

The approach taken in the declarative logic programs literature, and most 
rule reasoning applications, solves this in a quite simple fashion.
Every conclusion is drawn (and prescriptively sanctioned by the semantics)
relative to a **specified set of premises***.   In your terms, that set of
premises is "my knowledge of the world".  If a rule is written using NAF,
then the rules which depend on NAF should be viewed as belief policies.
KR is primarily about principles for reasoning with ***beliefs***, not 
irrevocable truths.  (If you want irrevocable truth,
stick to mathematics and religion not practical daily living and its 
pragmatic reasoning!)

Your worries about dangers of usage are overblown.  There are decades of 
successful applications usage
of NAF.  Probably hundreds of thousands of users have written Prolog, for 

This principle of relativity to a premise set is essential to any 
nonmonotonic KR, not just
to NAF.


>So what can you do?  W3C SWAD (mostly TimBL) has been looking at this
>for a while, and Cwm implements two solutions via built-ins [2]:
>     log:includes + log:notIncludes statements depend on whether some
>     web-accessible RDF graph includes some subgraph.  This lets you
>     say the game has no errors if http://foo.bar doesn't list any
>     errors.
>     log:definitiveDocument approaches this from the other side,
>     letting you say http://foo.bar lists all "errors", by the very
>     definition of "errors".   An exported SQL database with usual
>     closed-world semantics can simply include that it's a
>     log:definitiveDocument for all its predicates/columns, and the
>     expected NAF-like behavior should ensue.
>I'm sure there are other approaches, and I don't think the performance
>issues are well-understood yet, but it makes me think something is
>doable.   It also reminds me that the rule language here, even if very
>like Prolog, etc, in some ways, also needs to be quite different to
>be good for the Semantic Web.
>        -- sandro
>[2] http://www.w3.org/2000/10/swap/doc/Reach

Prof. Benjamin Grosof
Web Technologies for E-Commerce, Business Policies, E-Contracting, Rules, 
XML, Agents, Semantic Web Services
MIT Sloan School of Management, Information Technology group
http://ebusiness.mit.edu/bgrosof or http://www.mit.edu/~bgrosof
Received on Thursday, 13 November 2003 09:19:10 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 22:46:16 UTC