added a lot of info about attribute sets, PQF query structure, and string use attributes
authorMarc Cromme <marc@indexdata.dk>
Tue, 13 Jun 2006 13:45:08 +0000 (13:45 +0000)
committerMarc Cromme <marc@indexdata.dk>
Tue, 13 Jun 2006 13:45:08 +0000 (13:45 +0000)
doc/administration.xml
doc/architecture.xml
doc/introduction.xml
doc/querymodel.xml
doc/recordmodel-alvisxslt.xml
doc/server.xml
doc/zebrasrv-man.xml
doc/zebrasrv-virtual.xml

index 10babae..7303d30 100644 (file)
@@ -1,5 +1,5 @@
 <chapter id="administration">
- <!-- $Id: administration.xml,v 1.38 2006-06-13 09:26:59 marc Exp $ -->
+ <!-- $Id: administration.xml,v 1.39 2006-06-13 13:45:08 marc Exp $ -->
  <title>Administrating Zebra</title>
  <!-- ### It's a bit daft that this chapter (which describes half of
           the configuration-file formats) is separated from
     the Bib-1 relation attribute with
     value ``relevance'' to the PQF query (that is,
     <literal>@attr&nbsp;2=102</literal>, see also  
-    <ulink url="http://www.loc.gov/z3950/agency/bib1.html">
+    <ulink url="&url.z39.50;bib1.html">
      The BIB-1 Attribute Set Semantics</ulink>, also in 
-      <ulink url="http://www.loc.gov/z3950/agency/defns/bib1.html">HTML</ulink>). 
+      <ulink url="&url.z39.50.attset.bib1;">HTML</ulink>). 
     To find all articles with the word <literal>Eoraptor</literal> in
     the title, and present them relevance ranked, issue the PQF query:
     <screen>
index ff840a6..7db023e 100644 (file)
@@ -1,5 +1,5 @@
  <chapter id="architecture">
-  <!-- $Id: architecture.xml,v 1.9 2006-06-13 09:27:01 marc Exp $ -->
+  <!-- $Id: architecture.xml,v 1.10 2006-06-13 13:45:08 marc Exp $ -->
   <title>Overview of Zebra Architecture</title>
   
 
      as HTTP server, honoring
       <ulink url="http://www.loc.gov/standards/sru/srw/">SRW</ulink> 
      SOAP requests, and  
-     <ulink url="http://www.loc.gov/standards/sru/">SRU</ulink> 
+     <ulink url="&url.sru;">SRU</ulink> 
      REST requests. Moreover, it can
      translate incoming 
-     <ulink url="http://www.loc.gov/standards/sru/cql/">CQL</ulink>
+     <ulink url="&url.cql;">CQL</ulink>
      queries to
      <ulink url="http://indexdata.com/yaz/doc/tools.tkl#PQF">PQF</ulink>
       queries, if
index 81deaab..6c43d25 100644 (file)
@@ -1,5 +1,5 @@
 <chapter id="introduction">
- <!-- $Id: introduction.xml,v 1.32 2006-04-25 12:26:26 marc Exp $ -->
+ <!-- $Id: introduction.xml,v 1.33 2006-06-13 13:45:08 marc Exp $ -->
  <title>Introduction</title>
  
  <sect1>
         <ulink url="http://www.loc.gov/standards/sru/srw/">SRW</ulink>-to-Z39.50 gateway, currently in beta test.
        -->
        Experimental support of the 
-       Search/Retrieve Via URL ( <ulink url="http://www.loc.gov/standards/sru/">SRU</ulink>) 
-       <ulink url="http://www.loc.gov/standards/sru/"/>
+       Search/Retrieve Via URL ( <ulink url="&url.sru;">SRU</ulink>) 
+       <ulink url="&url.sru;"/>
        REST webservice, and the 
         Search/Retrieve Web Service ( <ulink url="http://www.loc.gov/standards/sru/srw/">SRW</ulink>)
        <ulink url="http://www.loc.gov/standards/sru/srw/"/>
        SOAP Web Service have recently been added to the YAZ/Zebra
