Národní knihovna. Knihovnická revue - obrázek
zpět na obsah čísla - tlačítko
Rok 2001, č. 1, s. 41-44

Z39.50 A XML

Nadežda Andrejčíková
Cosmotron Bohemia s.r.o., Hodonín

V súvislosti s kooperáciou sa s týmito dvomi označeniami stretávame stále častejšie. Pripomína mi to tak trocha situáciu spred pár rokov, keď bol u nás prijatý medzinárodný štandard Unimarc, s ním súvisiace Unimarc Authority a pravidlá AACR2. V rozhovoroch knihovníkov sa neustále skloňovali tieto pojmy, i keď zo začiatku nebolo hneď všetkým jasné, čo sa za nimi skrýva. Vývojová špirála ide dopredu, mnohé knižnice úspešne prešli automatizáciou, elektronizáciou a niektoré sú už dokonca v určitom štádiu digitalizácie. A práve tu sa dostávajú na rad nové pojmy Z39.50 a XML. Čo sa za nimi skrýva? K čomu slúžia? Ako nám môžu pomôcť? Môžeme ich navzájom zamienať? Tieto a mnohé ďalšie otázky si položili mnohí z nás a názory na ne nie sú vôbec rovnaké. Skôr, ako sa pokúsim vyjadriť svoj názor na tieto otázky, je potrebné, aby sme si povedali, čo vlastne Z39.50 a XML je.

Z39.50

Mohla by som začať citáciou definície tohto protokolu priamo z normy, ale myslím, že to vôbec nie je potrebné. Definíciu i komplexný popis tohto protokolu si môže každý nájsť na stránkach LOC (Library of Congres - www.lcweb.loc.gov/Z39.50/agency). To, že Z39.50 je komunikačný protokol určený pre dorozumievanie sa informačných systémov (IS) s cieľom vyhľadávania a preberania informácií nie je potrebné zdôrazňovať. Treba však zdôrazniť, že bol pôvodne prijatý ako americký národný štandard, ktorý bol potom prijatý i medzinárodnou organizáciou pre štandardy ako ISO norma. Súčasná verzia označovaná ako verzia č. 3 bola prijatá ako norma ISO 23950. Takže ide o medzinárodný štandard, ktorý je určený pre IS ako také, v ktorých bibliografické informačné systémy tvoria len jednu časť. Tento protokol môžeme charakterizovať tromi základnými prvkami:

1.  abstraktný model pre vyhľadávanie a prenos informácií
2.  jazyk, v ktorom je presne definovaná syntax a sémantika pre vyhľadávanie a prenos informácií tak, aby umožnil komunikáciu IS
3.  predpisuje spôsob kódovania požiadaviek i odpovedí, ktoré sú potom posielané v rámci sieťovej infraštrukúry.

Znamená to teda, že komunikovať tak môžu medzi sebou IS, ktoré majú nad sebou implementovaný tento protokol. Samozrejme nič nie je také jednoduché, ako na začiatku vyzerá. Norma je veľmi všeobecná. Jej najväčšou nevýhodou, ale na druhej strane aj výhodou je to, že ide o abstraktný model, teda model, ktorý nie je pevne viazaný na žiadny systém a ani na žiadnu databázu. K tomu, aby si IS navzájom porozumeli, je potrebné implementovať tento protokol na strane servera, v norme je tento označovaný ako target, i klienta, označovaného ako origin. Klient i server medzi sebou komunikujú v tzv. Z-jazyku s pevne definovanou syntax a sémantikou. V prípade, že koncový používateľ nekomunikuje priamo cez Z-klienta, tak sa klient stará o preklad jeho požiadaviek do tohto jazyka. Takto definované PDU (Protocol Data Unit), potom kóduje na základe pravidiel označovaných ako BER a to potom posiela cez transportnú vrstvu, ktorou môže byť napríklad TCP, na vzdialený Z-server. Tento danú požiadavku dekóduje a preloží do jazyka reálnej databázy, ktorá ju vykoná a výsledok pošle späť serveru. Ten opäť tento výsledok preloží do svojho jazyka, zakóduje a pošle klientovi, kde sa deje opačný proces, tak, aby odpovedi porozumel používateľ. Graficky môžeme architektúru klient server Z39.50 vyjadriť nasledovne:

