Updated information about YAZ.
[yaz-moved-to-github.git] / README
diff --git a/README b/README
index 7bed44f..a400589 100644 (file)
--- a/README
+++ b/README
@@ -1,78 +1,88 @@
 
- * Copyright (C) 1995-1998, Index Data.
- * See the file LICENSE for details.
- * Sebastian Hammer, Adam Dickmeiss
+Copyright (C) 1995-1999, Index Data ApS.
+See the file LICENSE for details.
 
-Compilation and installation for YAZ 
-  $Id: README,v 1.20 1998-01-29 13:30:23 adam Exp $
+Compilation and installation instructions for YAZ 
+  $Id: README,v 1.28 1999-12-02 13:54:56 adam Exp $
 
 The primary output of the source here is the lib/libyaz.a library,
 which contains support functions for implementing the server or client
 role of Z39.50/SR.
 
-Windows programmers: refer to the file windows.txt which describes
-how to compile the software using Microsoft Visual C++.
+Windows programmers: refer to the file windows.txt which describes how
+to build the software using Microsoft Visual C++.
 
-Two test-programs of interest are generated when you type 'make' at
-the top level: ztest/ztest and client/client. Ztest is a dummy database
-server which returns canned responses to all queries. It's good for
-verifying that the protocol works ok, and ztest.c shows a minimalistic
-implementation of the 'backend' interface.
+On Unix, GNU configure is used to configure YAZ and generate Makefiles.
+Type "./configure", then "make" to build YAZ.
 
-Client is a linemode Z39.50 client. It supports a fair amount of the
-functionality of Z39.50v2/SR, but some things you need to enable or disable
-by recompilation. Its primary purpose is to excersise the package, and
-verify that the protocol works OK. It can be started by typing
+Two test-programs of interest are generated when you type 'make' at the
+top level: ztest/yaz-ztest and client/yaz-client. Ztest is a dummy
+database server which returns canned responses to all queries. It's good
+for verifying that the protocol works ok, and ztest.c shows an
+implementation of a 'backend' interface.
 
-client tcp:<hostname>:<port>
+yaz-client is a linemode Z39.50 client. It supports a fair amount of the
+functionality of Z39.50v2/SR, but some things you need to enable or
+disable by recompilation. Its primary purpose is to excersise the
+package, and verify that the protocol works OK. It can be started by
+typing
 
-at the UNIX prompt, to connect to a Z39.50 server, or
+  yaz-client tcp:<hostname>:<port>[/<database>]
 
-client osi:[<tsel>'/']<hostname>:<port>
-
-to connect to an OSI SR target (this requires mOSI-support). To connect to
-the DANBIB test target, you might use:
-
-client osi:0103/find2.denet.dk:4500
+at the UNIX prompt, to connect to a Z39.50 server.
 
 Use '?' to get a list of the available commands.
 
-The current query language is a bit awkward, but functional:
-
-query     ::= ['@attrset' <attribute-set>] rpn
-rpn       ::= complex | simple | attr rpn
-complex   ::= operator rpn rpn
-operator  ::= '@and' | '@or' | '@not' | '@prox' proximity
-simple    ::= term | set.
-term      ::= <word> | '"' <term> ... '"'.
-set       ::= '@set' <setname>.
-attr      ::= '@attr' [<attribute-set>] <number> '=' <number>.
-proximity ::= exclusion distance ordered relation which unit
-exclusion ::= '1' | '0' | 'void'
-distance  ::= <number>
-ordered   ::= '1' | '0'
-relation  ::= <number>
-which     ::= 'known' | 'private'
-unit      ::= <number>
+The current query language for the find command is a bit awkward, but
+functional:
+
+ query     ::= ['@attrset' <attribute-set>] rpn
+ rpn       ::= complex | simple | attr rpn
+ complex   ::= operator rpn rpn
+ operator  ::= '@and' | '@or' | '@not' | '@prox' proximity
+ simple    ::= term | set.
+ term      ::= <word> | '"' <term> ... '"'.
+ set       ::= '@set' <setname>.
+ attr      ::= '@attr' [<attribute-set>] <number> '=' <number>.
+ proximity ::= exclusion distance ordered relation which unit
+ exclusion ::= '1' | '0' | 'void'
+ distance  ::= <number>
+ ordered   ::= '1' | '0'
+ relation  ::= <number>
+ which     ::= 'known' | 'private'
+ unit      ::= <number>
 
 Eg.:
 
