X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=README;h=cdfa3ee2c012aeebf5e7341ca728d2f55157f583;hb=5d114bb3f03898f2aae571affe49c572f5b3f5ac;hp=e06bf2bb99411b8d561c8883aa1f553c811c8c7d;hpb=0e0dab87fb1e5b77346d845861a88269ffcc0434;p=cql-java-moved-to-github.git diff --git a/README b/README index e06bf2b..cdfa3ee 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -$Id: README,v 1.13 2002-11-05 17:20:30 mike Exp $ +$Id: README,v 1.21 2002-11-20 09:49:28 mike Exp $ cql-java - a free CQL compiler, and other CQL tools, for Java @@ -15,18 +15,20 @@ cql-java is a Free Software project that provides: * A selection of compiler back-ends to render out the parse tree as: * XCQL (the standard XML representation) * CQL (i.e. decompiling the parse-tree) - * PQF (Yaz-style Prefix Query Format) [### NOT YET] + * PQF (Yaz-style Prefix Query Format) * A random query generator, useful for testing. CQL is "Common Query Language", a new query language designed under the umbrella of the ZING initiative (Z39.59-International Next -Generation). More information at +Generation). The official specification is at + http://www.loc.gov/z3950/agency/zing/cql/cql-syntax.html +and there's more (and friendlier) information at http://zing.z3950.org/cql/index.html XCQL is "XML CQL", a representation of CQL-equivalent queries in XML -which is supposed to be easier to parse. More information at - http://www.loc.gov/z3950/agency/zing/srwu/xcql.html -(not much more, though) +which is supposed to be easier to parse. The specification is at + http://www.loc.gov/z3950/agency/zing/cql/xcql.html +and includes an XML Schema. But if you didn't know that, why are you even reading this? :-) @@ -43,7 +45,7 @@ What's what in this distribution? etc Other files: CQL Grammar, generator properties, etc. "Installation" of this package would consist of putting the bin -directory on your PATH and the lib directory on your CLASSPATH. +directory on your PATH and lib/cql-java.jar on your CLASSPATH. SYNOPSIS @@ -52,6 +54,8 @@ SYNOPSIS Using the test-harnesses: $ CQLParser 'title=foo and author=(bar or baz)' + $ CQLParser -c 'title=foo and author=(bar or baz)' + $ CQLParser -p /etc/pqf.properties 'title=foo and author=(bar or baz)' $ CQLLexer 'title=foo and author=(bar or baz)' (not very interesting unless you're debugging) $ CQLGenerator etc/generate.properties seed 18 @@ -73,15 +77,15 @@ Using the library in your own applications: CQLNode root = parser.parse("title=dinosaur"); System.out.print(root.toXCQL(0)); System.out.println(root.toCQL()); - System.out.println(root.toPQF(qualSet)); - // ... where `qualSet' specifies CQL-qualfier => Z-attr mapping + System.out.println(root.toPQF(config)); + // ... where `config' specifies CQL-qualfier => Z-attr mapping DESCRIPTION ----------- See the automatically generated class documentation in the "doc" -subdirectory. (It's not all there yet, but it's coming.) +subdirectory. AUTHOR @@ -96,11 +100,18 @@ stories and, of course, large cash donations. LICENCE ------- -This software is Open Source, but I've not yet decided exactly what -licence to use. Be good. Assume I'm going with the GPL (most -restrictive) until I say otherwise. For what it's worth, I think the -most likely licence is the LGPL (GNU's Lesser General Public Licence) -which lets you deploy cql-java as a part of a non-free larger work. +The cql-java suite is Free Software, which is pretty much legally +equivalent -- though not morally equivalent -- to Open Source. See + http://www.gnu.org/philosophy/free-software-for-freedom.html +for a detailed if somewhat one-sided discussion of the differences, +and particularly of why Free Software is an important idea. + +cql-java is distributed under version 2.1 of the LGPL (GNU LESSER +GENERAL PUBLIC LICENSE). A copy of the licence is included in this +distribution, as the file LGPL-2.1. This licence does not allow you +to restrict the freedom of others to use derived versions of cql-java +(i.e. you must share your enhancements), but does let you deploy +cql-java as a part of a non-free larger work. SEE ALSO @@ -109,43 +120,4 @@ SEE ALSO Adam Dickmeiss's CQL compiler, written in C. Rob Sanderson's CQL compiler, written in Python. All the other free CQL compilers everyone's going to write :-) - - -THINGS TO DO ------------- - -* ### Make necessary parts of CQLNode etc. public. - -* ### Fix 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 StreakTokenizer and - rolling our own, which we absolutely _don't_ want to do. - -* Allow keywords to be used unquoted as search terms. - -* Some niceties for the cql-decompiling back-end: - * don't emit redundant parentheses. - * don't put spaces around relations that don't need them. - -* Write the PQN-generating back-end. This will need to be driven from - a configuation file specifying how to represent the qualifiers, - relations, relation modifiers and wildcard characters as z39.50 - attributes. I think Ray has such a thing, though perhaps not yet in - a form sufficiently rigorous to be computer-readable. - -* Consider the utility of yet another back-end that translates a - CQLNode tree into a Type-1 query tree using the JZKit data - structures. That would be nice so that CQL could become a JZKit - query-type; but you could achieve the same effect by generating PQN, - and running that through JZKit's existing PQN-to-Type-1 compiler. - -* 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 - -* Write fuller "javadoc" comments. +The "Changes" file, including the "Still to do" section.