Re: Nearest Common Ancestor Report (XDb1's $1000 Challenge)

From: Neo <neo55592_at_hotmail.com>
Date: 4 Jun 2004 11:56:19 -0700
Message-ID: <4b45d3ad.0406041056.1c3b4fb1_at_posting.google.com>


> 1) Neo owes Hugo $1000
> 2) The International Bank Account Number (IBAN) of Hugo's bank account
> is NL59 RABO 0118 3365 68.

Because RM solutions (1 and 2) thus far aren't as normalized or generic as XDb1's, they fail under a broader scope of data. Below is such data:

Enter a small hierarchy of 3 things, where god is the parent of an unnamed person, and god is also the parent of a person with three names (string 'john', integer 100, decimal 3.14). The data represents a thing that doesn't have an attribute and a thing that has an attribute with three values, each of different type.

Below is XDb1's script to model the above hierarchy (in older versions, the equivalent can be entered via the GUI or API):

string isa thing.
integer isa thing.

decimal isa thing.

john isa name.
john isa string.

100 isa name.
100 isa integer.

3.14 isa name.
3.14 isa decimal.

god isa thing.

person isa thing.

* isa person.        (an unnamed person)
* parent god.        (equal to '* isChildOf god.')

* isa person.        (another unnamed person)
*'s name is john.

*'s name is 100.
*'s name is 3.14.

*'s parent god.

Right-clicking on god and selecting 'Anc Report' generates the following where the unnamed thing's classes (and attributes, if any) are printed, and all values for name of the second person are printed.

Common 'parent' Report for 'god'

ThingX   ThingY          CmnAnc  Dist
person   john 100 3.14   god        2

Time Elapsed: 0.906550 msec

RM solutions thus far, lack the normalization and genericness to represent the above data. If RM's solution could be updated to accommodate the above, we will be one step closer to making a fairer comparison.

In all the measurements shown below, none of RM's solutions are normalized down to atomic symbols, where as XDb1's are.

Small Report Generation Summary (provided by Hugo)



Solution Time(ms) Platform Notes
-------------- --------  ----------------- --------------------------
RM#1 SqlSrvr2K  14.3     1.3 Ghz PC
RM#2 SqlSrvr2K  11.0     1.3 Ghz PC
XDb1 4.4.7      16       1.3 Ghz PC        Unoptimized, debug version


Small Report Generation Summary (provided by Neo)



Solution Time(ms) Platform Notes
-------------  --------  ----------------- --------------------------
RM#1 SqlSrvr7   65.0     500 Mhz Server
RM#2 SqlSrvr7   68.9     500 Mhz Server
RM#4 SqlSrvr7  152.13    500 Mhz Server
XDb1 4.4.7      16       500 Mhz Server    Unoptimized, debug version
XDb1 4.5.7       1.632   500 Mhz Server
XDb1 4.5.9       6.561   233 MHz PocketPC


Large Report (28,940 rows) Generation Summary (provided by Neo)



Solution Time(sec) Platform Notes
-------------  --------  ----------------- --------------------------
RM#1 SqlSrvr7   15.2     500 Mhz Server
XDb1 4.5.7       2.9     500 Mhz Server
XDb1 4.5.9      16.971   233 Mhz PocketPC
Received on Fri Jun 04 2004 - 20:56:19 CEST

Original text of this message