| The z39.50 protocol is a Basic Encoding Rules (BER) encoded protocol defined in Abstract Syntax Notation One (ASN.1) terms which allows a source system (origin) to conduct a request-response conversation (operation) with a remote system (target). The protocol defines a number of messages for connecting and authenticating (init), performing search (search) and sort (sort) operations, requesting result records (present) and deleting result sets (delete), and finally the close operation (close) to terminate an association. Some protocol services can be reused in different ways, for example discovering information about the remote system (explain) uses the search service and a special collection name. A number of additional control messages including browse, access control, resource control, and a general extended service mechanism. The protocol is considered to be ‘stateful’ in the sense that server side objects such as result sets persist (notionally at least) between user requests and for the duration of the session (association). The protocol itself is extensible in terms of support for alternate query formats, although the Reverse Polish Notation (RPN) Tree is the most commonly supported and widely deployed. RPN Trees are capable of describing arbitrarily complex queries in a context free way. These queries are then interpreted by target systems to map on to whatever storage engine is used in the implementation. Common implementations are b-tree inverted index based systems and relational database hosted systems. |