1 |
|
---|
2 | Copyright (C) 1995-2000, Index Data ApS.
|
---|
3 | See the file LICENSE for details.
|
---|
4 |
|
---|
5 | Compilation and installation instructions for YAZ
|
---|
6 | $Id: README.yaz 1343 2000-08-03 03:12:39Z johnmcp $
|
---|
7 |
|
---|
8 | The primary output of the source here is the lib/libyaz.a library,
|
---|
9 | which contains support functions for implementing the server or client
|
---|
10 | role of Z39.50/SR.
|
---|
11 |
|
---|
12 | Windows programmers: refer to the file windows.txt which describes how
|
---|
13 | to build the software using Microsoft Visual C++.
|
---|
14 |
|
---|
15 | On Unix, GNU configure is used to configure YAZ and generate Makefiles.
|
---|
16 | Type "./configure", then "make" to build YAZ.
|
---|
17 |
|
---|
18 | Two test-programs of interest are generated when you type 'make' at the
|
---|
19 | top level: ztest/yaz-ztest and client/yaz-client. Ztest is a dummy
|
---|
20 | database server which returns canned responses to all queries. It's good
|
---|
21 | for verifying that the protocol works ok, and ztest.c shows an
|
---|
22 | implementation of a 'backend' interface.
|
---|
23 |
|
---|
24 | yaz-client is a linemode Z39.50 client. It supports a fair amount of the
|
---|
25 | functionality of Z39.50v2/SR, but some things you need to enable or
|
---|
26 | disable by recompilation. Its primary purpose is to excersise the
|
---|
27 | package, and verify that the protocol works OK. It can be started by
|
---|
28 | typing
|
---|
29 |
|
---|
30 | yaz-client tcp:<hostname>:<port>[/<database>]
|
---|
31 |
|
---|
32 | at the UNIX prompt, to connect to a Z39.50 server.
|
---|
33 |
|
---|
34 | Use '?' to get a list of the available commands.
|
---|
35 |
|
---|
36 | The current query language for the find command is a bit awkward, but
|
---|
37 | functional:
|
---|
38 |
|
---|
39 | query ::= ['@attrset' <attribute-set>] rpn
|
---|
40 | rpn ::= complex | simple | attr rpn
|
---|
41 | complex ::= operator rpn rpn
|
---|
42 | operator ::= '@and' | '@or' | '@not' | '@prox' proximity
|
---|
43 | simple ::= term | set.
|
---|
44 | term ::= <word> | '"' <term> ... '"'.
|
---|
45 | set ::= '@set' <setname>.
|
---|
46 | attr ::= '@attr' [<attribute-set>] <number> '=' <number>.
|
---|
47 | proximity ::= exclusion distance ordered relation which unit
|
---|
48 | exclusion ::= '1' | '0' | 'void'
|
---|
49 | distance ::= <number>
|
---|
50 | ordered ::= '1' | '0'
|
---|
51 | relation ::= <number>
|
---|
52 | which ::= 'known' | 'private'
|
---|
53 | unit ::= <number>
|
---|
54 |
|
---|
55 | Eg.:
|
---|
56 |
|
---|
57 | Andersen
|
---|
58 |
|
---|
59 | "Hans Andersen"
|
---|
60 |
|
---|
61 | @and @attr 1=1 andersen @attr 1=4 @attr 4=2 duckling
|
---|
62 |
|
---|
63 | @attrset Bib-1 @and @attr GILS 2=2008 Washington @attr 1=21 weather
|
---|
64 |
|
---|
65 | The sort command takes a sequence of sort specifications. A sort
|
---|
66 | specification holds a field (sort criteria) and is followed by flags.
|
---|
67 | If the sort critieria includes = it is assumed that the sort SortKey
|
---|
68 | is of type sortAttributes using Bib-1. The integer before the = is
|
---|
69 | the attribute type and the integer following the = is the attribute
|
---|
70 | value. If no = is in the SortKey it is treated as a sortfield-type
|
---|
71 | of type InternationalString. Flags observed are s (sort case
|
---|
72 | sensitive), i (sort case insensitive), < (ascending), > (descending).
|
---|
73 | Eg.:
|
---|
74 | 1=4 i< (use is title, insensitive, ascending).
|
---|
75 | Title s> (String Title, sensitive, descending).
|
---|
76 |
|
---|
77 | The directories:
|
---|
78 |
|
---|
79 | doc - Documentation.
|
---|
80 |
|
---|
81 | util - Various little utility functions. Logging, memory debugging,
|
---|
82 | primitive ISO 2709 presentation for the yaz-client, etc. You'll
|
---|
83 | find the ASN.1 Compiler for YAZ here as well (yc.tcl).
|
---|
84 |
|
---|
85 | odr - Open Data Representation. This module implements the BER
|
---|
86 | encoding rules. Documentation is found in the files odr-use.man
|
---|
87 | and odr.txt.
|
---|
88 |
|
---|
89 | asn - This module implements the Z39.50/SR protocol. The best way
|
---|
90 | to find out how it works is to look in the sample
|
---|
91 | client/server code in server/seshigh.c. The interface is still
|
---|
92 | wholly described by the file proto.h which defines structure
|
---|
93 | and type definitions for each of the types introduced in the
|
---|
94 | protocol specification.
|
---|
95 |
|
---|
96 | z39.50 - This module implements the Z39.50 protocol. This module
|
---|
97 | does the same job as the 'asn' module except that the source
|
---|
98 | files are auto-generated using an YAZ' ASN.1 Compiler (YC).
|
---|
99 |
|
---|
100 | zutil - This module implements a collection of Z39.50 utilities, such
|
---|
101 | as query parsing, EXTERNAL handling, etc.
|
---|
102 |
|
---|
103 | ill - This module implements the ISO ILL protocol.
|
---|
104 |
|
---|
105 | comstack - This module implements the transport transparency
|
---|
106 | stack (COMSTACK). The comstack implements a generic interface
|
---|
107 | for exchanging BER-encoded records over a network. It supports
|
---|
108 | the 'American' mode of exchanging the records straight over
|
---|
109 | TCP/IP, and uses Peter Furniss' XTIMOSI package over RFC1006.
|
---|
110 | Look for documentation in the file comstack.man.
|
---|
111 |
|
---|
112 | rfc1006 - Xtimosi requires an implementation of the OSI transport
|
---|
113 | layer with an XTI-based API. Some systems (HP and DEC,
|
---|
114 | notably) provide this. For others, we provide an
|
---|
115 | implementation of the RFC1006 protocol (which is what
|
---|
116 | ISODE-based implementations often use). This module is not
|
---|
117 | needed if you don't use xtimosi, and it's not included in the
|
---|
118 | libyaz.a library.
|
---|
119 |
|
---|
120 | server - This is the implementation of the server frontend. It
|
---|
121 | provides event-handling and server managament functions,
|
---|
122 | and calls the backend primitives (best documentation of these
|
---|
123 | is in the file include/backend.h).
|
---|
124 |
|
---|
125 | client - A demonstration client. If we come upon a good design for a
|
---|
126 | higher level client API, that will live here.
|
---|
127 |
|
---|
128 | ztest - A demonstration server that implements a backend.
|
---|
129 |
|
---|
130 | include - The various header files.
|
---|
131 |
|
---|
132 | lib - The libraries. Primarily libyaz.a. The makefile gathers the
|
---|
133 | libraries from previous modules into libyaz.a.
|
---|
134 |
|
---|
135 | To get more information or assistance, send mail to [email protected].
|
---|
136 |
|
---|
137 | We maintain a mailing-list for the purpose of announcing new versions of
|
---|
138 | the software, bug-reports, discussion etc. You can sign up by sending
|
---|
139 | mail to [email protected] and include the following command
|
---|
140 | command in your email:
|
---|
141 | subscribe yaz-l
|
---|
142 |
|
---|