| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> comp.databases.theory -> Re: object algebra
"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
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
![]() |
![]() |