[ZOOM] Possible new Connection properites - comments?
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
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
> > 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)
,'--/::(@)::. 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