-       combo - including server side Common Query Language (<ulink url="http://www.loc.gov/standards/sru/cql/">CQL</ulink>)
-       <ulink url="http://www.loc.gov/standards/sru/cql/"/> parsing
+       combo - including server side Common Query Language (<ulink url="&url.cql;">CQL</ulink>)
+       <ulink url="&url.cql;"/> parsing
        and configuration. It remains to find a sponsor for further testing,
        documentation and packaging of this exiting component.
      </para>
index bae113f..20e6b4b 100644 (file)
@@ -1,5 +1,5 @@
 <chapter id="querymodel">
- <!-- $Id: querymodel.xml,v 1.1 2006-06-13 09:27:01 marc Exp $ -->
+ <!-- $Id: querymodel.xml,v 1.2 2006-06-13 13:45:08 marc Exp $ -->
  <title>Query Model</title>
  
   <sect1 id="querymodel-overview">
@@ -8,8 +8,8 @@
    <para>
     Zebra is born as a networking Information Retrieval engine adhering
     to the international standards 
-    <ulink url="http://www.loc.gov/z3950/agency/">Z39.50</ulink> and
-    <ulink url="http://www.loc.gov/standards/sru/">SRU</ulink>,
+    <ulink url="&url.z39.50;">Z39.50</ulink> and
+    <ulink url="&url.sru;">SRU</ulink>,
     and implement the query model defined there.
     Unfortunately, the Z39.50 query model has only defined a binary
     encoded representation, which is used as transport packaging in
@@ -29,7 +29,7 @@
    <para>
     In addition, Zebra can be configured to understand and map the 
     <literal>Common Query Language</literal>
-    (<ulink url="http://www.loc.gov/standards/sru/cql/">CQL</ulink>)
+    (<ulink url="&url.cql;">CQL</ulink>)
     to PQF. See an introduction on the mapping to the internal query
     representation in  
     <xref linkend="querymodel-cql-to-pqf"/>.
    <title>Prefix Query Format structure and syntax</title>
    <para>
     The 
-    <ulink url="http://indexdata.dk/yaz/doc/tools.tkl#PQF">PQF
-    grammer</ulink> is documented in the YAZ manual.
+    <ulink url="&url.yaz.pqf;">PQF
+    grammer</ulink> is documented in the YAZ manual, and shall not be
+    repeated here.
     This textual PQF representation
     is always during search mapped to the equivalent Zebra internal
     query parse tree. 
    </para>
 
+   <sect2 id="querymodel-pqf-tree">
+    <title>PQF tree structure</title>
    <para>
+    The PQF parse tree - or the equivalent textual representation -
+    may start with one specification of the 
+    <emphasis>attribute set</emphasis> used. Following is a query
+    tree, which 
+    consists of <emphasis>atomic query parts</emphasis>, eventually
+    paired by <emphasis>boolean binary operators</emphasis>, and 
+    finally  <emphasis>recursively combined </emphasis> into 
+     complex query trees.   
    </para>
 
