yaz-client(1)


NAME

   yaz-client - Z39.50/SRU client for implementors

SYNOPSIS

   yaz-client [-a apdulog] [-b berdump] [-c cclfile] [-d dump]
              [-f cmdfile] [-k size] [-m marclog] [-p proxy-addr]
              [-q cqlfile] [-t dispcharset] [-u auth] [-v loglevel] [-V]
              [-x] [server-addr]

DESCRIPTION

   yaz-client is a Z39.50[1]/SRU[2] client (origin) with a simple command
   line interface that allows you to test behavior and performance of
   Z39.50 targets and SRU servers.

   From YAZ version 4.1.0 yaz-client may also operate as a SOLR[3] Web
   Service client.

   If the server-addr is specified, the client creates a connection to the
   Z39.50/SRU target at the address given.

   When yaz-client is started it tries to read commands from one of the
   following files:

   *   Command file if it is given by option -f.

   *   .yazclientrc in current working directory.

   *   .yazclientrc in the user's home directory. The value of the HOME is
       used to determine the home directory. Normally, HOME is only set on
       POSIX systems such as Linux, FreeBSD, Solaris.

OPTIONS

   -a filename
       If specified, logging of protocol packages will be appended file
       given. If filename is specified as -, the output is written to
       stdout.

   -b filename
       If specified, YAZ will dump BER data in readable notation to the
       file specified. If filename is specified as - the output is written
       to stdout.

   -c filename
       If specified, CCL configuration will be read from the file given.

   -d dump
       If specified, YAZ will dump BER data for all PDUs sent and received
       to individual files, named dump.DDD.raw, where DDD is 001, 002,
       003, ..

   -f cmdfile
       Reads commands from cmdfile. When this option is used, YAZ client
       does not read .yazclientrc from current directory or home
       directory.

   -k size
       Sets preferred messages and maximum record size for Initialize
       Request in kilobytes. Default value is 1024 (1 MB).

   -m filename
       If specified, retrieved records will be appended to the file given.

   -p proxy-addr
       If specified, the client will use the proxy at the address given.
       YAZ client will connect to a proxy on the address and port given.
       The actual target will be specified as part of the InitRequest to
       inform the proxy about actual target.

   -q filename
       If specified, CQL configuration will be read from the file given.

   -t displaycharset
       If displaycharset is given, it specifies name of the character set
       of the output (on the terminal on which YAZ client is running).

   -u auth
       If specified, the auth string will be used for authentication.

   -v level
       Sets the LOG level to level. Level is a sequence of tokens
       separated by comma. Each token is a integer or a named LOG item -
       one of fatal, debug, warn, log, malloc, all, none.

   -V
       Prints YAZ version.

   -x
       Makes the YAZ client print hex dumps of packages sent and received
       on standard output.

