[Zope3-dev] zwiki: performance of findChildren()

Shane Hathaway shane@zope.com
Mon, 05 May 2003 13:05:55 -0400


Ken Manheimer wrote:
> This requires something like the event service and object hub to
> reliably maintain the relationship info.  It's no coincidence that
> Zope3 has them.  They're generally useful for doing kind of thing -
> and in fact i think my ruminations on OrganizationObjects had
> something to do with prompting those services.

I'd like to mention that relationships would be quite useful in pure 
ZODB applications as well.

> I think that a relationship service would enable a lot of very useful
> things, including and well beyond lineage.  I sketched out several
> kinds of relationships in the OrganizationObjects spiel i mention
> above.  Now that i've been (barely) introduced to RDF, i'm also seeing
> how tieing RDF in with the relationship service could capitalize on
> RDF's technology for federation and systematic translation of
> relationships, and even the high level semantic web stuff like
> ontology mapping if/when that cogeals.

Yes!  RDF is a serialization of relationships.  Each RDF triple maps an 
entity to a role in an entity-relationship diagram.  RDF fits so well 
with general relationships that I sometimes think that RDF should stand 
for something like "relationship data format" rather than "resource 
description framework".  RDF's generality, OTOH, makes it hard to 
understand at first.

>>>Isn't it better to have a container 
>>>with different relations?
>>
>>Not really.
>>
>>If you wanted to know what someone was working on, would you ask them or ask
>>their mother?
> 
> 
> I don't see how your question is relevant.  ?
> 
> At least, the kind of thing that concerns me is more along the lines
> of this question: "If you wanted to call a plumber, would you go to
> everyone in your city to ask them if they do plumbing, or would you
> look in a directory?"

There is a need for both kinds of access.  In a genealogy program, it is 
natural to ask an individual for a list of children.  Yet because there 
are often conflicting sources of information, you can't just store the 
children as subobjects of the individual.  The individual should 
delegate the management of its list of children to a centralized 
database that layers multiple sources transparently.  (Whoa, that would 
be cool.  Why didn't I think of it like that before? ;-) )  But in the 
case of a plumber directory, it makes a lot more sense for the 
application to skip the indirection and look at the plumber directory.

Shane