+   <sect3 id="querymodel-attribute-sets">
+    <title>Attribute sets</title>
+    <para>
+      Attribute sets define the exact meaning and semantics of queries
+      issued. Zebra comes with some predefined attribute set
+      definitions, others can easily be defined and added to the
+      configuration.
+      <note>
+      The Zebra internal query procesing is modeled after 
+      the <literal>Bib1</literal> attribute set, and the non-use
+      attributes type 2-9 are hard-wired in. It is therefore essential
+      to be familiar with <xref linkend="querymodel-bib1"/>. 
+    </note>
+   </para>
+
+   <table id="querymodel-attribute-sets-table">
+    <caption>Attribute sets predefined in Zebra</caption>
+     <!--
+     <thead>
+      <tr><td>one</td><td>two</td></tr>
+     </thead>
+     -->
+     <tbody>
+      <tr>
+       <td><emphasis>exp-1</emphasis></td>
+       <td><literal>Explain</literal> attribute set</td>
+       <td>Special attribute set used on the special automagic
+       <literal>IR-Explain-1</literal> database to gain information on
+       server capabilities, database names, and database
+       and semantics.</td>
+      </tr>
+      <tr>
+       <td><emphasis>bib-1</emphasis></td>
+       <td><literal>Bib1</literal> attribute set</td>
+       <td>Standard PQF query language attribute set which defines the
+           semantics of Z39.50 searching. In addition, all of the
+       non-use attributes (type 2-9) define the Zebra internal query
+       processing</td>
+      </tr>
+      <tr>
+       <td><emphasis>gils</emphasis></td>
+       <td><literal>GILS</literal> attribute set</td>
+       <td>Extention to the <literal>Bib1</literal> attribute set.</td>
+      </tr>
+     </tbody>
+   </table>
+   </sect3>
+
+   <sect3 id="querymodel-boolean-operators">
+    <title>Boolean operators</title>
+    <para>
+      A pair of subquery trees, or of atomic queries, is combined
+      using the standard boolean operators into new query trees.
+    </para>
+
+   <table id="querymodel-boolean-operators-table">
+    <caption>Boolean operators</caption>
+     <!--
+     <thead>
+      <tr><td>one</td><td>two</td></tr>
+     </thead>
+     -->
+     <tbody>
+      <tr><td><emphasis>@and</emphasis></td>
+          <td>binary <literal>AND</literal> operator</td>
+          <td>Set intersection of two atomic queries hit sets</td>
+      </tr>
+      <tr><td><emphasis>@or</emphasis></td>
+          <td>binary <literal>OR</literal> operator</td>
+          <td>Set union of two atomic queries hit sets</td>
+      </tr>
+      <tr><td><emphasis>@not</emphasis></td>
+          <td>binary <literal>AND NOT</literal> operator</td>
+          <td>Set complement of two atomic queries hit sets</td>
+      </tr>
+      <tr><td><emphasis>@prox</emphasis></td>
+          <td>binary <literal>PROXIMY</literal> operator</td>
+          <td>Set intersection of two atomic queries hit sets. In 
+              addition, the intersection set is purged for all 
+              documents which do not satisfy the requested query 
+              term proximity. Usually a proper subset of the AND 
+              operation.</td>
+      </tr>
+     </tbody>
+   </table>
+
+   <para>
+      For example, we can combine the terms 
+      <emphasis>information</emphasis> and <emphasis>retrieval</emphasis> 
+      into different searches in the default index of the default
+      attribute set as follows.
+      Querying for the union of all documents containing the
+      terms <emphasis>information</emphasis> OR
+      <emphasis>retrieval</emphasis>: 
+     <screen>
+       @or information retrieval
+     </screen>
+   </para>
+   <para>
+      Querying for the intersection of all documents containing the
+      terms <emphasis>information</emphasis> AND
+      <emphasis>retrieval</emphasis>: 
+      The hit set is a subset of the coresponding
+      OR query.
+     <screen>
+       @and information retrieval
+     </screen>
+   </para>
+   <para>
+      Querying for the intersection of all documents containing the
+      terms <emphasis>information</emphasis> AND
+      <emphasis>retrieval</emphasis>, taking proximity into account:
+      The hit set is a subset of the coresponding
+      AND query.
+     <screen>
+       @prox information retrieval
+     </screen>
+   </para>
+   <para>
+      Querying for the intersection of all documents containing the
+      terms <emphasis>information</emphasis> AND
+      <emphasis>retrieval</emphasis>, in the same order and near each
+      other as described in the term list  
+      The hit set is a subset of the coresponding
+      PROXIMY query.
+    <screen>
+       "information retrieval"
+     </screen>
+   </para>
+  </sect3>
+   
+
+   <sect3 id="querymodel-atomic-queries">
+    <title>Atomic queries</title>
+    <para>
+      Atomic queries are the query parts which work on one acess point
+      only. These consist of <literal>an attribute list</literal>
+      followed by a <literal>single term</literal> or a
+      <literal>quoted term list</literal>.
+    </para>
+    <para>
+      Unsupplied non-use attributes type 2-9 are either inherited from
+      higher nodes in the query tree, or are set to Zebra's default values.
+      See <xref linkend="querymodel-bib1"/> for details. 
+    </para>
+
+   <table id="querymodel-atomic-queries-table">
+    <caption>Atomic queries</caption>
+     <!--
+     <thead>
+      <tr><td>one</td><td>two</td></tr>
+     </thead>
+     -->
+     <tbody>
+      <tr><td><emphasis>attribute list</emphasis></td>
+          <td>List of <literal>orthogonal</literal> attributes</td>
+          <td>Any of the orthogonal attribute types may be omitted,
+          these are inherited from higher query tree nodes, or if not
+          inherited, are set to the default Zebra configuration values.
+       </td>
+      </tr>
+      <tr><td><emphasis>term</emphasis></td>
+          <td>single <literal>term</literal> 
+        or <literal>quoted term list</literal>   </td>
+          <td>Here the search terms or list of search terms is added
+          to the query</td>
+      </tr>
+     </tbody>
+   </table>
+   <para>
+      Querying for the term <emphasis>information</emphasis> in the
+      default index using the default attribite set, the server choice
+      of access point/index, and the default non-use attributes.
+    <screen>
+       "information"
+     </screen>
+   </para>
+   <para>
+    Equivalent query fully specified:
+      <screen>
+       @attrset bib-1 @attr 1=1017 @attr 2=3 @attr 3=3 @attr 4=1 @attr 5=100 @attr 6=1 "information"
+      </screen>
+   </para>
+
+   <para>
+    Finding all documents which have empty titles. Notice that the
+    empty term must be quoted, but is otherwise legal.
+      <screen>
+       @attr 1=4 ""
+      </screen>
+   </para>
+
+  </sect3>
+
+    <sect3 id="querymodel-use-string">
+     <title>Zebra's special use attribute of type 'string'</title>
+     <para>
+      The numeric <literal>use (type 1)</literal> attribute is usually 
+        refered to from a given
+      attribute set. In addition, Zebra let you use 
+      <emphasis>any internal index
+      name defined in your configuration</emphasis> 
+        as use atribute value. This is a great feature for
+      debugging, and when you do
+      not need the complecity of defined use attribute values. It is
+      the preferred way of accessing Zebra indexes directly.  
+     </para>
+     <para>
+      Finding all documents which have the term list "information
+      retrieval" in an Zebra index, using it's internal full string name.
+      <screen>
+       @attr 1=sometext "information retrieval"
+      </screen>
+   </para>
+     <para>
+      Searching the bib-1 use attribute 54 using it's string name:
+      <screen>
+       @attr 1=Code-language eng
+      </screen>
+   </para>
+     <para>
+      Searching in any silly string index - if it's defined in your
+      indexation rules and can be parsed by the PQF parser. 
+      This is definitely not the recommended use of
+      this facility, as it might confuse your users with some very
+      unexpected results.
+      <screen>
+       @attr 1=silly/xpath/alike[@index]/name "information retrieval"
+      </screen>
+   </para>
+   <para>
+      See <xref linkend="querymodel-bib1-mapping"/> for details, and 
+       <xref linkend="server-sru"/>
+      for the SRU PQF query extention using string names as a fast
+       debugging facility.
+   </para>
+  </sect3>
+
+  </sect2>
+
   <sect2 id="querymodel-exp1">
    <title>Explain Attribute Set</title>