COMMANDS

   The YAZ client accepts the following commands.

   open zurl
       Opens a connection to a server. The syntax for zurl is the same as
       described above for connecting from the command line.

       Syntax:

       [(tcp|ssl|unix|http)':']host [:port][/base]

   quit
       Quits YAZ client

   find query
       Sends a Search Request using the query given. By default the query
       is assumed to be PQF. See command querytype for more information.

   delete setname
       Deletes result set with name setname on the server.

   base base1 base2 ...
       Sets the name(s) of the database(s) to search. One or more
       databases may be specified separated by blanks. This commands
       overrides the database given in zurl.

   show [start[+number]]
       Fetches records by sending a Present Request from the start
       position given by start a number of records given by number. If
       start is not given, then the client will fetch from position of the
       last retrieved record plus 1. If number is not given, then one
       record will be fetched at a time.

   scan term
       Scans database index for a term. The syntax resembles the syntax
       for find. If you want to scan for the word water you could write

               scan water

       but if you want to scan only in, say the title field, you would
       write

               scan @attr 1=4 water

   setscan set term
       Scans database index for a term within a result set. This is
       similar to the scan command but has a result set as its first
       argument.

   scanpos pos
       Sets preferred position for scan. This value is used in next scan.
       By default position is 1.

   scansize size
       Sets number of entries to be returned by scan. Default number of
       entries is 20.

   scanstep step
       Set step-size for scan. This value is used in next scan sent to the
       target. By default step-size is 0.

   sort sortspecs
       Sorts a result set. The sort command takes a sequence of
       space-separated sort specifications, with each sort specification
       consisting of two space-separated words (so that the whole
       specification list is made up of an even number of words). The
       first word of each specification holds a field (sort criterion) and
       the second holds flags. If the sort criterion includes = it is
       assumed that the SortKey is of type sortAttributes using Bib-1: in
       this case the integer before = is the attribute type and the
       integer following = is the attribute value. If no = is in the
       criterion it is treated as a sortfield of type InternationalString.
       The flags word of each sort specification must consist of s for
       case sensitive or i for case insensitive, and < for ascending order
       or > for descending order.

   sort+
       Same as sort but stores the sorted result set in a new result set.

   authentication openauth
       Sets up a authentication string if a server requires authentication
       (v2 OpenStyle). The authentication string is first sent to the
       server when the open command is issued and the Z39.50 Initialize
       Request is sent, so this command must be used before open in order
       to be effective. A common convention for the authopen string is
       that the username - and password is separated by a slash, e.g.
       myusername/mysecret.

   sru method version
       Selects Web Service method and version. Must be one of POST, GET,
       SOAP (default) or SOLR. Version should be either 1.1 or 1.2 for
       SRU. Other versions are allowed - for testing purposes (version
       negotiation with SRU server). The version is currently not used for
       SOLR Web Services

   list_all
       This command displays status and values for many settings.

   lslb n
       Sets the limit for when no records should be returned together with
       the search result. See the Z39.50 standard on set bounds[4] for
       more details.

   ssub n
       Sets the limit for when all records should be returned with the
       search result. See the Z39.50 standard on set bounds[4] for more
       details.

   mspn n
       Sets the number of records should be returned if the number of
       records in the result set is between the values of lslb and ssub.
       See the Z39.50 standard on set bounds[4] for more details.

   status
       Displays the values of lslb, ssub and mspn.

   setname
       Switches named result sets on and off. Default is on.

   cancel
       Sends a Trigger Resource Control Request to the target.

   format oid
       Sets the preferred transfer syntax for retrieved records.
       yaz-client supports all the record syntaxes that currently are
       registered. See Z39.50 Record Syntax Identifiers[5] for more
       details. Commonly used records syntaxes include usmarc, sutrs and
       xml.

   elements e
       Sets the element set name for the records. Many targets support
       element sets are B (for brief) and F (for full).

   close
       Sends a Z39.50 Close APDU and closes connection with the peer

   querytype type
       Sets the query type as used by command find. The following is
       supported: prefix for Prefix Query Notation (Type-1 Query); ccl for
       CCL search (Type-2 Query), cql for CQL (Type-104 search with CQL
       OID), ccl2rpn for CCL to RPN conversion (Type-1 Query).  cql2rpn
       for CQL to RPN conversion (Type-1 Query).

   attributeset set
       Sets attribute set OID for prefix queries (RPN, Type-1).

   refid id
       Sets reference ID for Z39.50 Request(s).

   itemorder type no
       Sends an Item Order Request using the ILL External.  type is either
       1 or 2 which corresponds to ILL-Profile 1 and 2 respectively. The
       no is the Result Set position of the record to be ordered.

   update action recid doc
       Sends Item Update Request. The action argument must be the action
       type: one of insert, replace, delete and update. The second
       argument, recid, is the record identifier (any string). Third
       argument which is optional is the record document for the request.
       If doc is preceded with "<", then the following characters are
       treated as a filename with the records to be updated. Otherwise doc
       is treated as a document itself. The doc may also be quited in
       double quotes. If doc is omitted, the last received record (as part
       of present response or piggybacked search response) is used for the
       update.

   source filename
       Executes list of commands from file filename, just like source on
       most UNIX shells. A single dot (.) can be used as an alternative.

   ! args
       Executes command args in subshell using the system call.

   push_command command
       The push_command takes another command as its argument. That
       command is then added to the history information (so you can
       retrieve it later). The command itself is not executed. This
       command only works if you have GNU readline/history enabled.

   set_apdufile filename
       Sets that APDU should be logged to file filename. Another way to
       achieve APDU log is by using command-line option -a.

   set_auto_reconnect flag
       Specifies whether YAZ client automatically reconnect if target
       closes connection (Z39.50 only).

       flag must be either on or off.

   set_auto_wait flag
       Specifies whether YAZ client should wait for response protocol
       packages after a request. By default YAZ client waits (on) for
       response packages immediately after a command (find, show) has been
       issued. If off is used, YAZ client does not attempt to receive
       packages automatically. These will have to be manually received
       when command wait_response is used.

       flag must be either on or off.

   set_marcdump filename
       Specifies that all retrieved records should be appended to file
       filename. This command does the thing as option -m.

   schema schemaid
       Specifies schema for retrieval. Schema may be specified as an OID
       for Z39.50. For SRU, schema is a simple string URI.

   charset negotiationcharset [displaycharset] [[marccharset]]
       Specifies character set (encoding) for Z39.50 negotiation / SRU
       encoding and/or character set for output (terminal).

       negotiationcharset is the name of the character set to be
       negotiated by the server. The special name - for negotiationcharset
       specifies no character set to be negotiated.

       If displaycharset is given, it specifies name of the character set
       of the output (on the terminal on which YAZ client is running). To
       disable conversion of characters to the output encoding, the
       special name - (dash) can be used. If the special name auto is
       given, YAZ client will convert strings to the encoding of the
       terminal as returned by nl_langinfo call.

       If marcharset is given, it specifies name of the character set of
       retrieved MARC records from server. See also marcharset command.

           Note
           Since character set negotiation takes effect in the Z39.50
           Initialize Request you should issue this command before command
           open is used.

           Note
           MARC records are not covered by Z39.50 character set
           negotiation, so that's why there is a separate character that
           must be known in order to do meaningful conversion(s).

   negcharset charset
       Specifies character set for negotiation (Z39.50). The argument is
       the same as second argument for command charset.

   displaycharset charset
       Specifies character set for output (display). The argument is the
       same as second argument for command charset.

   marccharset charset
       Specifies character set for retrieved MARC records so that YAZ
       client can display them in a character suitable for your display.
       See charset command. If auto is given, YAZ will assume that
       MARC21/USMARC is using MARC8/UTF8 and ISO-8859-1 for all other MARC
       variants. The charset argument is the same as third argument for
       command charset.

   querycharset charset
       Specifies character set for query terms for Z39.50 RPN queries and
       Z39.50 Scan Requests (termListAndStartPoint). This is a pure
       client-side conversion which converts from displayCharset to
       queryCharset.

   set_cclfile filename
       Specifies that CCL fields should be read from file file filename.
       This command does the thing as option -c.

   set_cqlfile filename
       Specifies that CQL fields should be read from file file filename.
       This command does the thing as option -q.

   register_oid name class OID
       This command allows you to register your own object identifier - so
       that instead of entering a long dot-notation you can use a short
       name instead. The name is your name for the OID, class is the
       class, and OID is the raw OID in dot notation. Class is one appctx,
       absyn, attet, transyn, diagset, recsyn, resform, accform, extserv,
       userinfo, elemspec, varset, schema, tagset, general. If you're in
       doubt use the general class.

   register_tab command string
       This command registers a TAB completion string for the command
       given.

   sleep seconds
       This command makes YAZ client sleep (be idle) for the number of
       seconds given.

   wait_response [ number]
       This command makes YAZ client wait for a number of response
       packages from target. If number is omitted, 1 is assumed.

       This command is rarely used and is only useful if command
       set_auto_wait is set to off.

   xmles OID doc
       Sends XML Extended Services request using the OID and doc given.

   zversion ver
       This command sets Z39.50 version for negotiation. Should be used
       before open. By default 3 (version 3) is used.

   options op1 op2..
       This command sets Z39.50 options for negotiation. Should be used
       before open.

       The following options are supported: search, present, delSet,
       resourceReport, triggerResourceCtrl, resourceCtrl, accessCtrl,
       scan, sort, extendedServices, level_1Segmentation,
       level_2Segmentation, concurrentOperations, namedResultSets,
       encapsulation, resultCount, negotiationModel, duplicationDetection,
       queryType104, pQESCorrection, stringSchema.

