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