+    <para>
+     The Z39.50 standard defines the  
+     <ulink url="&url.z39.50.explain;">Explain</ulink>attribute set
+     <literal>exp-1</literal>, which is used to discover information 
+     about a server's search semantics and functional capabilities
+     Zebra exposes a  "classic" 
+     Explain database by base name <literal>IR-Explain-1</literal>, which
+     is populated with system internal information.  
+    </para>
    <para>
-     The attribute-set <literal>exp-1</literal> is defined for
-     searching an Explain <literal>IR-Explain-1</literal> database. 
-     It consists of a single <literal>Use (type 1)</literal> attribute. 
+     The attribute-set <literal>exp-1</literal> consists of a single 
+     <literal>Use (type 1)</literal> attribute. 
    </para>
    <para>
      In addition, the non-Use
      <literal>Relation</literal>, <literal>Position</literal>,
      <literal>Structure</literal>, <literal>Truncation</literal>, 
      and <literal>Completeness</literal> are imported from 
-     the <literal>bib-1</literal> attrubute set, and may be used
+     the <literal>bib-1</literal> attribute set, and may be used
      within any explain query. 
    </para>
     
     
     <sect3>
      <title>Explain searches with yaz-client</title>
+    <para>
+     Classic Explain only defines retrieval of Explain information
+     via ASN.1. Pratically no Z39.50 clients supports this. Fortunately
+     they don't have to - Zebra allows retrieval of this information
+     in other formats:
+     <literal>SUTRS</literal>, <literal>XML</literal>, 
+     <literal>GRS-1</literal> and  <literal>ASN.1</literal> Explain.
+    </para>
+
      <para>
       List supported categories to find out which explain commands are
       supported: 
     Most of the information contained in this section is an excerpt of
     the <literal>ATTRIBUTE SET BIB-1 (Z39.50-1995)
     SEMANTICS</literal>, found at  <ulink
