I've been having some off-list conversation that I thought I'd move here. Rob Sanderson, Mike Taylor (of Index Data) and I have been chatting about the details of the interface we want to propose for OOo. Here's an initial stab (subtly edited based on comments from Mike) that Rob wrote. I still don't quite understand the details of how we'd get XSLT-based formatting integrated here, but have the sense this will work.

=====

In order to support a common interface to databases, both local and
remote, for the purposes of the bibliographic utilities in OpenOffice,
a single API implemented within OO and exposed as UNO objects would
allow for various front ends to be put in place as well as
automatically switching between different back ends without changing
functions.

As bibliographic records are not similar to SQL query results, even if
the data is stored in a relational database, we need to look for
existing standardised and supported APIs to integrate. The primary API
in the bibliographic domain that fits this is 'ZOOM': Z39.50 Object
Orientation Model (http://zoom.z3950.org) It is abstract, but has both
C++ and Java bindings and implementations available under open source
licenses.

It has a simple model, but one that is flexible enough to be
appropriate for many different database engines. It was designed in
particular for Z39.50 (and more recently applied to SRW) but would also
work for local datastores such as eXist with only a very simple layer
to act as an interface.

ZOOM defines four primary object classes:

    Connection:   A connection to a database manager
    Query:        A query to be sent to the database manager
    ResultSet:    The results of a search query (an ordered list of
Records)
    Record:       An item within a ResultSet

A sample usage: [Which should probably be translated to C++]

conn = Connection('z3950.loc.gov', 7090)
conn.databaseName = 'voyager'
q = Query('PQF', '@attr 1=4 @attr 2=3 "computer"')
results = conn.search(q)
for rec in results:
     print rec.get_data()

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to