Re: Semantics and Hierarchies

From: Neo <neo55592_at_hotmail.com>
Date: 30 Oct 2004 11:40:02 -0700
Message-ID: <4b45d3ad.0410301040.541f3446_at_posting.google.com>


> Any suggestions, discussion is greatly welcomed.

To represent you data faithfully, you may need to use generic modelling (which is frequently impractical). Script below represents your data in XDb2 (experimental db):

// Create verbs

CREATE2 *supplier.cls = verb;
CREATE2 *customer.cls = verb;
CREATE2 customer.opposite = supplier;

CREATE2 *employee.cls = verb;
CREATE2 *employer.cls = verb;
CREATE2 employee.opposite = employer;

// Create property classes

CREATE2 *address.cls = thing;
CREATE2 *phone.cls = thing;
CREATE2 *cell.cls = thing;
CREATE2 *email.cls = thing;
CREATE2 *website.cls = thing;

// Create companies

CREATE2 *company.cls = thing;
CREATE2 *companyA.cls = company;
CREATE2 *companyB.cls = company;
CREATE2 *companyC.cls = company;
CREATE2 companyC.website = +www.C.com;

CREATE2 companyC.phone = +800-333-4444;
CREATE2 companyC.email = +'contact_at_C.com';

// Create persons

CREATE2 *person.cls = company;
CREATE2 *john.cls = person;

CREATE2 john.address = +123 main st;
CREATE2 john.phone = +123-4567;
CREATE2 john.email = +'john_at_hotmail.com';

CREATE2 *mary.cls = person;
CREATE2 mary.address = +789 walnut st;
CREATE2 mary.cell = +333-4444;

CREATE2 *bob.cls = person;
CREATE2 bob.email = +'bob_at_hotmail.com'; CREATE2 bob.email = +'bob_at_yahoo.com';

CREATE2 *sue.cls = person;
CREATE2 sue.website = +www.sue_world.com;

CREATE2 *tim.cls = person;
CREATE2 *betty.cls = person;
CREATE2 *billy baker.cls = person;
CREATE2 *micky miller.cls = person;

// Relate companies to employees
// Note: john and mary have email/phone specific to their company
CREATE2 *;
CREATE2 it.cls = john;
CREATE2 companyA.employee = it;
CREATE2 it.email = +'john_at_A.com';

CREATE2 *;
CREATE2 it.cls = mary;
CREATE2 companyA.employee = it;

CREATE2 it.email = +'mary_at_A.com';
CREATE2 it.email = +'support_at_A.com';
CREATE2 it.phone = +800-444-7777;

CREATE2 companyB.employee = bob;
CREATE2 companyB.employee = sue;

CREATE2 companyC.employee = tim;
CREATE2 companyC.employee = betty;

// Relate companies to suppliers
// Note: reciprocal customer relation is auto generated

CREATE2 companyA.supplier = companyB;
CREATE2 companyB.supplier = companyC;
CREATE2 companyC.supplier = companyA;

// Suppliers and customers of different classes
CREATE2 companyA.supplier = billy baker; CREATE2 micky miller.supplier = companyB; Received on Sat Oct 30 2004 - 20:40:02 CEST

Original text of this message