3. ZOOM::query and subclasses

The ZOOM::query class is a virtual base class, representing a query to be submitted to a server. This class has no methods, but two (so far) concrete subclasses, each implementing a specific query notation.

3.1. ZOOM::prefixQuery

    class prefixQuery : public query {
      prefixQuery (const char *pqn);
      ~prefixQuery ();

This class enables a query to be created by compiling YAZ's cryptic but powerful Prefix Query Notation (PQN).

3.2. ZOOM::CCLQuery

    class CCLQuery : public query {
      CCLQuery (const char *ccl, void *qualset);
      ~CCLQuery ();

This class enables a query to be created using the simpler but less expressive Common Command Language (CCL). The qualifiers recognised by the CCL parser are specified in an external configuration file in the format described by the YAZ documentation.

If query construction fails for either type of query object - typically because the query string itself is not valid PQN or CCL - then an exception is thrown.

3.3. Discussion

It will be readily recognised that these objects have no methods other than their constructors: their only role in life is to be used in searching, by being passed to the resultSet class's constructor.

Given a suitable set of CCL qualifiers, the following pairs of queries are equivalent:


     prefixQuery("@and complete dinosaur");
     CCLQuery("complete and dinosaur");

     prefixQuery("@and complete @or dinosaur pterosaur");
     CCLQuery("complete and (dinosaur or pterosaur)");

     prefixQuery("@attr 1=7 0253333490");

3.4. References