Avšak samotná implementácia tohto protokolu nezaručuje 100%-nú kompatibilitu IS. Server i klient musia mať implementované rovnaké funkcie s danými parametrami. To, ktoré funkcie sú implementované na strane klienta i servera je uvedené v tzv. profile. Najjednoduchším profilom je tzv. ATS-1 profil umožňujúci prehľadávať jednotlivé databázy podľa autora, titulu a subjectu, z čoho je odvodený aj jeho názov. Pre bibliografické IS je definovaných viacero profilov. V rámci medzinárodnej kooperácie sa doporučuje tzv. BATH profile.

XML

S jazykom XML (eXtensible Markup Language) sa v počítačovom svete stretávame stále častejšie. Môžem povedať, že oveľa viac počítačových odborníkov vie niečo o XML, ako o Z39.50. Mnohí si od tohto jazyka veľa sľubujú, i keď na druhej strane tých, ktorí skutočne vedia podstatu XML je pomerne málo. O XML sa väčšinou hovorí v súvislosti s tvorbou webovských stránok a teda aj v súvislosti s jazykom HTML. Práve s jazykom HTML býva často porovnávaný a skutočne s ním má aj veľa spoločného. Avšak na druhej strane XML na rozdiel od HTML si môže definovať vlastné značky (tagy). Na základe toho je možné označiť význam jednotlivých častí textu. Pričom HTML umožňuje len definovať vzhľad textu pri jeho zobrazení. Prvým takýmto podobným značkovacím jazykom bol GML (Generalized Markup Language), ktorý sa natoľko osvedčil, že na jeho základe vznikol SGML (Standard Generalized Markup Language), ktorý je tiež definovaný v ISO norme ISO 8879. Tento je tak obecný, že pomocou DTD (Document Type Definition) umožňuje definovať vlastné značkovacie jazyky. Preto i HTML a XML vznikli na jeho základe. XML môžeme teda definovať ako podmnožinu SGML s možnosťou definovať si vlastné DTD. Výhodou XML je to, že má oveľa presnejšie definovanú syntax, čo ho zvýhodňuje v rýchlosti a cene v ňom vyvíjaných aplikácií. XML bol vyvinutý za účelom uchovávania a spracovávania dokumentov a na to sa aj hlavne zameriava. Pomocou XML značiek môžeme v dokumente označiť, že toto je názov, toto autor atď. Teda XML dokumenty obsahujú oveľa viac informácií, ako keby sa používalo len prezentačné označovanie. Informačná bohatosť XML dokumentov sa dá využiť vo viacerých oblastiach. Snáď najväčším prínosom bude vyhľadávanie, pretože dnešné internetové prehliadače, tak ako je napr. AltaVista, podporujú len fultextové vyhľadávanie. Pričom, ak by sme použili XML a zadali slovo, ktoré chceme hľadať, a definovali pritom, že toto slovo sa má nachádzať v názve dokumentu, bude prehľadávanie oveľa presnejšie a výsledok relevantnejší našej požiadavke. Ďalšou výhodou použitia XML je jeho pomerne ľahká konverzia do iných formátov. I keď XML v sebe neobsahuje žiadne značky pre to, ako budú jednotlivé časti dokumentu zobrazené napr. na obrazovke, je to možné vďaka hneď niekoľkým tzv. štýlovým jazykom (XSL - eXtensible Stylesheet Language). Jeden XML dokument môže mať definovaných hneď niekoľko takýchto formátov.  V čom je teda sila XML a kde všade ho môžeme použiť?
Sila XML je najmä v jeho hierarchickej štruktúre a pomerne jednoduchom spôsobe kódovania. Umožňuje popisovať - označovať ľubovoľné dáta a prenášať ich medzi rôznymi aplikáciami a platformami. Hlavnou ideou XML je oddelenie obsahu a dizajnu dát. Spojovacím mostom je XSL, ktorý umožňuje vytvárať množstvo výstupných formátov.
Otázkou je, či teda môže XML nahradiť protokol Z39.50, keď aj XML umožňuje prenos dát medzi IS po sieti. Odpoveď na túto otázku nie je tak jednoduchá. Môj názor je ten, že XML môže byť úspešne využité v rámci protokolu Z39.50, ale nemyslím si, že by ho mohol v krátkej budúcnosti úplne nahradiť. V stručnosti sa pokúsim načrtnúť, ako by mohol byť XML využitý v Z39.50. Tak, ako som charakterizovala Z39.50 v úvode tohto článku v troch úrovniach, tak si myslím, že o XML môžeme hovoriť v súvislosti s druhým a tretím bodom. Teda v rámci syntaxe a kódovaní prenášaných údajov po sieti. Sémantika je daná samotným Marc formátom, v ktorom protokol Z39.50 komunikuje. Je možné aj tento nahradiť XML, ale nemalo by to asi podstatný význam, pretože by musela byť spätná konverzia na strane aplikácií. Nemyslím si však, že by XML mohol nahradiť protokol Z39.50 v oblasti PDU, ktoré sú v tomto protokole veľmi dobre definované. To by museli byť definované všetky funkcie a parametre i pre XML v rámci určitého štandardu tak, aby boli zrozumiteľné všetkým systémom, čo môže trvať niekoľko rokov, a otázkou je, v akom rozsahu by sa to uplatnilo. Otázka syntaxe a hlavne otázka kódovania údajov je však oveľa ľahšie aplikovateľná a môže znamenať určitý prínos. Tak ako som uviedla vyššie, požiadavky klienta (PDU definované v ASN - abstrakt syntax notation) sú pred transportom po sieti kódované na základe BER kódovania a tak sú pre používateľa veľmi ťažko čitateľné a zrozumiteľné. Pre ilustráciu si môžeme uviesť ako vyzerá PDU v ASN.1 pre update databáz, ktorý je definovaný v 3 verzii protokolu Z39.50.

