Re: object algebra

From: Marshall Spight <mspight_at_dnai.com>
Date: Thu, 26 Feb 2004 03:44:31 GMT
Message-ID: <zYd%b.59944$4o.81521_at_attbi_s52>


"Mikito Harakiri" <mikharakiri_at_iahu.com> wrote in message news:zW4%b.13$OB.143_at_news.oracle.com...
>
> "Marshall Spight" <mspight_at_dnai.com> wrote in message
> news:hXY_b.56566$4o.75850_at_attbi_s52...
> >
> > Here's my first cut. I reserve the right to change my design later. No
> > nulls were used. I have to admit your test data made me feel a bit silly.
> >
> > create table EX76 (subject varchar(80), relator varchar(80), object
> varchar(80));
> > insert into EX76 values ('obeys', 'isa', 'relator');
> > insert into EX76 values ('god', 'isa', 'thing');
> > insert into EX76 values ('god', 'equals', 'god');
> > insert into EX76 values ('it', 'is', 'obeys');
> > insert into EX76 values ('force', 'isa', 'thing');
> > insert into EX76 values ('army', 'isa', 'force');
> > insert into EX76 values ('church', 'isa', 'thing');
> > insert into EX76 values ('trinity', 'isa', 'church');
> > insert into EX76 values ('person', 'isa', 'thing');
> > insert into EX76 values ('john', 'isa', 'person');
> > insert into EX76 values ('mary', 'isa', 'person');
> > insert into EX76 values ('luke', 'isa', 'person');
> > insert into EX76 values ('age', 'isa', 'thing');
> > insert into EX76 values ('35', 'isa', 'age');
> > insert into EX76 values ('john', 'is', '35');
> > insert into EX76 values ('weight', 'isa', 'thing');
> > insert into EX76 values ('130', 'isa', 'weight');
> > insert into EX76 values ('mary', 'is', '130');
> > insert into EX76 values ('color', 'isa', 'thing');
> > insert into EX76 values ('red', 'isa', 'color');
> > insert into EX76 values ('luke', 'is', 'red');
> > insert into EX76 values ('dog', 'isa', 'thing');
> > insert into EX76 values ('fido', 'isa', 'dog');
> > insert into EX76 values ('computer', 'isa', 'thing');
> > insert into EX76 values ('laptop1', 'isa', 'computer');
> > insert into EX76 values ('army', 'obeys', 'god');
> > insert into EX76 values ('trinity', 'obeys', 'god');
> > insert into EX76 values ('john', 'obeys', 'army');
> > insert into EX76 values ('mary', 'obeys', 'army');
> > insert into EX76 values ('mary', 'obeys', 'trinity');
> > insert into EX76 values ('luke', 'obeys', 'trinity');
> > insert into EX76 values ('laptop1', 'obeys', 'john');
> > insert into EX76 values ('laptop1', 'obeys', 'mary');
> > insert into EX76 values ('fido', 'obeys', 'john');
> > insert into EX76 values ('fido', 'obeys', 'mary');
> > insert into EX76 values ('fido', 'obeys', 'luke');
>
> And now please write a query that returns an aggregate age of all persons.
> In this schema with SQL, or with Neo's school science fair project.

Here's the results from a test run I did:

test=> select sum(to_number(object,'99')) from EX76 where object in ( select subject from EX76 where relator = 'isa' AND object = 'age');  sum



  35
(1 row)

Please note that I am not advocating building schemata that look like this. I'm just pointing out that an existing relational database can handle it.

Compare the length and clarity of the above SQL with Neo's pseudocode.

Marshall Received on Thu Feb 26 2004 - 04:44:31 CET

Original text of this message