X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=README;h=2521a65db8d569cb55718feadbbf31b2094129a8;hp=4a73ff81c0987865d17ac3327367fe19d51f15ef;hb=8030536c98d595898b316df5eb118b1d6398450c;hpb=57a0976b6e7d84f77a08dcd4cf03d6656dae60d4 diff --git a/README b/README index 4a73ff8..2521a65 100644 --- a/README +++ b/README @@ -1,91 +1,129 @@ - * Copyright (C) 1994, Index Data. - * All rights reserved. See the file LICENSE for details. + * Copyright (C) 1995-1998, Index Data. + * See the file LICENSE for details. * Sebastian Hammer, Adam Dickmeiss -Compilation and installation - -The primary output of the source here is the libyaz.a library, which -contains support functions for implementing the server or client role -of Z39.50/SR. Currently, the library is placed in a directory 'lib' -which is one level *above* the distribution directory (yaz). This was -initially done because the library is often used along with several -other packages, and it was useful to gather the different libraries in -a common place. If you don't like it, changing the 'LIBDIR' macro in -the toplevel makefile should be sufficient. Obscurely, the header -files are located in the include-directory *under* the yaz/ directory. - -The toplevel makefile also contains directions on how to enable Peter -Furniss' XTIMOSI package. The package can be downloaded from -ftp://pluto.ulcc.ac.uk/ulcc/thinosi/... (or something close to that). -If you place the xtimosi directory on the same level as the yaz -directory, and simply follow the directions in the toplevel YAZ -makefile, the libmosi.a library from xtimosi should link in with no -problems. The xtimosi library is needed to support a full OSI stack, -but is *not* required to talk to American-style Z39.50 implementations -over TCP/IP. Don't worry about compiling the test applications in the -xtimosi package. Just do a "make libmosi.a", and do whatever is -required to make the compilation complete on your local ystem. - -Two test-programs of interest are generated when you type 'make' at -the top level. server/ztest and yazlib/cli. Ztest is a dummy database +Compilation and installation for YAZ + $Id: README,v 1.23 1998-09-22 09:41:21 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++. + +On Unix, GNU configure is used to configure YAZ and generate Makefiles. +Type "./configure", then "make" to build YAZ. + +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. -Cli 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 by -recompilation. Its primary purpose is to excersise the package, and -verify that the protocol works OK. It can be started by typing +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 -cli tcp:: +client tcp:: at the UNIX prompt, to connect to a Z39.50 server, or -cli osi:['/']: +client osi:['/']: + +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 + +Use '?' to get a list of the available commands. + +The current query language for the find command is a bit awkward, but +functional: + +query ::= ['@attrset' ] rpn +rpn ::= complex | simple | attr rpn +complex ::= operator rpn rpn +operator ::= '@and' | '@or' | '@not' | '@prox' proximity +simple ::= term | set. +term ::= | '"' ... '"'. +set ::= '@set' . +attr ::= '@attr' [] '=' . +proximity ::= exclusion distance ordered relation which unit +exclusion ::= '1' | '0' | 'void' +distance ::= +ordered ::= '1' | '0' +relation ::= +which ::= 'known' | 'private' +unit ::= + +Eg.: -to connect to an OSI SR target (this requires XTIMOSI). To connect to -the DANBIB test target, you might use: +Andersen -cli osi:0103/find2.denet.dk:4500 +"Hans Andersen" -CLI supports CCL-queries, with the mapping between qualifiers and -attribute values specified in the file default.bib in the working -directory. +@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 + +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. Check this out if you'd like to use the code. +doc - Documentation. util - Various little utility functions. Logging, memory debugging, - primitive ISO2709 presentation for the client, etc. + primitive ISO 2709 presentation for the client, etc. odr - Open Data Representation. This module implements the BER - encoding rules. Documentation is found in the files odr.man + encoding rules. Documentation is found in the files odr-use.man and odr.txt. asn - This module implements the Z39.50/SR protocol. The best way to find out how it works is to look in the sample - client/server code in server/seshigh.c or yazlib/tst.c. + client/server code in server/seshigh.c or yazlib/tst.c. The + interface is still wholly described by the file proto.h + which defines structure and type definitions for each of the + types introduced in the protocol specification. -yazlib - This module primarily implements the transport transparency +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 + the 'American' mode of exchanging the records straight over TCP/IP, and uses Peter Furniss' XTIMOSI package over RFC1006. Look for documentation in the file comstack.man. +rfc1006 - Xtimosi requires an implementation of the OSI transport + layer with an XTI-based API. Some systems (HP and DEC, + 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 + libyaz.a library. + server - This is the implementation of the server frontend. It - It provides event-handling and server managament functions, + provides event-handling and server managament functions, and calls the backend primitives (best documentation of these is in the file include/backend.h). -rfc1006 - Xtimosi requires an implementation of the OSI transport - with an XTI-based API. Some systems (HP and DEC, notably) - provide this. For others, we provide an implementation of the - RFC1006 protocol (which is what ISODE-based implementations - typically use). This module is not neeeded if you don't use - xtimosi. +client - A demonstration client. If we come upon a good design for a + higher level client API, that will live here. + +ztest - A demonstration server that implements a backend. include - The various header files. @@ -93,3 +131,12 @@ makelib - This is a simple utility that gathers the libraries from the previous modules into libyaz.a. lib - The libraries. Primarily libyaz.a. + +To get more information or assistance, send mail to yaz-help@indexdata.dk. + +We maintain a mailing-list for the purpose of announcing new versions of +the software, bug-reports, discussion etc. You can sign up by sending +mail to yaz-request@indexdata.dk and include the following command +command in your email: + subscribe yaz-l +