$Id: Changes,v 1.40 2007-07-03 16:54:50 mike Exp $ Revision history for the CQL-Java package. See the bottom of this file for a list of things still to do. 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/cql/ 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 . 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 - 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) and wrapper elements. - Change the XCQL output to use the nasty (but official) rendition of prefix-mapping: a element, containing one of more es may appear at the top of either a or a . - 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//// 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 " 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 the bug where "9x" is parsed as two tokens, a TT_NUMBER followed by a TT_WORD. The problem here is that I don't think it's actually possible to fix this without throwing out StreamTokenizer and rolling our own, which we absolutely - 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