2 Revision history for the CQL-Java package.
3 See the bottom of this file for a list of things still to do.
5 The work for releases 1.0, 1.2 and 1.2.1 was sponsored by the National
6 Library of Australia, whose help we gratefully acknowledge.
9 - rewrite the CQL lexer to better conform to CQL spec (e.g retain escapes for wildcards, etc)
10 - add jUnit test cases
12 1.11 Tue 5 Mar 2013 13:38:18 CET
13 - Fix problem with parsing unquoted terms that begin with a '.'
14 - Fix problem with parsing unquoted terms that contain a '@'
15 - allow registration of custom relations
16 - optional flag to set strict-but-not-compliant mode that prohibits
17 unqouted keywords to be used as terms
19 1.8 Fri Jul 22 18:02:41 CEST 2011
20 - API changes: removed direct access to internal state and introduced
21 getters, removed usages of obsolete collections (Vector, Hashtable),
22 simplified method signatues (toXCQL), modified constants to be
24 - implemented faster XCQL serialization, using pure StringBuilder
26 1.7 Tue Jul 27 17:35:25 BST 2010
27 - Patch from Ralph LeVan to recognise
28 "qualifier.dc.creator"-like properties as well as
29 "index.dc.creator" -- backwards compatible with version
30 prior to 1.0 as well as those subsequent.
31 - Reinstate the "exact" relation even when v1.2 is in effect
32 (the default), despite its removal from v1.2 of CQL. In
33 practice, it seems to be in fairly widespread use, and
34 little real purpose is served in removing it.
36 1.6 Thu Jun 17 10:56:24 BST 2010
37 - Fix the bug where "9x" is lexed as two tokens, a TT_NUMBER
38 followed by a TT_WORD, making unquoted search-terms such as
39 2010-06-17 syntax errors. Thanks to Erik Hetzner
40 <erik.hetzner@ucop.edu> for the patch.
42 1.5 Tue May 25 16:44:35 CEST 2010
43 - Fix recognition of word-relations to correctly match what is
44 specified in the CQL v1.1 and v1.2 documents. In
45 particular, "encloses" and "within" are recognised, so that
46 Masterkey's use of "encloses" for IP range authentication
48 - Update regression tests accordingly.
49 - Extend test/random/ to emit summary line of successful
52 1.4 Thu May 20 00:38:40 BST 2010
53 - Add support for interpreting sequences of non-keywords as a
54 single multi-word term rather than a broken INDEX RELATION
55 TERM triplet. This means that "oxford street" is a valid
56 query rather than a syntax error, and "tottenham court road"
57 is what it looks like rather than a search for the word
58 "court" related by the relation "court" to the index
59 "tottenham". Note that the word-formed relations "any",
60 "all", "exact" and (for CQL v1.2) "scr" are still treated
61 specially, as are profiled relations in context sets, of the
64 1.3 Wed May 28 11:02:00 BST 2008
65 - Add getSortIndexes() to CQLSortNode, as suggested by Marcel
66 Versteeg <Marcel.Versteeg@KB.nl>
68 1.2.1 Mon Aug 6 16:54:54 BST 2007
69 - Contructors for the CQLParser class are made public (as they
70 should have been all along).
72 1.2 Tue Jul 3 17:53:28 BST 2007
73 - Support for CQL version 1.2 as described at
74 http://www.loc.gov/standards/sru/next-version.html
75 The most significant part of the v1.2 change is support for
76 sorting, but as of this writing (29th June) the official SRU
77 maintenance agency web site at
78 http://www.loc.gov/standards/sru/index.html
79 does not include any specification for CQL sorting.
80 Therefore the original proposal at
81 http://zing.z3950.org/cql/sorting.html
82 is still considered canonical.
84 1.0 Fri Jun 29 14:10:28 BST 2007
85 - Support for version 1.1 as described at
86 http://www.loc.gov/standards/sru/specs/cql.html
87 Since this is a significant leap forward, the version
88 numbering increases to the next major version.
89 - "Qualifiers" renamed as "indexes" throughout, to match what
90 is now universal CQL terminology.
92 PLEASE NOTE THE FOLLOWING INCOMPATIBLE API CHANGES
93 - The class UnknownQualifierException is replaced by
94 UnknownIndexException.
95 - The CQLTermNode method getQualifier() is replaced by
98 0.7 Thu Sep 4 22:51:11 2003
99 - Support for profiled relations and relation modifiers:
100 recognise any non-key word as a relation or modifier,
101 rejecting those that are not of the form <prefix>.<name>
102 since these must be explicitly tied to a "context" (what
103 used to be called a qualifier-set or index-set).
105 0.6 Tue Jul 29 23:33:56 2003
106 - Include Ralph's fix for CQLTermNode::toType1BER() to prevent
107 it surrounding multi-word terms in quotes when encoded into
110 0.5 Wed Feb 5 15:50:57 2003
111 - Add an extra back-end method,
112 byte[] toType1BER(Properties config)
113 which generates an opaque BER-encoded PDU suitable for
114 forwarding to Z39.50 server as a pasrt of a searchRequest
115 APDU. This was contributed by Ralph Levan <levan@oclc.org>
116 - Add srw.resultSet support to the toPFQ() method.
117 - Add new resultSetName() method to CQLNode and its
118 subclasses, returning the name of the referenced result-set
119 for a node that is just a result-set reference, and null for
121 - Change regression-test rules for Adam's compiler to use his
122 new front-end cql2xcql instead of the old cqlparse3.
123 - Change the names of the anchoring properties in
124 etc/pqf.properties and the CQLTermNode code that examines
125 them, in accordance with Adam's PQF-renderer's behaviour.
126 This gives more flexibility in terms of generating
127 attributes for end-of-field anchoring. Various other minor
128 tweaks to the pqf.properties file, mostly to the comments.
129 - Change the capitalisation of the project name from
130 "cql-java" to "CQL-Java". That doesn't really make any
131 difference to anything: in particular, file-names such as
132 "cql-java.jar" remain the same.
134 0.4 Thu Nov 21 10:09:26 2002
135 - Add support for the new "phonetic" relation modifier,
136 including its mapping in "etc/pqf.properties".
137 - Make prefix-maps bind loosely, so that ``>dc=x a and b''
138 applies the dc=x binding to both the ``a'' and ``b''
140 - Change the XCQL output to include the nasty (but official)
141 <leftOperand> and <rightOperand> wrapper elements.
142 - Change the XCQL output to use the nasty (but official)
143 rendition of prefix-mapping: a <prefixes> element,
144 containing one of more <prefix>es may appear at the top
145 of either a <searchClause> or a <triple>.
146 - Include test/regression/xmlpp.pl in the distribution: this
147 may now be used for testing whether a CQL compiler produces
148 _equivalent_ XCQL to what's in the regression test, rather
149 than requiring byte-identical output.
150 - Include the reference XCQL output in the distribution, for
151 the regression test suite to run against.
152 - Change build process so that javadoc documentation is built
153 by "make" in the "docs" directory. There's now a top-level
154 makefile that builds the source, runs the test suite and
155 creates the documentation.
156 - Write javadoc comments for CQLRelation and ModifierSet.
157 - Other improvements to javadoc comments (e.g. describe the
158 `config' parameter to the toPQF() method.)
159 - Sort out the licence: I've settled on the LGPL.
160 - Remove the redundant and misleading etc/Grammar file.
161 - Fix up various Maintenance Agency web addresses that have
162 moved in the great ZING-release shake-up.
164 0.3 Fri Nov 15 12:04:04 2002
165 - Allow keywords to be used unquoted as search terms.
166 - Add support for serverChoiceRelation (scr).
167 - Add support for prefix-mapping, as in
168 >dc="http://www.loc.gov/zing/cql/dc-indexes/" dc.title=fish
170 >"http://www.loc.gov/zing/cql/dc-indexes/" dc.title=fish
171 The XCQL generated corresponds to Adam's suggested format
172 rather than Rob's, not so much because I prefer it (although
173 I do) as because it's what fell out when I just Coded What
174 Comes Natur'ly. That may need to change, depending on the
175 result of the ZNG list's deliberations.
176 - Fix the parser to normalise relation modifiers to lower case.
177 - Fix the CQLParser test harness not to emit an extraneous
178 blank line at end of XCQL output.
179 - Fix CQLNode documentation to contain a link to YAZ's
180 documentation of Prefix Query Format (PQF) rather than
181 containing a rather unhelpful chunk of BNF.
182 - Change the test/regression Makefile so that "make clean" now
183 does what "make distclean" used to do - the distinction
184 between them is pointless.
185 - Fix a few typos in the documentation.
186 - Move the README file's old "THINGS TO DO" section to the end
187 of this file, the new "Still to do" section.
189 0.2 Wed Nov 6 23:05:54 2002
190 - Fix the order of proximity parameters in accordance with the
191 updated official grammar, which now specifies proximity
192 operators of the form
193 prox/<relation>/<distance>/<unit>/<ordering>
194 as in ``foo prox/<=/3/sentence bar''.
195 - Make the necessary parts of the CQLNode class and its
196 subclasses public. This means that client code can now walk
197 through parse-trees and so implement its own back-end
198 (e.g. to build BER-friendly data structures using whatever
199 Z39.50 toolkit is preferred.)
200 - Add the toPQF(Properties p) method to CQLNode and its
201 subclasses. This produces a query in YAZ-style Prefix Query
202 Format, which can be trivially translated into a Z39.50
203 Type-1 query (see, for example, JZKit's code to do so).
204 - Add etc/pqf.properties to configure the toPQF() method.
205 - Add "-p <props-file>" option to the CQLParser test-harness,
206 indicating that the parsed tree is to be rendered to PQF.
207 - Add PQFTranslationException and its subclasses
208 UnknownQualifierException, UnknownRelationException,
209 UnknownRelationModifierException and
210 UnknownPositionException.
211 - Rename ParameterMissingException to MissingParameterException.
212 - Add javadoc comments for CQLNode and its subclasses.
214 0.1 Sun Nov 3 20:58:27 2002
215 - First public release.
220 - Test-harness option to use Type1 BER back-end.
221 - Case-insensitive matching for serverChoice and any other
222 special-case qualifiers. (Are the configured qualifiers
223 matched case-insensitively? They should be.)
224 - Prefix-aware matching for serverChoice, so that
225 >x="http://www.loc.gov/zing/srw/dc-indexes/v1.0/" x.resultSet=foo
226 does the right thing.
227 - Extend test-suite for PQF and BER renderers.
228 - Additional test-suite entries for things like
230 - Add a new configuration file that allows arbitrary new
231 relations and relation modifiers to be defined.
232 - Fix term-to-PQF translation to omit empty properties
233 (for the broken Korean server)
234 - Write "package.html" file for the javadoc documentation.
235 - Some niceties for the cql-decompiling back-end:
236 * Don't emit redundant parentheses.
237 * Don't put spaces around relations that don't need them.
238 - Many refinements to the random query generator:
239 * Generate relation modifiers
241 * Don't always generate qualifier/relation for terms
242 * Better selection of qualifier (configurable?)
243 * Better selection of terms (from a dictionary file?)
244 * Introduce wildcard characters into generated terms
245 * Generate multi-word terms
246 * Generate prefix-mappings