1 $Id: Changes,v 1.41 2007-07-03 17:04:09 mike Exp $
3 Revision history for the CQL-Java package.
4 See the bottom of this file for a list of things still to do.
8 1.2 Tue Jul 3 17:53:28 BST 2007
9 - Support for CQL version 1.2 as described at
10 http://www.loc.gov/standards/sru/next-version.html
11 The most significant part of the v1.2 change is support for
12 sorting, but as of this writing (29th June) the official SRU
13 maintenance agency web site at
14 http://www.loc.gov/standards/sru/index.html
15 does not include any specification for CQL sorting.
16 Therefore the original proposal at
17 http://zing.z3950.org/cql/sorting.html
18 is still considered canonical.
20 The work for releases 1.0 and 1.2 was sponsored by the
21 National Library of Australia, whose help we gratefully
24 1.0 Fri Jun 29 14:10:28 BST 2007
25 - Support for version 1.1 as described at
26 http://www.loc.gov/standards/sru/cql/
27 Since this is a significant leap forward, the version
28 numbering increases to the next major version.
29 - "Qualifiers" renamed as "indexes" throughout, to match what
30 is now universal CQL terminology.
32 PLEASE NOTE THE FOLLOWING INCOMPATIBLE API CHANGES
33 - The class UnknownQualifierException is replaced by
34 UnknownIndexException.
35 - The CQLTermNode method getQualifier() is replaced by
38 0.7 Thu Sep 4 22:51:11 2003
39 - Support for profiled relations and relation modifiers:
40 recognise any non-key word as a relation or modifier,
41 rejecting those that are not of the form <prefix>.<name>
42 since these must be explicitly tied to a "context" (what
43 used to be called a qualifier-set or index-set).
45 0.6 Tue Jul 29 23:33:56 2003
46 - Include Ralph's fix for CQLTermNode::toType1BER() to prevent
47 it surrounding multi-word terms in quotes when encoded into
50 0.5 Wed Feb 5 15:50:57 2003
51 - Add an extra back-end method,
52 byte[] toType1BER(Properties config)
53 which generates an opaque BER-encoded PDU suitable for
54 forwarding to Z39.50 server as a pasrt of a searchRequest
55 APDU. This was contributed by Ralph Levan <levan@oclc.org>
56 - Add srw.resultSet support to the toPFQ() method.
57 - Add new resultSetName() method to CQLNode and its
58 subclasses, returning the name of the referenced result-set
59 for a node that is just a result-set reference, and null for
61 - Change regression-test rules for Adam's compiler to use his
62 new front-end cql2xcql instead of the old cqlparse3.
63 - Change the names of the anchoring properties in
64 etc/pqf.properties and the CQLTermNode code that examines
65 them, in accordance with Adam's PQF-renderer's behaviour.
66 This gives more flexibility in terms of generating
67 attributes for end-of-field anchoring. Various other minor
68 tweaks to the pqf.properties file, mostly to the comments.
69 - Change the capitalisation of the project name from
70 "cql-java" to "CQL-Java". That doesn't really make any
71 difference to anything: in particular, file-names such as
72 "cql-java.jar" remain the same.
74 0.4 Thu Nov 21 10:09:26 2002
75 - Add support for the new "phonetic" relation modifier,
76 including its mapping in "etc/pqf.properties".
77 - Make prefix-maps bind loosely, so that ``>dc=x a and b''
78 applies the dc=x binding to both the ``a'' and ``b''
80 - Change the XCQL output to include the nasty (but official)
81 <leftOperand> and <rightOperand> wrapper elements.
82 - Change the XCQL output to use the nasty (but official)
83 rendition of prefix-mapping: a <prefixes> element,
84 containing one of more <prefix>es may appear at the top
85 of either a <searchClause> or a <triple>.
86 - Include test/regression/xmlpp.pl in the distribution: this
87 may now be used for testing whether a CQL compiler produces
88 _equivalent_ XCQL to what's in the regression test, rather
89 than requiring byte-identical output.
90 - Include the reference XCQL output in the distribution, for
91 the regression test suite to run against.
92 - Change build process so that javadoc documentation is built
93 by "make" in the "docs" directory. There's now a top-level
94 makefile that builds the source, runs the test suite and
95 creates the documentation.
96 - Write javadoc comments for CQLRelation and ModifierSet.
97 - Other improvements to javadoc comments (e.g. describe the
98 `config' parameter to the toPQF() method.)
99 - Sort out the licence: I've settled on the LGPL.
100 - Remove the redundant and misleading etc/Grammar file.
101 - Fix up various Maintenance Agency web addresses that have
102 moved in the great ZING-release shake-up.
104 0.3 Fri Nov 15 12:04:04 2002
105 - Allow keywords to be used unquoted as search terms.
106 - Add support for serverChoiceRelation (scr).
107 - Add support for prefix-mapping, as in
108 >dc="http://www.loc.gov/zing/cql/dc-indexes/" dc.title=fish
110 >"http://www.loc.gov/zing/cql/dc-indexes/" dc.title=fish
111 The XCQL generated corresponds to Adam's suggested format
112 rather than Rob's, not so much because I prefer it (although
113 I do) as because it's what fell out when I just Coded What
114 Comes Natur'ly. That may need to change, depending on the
115 result of the ZNG list's deliberations.
116 - Fix the parser to normalise relation modifiers to lower case.
117 - Fix the CQLParser test harness not to emit an extraneous
118 blank line at end of XCQL output.
119 - Fix CQLNode documentation to contain a link to YAZ's
120 documentation of Prefix Query Format (PQF) rather than
121 containing a rather unhelpful chunk of BNF.
122 - Change the test/regression Makefile so that "make clean" now
123 does what "make distclean" used to do - the distinction
124 between them is pointless.
125 - Fix a few typos in the documentation.
126 - Move the README file's old "THINGS TO DO" section to the end
127 of this file, the new "Still to do" section.
129 0.2 Wed Nov 6 23:05:54 2002
130 - Fix the order of proximity parameters in accordance with the
131 updated official grammar, which now specifies proximity
132 operators of the form
133 prox/<relation>/<distance>/<unit>/<ordering>
134 as in ``foo prox/<=/3/sentence bar''.
135 - Make the necessary parts of the CQLNode class and its
136 subclasses public. This means that client code can now walk
137 through parse-trees and so implement its own back-end
138 (e.g. to build BER-friendly data structures using whatever
139 Z39.50 toolkit is preferred.)
140 - Add the toPQF(Properties p) method to CQLNode and its
141 subclasses. This produces a query in YAZ-style Prefix Query
142 Format, which can be trivially translated into a Z39.50
143 Type-1 query (see, for example, JZKit's code to do so).
144 - Add etc/pqf.properties to configure the toPQF() method.
145 - Add "-p <props-file>" option to the CQLParser test-harness,
146 indicating that the parsed tree is to be rendered to PQF.
147 - Add PQFTranslationException and its subclasses
148 UnknownQualifierException, UnknownRelationException,
149 UnknownRelationModifierException and
150 UnknownPositionException.
151 - Rename ParameterMissingException to MissingParameterException.
152 - Add javadoc comments for CQLNode and its subclasses.
154 0.1 Sun Nov 3 20:58:27 2002
155 - First public release.
160 - Test-harness option to use Type1 BER back-end.
161 - Case-insensitive matching for serverChoice and any other
162 special-case qualifiers. (Are the configured qualifiers
163 matched case-insensitively? They should be.)
164 - Prefix-aware matching for serverChoice, so that
165 >x="http://www.loc.gov/zing/srw/dc-indexes/v1.0/" x.resultSet=foo
166 does the right thing.
167 - Extend test-suite for PQF and BER renderers.
168 - Additional test-suite entries for things like
170 - Add a new configuration file that allows arbitrary new
171 relations and relation modifiers to be defined.
172 - Fix the bug where "9x" is parsed as two tokens, a TT_NUMBER
173 followed by a TT_WORD. The problem here is that I don't
174 think it's actually possible to fix this without throwing
175 out StreamTokenizer and rolling our own, which we absolutely
176 - Fix term-to-PQF translation to omit empty properties
177 (for the broken Korean server)
178 - Write "package.html" file for the javadoc documentation.
179 - Some niceties for the cql-decompiling back-end:
180 * Don't emit redundant parentheses.
181 * Don't put spaces around relations that don't need them.
182 - Many refinements to the random query generator:
183 * Generate relation modifiers
185 * Don't always generate qualifier/relation for terms
186 * Better selection of qualifier (configurable?)
187 * Better selection of terms (from a dictionary file?)
188 * Introduce wildcard characters into generated terms
189 * Generate multi-word terms
190 * Generate prefix-mappings