Usage of RDF and OODBs in Chandler

More details on the Chandler architecture:

From http://www.osafoundation.org/architecture.htm

"Chandler has a repository, or database that stores a potentially huge
volume of e-mails, attachments, contacts, documents, and so on, the
structure of which will have to evolve over time. This database is probably
our biggest architectural challenge. 

Early in the project, we decided to use RDF (Resource Description and
Framework; www.w3.org/RDF) because of its ability to describe data in a very
flexible format and exchange semantic information between applications in a
standard format without loss. Because RDF is a World Wide Web Consortium
standard, we hope to gain benefit from the existing tools, validators and
applications that have been developed or will be developed.

For the repository, we've decided to use an object database. Historically,
most databases haven't stored data in a form convenient for object-oriented
programming. This meant extra work for programmers who had to convert back
and forth between different data representations, and it introduced a
variety of other difficult housekeeping challenges. Object databases try to
solve this problem by transparently storing data in a form that's convenient
for object-oriented programming, and they often solve many housekeeping
tasks with built-in garbage collection, transactions/undo, and support for
weak object references. While object databases can be difficult to use
because of the limitations of static languages like C/C++, Python's
interpreted nature makes it easier to implement a simple object database.
There's currently a Python special interest group chartered with the task of
coming up with a standard Python object database, which will likely be based
on ZODB (the ZOPE database; www.zope.org/Wikis/ZODB/). We think there's a
good chance that using a standard object database and language like Python
that are tailored to work well together will make it much easier to write
applications like Chandler.

So you might ask, are RDF and ZODB compatible? The short answer is almost,
but not completely. Although people typically store RDF as triples, there is
nothing fundamental about RDF that requires it. If you look at the Python
data structures, you can usually find a simple way to represent them as RDF.
We plan to provide a way to import and export RDF to ZODB, and also to store
the schema for our data in the database itself.

If we design the interface to the database correctly, it should function
equally well as a server or as a database local to the machine accessing it.
One of the Chandler's design goals is to not require a server. However, if
the server is available, Chandler could provide some extra features that
rely on access to certain shared data always being available. It's not our
intention, however, to provide the vast array of business features that
server-based enterprise businesses require.

There are admittedly a number of risks with an RDF/ZODB approach. First,
ZODB isn't finished, and it has a number of performance problems. Second,
combining two technologies like RDF and ZODB that weren't designed to work
together, might lead to unforeseen problems. And there are still other
significant tasks to tackle, most important of which are probably searching
and indexing, and replication."

M

Received on Wednesday, 11 June 2003 04:56:36 UTC