Re: Storing data and code in a Db with LISP-like interface

From: JOG <>
Date: 21 Apr 2006 13:33:26 -0700
Message-ID: <>

Bob Badour wrote:
> JOG wrote:
> > Bob Badour wrote:
> >
> >>JOG wrote:
> >>
> >>>Bob Badour wrote:
> >>>
> >>>>Alvin Ryder wrote:
> >>>>
> >>>>>I agree linked-lists aren't as powerful as the RM but LISP and Prolog
> >>>>>are not merely about lists.
> >>>>>
> >>>>>Both Prolog and LISP can represent information and indeed knowledge
> >>>>>well beyond the RM, that's why they are popular with the ai community!
> >>>>
> >>>>Given the standard definitions of information and knowledge, that's a
> >>>>rather astounding claim. Do you have anything that might back it up?
> >>>
> >>>Prolog models a greater subset of predicate logic than relational
> >>>theory due to its inclusion of negation and disjunction. As such it has
> >>>been traditional popular in classic-AI as the basis of inference
> >>>engines. Whether this allows it to offer a better representation of
> >>>'knowledge' is up for debate.
> >> [snip]
> >>Are you suggesting that NOT is not negation or that OR is not
> >>disjunction?
> >
> >
> > Of course not. I am sure this is a rhetorical question but I cannot
> > ascertain its point - I think you are referring to relational algebra,
> > but this is not the same as the use of negation in explicit
> > declarations such as P(x) || ¬Q(y) (for instance). In RM the user has
> > to remember this predicate. In Prolog, the program memorises it for
> > you, for good or for bad. To compare the two is hence comparing apples
> > and oranges.
> The point is the relational model basically supports both with the one
> small requirement that one must specify one's universe. I do not
> understand what you mean by 'has to remember this predicate'.

I don't agree, but we may be talking at cross purposes - let me explain with a trivial example. Take the relation: { (clothing:coat, weather:sunny), (clothing:sunglasses, weather:raining) }

I am storing propositions of the nature that if Frank, say, is not wearing a coat it is sunny, and if he's is not wearing sunglasses then it must be raining (Frank's a bit of a fashion victim). The predicate behind the relation is: [¬clothing -> weather], and anyone interacting with the db must be aware of this in order to reform my original propositions, and so draw appropriate conclusions.

In prolog, however I can state this explicitly and another user will not require any external knowledge of the relationship:

weather(sunny) :- /+ clothing(coat)
weather(rainy) :- /+ clothing(sunglasses)

And there my limited knowledge of logical programming is exhausted. Received on Fri Apr 21 2006 - 22:33:26 CEST

Original text of this message