ESFormat-Update
{Z39-50-extendedService Update (5) revisions (1)
 revision-1 (1)} DEFINITIONS ::=
  - oid is 1.2.840.10003.9.5.1.1
BEGIN
IMPORTS DiagRec, InternationalString
FROM Z39-50-APDU-1995;
Update ::= CHOICE{
   esRequest  [1] IMPLICIT SEQUENCE{
   toKeep  [1] OriginPartToKeep,
   notToKeep [2] OriginPartNotToKeep},
  taskPackage [2] IMPLICIT SEQUENCE{
             originPart       [1]
    OriginPartToKeep,
            targetPart     [2] TargetPart}}

OriginPartToKeep ::= SEQUENCE{
action    [1] IMPLICIT INTEGER{
     recordInsert    (1),
     recordReplace   (2),
     recordDelete    (3),
     elementUpdate   (4),
     specialUpdate   (5)},
databaseName [2] IMPLICIT InternationalString,
schema   [3] IMPLICIT OBJECT IDENTIFIER        OPTIONAL,
elementSetName [4] IMPLICIT InternationalString
      OPTIONAL,
actionQualifier [5] IMPLICIT EXTERNAL
      OPTIONAL}

OriginPartNotToKeep ::= SuppliedRecords

TargetPart ::= SEQUENCE{
 updateStatus  [1] IMPLICIT INTEGER{
                               success (1),
                               partial (2),
          failure (3)},
 globalDiagnostics   [2] IMPLICIT SEQUENCE OF
                              DiagRec OPTIONAL,
   - These are non-surrogate
   - diagnosticsrelating to the task,
   - not to individual records.
 taskPackageRecords  [3] IMPLICIT SEQUENCE OF
TaskPackageRecordStructure
   - There should be a
   - TaskPackageRecordStructure
   - for every record supplied.
   - The target should create
   - such a structure for every
   - record immediately upon
   - creating the task package
   - to include correlation
   - information and status.
   - The record itself would not
   - be included until processing
   - for that record is complete.
               }
