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