Schnittstelle Z39.50 für das System allegro |
![]() ![]() |
Links zum Thema Z39.50-Protokoll
Eine knapp gehaltene Einführung zum Z39.50-Protokoll finden Sie hier.
Weitergehende Informationen findet man auf der Seite Z39.50-Recources.
Die Linksammlung enthält sowohl Dokumentationen zum Protokoll und
Erfahrungsberichte erfolgreicher Projekte als auch Verweise auf frei
verfügbare Software.
Die "offizielle" Dokumentation liegt bei der Library of Congress in Washington.
Z39.50 ist die Nummer einer ANSI-Norm und steht für ein standardisiertes Kommunikationsprotokoll zwischen bibliothekarischen Datenbanksystemen (Server oder Target genannt) und den Zugriffsprogrammen (Client oder Origin). Z39.50 erlaubt die weltweite Suche in heterogenen Datenbanken aus der gewohnten lokalen Programmumgebung. Der Einsatz des Protokolls führt zu einer Unabhängigkeit von der Struktur der Datenbank (hierarchisch, relational, ...), der lokalen Abfragesyntax, dem eingesetzten Betriebssystem und der Hardware. Man kann sich das Z39.50-Protokoll als ein Datenbank-Esperanto vorstellen, das es jedem Client ermöglicht, mit jeder Datenbank einen Dialog zu führen.
Wie bei jeder Standardisierung gibt es natürlich Kompromisse. Die Eigenheiten und Vorzüge des lokalen Systems finden im Regelwerk nicht immer eine Entsprechung. Zum Beispiel müssen das Rechercheprogramm und das Target-System sich auf ein Austauschformat einigen. International ist USMARC zumeist das Austauschformat der Wahl. Die Qualität der übertragenen Datensätze hängt dann von der Güte der Umwandlung vom Austausch- zum Lokalformat ab, in unserem Fall also von den Importparametern. Zum Glück können diese anwendungsseitig (ohne C-Programmierung) beliebig ausgebaut werden.
Ein Client teilt dem Z39.50-Server den Kommunikationswunsch in einer Initialisierungsanfrage (Init-Request) mit:
Der Client übergibt dabei einige Initialisierungsdaten, z.B. die Zugangskennung (Name, Password), die Versionsnummer des Z39.50-Protokolls, die Größe des lokalen Ergebnisspeichers. Der Server ist frei, die Verbindung anzunehmen oder abzulehnen. Steht einer Annahme nichts entgegen sendet der Server dem Client die akzeptierten Werte im Rahmen der Init-Response zurück und teilt ihm gleichzeitig mit, welche Protokolldienste er unterstützt.
Als ersten Dienst möchte der Client nun eine Suchanfrage (Search-Request) übergeben.
Dazu spezifiziert der Client die gewünschte Datenbank oder überläßt die Auswahl dem Server (Datenbankname "default"). Den Kern der Suchanfrage bilden natürlich die gewünschten Suchstrings, verknüpft mit den boolschen Operatoren AND, OR, NOT. Jeder Begriff kann durch Attribute differenziert werden. Die für bibliothekarische Anfragen entwickelte Attributsammlung BIB1nennt 100 Kennzeichen, die den Suchbegriff erklären. Da die allegro-Datenbank normalerweise deutlich weniger Register aufweist, wird nicht jede Anfrage im gewünschten Sinn beantwortet werden können. Das ist jedoch normal: keine Datenbank bedient alle Attribute. Der Verwalter des Z39.50-Servers kann sich bei jedem nicht direkt unterstützten Attribut entscheiden, ob die Anfrage mit einer Fehlermeldung zurückgewiesen wird, oder ob die Suche auf ein verwandtes Register umgelenkt wird. Bei einer erfolgreichen Suche erhält der Client als Antwort die Zahl der gefundenen Datensätze. Der Server speichert die Ergebnismenge temporär. Auf Wunsch liefert der Server auch gleichzeitig ein paar Datensätze. Verbreiteter ist jedoch die Versendung der Sätze im Rahmen eines nachfolgenden Present-Requests.

Ein Verbindungsabbruch wird protokollkonform mit einem Close-Request eingeleitet.
Als Antwort kommt ein Close-Response zurück und der Server löscht die zu der Verbindung gehörenden temporären Dateien. Dies passiert natürlich auch, wenn die Verbindung irregulär abbricht. Der Z39.50-Server kann die Verbindung zu jeder Zeit von sich aus schließen, zum Beispiel, um das System von untätigen Clients zu befreien.
Ein Z39.50-Server hat drei Hauptaufgaben:
![]() ![]() ![]() |