[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