-    url="http://www.loc.gov/z3950/agency/bib1.html">The BIB-1
+    url="&url.z39.50.attset.bib1.1995;">The BIB-1
     Attribute Set Semantics</ulink> from 1995, also in an updated 
-   <ulink
-    url="http://www.loc.gov/z3950/agency/defns/bib1.html">Bib-1
+   <ulink url="&url.z39.50.attset.bib1;">Bib-1
     Attribute Set</ulink> 
     version from 2003. Index Data is not the copyright holder of this
     information. 
    </sect3>
 
    <sect3 id="querymodel-bib1-relation">
-    <title>Relation Attributes     (type = 2)</title>
+    <title>Relation Attributes (type = 2)</title>
    </sect3>
    <para>
    </para>
 
    <sect3 id="querymodel-bib1-position">
-    <title>Position Attributes     (type = 3)</title>
+    <title>Position Attributes (type = 3)</title>
    </sect3>
 
    <sect3 id="querymodel-bib1-structure">
-    <title>Structure Attributes    (type = 4)</title>
+    <title>Structure Attributes (type = 4)</title>
    </sect3>
 
    <sect3 id="querymodel-bib1-truncation">
-    <title>Truncation Attributes   (type = 5)</title>
+    <title>Truncation Attributes (type = 5)</title>
    </sect3>
 
    <sect3 id="querymodel-bib1-completeness">
     Hosts option, one can configure
     the YAZ Frontend CQL-to-PQF
     converter, specifying the interpretation of various 
-    <ulink url="http://www.loc.gov/standards/sru/cql/">CQL</ulink>
+    <ulink url="&url.cql;">CQL</ulink>
     indexes, relations, etc. in terms of Type-1 query attributes.
     <!-- The  yaz-client config file -->  
    </para>
 http://www.loc.gov/z3950/agency/document.html
 
     PQF and BIB-1 stuff to be explained
-    <ulink url="http://www.loc.gov/z3950/agency/defns/bib1.html">
+    <ulink url="&url.z39.50.attset.bib1;">
      http://www.loc.gov/z3950/agency/defns/bib1.html</ulink> 
 
