[ZOOM] Possible new Connection properites - comments?

Robert Sanderson azaroth at liverpool.ac.uk
Thu May 20 13:15:17 CEST 2004

> On Wed, May 19, 2004 at 11:10:27AM +0100, Robert Sanderson wrote:
> > However, I don't see that ZOOM needs a CQL to RPN translator. Either a 
> > server can talk CQL natively (via Z or SRW) or it can't.
> Have I missed something? I had never seen a proposal to add CQL into
> native Z39.50. Is there one around somewhere? (I think EXTERNAL was
> added as a query type to Z39.50, so its now possible to drop new
> query types in easily, once the ASN.1 and OID etc are defined.)

Right.  Which is where CQL is.
The OID from the MA page is: 1.2.840.10003.16.2  	

> > those mappings should be in the ZeeRex file, so no need for automatic 
> > translation at all, just send them through. If it can't, which is when 
> > you want the translation, then they won't be there ... so the ZeeRex won't 
> > help you either way.

> Not sure I follow the latter part of this paragraph. We are successfully
> using ZeeRex records to translate CQL into RPN. We require certain
> information to be defined in the ZeeRex record for it to work (that
> is, both a <map><name> and <map><attr> for the same index), but otherwise
> its pure ZeeRex. It wont work for all ZeeRex records, but if you set up
> the record correctly, it will work.

Which isn't really proper use of ZeeRex, as by putting in the CQL you're 
saying that the server supports it.  Which, I assume, it doesn't.

The way that I do it for my SRW<->Z gateway is to have one ZeeRex for SRW 
and one for the Z target, then have id attributes on the index elements 
and do the mapping via those.

I have two extension attributes I use in my native CQL/SRW server, which 

c3:index  -- object id of a index
  This goes on index and index/configInfo/supports[@type="relation"]

c3:transformer -- object id of a transformer
  This goes on schema.

> Note: we are also defining some private extensions to ZeeRex in a
> separate namespace allowing CQL relations and relation modifiers to
> be defined. This means someone can define new operators etc in a ZeeRex
> record *if they choose to*. If not present, we drop back to standard
> defaults.

Could you give an example?  You can 'define' new operators using 
configInfo/supports.  By which I mean you can record that the server 
supports non standard operators, you /define/ them in a context set 
document. :)

> > The latter.  My CQL->RPN translation happens in my CQL toolkit as there 
> > are complex mappings that have to go on... for example for stemming and 
> > relevance ranking.
> > Or, rather, that I construct my queries natively in CQL and then turn them 
> > into the RPN directly -- no need to go through PQF.

> How do you pass your RPN query to your ZOOM API? I thought only strings
> were supported, not ASN.1 based tree structures. (I am curious.) Or is
> this a private extension of your own?

Ahh, I see your point.  We have the following query types in our ZOOM 

PQF    -- Obvious
C2     -- Cheshire2 RPN representation based on CCL
CCL    -- Obvious
S-CCL  -- Server side CCL
CQL    -- Translation into RPN 
S-CQL  -- Sent through as External
ZSQL   -- Ditto

But at this level the CQL is just translated without a reference to 
ZeeRex files.  If I need to turn it into a string query before getting 
that far, I do use PQF as you suggested.
(Too many slightly different implementations using this stuff floating 
around in my brain! :) )

I guess that an easy way we could both use the ZeeRex stuff would be to
add an extension property to the query object with a reference to further
information for how to translate the CQL into RPN.


      ,'/:.          Dr Robert Sanderson (azaroth at liverpool.ac.uk)
    ,'-/::::.        http://www.o-r-g.org/~azaroth/
  ,'--/::(@)::.      Special Collections and Archives, extension 3142
,'---/::::::::::.    University of Liverpool
I L L U M I N A T I  L5R Shop: http://www.cardsnotwords.com/

More information about the ZOOM mailing list