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