-     <ulink url="http://www.loc.gov/z3950/agency/bib1.html">
+     <ulink url="&url.z39.50.attset.bib1.1995;">
      http://www.loc.gov/z3950/agency/bib1.html</ulink> 
 
      http://www.loc.gov/z3950/agency/markup/13.html
index be69601..970e922 100644 (file)
@@ -1,5 +1,5 @@
  <chapter id="record-model-alvisxslt">
-  <!-- $Id: recordmodel-alvisxslt.xml,v 1.7 2006-04-25 12:26:26 marc Exp $ -->
+  <!-- $Id: recordmodel-alvisxslt.xml,v 1.8 2006-06-13 13:45:08 marc Exp $ -->
   <title>ALVIS XML Record Model and Filter Module</title>
   
 
@@ -58,7 +58,7 @@
     unique, these are the literal <literal>schema</literal> or 
     <literal>element set</literal> names used in 
       <ulink url="http://www.loc.gov/standards/sru/srw/">SRW</ulink>,
-      <ulink url="http://www.loc.gov/standards/sru/">SRU</ulink> and
+      <ulink url="&url.sru;">SRU</ulink> and
     Z39.50 protocol queries.
     The paths in the <literal>stylesheet</literal> attributes
     are relative to zebras working directory, or absolute to file
       the YAZ manual CQL section</ulink>
      for the details
      of the YAZ frontend server 
-     <ulink url="http://www.loc.gov/standards/sru/cql/">CQL</ulink>
+     <ulink url="&url.cql;">CQL</ulink>
      configuration. 
     </para>
     <para>
@@ -491,7 +491,7 @@ c)  Main "alvis" XSLT filter config file:
   and so on.
 
 - in db/ a cql2pqf.txt yaz-client config file 
-  which is also used in the yaz-server <ulink url="http://www.loc.gov/standards/sru/cql/">CQL</ulink>-to-PQF process
+  which is also used in the yaz-server <ulink url="&url.cql;">CQL</ulink>-to-PQF process
 
    see: http://www.indexdata.com/yaz/doc/tools.tkl#tools.cql.map
 
index 4113196..dd0a9e9 100644 (file)
@@ -1,5 +1,5 @@
 <chapter id="server">
- <!-- $Id: server.xml,v 1.23 2006-06-13 09:27:01 marc Exp $ -->
+ <!-- $Id: server.xml,v 1.24 2006-06-13 13:45:08 marc Exp $ -->
  <title>The Z39.50 Server</title>
  
  <sect1 id="zebrasrv">
     </para>
     <para>
      The records in the explain database are of type 
-     <literal>grs.sgml</literal> and can be retrieved as
-     <literal>SUTRS</literal>, <literal>XML</literal>, 
-     <literal>GRS-1</literal> and  <literal>ASN.1</literal> Explain.
-    </para>
-    <para>
-     Classic Explain only defines retrieaval of Explain information
-     via ASN.1. Pratically no Z39.50 clients supports this. Fortunately
-     they don't have to - since Zebra allows retrieval of this information
-     in the other formats.
-    </para>
-    <para>
+     <literal>grs.sgml</literal>.
      The root element for the Explain grs.sgml records is 
      <literal>explain</literal>, thus 
      <filename>explain.abs</filename> is used for indexing.