- Auxiliary definitions for Update
SuppliedRecords ::= SEQUENCE OF SEQUENCE{
recordId      [1] CHOICE{
                   number  [1] IMPLICIT INTEGER,
                   string  [2] IMPLICIT  InternationalString,
                  opaque  [3] IMPLICIT OCTET STRING}
    OPTIONAL,
supplementalId [2] CHOICE{
 timeStamp [1] IMPLICIT  GeneralizedTime,
      versionNumber  [2] IMPLICIT InternationalString,
 previousVersion [3] IMPLICIT EXTERNAL}
  OPTIONAL,
correlationInfo   [3] IMPLICIT CorrelationInfo OPTIONAL,
record            [4] IMPLICIT EXTERNAL}

CorrelationInfo ::= SEQUENCE{
            - origin may supply one or both for any record:
  note [1] IMPLICIT InternationalString OPTIONAL,
  id   [2] IMPLICIT INTEGER OPTIONAL}

TaskPackageRecordStructure ::= SEQUENCE{
     recordOrSurDiag  [1] CHOICE {
                    record     [1] IMPLICIT EXTERNAL,
                      - Choose ‚record' if
                      - recordStatus is ‚success', and
                      - elementSetName was supplied.

                  surrogateDiagnostics   [2] IMPLICIT
                              SEQUENCE OF DiagRec
                         - Choose ‚SurrogateDiagnostics', if
                         - RecordStatus is failure.
                                } OPTIONAL,
                - The parameter recordOrSurDiag
                    - will thus be omitted only if
                    - ‚elementSetName' was omitted and
                    - recordStatus is ‚success'; or
                    -if record status is ‚queued'
                    - or in ‚process'.
     correlationInfo [2] IMPLICIT
                         CorrelationInfo OPTIONAL,
                    - This should be included
                    - if it was supplied by the origin.
     recordStatus    [3] IMPLICIT INTEGER{
       success   (1),
       queued    (2),
       inProcess (3),
       failure   (4)},
      supplementalDiagnostics   [4] IMPLICIT
                SEQUENCE OF DiagRec OPTIONAL}

END
 

Ak by sa toto kódovanie nahradilo kódovaním v XML na základe určitých pravidiel, boli by prenášané dáta oveľa čitateľnejšie. Tiež XSL by umožnilo rozšíriť definované formáty zobrazenia prenášaných dát, pričom by mohla byť zachovaná spätná konverzia do Marc formátu. O tom, že začlenenie XML do Z39.50 je reálne, svedčí aj to, že sa tejto problematike intenzívne venujú aj členovia ZIG-u (skupina implementátorov protokolu Z39.50). Na jednom z ich stretnutí v roku 2000 Ray Denenberg diskutoval k hlavným cieľom XML protokolu. Jeho prednášku môžete nájsť na stránke: http://lcweb.loc.gov/z3950/agency/zig/meetings/dc2000/presentations/xp.ppt.
Ak by sme teda chceli znázorniť začlenenie XML do Z39.50, budeme hovoriť o ZX-klientovi a ZX-serveri. Aby bola zabezpečená komunikácia aj medzi klasickými Z-klientami a ZX-serverom, ako aj komunikácia medzi ZX-klientom a Z-serverom, je potrebné definovať bránu, ktorú môžeme označiť ako ZX-gateway, alebo XZ-gateway. Výhodou začlenenia XML do protokolu Z39.50 je možnosť využitia rôznych transportných vrstiev, ale tiež pre užívateľa oveľa jednoduchšie a čitateľnejšie XER kódovanie, ktoré by nahradilo BER kódovanie. Toto môžeme znázorniť nasledujúcou schémou.
Čo povedať na záver? XML je určite veľmi silný a dôležitý nástroj. Avšak ako všetko nové, tak aj XML potrebuje svoj čas na to, aby si našlo svoje miesto v IT/IS. Verím tomu, že v kombinácii so Z39.50 to bude silný nástroj, ktorý ešte viac zblíži jednotlivé IS a umožní im vzájomné zdieľanie ich dát.

zpět na obsah čísla - tlačítko