-Andersen
+ Andersen
 
-"Hans Andersen"
+ "Hans Andersen"
 
-@and @attr 1=1 andersen @attr 1=4 @attr 4=2 duckling
+ @and @attr 1=1 andersen @attr 1=4 @attr 4=2 duckling
 
-@attrset Bib-1 @and @attr GILS 2=2008 Washington @attr 1=21 weather
+ @attrset Bib-1 @and @attr GILS 2=2008 Washington @attr 1=21 weather
+
+The sort command takes a sequence of sort specifications. A sort
+specification holds a field (sort criteria) and is followed by flags.
+If the sort critieria includes = it is assumed that the sort SortKey
+is of type sortAttributes using Bib-1. The integer before the = is
+the attribute type and the integer following the = is the attribute
+value. If no = is in the SortKey it is treated as a sortfield-type
+of type InternationalString. Flags observed are s (sort case
+sensitive), i (sort case insensitive), < (ascending), > (descending).
+Eg.:
+   1=4   i<                  (use is title, insensitive, ascending).
+   Title s>                  (String Title, sensitive, descending).
 
 The directories:
 
 doc     - Documentation.
 
 util    - Various little utility functions. Logging, memory debugging,
-       primitive ISO 2709 presentation for the client, etc.
+       primitive ISO 2709 presentation for the yaz-client, etc. You'll
+       find the ASN.1 Compiler for YAZ here as well (yc.tcl).
 
-odr     - Open Data Representation. This module implements the BER
+odr    - Open Data Representation. This module implements the BER
        encoding rules. Documentation is found in the files odr-use.man
        and odr.txt.
 
@@ -83,7 +93,14 @@ asn     - This module implements the Z39.50/SR protocol. The best way
        which defines structure and type definitions for each of the
        types introduced in the protocol specification.
 
-comstack- This module implements the transport transparency
+z39.50  - This module implements the Z39.50 protocol. This module
+        does the same job as the 'asn' module except that the source
+        files are auto-generated using an YAZ' ASN.1 Compiler (YC).
+
+zutil   - This module implements a collection of Z39.50 utilities, such
+        as query parsing, EXTERNAL handling, etc.
+
+comstack - This module implements the transport transparency
        stack (COMSTACK). The comstack implements a generic interface
        for exchanging BER-encoded records over a network. It supports
        the 'American' mode of exchanging the records straight over
@@ -95,13 +112,13 @@ rfc1006 - Xtimosi requires an implementation of the OSI transport
        notably) provide this. For others, we provide an
        implementation of the RFC1006 protocol (which is what
        ISODE-based implementations often use). This module is not
-       neeeded if you don't use xtimosi, and it's not included in the
+       needed if you don't use xtimosi, and it's not included in the
        libyaz.a library.
 
 server  - This is the implementation of the server frontend. It
        provides event-handling and server managament functions,
        and calls the backend primitives (best documentation of these
-       is in the file include/backend.h). See server.txt.
+       is in the file include/backend.h).
 
 client  - A demonstration client. If we come upon a good design for a
        higher level client API, that will live here.
@@ -110,10 +127,8 @@ ztest   - A demonstration server that implements a backend.
 
 include - The various header files.
 
-makelib - This is a simple utility that gathers the libraries from the
-       previous modules into libyaz.a.
-
-lib     - The libraries. Primarily libyaz.a.
+lib     - The libraries. Primarily libyaz.a. The makefile gathers the
+          libraries from previous modules into libyaz.a.
 
 To get more information or assistance, send mail to yaz-help@indexdata.dk.