Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> comp.databases.theory -> Re: object algebra

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@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 Wed Feb 25 2004 - 21:44:31 CST

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US