EXAMPLE

   The simplest example of a Prefix Query would be something like

           f knuth

   or

           f "donald knuth"

   In those queries no attributes was specified. This leaves it up to the
   server what fields to search but most servers will search in all
   fields. Some servers does not support this feature though, and require
   that some attributes are defined. To add one attribute you could do:

           f @attr 1=4 computer

   where we search in the title field, since the use(1) is title(4). If we
   want to search in the author field and in the title field, and in the
   title field using right truncation it could look something like this:

           f @and @attr 1=1003 knuth @attr 1=4 @attr 5=1 computer

   Finally using a mix of Bib-1 and GILS attributes could look something
   like this:

           f @attrset Bib-1 @and @attr GILS 1=2008 Washington @attr 1=21 weather

FILES

   yaz-<version>/client/client.c

   $HOME/.yazclientrc

   $HOME/.yazclient.history

SEE ALSO

   yaz(7) bib1-attr(7)

NOTES

    1. Z39.50
       http://www.loc.gov/z3950/agency/

    2. SRU
       http://www.loc.gov/standards/sru/

    3. SOLR
       http://lucene.apache.org/solr/

    4. Z39.50 standard on set bounds
       http://www.loc.gov/z3950/agency/markup/04.html#3.2.2.1.6

    5. Z39.50 Record Syntax Identifiers
       http://www.loc.gov/z3950/agency/defns/oids.html#5





Opportunity


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.





Free Software


Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.


Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.





Free Books


The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.


Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.





Education


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.


Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.