ANSI/NISO Z39.50-1992 ISSN: 1041-5653 (Revision of ANSI/NISO Z39.50-1988)
This version of the ANSI Z39.50-1992 Information Retrieval protocol is version 2.
Note: For the purpose of interworking with version 1 of the Search and Retrieve Protocol (ISO 10163), version 2 of Z39.50 is assumed identical to version 1 of Z39.50; thus implementations that support version 2 automatically support version 1. Implementations that intend to interwork with SR implementations as well as other Z39.50 implementations should indicate support for both versions 1 and 2 (version 1 of ANSI Z39.50-1992 should not be confused with ANSI Z39.50-1988).
The Information Retrieval application protocol specifies the formats and procedures governing the transfer of information between peer information retrieval applications. A unit of information, passed between two peer applications is called an "application protocol data unit" or APDU.
4.1 Abstract Syntax of the Information Retrieval Protocol
The Information Retrieval protocol data units are complex data types. The transfer syntax of these data types is negotiated by the presentation service provider. The definitions in this section specify the component data elements of the protocol data units and the Type-1 query.
4.1.1 ASN.1 Specification of the APDUs
This section describes the abstract syntax of the Z39.50 APDUs, using the ASN.1 notation defined in ISO 8824. The comments included within the ASN.1 specification constitute part of the standard.
4.2 Protocol ProceduresIR DEFINITIONS ::=
BEGIN
-- ANSI/NISO Z39.50-1992 version 2 - July 1, 1992PDU ::= CHOICE{
initRequest [20] IMPLICIT InitializeRequest, initResponse [21] IMPLICIT InitializeResponse, searchRequest [22] IMPLICIT SearchRequest, searchResponse [23] IMPLICIT SearchResponse, presentRequest [24] IMPLICIT PresentRequest, presentResponse [25] IMPLICIT PresentResponse, deleteResultSetRequest [26] IMPLICIT DeleteResultSetRequest, deleteResultSetResponse [27] IMPLICIT DeleteResultSetResponse, accessControlRequest [28] IMPLICIT AccessControlRequest, accessControlResponse [29] IMPLICIT AccessControlResponse, resourceControlRequest [30] IMPLICIT ResourceControlRequest, resourceControlResponse [31] IMPLICIT ResourceControlResponse, triggerResourceControlRequest [32] IMPLICIT TriggerResourceControlRequest, resourceReportRequest [33] IMPLICIT ResourceReportRequest, resourceReportResponse [34] IMPLICIT ResourceReportResponse} -- new APDUs can be added in the future at the end of this list. --InitializeRequest ::=SEQUENCE{
referenceId ReferenceId OPTIONAL, protocolVersion ProtocolVersion, -- proposed version of the protocol to be used (see below). options Options, -- proposed set of services to be used preferredMessageSize PreferredMessageSize, -- origin proposal for the size of large messages (where message size is -- the sum of sizes, in bytes, of the records in an APDU) the target -- should normally use when presenting groups of records; however, the -- first record in a response is permitted to cause the message to -- exceed this size (see also maximumRecordSize below). maximumRecordSize MaximumRecordSize, -- origin proposal for maximum record size (number of bytes). -- Value must be greater than or equal to -- preferredMessageSize. idAuthentication [7] ANY OPTIONAL, -- information as required by the target to access the -- responding IRPM; syntax of this parameter to be -- defined by the target prior to communication. implementationId ImplementationId OPTIONAL, implementationName ImplementationName OPTIONAL, implementationVersion ImplementationVersion OPTIONAL, userInformationField UserInformationField OPTIONAL} --InitializeResponse ::= SEQUENCE{
referenceId ReferenceId OPTIONAL, protocolVersion ProtocolVersion, options Options, preferredMessageSize PreferredMessageSize, -- target decision on maximum APDU size (see description under -- InitializationRequest definition). Value is allowed to be different -- from what origin proposed in the Initialization Request; if origin -- does not agree on target values, it may abort the connection. maximumRecordSize MaximumRecordSize, -- target decision on the maximum record size result [12] IMPLICIT BOOLEAN, -- result of the processing of the request at the target. -- reject = FALSE; Accept = TRUE. implementationId ImplementationId OPTIONAL, implementationName ImplementationName OPTIONAL, implementationVersion ImplementationVersion OPTIONAL, userInformationField UserInformationField OPTIONAL} -- -- Auxiliary definitions for Initialization APDUs ProtocolVersion ::= [3] IMPLICIT BIT STRING -- represents a string of Boolean values, each value representing -- a version. The first value set to 1 indicates version 1 is available, -- the second value set to 1 indicates version 2 is available, and so on. -- Values higher than the highest known version should be ignored. Both the -- Initialize and Initialize Response APDUs include a value string -- corresponding to the supported versions. The highest common version is -- selected for use. If there are no versions in common, the Initialize -- Response APDU should indicate a value of "reject" for the parameter -- Result. Note: Versions 1 and 2 are identical. Systems supporting -- version 2 should indicate support for version 1 as well -- for interoperability with systems that indicate support for -- version 1 only (e.g. ISO 10163 implementations). Options ::= [4] IMPLICIT BIT STRING {search (0), present (1), delSet (2), resourceReport (3), triggerResourceCtrl (4), resourceCtrl (5), accessCtrl (6)} -- In InitializeRequest, for bits 0 through 4, ON indicates initiator does -- request use of service; for bits 5 and 6, ON indicates initiator will -- support service. For InitializeResponse, for bit 0 through 4, ON indicates -- target will support service; for bits 5 and 6, ON indicates target requests -- service. For extensibility of the protocol, additional bits set should -- not be considered to be an error on received InitializeRequest. -- PreferredMessageSize ::= [5] IMPLICIT INTEGER MaximumRecordSize ::= [6] IMPLICIT INTEGER -- ImplementationId ::= [110] IMPLICIT VisibleString -- a unique identifier for the origin or target implementation ImplementationName ::= [111] IMPLICIT VisibleString -- a descriptive name for the origin or target implementation ImplementationVersion ::= [112] IMPLICIT VisibleString -- descriptive name for the origin or target impl. version -- these three implementation parameters are provided solely for -- the convenience of implementors needing to distinguish implemen- -- tations. They shall not be the subject of conformance tests. UserInformationField ::= [11] EXTERNAL -- additional information, not defined in this standard. -- end auxiliary definitions for initialization APDUsSearchRequest ::= SEQUENCE{
referenceId ReferenceId OPTIONAL, smallSetUpperBound [13] IMPLICIT INTEGER, -- if the number of hits is less than or equal to this number, all records -- are to be returned in the SearchResponse (within the limits given by -- the negotiated preferred-MessageSize and maximumRecordSize), composed -- as specified by the smallSetElementSetNames parameter below. May be -- zero. largeSetLowerBound [14] IMPLICIT INTEGER, -- if the number of hits is equal to or greater than this number, no -- records are to be returned. largeSetLowerBound must be greater than -- smallSetUpperBound. mediumSetPresentNumber [15] IMPLICIT INTEGER, -- maximum number records to be returned in the SearchResponse if the number -- of hits is between largeSetLowerBound and smallSetUpperBound (again -- within the limits given by PreferredMessageSize and MaximumRecordSize), -- composed as specified by mediumSetRecordElementSetNames. replaceIndicator [16] IMPLICIT BOOLEAN, -- origin indicates whether or not to replace a previously created result -- set with the same name by the one that is constructed in this search. resultSetName [17] IMPLICIT VisibleString, -- origin proposal for naming of the result set that is constructed if hits -- are found. If target allows the origin to assign names to result sets, -- it uses this proposed name. If the target does not support named result -- sets, it returns an error diagnostic. databaseNames [18] IMPLICIT SEQUENCE OF DatabaseName, -- database(s) in which the search will be performed. smallSetElementSetNames [100] IMPLICIT ElementSetNames OPTIONAL, -- origin proposal for composition of the records in the small -- set (see above under smallSetUpperBound). mediumSetElementSetNames [101] IMPLICIT ElementSetNames OPTIONAL, -- origin proposal for the composition of the records in the -- medium set (see above under mediumSetPresentNumber). preferredRecordSyntax PreferredRecordSyntax OPTIONAL, -- origin proposal for abstract syntax of the database records to be -- returned in the SearchResponse. Values subject to registration. query [21] Query} -- the search argument (see description below). --Query ::= CHOICE
{type-0 [0] ANY, type-1 [1] IMPLICIT RPNQuery, type-2 [2] OCTET STRING, type-100 [100] OCTET STRING, type-101 [101] IMPLICIT OCTET STRING} -- the search argument contained in the SearchRequest. Five types are defined: -- a) A type-0 query may be used only when the origin and target have an -- a priori agreement outside of this standard as to form of query -- acceptable to target. -- b) type-1 is the Reverse Polish Notation (RPN) query (see below). -- c) type-2 is the ISO8777 type query, specified in ISO 8777. -- d) type-100 is the Z39.58 type query, specified in ANSI Z39.58. -- e) type-101 is the proximity query, specified in Appendix G. -- -- --RPNQuery ::= SEQUENCE{
attributeSetId OBJECT IDENTIFIER, -- identifies attribute set RPNStructure} RPNStructure ::= CHOICE { [0] Operand, [1] IMPLICIT SEQUENCE { RPNStructure, RPNStructure, Operator }} -- Operand ::= CHOICE{ AttributesPlusTerm, ResultSetId} AttributesPlusTerm::= [102] IMPLICIT SEQUENCE{ AttributeList, Term} AttributeList ::= [44] IMPLICIT SEQUENCE OF AttributeElement Term ::= [45] IMPLICIT OCTET STRING -- the type OCTET STRING is used to enable the inclusion of multibyte -- character representations which the types CharacterString and -- VisibleString might impose on graphic character repertoire. Operator ::= [46] CHOICE{ and [0] IMPLICIT NULL, or [1] IMPLICIT NULL, and-not [2] IMPLICIT NULL} -- AttributeElement ::= SEQUENCE{ AttributeType, AttributeValue} AttributeType ::= [120] IMPLICIT INTEGER AttributeValue ::= [121] IMPLICIT INTEGER -- AttributeType and AttributeValue interpretation is governed by the -- values contained in the definition identified by AttributeSetId. --SearchResponse ::= SEQUENCE{
referenceId ReferenceId OPTIONAL, resultCount [23] IMPLICIT INTEGER, -- number of hits resulting from the search. numberOfRecordsReturned NumberOfRecordsReturned, -- number of records in the search results below. nextResultSetPosition NextResultSetPosition, -- the ordinal number in the result set of the record appearing directly -- after the last record in the search Results below. searchStatus [22] IMPLICIT BOOLEAN, -- result of the processing of the request at the target IRPM. -- success = TRUE; failure = FALSE. resultSetStatus [26] IMPLICIT INTEGER{ subset (1), interim (2), none (3)} OPTIONAL, -- occurs if and only if search-status is FALSE. Indicates the -- presence and validity of the result set produced. presentStatus PresentStatus OPTIONAL, -- occurs if and only if search-status is TRUE. Indicates -- presence and validity of records appearing in the search results. databaseOrDiagnosticRecords Records OPTIONAL} -- the records (diagnostic and/or bibliographic) resulting -- from the search (see description below). -- --PresentRequest ::= SEQUENCE{
referenceId ReferenceId OPTIONAL, resultSetId ResultSetId, -- identification of the result set from which to retrieve records resultSetStartPoint [30] IMPLICIT INTEGER, -- ordinal number in the result set of the first record to -- appear in the present results in the PresentResponse. numberOfRecordsRequested [29] IMPLICIT INTEGER, -- specifies the maximum number of records to be returned in the present -- results in the PresentResponse (within the limits given by the -- negotiated message and record size parameters), composed as specified -- by the element set names parameter below. ElementSetNames OPTIONAL, -- origin proposal for the composition of the records to be -- returned in the Present Response. preferredRecordSyntax PreferredRecordSyntax OPTIONAL} -- origin proposal for abstract syntax of the database records to be returned -- in the present results in the Present Response. Values subject -- to registration, at present by specification in Appendix E. -- --PresentResponse ::= SEQUENCE{
referenceId ReferenceId OPTIONAL, numberOfRecordsReturned NumberOfRecordsReturned, -- number of records returned in the records parameter below. nextResultSetPosition NextResultSetPosition, -- ordinal number in the result set of the record -- appearing directly after the last record returned presentStatus PresentStatus, -- indicates the presence and validity of the records databaseOrDiagnosticRecords Records OPTIONAL} -- the presented records -- -- -- begin auxiliary definitions for search and present APDUsRecords ::= CHOICE{
dataBaseOrSurDiagnostics [28] IMPLICIT SEQUENCE OF NamePlusRecord, nonSurrogateDiagnostic [130] IMPLICIT DiagRec} -- NamePlusRecord ::= SEQUENCE{ [0] IMPLICIT DatabaseName OPTIONAL, -- presence of DatabaseName is conditional. See 3.2.2.1.7 and 3.2.3.1.5. [1] CHOICE{ databaseRecord [1] DatabaseRecord, surrogateDiagnostic [2] DiagRec}} --DatabaseRecord ::= EXTERNAL
-- the database record syntax is defined outside of this standard. -- For bibliographic data, USMARC is a prime example. --DiagRec ::= SEQUENCE{
diagnosticSetId OBJECT IDENTIFIER, condition INTEGER, -- interpretation of condition is governed by values -- contained in definition identified by DiagnosticSetId. addinfo VisibleString} -- add'l information.ElementSetNames ::= [19] CHOICE{
generic [0] IMPLICIT ElementSetName, databaseSpecific [1] IMPLICIT SEQUENCE OF SEQUENCE{ DatabaseName, ElementSetName}} -- ElementSetName ::= [103] IMPLICIT VisibleString -- A target must always recognize the value "F" to mean "full record." -- -- begin miscellaneous definitions for search and present APDUs NumberOfRecordsReturned ::= [24] IMPLICIT INTEGER NextResultSetPosition ::= [25] IMPLICIT INTEGER PresentStatus ::= [27] IMPLICIT INTEGER{ success (0), partial-1 (1), partial-2 (2), partial-3 (3), partial-4 (4), failure (5)} PreferredRecordSyntax ::= [104] IMPLICIT OBJECT IDENTIFIER -- end miscellaneous definitions for search and present APDUs -- end auxiliary definitions for search and present APDUs -- --DeleteResultSetRequest ::=SEQUENCE{
referenceId ReferenceId OPTIONAL, deleteOperation [32] IMPLICIT INTEGER{ list (0), all (1)}, resultSetList SEQUENCE OF ResultSetId OPTIONAL } -- identification of result sets to be deleted if operation is "list" --DeleteResultSetResponse ::= SEQUENCE{
referenceId ReferenceId OPTIONAL, deleteOperationStatus [0] IMPLICIT DeleteSetStatus, -- Reports status for entire delete operation. Values limited to -- "success" or "failure-3" through "failure-9." Values of "failure-7" -- and "failure-8" may be used only if operation is "all." deleteListStatuses [1] IMPLICIT ListStatuses OPTIONAL, -- Must occur if operation is "list." Individual status -- values limited to "success" through "failure-6." numberNotDeleted [34] IMPLICIT INTEGER OPTIONAL, -- No. sets target failed to delete. Occurs only if operation is "all." bulkStatuses [35] IMPLICIT ListStatuses OPTIONAL, -- occurs if and only if DeleteSetStatus equals 8. Individual -- statuses limited to "success" through "failure-6" deleteMessage [36] IMPLICIT VisibleString OPTIONAL} -- textual message concerning the delete operation. -- -- begin auxiliary definitions for deleteListStatuses ::= SEQUENCE OF SEQUENCE{
ResultSetId, DeleteSetStatus}DeleteSetStatus ::= [33] IMPLICIT INTEGER{
success (0), resultSetDidNotExist (1), previouslyDeletedByTarget (2), systemProblemAtTarget (3), accessNotAllowed (4), resourceControlAtOrigin (5), resourceControlAtTarget (6), bulkDeleteNotSupported (7), notAllRsltSetsDeletedOnBulkDlte (8), notAllRequestedResultSetsDeleted (9)} -- 7 and 8 used only if operation is "all." -- end auxiliary definitions for delete --AccessControlRequest ::= SEQUENCE{
referenceId ReferenceId OPTIONAL, securityChallenge CHOICE{ oldway [37] IMPLICIT OCTET STRING, newway [0] EXTERNAL}} --AccessControlResponse ::= SEQUENCE{
referenceId ReferenceId OPTIONAL, securityChallengeResponse CHOICE{ oldway [38] IMPLICIT OCTET STRING, newway [0] EXTERNAL}} -- --ResourceControlRequest ::= SEQUENCE{
referenceId ReferenceId OPTIONAL, suspendedFlag [39] IMPLICIT BOOLEAN OPTIONAL, -- "true" = suspended resourceReport [40] ResourceReport OPTIONAL, partialResultsAvailable [41] IMPLICIT INTEGER{ subset (1), interim (2), none (3)} OPTIONAL, responseRequired [42] IMPLICIT BOOLEAN, -- "true" means that the target requires a response triggeredRequestFlag [43] IMPLICIT BOOLEAN OPTIONAL} -- "true" means request triggered by a trigger-resource-control request --ResourceControlResponse ::= SEQUENCE{
referenceId ReferenceId OPTIONAL, continueFlag [44] IMPLICIT BOOLEAN, -- true = continue resultSetWanted [45] IMPLICIT BOOLEAN OPTIONAL} -- "true" = "result set wanted," required during a search if -- Continue flag is false; otherwise should not occur. --TriggerResourceControlRequest ::= SEQUENCE{
referenceId ReferenceId OPTIONAL, requestedOperation [46] IMPLICIT INTEGER{ resourceReport (1), resourceControl (2), cancel (3)}, preferredResourceReportFormat [47] IMPLICIT ResourceReportId OPTIONAL, resultSetWanted [48] IMPLICIT BOOLEAN OPTIONAL} -- --ResourceReportRequest ::= SEQUENCE{
referenceId ReferenceId OPTIONAL, preferredResourceReportFormat [49] IMPLICIT ResourceReportId OPTIONAL} -- --ResourceReportResponse ::= SEQUENCE{
referenceId ReferenceId OPTIONAL, resourceReportStatus [50] IMPLICIT INTEGER{ success (0), partial (1), failure-1 (2), failure-2 (3), failure-3 (4), failure-4 (5)}, resourceReport [51] ResourceReport OPTIONAL} -- -- -- Begin auxiliary definitions for resource control ResourceReport ::= EXTERNAL ResourceReportId ::= OBJECT IDENTIFIER -- End auxiliary definitions for resource control -- -- begin global auxiliary definitions ReferenceId ::= [2] IMPLICIT OCTET STRING -- value provided by the service originator in the Request APDU, target -- required to send it back unaltered in corresponding response APDU DatabaseName ::= [105] IMPLICIT VisibleString ResultSetId ::= [31] IMPLICIT VisibleString -- end global auxiliary definitions END -- IR
This section specifies services required by the protocol, the protocol model, state tables, and handling of protocol errors. Rules for extensibility, and conformance requirements are specified in sections 4.3 and 4.4.
4.2.1 Services Required
The Information Retrieval protocol assumes service from the Presentation layer and the association control service element.
4.2.1.1 Service Required from the Presentation Layer
The protocol uses the presentation service as defined in ISO 8822 to provide a presentation connection for communication between two information retrieval applications. The presentation services required are those contained in the presentation kernel functional unit and the session duplex functional unit. The association control service element may have additional requirements for presentation services.
All Information Retrieval protocol data units will be mapped onto the P-Data service. The communication service that supports this protocol is a connection-oriented service using the P-DATA service, defined in ISO 8822 in an established application association, in combination with the ACSE, ISO 8649.
A Z39.50 origin establishes application-associations as necessary with the target with whom it is engaged in Z39.50 activity. The Z39.50 application-service-element (ASE) may then use the P-DATA service defined in ISO 8822 directly to transmit Z39.50 APDUs. This provides a connection-oriented interaction between Z39.50 systems. A single application-association can be used to send a series of Z39.50 APDUs relating to multiple searches. A single system can be engaged in multiple application associations with multiple remote systems simultaneously.
4.2.1.2 Association Control Services Assumed
The protocol assumes the services of the association control service elements as defined in ISO 8649. The services required are:
4.2.2 Protocol Model
To specify protocol procedure, the abstract, implementation-independent concepts of service-user, service-provider, and service primitive are used.
A service-provider provides a communication path between two service users. A service primitive is an element of interaction between the service-user and the service-provider. There are four types of service primitives: Request, Indication, Response, and Confirmation. For a confirmed service initiated by the origin (i.e., for Z39.50: Search, Present, Delete, and Resource-report) they are used as follows:
(2) For a non-confirmed service (i.e., for Z39.50: Trigger-resource-control) only the Request and Indication primitives are used.
From the perspective of the service-user, the service-provider is system-independent. For the exchange of protocol however, a distinction is made between those portions of the service-provider residing on the origin and target systems (respectively, the origin service-provider and the target service-provider). The sequence of interactions for a confirmed service initiated by the origin is:
(1) For a confirmed service initiated by the target, the roles of origin and target are reversed.
(2) For a non-confirmed service, only steps 1 through 3 apply.
4.2.3 State Tables
This section defines two Information Retrieval Protocol Machines (IRPMs) in terms of state tables. Table 10 defines origin and target states and Table 11 lists events and actions for the origin of the target. One state table is defined for the origin (Table 12) and one state table is defined for the target (Table 13). Each state table shows the interrelationship between the state of an Information Retrieval association, the incoming events that occur in the protocol, the actions taken, and, finally, the resulting state of the association. The IRPM state table does not constitute a formal definition of the IRPM. It is included to provide a more precise specification of the protocol procedures. The following conventions are used in the state tables:
State Table Cells. The intersection of an incoming event (row) and a state (column) forms a cell. A blank cell represents the combination of an incoming event and a state that is not defined for the IRPM. A non-blank cell represents an incoming event and state that is defined for the IRPM. Such a cell contains one or more actions, separated by semi-colons (;).
Actions to Be Taken by the IRPM. The IRPM state tables define the action to be taken by the IRPM in terms of one or more outgoing events (separated by semicolons) and the resulting state (in parentheses) of the Information Retrieval association.
Invalid Intersections. Blank cells indicate an invalid intersection of an incoming event and state. The state tables define correct operation only. They do not specify actions to be taken in response to incorrect operation (for example, erroneous protocol control information, incorrect protocol control actions, etc.). Such actions are not within the scope of the specification, although implementations must consider them.
Table 10: Definition of States
Origin States | Target States
____________________________________|____________________________________
No. | Name | Description | No. | Name | Decscription
____|_________|_____________________|_____|__________|___________________
| | the origin is await-| | | the target is
1 | Closed | ing an Init request | 1 | Closed | awaiting an Init
| | from the application| | | APDU
____|_________|_____________________|_____|__________|___________________
| Init | the origin has | | Init | the target has
2 | sent | transmitted an Init | 2 | recvd | issued an Init
| | APDU to the target | | | indication
____|_________|_____________________|_____|__________|___________________
| | the origin is await-| | | the target is await-
| | ing a Search, Pres- | | | ing a Search, Pres-
3 | Open | ent, Delete, or | 3 | Open | ent, Delete, or
| | Resource-report | | | Resource-report
| | request | | | APDU
____|_________|_____________________|_____|__________|___________________
| | the origin has | | | the target has
4 | Search | transmitted a | 4 | Search | issued a Search
| sent | Search APDU | | recvd | indication
____|_________|_____________________|_____|__________|___________________
| | the origin has | | | the target has
5 | Prsnt | transmitted a | 5 | Presnt | issued a
| sent | Present APDU | | recvd | Present indication
____|_________|_____________________|_____|__________|___________________
| | the origin has | | | the target has
6 | Delete | transmitted a | 6 | Delete | issued a
| sent | Delete APDU | | recvd | Delete indication
____|_________|_____________________|_____|__________|___________________
| | the origin has | | | the target has
7 | Rsrp | transmitted a | 7 | Rsrp | issued a Resource-
| sent | Resource-report APDU| | recvd | report indication
____|_________|_____________________|_____|__________|___________________
| | the origin has | | | the target has
| rscctrl | issued a Resource- | | rscctrl | transmitted a
8 | recvd | control indication | 8 | sent | Resource-control APDU
| | (response required) | | | (response required)
____|_________|_____________________|_____|__________|___________________
| | the origin has | | | the target has
9 | Acctrl | issued an Access- | 9 | Acctrl | transmitted an
| recvd | control indication | | sent | Access-control APDU
____|_________|_____________________|_____|__________|___________________
| | the origin has | | | the target has
10 | Rlease | issued an A_release | 10 | Rlease | issued an IR_rel
| sent | request | | recvd | indication
____|_________|_____________________|_____|__________|___________________
| | | | | the target has
| | | 11 | Reject | transmitted an Init
| | | | | Response APDU
| | | | | (reject)
____|_________|_____________________|_____|__________|___________________
Table 11a: Events and Actions and Their Abbreviations--Origin
Incoming Event | Abbreviation | Outgoing Action | Abbreviation
| | |
__________________|__________________|__________________|__________________
Init request | Init req | Init PDU | Init PDU
__________________|__________________|__________________|__________________
Init-response PDU| Init resp PDU | Init confirm | Init conf
__________________|__________________|__________________|__________________
Search request | Srch req | Search PDU | Srch PDU
__________________|__________________|__________________|__________________
Search-response | Srch resp PDU | Search confirm | Srch conf
PDU | | |
__________________|__________________|__________________|__________________
Present request | Prsnt req | Present PDU | Prsnt PDU
__________________|__________________|__________________|__________________
Present-response | Prsnt resp PDU | Present confirm | Prsnt conf
PDU | | |
__________________|__________________|__________________|__________________
Delete request | Dlte req | Delete PDU | Dlte PDU
__________________|__________________|__________________|__________________
Delete-response | Dlte resp PDU | Delete confirm | Dlte conf
PDU | | |
__________________|__________________|__________________|__________________
Resource-report | Rsrp req | Resource-report | rsrp PDU
request | | PDU |
__________________|__________________|__________________|__________________
Resource-report | Rsrp resp PDU | Resource-report- | rsrp conf
response PDU | | confirm |
__________________|__________________|__________________|__________________
Trigger-resource-| Trigrc req | Trigger-resource-| Trigrc PDU
control request | | control PDU |
__________________|__________________|__________________|__________________
Resource-control | Rsc PDU (Resp) | |
PDU (response | | Resource-control | Rsc ind
required) | | indication |
__________________|__________________| |
Resource-control | Rsc PDU (Noresp) | |
PDU (response | | |
not required) | | |
__________________|__________________|__________________|__________________
Resource-control | Rsc resp | Resource-control | Rsc resp PDU
response | | response PDU |
__________________|__________________|__________________|__________________
Access-control | Acc PDU | Access-control | Acc ind
PDU | | indication |
__________________|__________________|__________________|__________________
Access-control | Acc resp | Access-control | Acc resp PDU
response | | response PDU |
__________________|__________________|__________________|__________________
A-Abort | Aab ind | |
indication | | IR-abort | Iab ind
__________________|__________________| indication |
A-P-abort | APab ind | |
indication | | |
__________________|__________________|__________________|__________________
IR-abort request | Iab req | A-abort request | Aab req
__________________|__________________|__________________|__________________
IR-release | Irel req | A-release | Arel req
request | | request |
__________________|__________________|__________________|__________________
A-release | Arel conf | IR-release | Irel conf
confirm | | confirm |
__________________|__________________|__________________|__________________
| | Save current | stkst
| | state |
__________________|__________________|__________________|__________________
| | Restore prev- | popst
| | iously saved |
| | state |
Table 11b: Events and Actions and Their Abbreviations--Target
Incoming Event | Abbreviation | Outgoing Action | Abbreviation
| | |
__________________|__________________|__________________|__________________
Init PDU | Init PDU | Init indication | Init ind
__________________|__________________|__________________|__________________
Init response | Init resp | Init-response PDU| Init resp PDU
__________________|__________________|__________________|__________________
Search PDU | Srch PDU | Search indication| Srch ind
__________________|__________________|__________________|__________________
Search response | Srch resp | Search-response | Srch resp PDU
| | PDU |
__________________|__________________|__________________|__________________
Present PDU | Prsnt PDU |Present indication| Prsnt ind
__________________|__________________|__________________|__________________
Present response | Prsnt resp | Present-response | Prsnt resp PDU
| | PDU |
__________________|__________________|__________________|__________________
Delete PDU | Dlte PDU | Delete indication| Dlte ind
__________________|__________________|__________________|__________________
Delete response | Dlte resp | Delete-respond | Dlte resp PDU
| | PDU |
__________________|__________________|__________________|__________________
Resource-report | Rsrp PDU | Resource-report | Rsrp ind
PDU | | indication |
__________________|__________________|__________________|__________________
Resource-report | Rsrp resp | Resource-report- | Rsrp rep PDU
response | | response PDU |
__________________|__________________|__________________|__________________
Trigger-resource-| Trigrc PDU | Trigger-resource-| Trigrc ind
control PDU | |control indication|
__________________|__________________|__________________|__________________
Resource-control | Rsc req (Resp) | |
Request (response| | Resource-control | Rsc PDU
required) | | PDU |
__________________|__________________| |
Resource-control | Rsc req (Noresp) | |
Request (no | | |
response required)| | |
__________________|__________________|__________________|__________________
Resource-control | Rsc resp PDU | Resource-control | Rsc conf
response PDU | | confirm |
__________________|__________________|__________________|__________________
Access-control | Acc req | Access-control | Acc PDU
Request | | PDU |
__________________|__________________|__________________|__________________
Access-control- | Acc resp PDU | Access-control | Acc conf
response PDU | | confirm |
__________________|__________________|__________________|__________________
A-Abort | Aab ind | |
indication | | IR-abort | Iab ind
__________________|__________________| indication |
A-P-abort | APab ind | |
indication | | |
__________________|__________________|__________________|__________________
IR-abort request | Iab req | A-abort request | Aab req
__________________|__________________|__________________|__________________
A-release | Arel ind | IR-release | Irel ind
indication | | indication |
__________________|__________________|__________________|__________________
IR-release | Irel resp | A-release | Arel resp
response | | response |
__________________|__________________|__________________|__________________
| | Save current | stkst
| | state |
__________________|__________________|__________________|__________________
| | Restore prev- | popst
| | iously saved |
| | state |
Table 12a: State Table for Origin -- Part 1
\ State | Closed | Init | Open | Search | Prsnt | Delete | Rsrp
\ | | sent | | sent | sent | sent | sent
Event \ | 1 | 2 | 3 | 4 | 5 | 6 | 7
_______\_|________|________|________|________|________|________|________
Init | Init | | | | | |
req | PDU(2) | | | | | |
_________|________|________|________|________|________|________|________
Init | | Init | | | | |
resp PDU | | conf+ | | | | |
(ACCEPT) | | (3) | | | | |
_________|________|________|________|________|________|________|________
Init | | Init | | | | |
resp PDU | | conf-; | | | | |
(REJECT) | |Arel req| | | | |
_________|________|___(10)_|________|________|________|________|________
Srch | | | Srch | | | |
req | | | PDU (4)| | | |
_________|________|________|________|________|________|________|________
Srch | | | | Srch | | |
resp | | | | conf | | |
PDU | | | | (3) | | |
_________|________|________|________|________|________|________|________
Prsnt | | | Prsnt | | | |
req | | | PDU (5)| | | |
_________|________|________|________|________|________|________|________
Prsnt | | | | | Prsnt | |
resp | | | | | conf | |
PDU | | | | | (3) | |
_________|________|________|________|________|________|________|________
Dlte | | |Dlte PDU| | | |
req | | | (6) | | | |
_________|________|________|________|________|________|________|________
Dlte | | | | | | Dlte |
resp | | | | | | conf |
PDU | | | | | | (3) |
_________|________|________|________|________|________|________|________
Rsrp | | | Rsrp | | | |
req | | | PDU (7)| | | |
_________|________|________|________|________|________|________|________
Rsrp | | | | | | | Rsrp
resp | | | | | | | conf
PDU | | | | | | | (3)
_________|________|________|________|________|________|________|________
Trigrc | | Trigrc | | Trigrc | Trigrc | Trigrc |
req | | PDU (2)| | PDU (4)| PDU (5)| PDU (6)|
_________|________|________|________|________|________|________|________
Table 12b: State Table for Origin -- Part 2
\ State | Init | Open | Search | Prsnt | Delete | Rsrp | Rsctrl | Acctrl | Release
\ | sent | | sent | sent | sent | sent | recvd | recvd | sent
Event \ | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10
_______\_|________|________|________|________|________|________|________|________|________
Rsc PDU |Rsc ind;| |Rsc ind;|Rsc ind;|Rsc ind;| | | |
(Resp) |stkst(8)| |stkst(8)|stkst(8)|stkst(8)| | | |
_________|________|________|________|________|________|________|________|________|________
Rsc PDU |Rsc ind;| |Rsc ind;|Rsc ind;|Rsc ind;| | | |
(Noresp) | (2) | | (4) | (4) | (4) | | | |
_________|________|________|________|________|________|________|________|________|________
Rec | | | | | | |Rsc resp| |
resp | | | | | | | PDU; | |
| | | | | | | popst | |
_________|________|________|________|________|________|________|________|________|________
Acc |Acc ind;| |Acc ind;|Acc ind;|Acc ind;|Acc ind;| | |
PDU |stkst(9)| |stkst(9)|stkst(9)|stkst(9)|stkst(9)| | |
_________|________|________|________|________|________|________|________|________|________
Acc | | | | | | | |Acc resp|
resp | | | | | | | | PDU; |
| | | | | | | | popst |
_________|________|________|________|________|________|________|________|________|________
Aab |Iab ind |Iab ind |Iab ind |Iab ind |Iab ind |Iab ind |Iab ind |Iab ind |Iab ind
ind | (1) | (1) | (1) | (1) | (1) | (1) | (1) | (1) | (1)
_________|________|________|________|________|________|________|________|________|________
Apab |Iab ind |Iab ind |Iab ind |Iab ind |Iab ind |Iab ind |Iab ind |Iab ind |Iab ind
ind | (1) | (1) | (1) | (1) | (1) | (1) | (1) | (1) | (1)
_________|________|________|________|________|________|________|________|________|________
Iab |Aab ind |Aab ind |Aab ind |Aab ind |Aab ind |Aab ind |Aab ind |Aab ind |Aab ind
req | (1) | (1) | (1) | (1) | (1) | (1) | (1) | (1) | (1)
_________|________|________|________|________|________|________|________|________|________
Irel | |Arel req| | | | | | |
req | | (10) | | | | | | |
_________|________|________|________|________|________|________|________|________|________
Arel | | | | | | | | |Irel conf
conf | | | | | | | | | (1)
_________|________|________|________|________|________|________|________|________|________
Table 13a: State Table for Target -- Part 1
\ State | Closed | Init | Open | Search | Prsnt | Delete
\ | | recvd | | recvd | recvd | recvd
Event \ | 1 | 2 | 3 | 4 | 5 | 6
_______\_|_________|_________|_________|_________|_________|_________
Init | Init ind| | | | |
PDU | (2) | | | | |
_________|_________|_________|_________|_________|_________|_________
Init | |Init resp| | | |
resp | | PDU(+) | | | |
(ACCEPT) | | (3) | | | |
_________|_________|_________|_________|_________|_________|_________
Init | |Init resp| | | |
resp | | PDU(-) | | | |
(REJECT) | | (11) | | | |
_________|_________|_________|_________|_________|_________|________
Srch | | | Srch | | |
PDU | | | ind (4)| | |
_________|_________|_________|_________|_________|_________|________
Srch | | | |Srch resp| |
resp | | | | PDU (3) | |
_________|_________|_________|_________|_________|_________|________
Prsnt | | | Prsnt | | |
PDU | | | ind (5)| | |
_________|_________|_________|_________|_________|_________|________
Prsnt | | | | |Prsnt |
resp | | | | |resp PDU |
_________|_________|_________|_________|_________|____(3)__|________
Dlte | | | Dlte | | |
PDU | | | ind (6)| | |
_________|_________|_________|_________|_________|_________|________
Dlte | | | | | |Dlte resp
resp | | | | | | PDU (3)
_________|_________|_________|_________|_________|_________|________
Rsrp | | | Rsrp | | |
PDU | | | ind (7) | | |
_________|_________|_________|_________|_________|_________|________
Rsrp | | | | | |
resp | | | | | |
_________|_________|_________|_________|_________|_________|________
Trigrc | | Trigrc | ignore | Trigrc | Trigrc | Trigrc
PDU | | ind (2) | (3) | ind (4) | ind (5) | ind (6)
_________|_________|_________|_________|_________|_________|________
Rsc req | | Rsc PDU | | Rsc PDU | Rsc PDU | Rsc PDU
(Resp) | |stkst (8)| |stkst (8)|stkst (8)|stkst (8)
_________|_________|_________|_________|_________|_________|________
Rsc req | | Rsc PDU | | Rsc PDU | Rsc PDU | Rsc PDU
(Noresp) | | (2) | | (4) | (5) | (6)
_________|_________|_________|_________|_________|_________|________
Rsc resp | | | | | |
PDU | | | | | |
_________|_________|_________|_________|_________|_________|________
Acc req | | Acc PDU;| | Acc PDU;| Acc PDU;| Acc PDU;
| |stkst (9)| |stkst (9)|stkst (9)|stkst (9)
_________|_________|_________|_________|_________|_________|________
Acc resp | | | | | |
PDU | | | | | |
_________|_________|_________|_________|_________|_________|________
Arel ind | | |Irel ind | | |
| | | (10) | | |
_________|_________|_________|_________|_________|_________|________
Irel | | | | | |
resp | | | | | |
_________|_________|_________|_________|_________|_________|________
Aab ind | | Iab ind | Iab ind | Iab ind | Iab ind | Iab ind
| | (1) | (1) | (1) | (1) | (1)
_________|_________|_________|_________|_________|_________|________
Apab | | Iab ind | Iab ind | Iab ind | Iab ind | Iab ind
ind | | (1) | (1) | (1) | (1) | (1)
_________|_________|_________|_________|_________|_________|________
Iab | | Aab req | Aab req | Aab req | Aab req | Aab req
req | | (1) | (1) | (1) | (1) | (1)
_________|_________|_________|_________|_________|_________|________
Table 13b: State Table for Target -- Part 2
\ State | Rsp | Rsctrl | Acctrl | Rlease | Reject
\ | recvd | sent | sent | recvd |
Event \ | 7 | 8 | 9 | 10 | 11
_______\_|__________|__________|__________|__________|__________
Rsrp | | | | |
PDU | | | | |
_________|__________|__________|__________|__________|__________
Rsrp |Rsrp resp | | | |
resp | PDU (3) | | | |
_________|__________|__________|__________|__________|__________
Trigrc | | ignore | ignore | | ignore
PDU | | (8) | (9) | | (11)
_________|__________|__________|__________|__________|__________
Rsc req | | | | |
(Resp) | | | | |
_________|__________|__________|__________|__________|__________
Rsc req | | | | |
(Noresp) | | | | |
_________|__________|__________|__________|__________|__________
Rsc resp | |Rsc conf; | | |
PDU | | popst | | |
_________|__________|__________|__________|__________|__________
Acc | | |Acc conf; | |
resp | | | popst | |
_________|__________|__________|__________|__________|__________
Arel | | | | | Irel ind
ind | | | | | (10)
_________|__________|__________|__________|__________|__________
Irel | | | |Arel resp |
resp | | | | (1) |
_________|__________|__________|__________|__________|__________
Aab | Iab ind | Iab ind | Iab ind | Iab ind | Iab ind
ind | | (1) | (1) | (1) | (1)
_________|__________|__________|__________|__________|__________
Apab | Iab ind | Iab ind | Iab ind | Iab ind | Iab ind
ind | (1) | (1) | (1) | (1) | (1)
_________|__________|__________|__________|__________|__________
Iab | Aab req | Aab req | Aab req | Aab req | Aab req
req | (1) | (1) | (1) | (1) | (1)
_________|__________|__________|__________|__________|__________
4.2.4 Protocol ErrorsAny events not listed in the tables of section 4.2.3 are not valid and are considered to be protocol errors. With exceptions specified in section 4.3, incorrectly formatted APDUs or APDUs with invalid data are also considered to be protocol errors. This standard does not specify the actions to be taken upon detection of protocol errors. An application context may contain such a specification.
4.3 Rules for Extensibility
All syntactical errors in received APDUs are considered to be protocol errors except for the following case: Unknown data elements, and unknown options within the Options data element, will be ignored on received Init APDUs.
4.4 Conformance
A system claiming to implement the procedures in this standard shall comply with the requirements in sections 4.4.1, 4.4.2, and 4.4.3.
4.4.1 Static Requirements
The system shall:
The system shall exhibit external behavior consistent with having implemented:
Each implementation must provide a Protocol Implementation Conformance Statement (PICS).
(b) whether the system is capable of acting in the role of target,
(c) that the system supports versions 1 and 2 of the Z39.50-1992 protocol.
(b) accepts Resource-control APDUs and sends Resource-control-response APDUs,
(c) sends Resource-report APDUs and accepts Resource-report response APDUs,
(d) sends Trigger-resource-control APDUs,
(e) sends Delete APDUs and accepts Delete-response APDUs,
(f) sends Search and Present APDUs specifying named result sets other than "default."
(b) sends Resource-control APDUs and accepts Resource-control-response APDUs,
(c) accepts Resource-report APDUs and sends Resource-report response APDUs,
(d) accepts Trigger-resource-control APDUs,
(e) accepts Delete APDUs and sends Delete-response APDUs,
(f) accepts Search and Present APDUs specifying named result sets other than "default,"
(g) unilaterally deletes result sets.
(b) whether result sets may be specified only as the first operand in a Type-1 query, or may be specified as any operand,
(c) with which operators (AND, OR, AND-NOT) result sets may be used as operands.
(b) if the parameter Element-set-names is supported, whether database names corresponding to element set names may be specified, or only a single element set name and no corresponding database name may be specified.
(b) which encoding rules are supported;
(c) the maximum number of database names that may be specified in a Search APDU;
(d) which attribute sets are supported.