All changes to the CQL section:
[yaz-moved-to-github.git] / doc / tools.xml
index 55dec3c..6c02fc5 100644 (file)
@@ -1,4 +1,4 @@
-<!-- $Id: tools.xml,v 1.29 2003-11-03 09:34:02 mike Exp $ -->
+<!-- $Id: tools.xml,v 1.34 2003-12-18 17:27:31 mike Exp $ -->
  <chapter id="tools"><title>Supporting Tools</title>
   
   <para>
     <para>
      The @attr operator is followed by an attribute specification 
      (<literal>attr-spec</literal> above). The specification consists
-     of optional an attribute set, an attribute type-value pair and
-     a sub query. The attribute type-value pair is packed in one string:
-     an attribute type, a dash, followed by an attribute value. 
+     of an optional attribute set, an attribute type-value pair and
+     a sub-query. The attribute type-value pair is packed in one string:
+     an attribute type, an equals sign, and an attribute value, like this:
+     <literal>@attr 1=1003</literal>.
      The type is always an integer but the value may be either an
      integer or a string (if it doesn't start with a digit character).
+     A string attribute-value is encoded as a Type-1 ``complex''
+     attribute with the list of values containing the single string
+     specified, and including no semantic indicators.
     </para>
 
     <para>
 
     <sect3 id="pqf-examples"><title>PQF queries</title>
 
-     <para>Queries using simple terms.
-      <screen>
-      dylan
-      "bob dylan"
-      </screen>
-     </para>
-     <para>Boolean operators.
-      <screen>
-       @or "dylan" "zimmerman"
-       @and @or dylan zimmerman when
-       @and when @or dylan zimmerman
-      </screen>
-     </para>
-     <para>
-      Reference to result sets.
-      <screen>
-       @set Result-1
-       @and @set seta setb
-      </screen>
-     </para>
-     <para>
-      Attributes for terms.
-      <screen>
-       @attr 1=4 computer
-       @attr 1=4 @attr 4=1 "self portrait"
-       @attrset exp1 @attr 1=1 CategoryList
-       @attr gils 1=2008 Copenhagen
-       @attr 1=/book/title computer
-      </screen>
-     </para>
-     <para>
-      Proximity.
-      <screen>
-       @prox 0 3 1 2 k 2 dylan zimmerman
-      </screen>
-      <note><para>
-      Here the parameters 0, 3, 1, 2, k and 2 represent exclusion,
-      distance, ordered, relation, which-code and unit-code, in that
-      order.  So:
-      <itemizedlist>
-        <listitem><para>
-         exclusion = 0: the proximity condition must hold
-        </para></listitem>
-        <listitem><para>
-         distance = 3: the terms must be three units apart
-        </para></listitem>
-        <listitem><para>
-         ordered = 1: they must occur in the order they are specified
-        </para></listitem>
-        <listitem><para>
-         relation = 2: lessThanOrEqual (to the distance of 3 units)
-        </para></listitem>
-        <listitem><para>
-         which-code is ``known'', so the standard unit-codes are used
-        </para></listitem>
-        <listitem><para>
-         unit-code = 2: word.
-        </para></listitem>
-      </itemizedlist>
-      So the whole proximity query means that the words
-      <literal>dylan</literal> and <literal>zimmerman</literal> must
-      both occur in the record, in that order, differing in position
-      by three or fewer words (i.e. with two or fewer words between
-      them.)  The query would find ``Bob Dylan, aka. Robert
-      Zimmerman'', but not ``Bob Dylan, born as Robert Zimmerman''
-      since the distance in this case is four.
-      </para></note>
-     </para>
-     <para>
-      Specifying term type.
-      <screen>
-       @term string "a UTF-8 string, maybe?"
-      </screen>
-     </para>
-     <para>Mixed queries
-      <screen>
-       @or @and bob dylan @set Result-1
-       
-       @attr 4=1 @and @attr 1=1 "bob dylan" @attr 1=4 "slow train coming"
-       
-       @and @attr 2=4 @attr gils 1=2038 -114 @attr 2=2 @attr gils 1=2039 -109
+     <example><title>PQF queries using simple terms</title>
+      <para>
+       <screen>
+       dylan
+       "bob dylan"
+       </screen>
+      </para>
+     </example>
+     <example><title>PQF boolean operators</title>
+      <para>
+       <screen>
+       @or "dylan" "zimmerman"
+       @and @or dylan zimmerman when
+       @and when @or dylan zimmerman
+       </screen>
+      </para>
+     </example>
+     <example><title>PQF references to result sets</title>
+      <para>
+       <screen>
+       @set Result-1
+       @and @set seta setb
+       </screen>
+      </para>
+     </example>
+     <example><title>Attributes for terms</title>
+      <para>
+       <screen>
+       @attr 1=4 computer
+       @attr 1=4 @attr 4=1 "self portrait"
+       @attrset exp1 @attr 1=1 CategoryList
+       @attr gils 1=2008 Copenhagen
+       @attr 1=/book/title computer
+       </screen>
+      </para>
+     </example>
+     <example><title>PQF Proximity queries</title>
+      <para>
+       <screen>
+       @prox 0 3 1 2 k 2 dylan zimmerman
+       </screen>
+       <note><para>
+        Here the parameters 0, 3, 1, 2, k and 2 represent exclusion,
+        distance, ordered, relation, which-code and unit-code, in that
+        order.  So:
+        <itemizedlist>
+         <listitem><para>
+           exclusion = 0: the proximity condition must hold
+          </para></listitem>
+         <listitem><para>
+           distance = 3: the terms must be three units apart
+          </para></listitem>
+         <listitem><para>
+           ordered = 1: they must occur in the order they are specified
+          </para></listitem>
+         <listitem><para>
+           relation = 2: lessThanOrEqual (to the distance of 3 units)
+          </para></listitem>
+         <listitem><para>
+           which-code is ``known'', so the standard unit-codes are used
+          </para></listitem>
+         <listitem><para>
+           unit-code = 2: word.
+          </para></listitem>
+        </itemizedlist>
+        So the whole proximity query means that the words
+        <literal>dylan</literal> and <literal>zimmerman</literal> must
+        both occur in the record, in that order, differing in position
+        by three or fewer words (i.e. with two or fewer words between
+        them.)  The query would find ``Bob Dylan, aka. Robert
+        Zimmerman'', but not ``Bob Dylan, born as Robert Zimmerman''
+        since the distance in this case is four.
+       </para></note>
+      </para>
+     </example>
+     <example><title>PQF specification of search term</title>
+      <para>
+       <screen>
+       @term string "a UTF-8 string, maybe?"
+       </screen>
+      </para>
+     </example>
+     <example><title>PQF mixed queries</title>
+      <para>
+       <screen>
+       @or @and bob dylan @set Result-1
+       
+       @attr 4=1 @and @attr 1=1 "bob dylan" @attr 1=4 "slow train coming"
+       
+       @and @attr 2=4 @attr gils 1=2038 -114 @attr 2=2 @attr gils 1=2039 -109
       </screen>
-      <note>
+       <note>
        <para>
-         The last of these examples is a spatial search: in
-         <ulink url="http://www.gils.net/prof_v2.html#sec_7_4"
+        The last of these examples is a spatial search: in
+        <ulink url="http://www.gils.net/prof_v2.html#sec_7_4"
          >the GILS attribute set</ulink>,
-         access point
-         2038 indicates West Bounding Coordinate and
-         2030 indicates East Bounding Coordinate,
-         so the query is for areas extending from -114 degrees
-         to no more than -109 degrees.
+        access point
+        2038 indicates West Bounding Coordinate and
+        2030 indicates East Bounding Coordinate,
+        so the query is for areas extending from -114 degrees
+        to no more than -109 degrees.
        </para>
-      </note>
-     </para>
+       </note>
+      </para>
+     </example>
     </sect3>
    </sect2>
    <sect2 id="CCL"><title>CCL</title>
     </para>
 
     <para>
-     The <ulink url="http://europagate.dtv.dk/">EUROPAGATE</ulink>
-     research project working under the Libraries programme
+     The EUROPAGATE research project working under the Libraries programme
      of the European Commission's DG XIII has, amongst other useful tools,
      implemented a general-purpose CCL parser which produces an output
      structure that can be trivially converted to the internal RPN
@@ -1195,9 +1208,9 @@ int cql_transform_error(cql_transform_t ct, char **addinfop);
       error-code and sets the string-pointer at
       <literal>*addinfop</literal> to point to a string containing
       additional information about the error that occurred: for
-      example, if the error code is 15 (``Illegal or unsupported index
+      example, if the error code is 15 (``Illegal or unsupported context
       set''), the additional information is the name of the requested
-      index set that was not recognised.
+      context set that was not recognised.
      </para>
      <para>
       The SRW error-codes may be translated into brief human-readable
@@ -1253,26 +1266,37 @@ int cql_transform_FILE(cql_transform_t ct,
       The following CQL patterns are recognized:
       <variablelist>
        <varlistentry><term>
-         <literal>qualifier.</literal><replaceable>set</replaceable><literal>.</literal><replaceable>name</replaceable>
+         <literal>index.</literal><replaceable>set</replaceable><literal>.</literal><replaceable>name</replaceable>
         </term>
         <listitem>
          <para>
-          This pattern is invoked when a CQL qualifier, such as 
+          This pattern is invoked when a CQL index, such as 
           dc.title is converted. <replaceable>set</replaceable>
-          and <replaceable>name</replaceable> is the index set and qualifier
+          and <replaceable>name</replaceable> are the context set and index
           name respectively.
           Typically, the RPN specifies an equivalent use attribute.
          </para>
          <para>
-          For terms not bound by a qualifier the pattern
-          <literal>qualifier.srw.serverChoice</literal> is used.
-          Here, the prefix <literal>srw</literal> is defined as
-          <literal>http://www.loc.gov/zing/cql/srw-indexes/v1.0/</literal>.
+          For terms not bound by an index the pattern
+          <literal>index.cql.serverChoice</literal> is used.
+          Here, the prefix <literal>cql</literal> is defined as
+          <literal>http://www.loc.gov/zing/cql/cql-indexes/v1.0/</literal>.
           If this pattern is not defined, the mapping will fail.
          </para>
         </listitem>
        </varlistentry>
        <varlistentry><term>
+         <literal>qualifier.</literal><replaceable>set</replaceable><literal>.</literal><replaceable>name</replaceable>
+        (DEPRECATED)
+        </term>
+        <listitem>
+         <para>
+         For backwards compatibility, this is recognised as a synonym of
+          <literal>index.</literal><replaceable>set</replaceable><literal>.</literal><replaceable>name</replaceable>
+         </para>
+        </listitem>
+       </varlistentry>
+       <varlistentry><term>
          <literal>relation.</literal><replaceable>relation</replaceable>
         </term>
         <listitem>
@@ -1354,10 +1378,10 @@ int cql_transform_FILE(cql_transform_t ct,
         </term>
         <listitem>
          <para>
-          This specification defines a CQL index set for a given prefix.
+          This specification defines a CQL context set for a given prefix.
           The value on the right hand side is the URI for the set - 
           <emphasis>not</emphasis> RPN. All prefixes used in
-          qualifier patterns must be defined this way.
+          index patterns must be defined this way.
          </para>
         </listitem>
        </varlistentry>
@@ -1365,16 +1389,16 @@ int cql_transform_FILE(cql_transform_t ct,
      </para>
      <example><title>CQL to RPN mapping file</title>
       <para>
-       This simple file defines two index sets, three qualifiers and three
+       This simple file defines two context sets, three indexes and three
        relations, a position pattern and a default structure.
       </para>
       <programlisting><![CDATA[
-       set.srw    = http://www.loc.gov/zing/cql/srw-indexes/v1.0/
+       set.cql    = http://www.loc.gov/zing/cql/context-sets/cql/v1.1/
        set.dc     = http://www.loc.gov/zing/cql/dc-indexes/v1.0/
 
-       qualifier.srw.serverChoice = 1=1016
-       qualifier.dc.title         = 1=4
-       qualifier.dc.subject       = 1=21
+       index.cql.serverChoice = 1=1016
+       index.dc.title         = 1=4
+       index.dc.subject       = 1=21
   
        relation.<                 = 2=1
        relation.eq                = 2=3
@@ -1394,7 +1418,7 @@ int cql_transform_FILE(cql_transform_t ct,
        <screen>
         @attr 1=1016 @attr 2=3 @attr 4=1 @attr 3=3 @attr 6=1 "computer"
        </screen>
-       by rules <literal>qualifier.srw.serverChoice</literal>,
+       by rules <literal>index.cql.serverChoice</literal>,
        <literal>relation.scr</literal>, <literal>structure.*</literal>,
        <literal>position.any</literal>.
       </para>
@@ -1744,7 +1768,7 @@ typedef struct oident
     release the associated memory again. For the structures describing the
     Z39.50 PDUs and related structures, it is convenient to use the
     memory-management system of the &odr; subsystem (see
-    <link linkend="odr-use">Using ODR</link>). However, in some circumstances
+    <xref linkend="odr.use"/>). However, in some circumstances
     where you might otherwise benefit from using a simple nibble memory
     management system, it may be impractical to use
     <function>odr_malloc()</function> and <function>odr_reset()</function>.