Re: Demo: Modelling Cost of Travel Paths Between Towns

From: Ed prochak <ed.prochak_at_magicinterface.com>
Date: 22 Nov 2004 10:45:25 -0800
Message-ID: <4b5394b2.0411221045.61955bae_at_posting.google.com>


neo55592_at_hotmail.com (Neo) wrote in message news:<4b45d3ad.0411181208.4894f98a_at_posting.google.com>...
> > > Neo: [With TM/XDb2] user can ... update the age of any thing whose
> > > name is john and has an age, including that of things whose class is
> > > unknown at design-time (ie a person, dog, cat, pig, plane, etc in the
> > > future). Try coding that in RM.
> > >
> > > Alan: It doesn't get a whole lot easier
> > >
> > > Neo: So let's step thru it and fill in the details...
> > >
> > > Alan: If you can't tell me what data you will want to see two hours
> > > from now, you will not be working here much longer...
> >
> > I love the way you change the rules.
> > Now it's an AI application, not just a database.
>
> "[With TM/XDb2] user can ... update the age of any thing whose name is
> john and has an age, including that of things whose class is unknown
> at design-time (ie a person, dog, cat, pig, plane, etc in the
> future)."
>
> > No one here ever said that an RDBMS is a proper medium for an AI apps.
>
> Thanks for confirming that RM is the limited data model.
>
> > > Here is how with TM/XDb2....
> > > ... no schema to design.
> > > New things need not conform to any predefined tables or schema.
> >
> > In yours, you build relationships as you go.
> > For each and every piece of data you need to store.
> > This is NOT scalable by any stretch of the imagination.
>
> Check between your ears.
>
> > > Neo: "SELECT %.age & %.name=john" works until eternity
> >
> > So does RM.
>
> I didn't see the RM query that will work until eternity.
> Could you show it?

sorry, I was off in a training class for a week, how's about I use ORACLE. I'm sure an equivalent script can be written for other RDBMS. I'll admit, it won't be as short as yours but it performs the same function. (NOTE: I left out minor formatting issues like not printing column headers for the first query. Simple settings can remove them without changing the logic of the script.)

SPOOL age.sql
select 'select ''', ta.table_name, ''', AGE from ', ta.table_name,

   ' where name = ''JOHN'' ;'
 from user_tab_columns ta,

    user_tab_columns tb
where ta.table_name=tb.table_name
 and ta.column_name = 'AGE'
  and ta.column_name <> tb.column_name
 and tb.column_name = 'NAME'
/
SPOOL OFF
START age.sql

It finds every table (THING in neo-speak) accessable to the user account that has columns named 'NAME' and 'AGE' and then produces a report of the table name and the value of the age column for all rows having a name of JOHN.

AND the ORACLE query could easily be extended to increment those ages. Since Xdb2 cannot do even integer arithmetic, I'd say RDBMS comes out ahead again.

Xdb2 treats everything as a "THING". a RDBMS treats everything as a "TABLE". Meta queries are possible in both. The Xdb2 query is shorter, but not logically less complex. So I'm still looking to see the big advantage in Xdb2. I haven't seen it yet.

Ed Received on Mon Nov 22 2004 - 19:45:25 CET

Original text of this message