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