index ae8ff7c..07aa192 100644 (file)
@@ -1,6 +1,12 @@
 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" 
  "http://www.oasis-open.org/docbook/xml/4.1/docbookx.dtd"
 [
+     <!ENTITY % local SYSTEM "local.ent">
+     %local;
+     <!ENTITY % entities  SYSTEM "entities.ent">
+     %entities;
+     <!ENTITY % common  SYSTEM "common/common.ent">
+     %common;
      <!ENTITY zebrasrv-synopsis SYSTEM "zebrasrv-synopsis.xml">
      <!ENTITY zebrasrv-options SYSTEM "zebrasrv-options.xml">
      <!ENTITY zebrasrv-virtual SYSTEM "zebrasrv-virtual.xml">
@@ -11,7 +17,7 @@
      <!-- <!ENTITY zebrasrv-commands SYSTEM "zebrasrv-commands.xml"> -->
 
 
-<!-- $Id: zebrasrv-man.xml,v 1.1 2006-05-24 19:12:46 adam Exp $ -->
+<!-- $Id: zebrasrv-man.xml,v 1.2 2006-06-13 13:45:08 marc Exp $ -->
 <refentry id="zebrasrv">
  
  <refmeta>
index 2ed8c92..248ab14 100644 (file)
@@ -1,5 +1,5 @@
 <!-- 
-   $Id: zebrasrv-virtual.xml,v 1.6 2006-04-25 12:26:27 marc Exp $
+   $Id: zebrasrv-virtual.xml,v 1.7 2006-06-13 13:45:08 marc Exp $
    Description of the virtual host mechanism in YAZ GFS
    Included in both manual and man page for yaz-ztest
 -->
@@ -11,9 +11,9 @@
 </para>
 <para>
  A backend can be configured to execute in a particular working
- directory. Or the YAZ frontend may perform <ulink url="http://www.loc.gov/standards/sru/cql/">CQL</ulink> to RPN conversion, thus
- allowing traditional Z39.50 backends to be offered as a  <ulink url="http://www.loc.gov/standards/sru/srw/">SRW</ulink>/ <ulink url="http://www.loc.gov/standards/sru/">SRU</ulink>
- service.  <ulink url="http://www.loc.gov/standards/sru/srw/">SRW</ulink>/ <ulink url="http://www.loc.gov/standards/sru/">SRU</ulink> Explain information for a particular backend may also
+ directory. Or the YAZ frontend may perform <ulink url="&url.cql;">CQL</ulink> to RPN conversion, thus
+ allowing traditional Z39.50 backends to be offered as a  <ulink url="http://www.loc.gov/standards/sru/srw/">SRW</ulink>/ <ulink url="&url.sru;">SRU</ulink>
+ service.  <ulink url="http://www.loc.gov/standards/sru/srw/">SRW</ulink>/ <ulink url="&url.sru;">SRU</ulink> Explain information for a particular backend may also
  be specified.
 </para>
 <para>
   <varlistentry><term>element <literal>cql2rpn</literal> (optional)</term>
    <listitem>
     <para>
-     Specifies a filename that includes <ulink url="http://www.loc.gov/standards/sru/cql/">CQL</ulink> to RPN conversion for this
-     backend server. See <ulink url="http://www.loc.gov/standards/sru/cql/">CQL</ulink> section in YAZ manual.
+     Specifies a filename that includes <ulink url="&url.cql;">CQL</ulink> to RPN conversion for this
+     backend server. See <ulink url="&url.cql;">CQL</ulink> section in YAZ manual.
      If given, the backend server will only "see" a Type-1/RPN query. 
     </para>
    </listitem>
   <varlistentry><term>element <literal>explain</literal> (optional)</term>
    <listitem>
     <para>
-     Specifies  <ulink url="http://www.loc.gov/standards/sru/srw/">SRW</ulink>/ <ulink url="http://www.loc.gov/standards/sru/">SRU</ulink> ZeeRex content for this server. Copied verbatim
+     Specifies  <ulink url="http://www.loc.gov/standards/sru/srw/">SRW</ulink>/ <ulink url="&url.sru;">SRU</ulink> ZeeRex content for this server. Copied verbatim
      to the client. As things are now, some of the Explain content
      seems redundant because host information, etc. is also stored
      elsewhere.
  elements.
 </para>
 <para>
- For <literal>"server2"</literal> elements for <ulink url="http://www.loc.gov/standards/sru/cql/">CQL</ulink> to RPN conversion
+ For <literal>"server2"</literal> elements for 
+<ulink url="&url.cql;">CQL</ulink> to RPN conversion
  is supported and explain information has been added (a short one here
  to keep the example small).
 </para>