Version 1.1.1, 19th of May, 2006
The ZeeRex record schema is used in SRW/U to describe the capabilities of the server, and is described in full at http://explain.z3950.org/. Although there is an explain operation which will retrieve the record describing the server, ZeeRex is designed such that the records can be aggregated into a registry style database. Once in this registry there needs to be a way to search them and this context set, along with others in the ZeeRex profile, is the means for systems supporting CQL.
If you're wondering why all the other ZeeRex attribute set access points aren't listed below, then you should check out the profile.
The identifier for the context set is: info:srw/cql-context-set/2/zeerex-1.1
The recommended short name is: zeerex
The maintainer of the context set is: Rob Sanderson, firstname.lastname@example.org
|numberOfRecords||The number of records in the described database. (/explain/serverInfo/database@numrecs)|
|set||A supported context set or attribute set identifier. (/explain/indexInfo/set@identifier)|
|index||The name of a supported index. (See Note 1) (/explain/indexInfo/index/map/name)|
|attributeType||An attribute type for Z39.50 (/explain/indexInfo/index/map/attr@type)|
|attributeValue||An attribute value for Z39.50 (/explain/indexInfo/index/map/attr)|
|schema||The identifier of a supported record schema (/explain/schemaInfo/schema@identifier)|
|recordSyntax||The OID identifier of a supported record syntax for Z39.50 (/explain/recordInfo/recordSyntax@identifier)|
|supports_*||Multiple indexes. There is one index for each 'supports' type available for all protocols supported by ZeeRex. Whenever the list maintained in the ZeeRex specification is updated, this should also be considered to have been updated. For example supports_resultSets or supports_relationModifier. For types which are flags (resultSets, proximity, etc.) the server should accept 'true' for true/present and 'false' for false/not present. (/explain/configInfo/supports@type=*)|
|default_*||Multiple indexes. As per supports_*, but used for searching default values.|
|setting_*||Multiple indexes. As per supports_*, but used for searching setting values.|
This will search only the name and not the context set, for example
zrx.index exact "title". This will then find title indexes from any context set. You will obviously be wondering how to find indexes from one context set, and the answer is unfortunately not very pretty. As the short name of a context set is up to the server to define, you would need to retrieve the record and parse it to find out the mapping from identifer to short name. This short name would not necessarily apply across all of the aggregated records so we must use the full URI identifier. CQL has a method for searching for two pieces of information in relation to each other -- the Proximity boolean. Using prox, we can say that the set and the index need to come from the same element. So to search for cql.anywhere:
zrx.set exact "info:srw/cql-context-set/1/cql-v1.1" prox/unit=element/distance=0 zrx.index exact "anywhere"
This issue also applies to some supports_* access points as well, for example finding servers which support other parts of CQL which are contextualised, for example relation modifiers.
This issue also applies in spades for Z39.50 searching where attributes have three pieces of information -- attribute set, attribute type and attribute value.
Some examples of how the context set might be used.
zrx.numberOfRecords > 10000 zrx.supports_proximity=1 zrx.supports_relationModifier any "CORI LR" prox/unit=element/distance=0 zrx.set exact "info:srw/cql-context-set/2/relevance-1.0" zrx.schema exact "info:srw/schema/1/dc-v1.1" zrx.attributeType = 1 prox/unit=element/distance=0 zrx.attributeValue = 4 prox/unit=element/distance=0 zrx.set exact/zrx.oid "1.2.840.10003.3.1"