Child pages
  • Nelli ja SRU
Skip to end of metadata
Go to start of metadata

Nelli ja SRU-hakurajapinta

Johdanto

Suosittelemme SRU-protokollan toteuttamista uusien tietokantojen saamiseksi mukaan Nelli-hakuun. Kun tietokanta tukee SRU:ta, voidaan sitä käyttää tarvittaessa muuallakin kuin Nellissä. Tässä kuvataan Nellin edellytykset SRU-toteutuksen suhteen. Varsinainen protokollan dokumentaatio, johon suosittelemme tutustumaan, löytyy Kongressin kirjaston SRU-sivuilta.

SRU:n lisäksi Nellissä voidaan käyttää Z39.50-protokollaa, erilaisia XML-rajapintoja tai yksittäistä aineistoa varten toteutettua rajapintaa. Lisäksi on mahdollista haravoida materiaali Nellin omaan tietokantaan OAI-PMH -protokollalla. Lisätietoja eri mahdollisuuksista saa Nelli-toimistosta (nelli-toimisto at helsinki piste fi).

SRU on nykyaikainen protokolla, jonka toteuttaminen on huomattavasti helpompaa kuin esim. perinteisen Z39.50-protokollan. Tässä esimerkki SRU-hausta HELKA-tietokannasta:

http://linnea1.linneanet.fi:7590/voyager?version=1.1&operation=searchRetrieve&startRecord=1&maximumRecords=10&recordSchema=marcxml&query=%22kissa%22+and+%22koira%22

SRU-kyselyn parametrit

Alla on kuvattu lyhyesti Nellin kannalta olennaiset SRU-protokollan parametrit.

Kaikille toiminnoille yhteiset parametrit:

Parametri

Pakollisuus

Käyttö

Esimerkki sisällöstä

version

pakollinen

Käytettävä SRU-protokollan versio. Nellissä on käytössä versio 1.1

1.1

operation

pakollinen

Suoritettava toiminta. Nelli tarvitsee vain searchRetrieve-toimintoa, mutta voi hyödyntää myös explain-toimintoa, jonka toteuttaminen on välttämätöntä, jos halutaan tehdä toteutuksesta standardinmukainen

explain

searchRetrieve-toiminnon parametrit:

Parametri

Pakollisuus

Käyttö

Esimerkki sisällöstä

startRecord

optionaalinen (oletus=1)

Kertoo, mistä kohdasta hakutulosta tietueet halutaan. Ensimmäinen tietue on numeroltaan 1.

11

maximumRecords

optionaalinen (oletus palvelinkohtainen)

Kertoo, kuinka monta tietuetta korkeintaan halutaan.

30

recordSchema

optionaalinen (oletus palvelinkohtainen)

Kertoo, missä muodossa tietueet halutaan. Nelli osaa ottaa vastaan tietueita marcxml ja Dublin Core -muodoissa (lisäksi ns. qualified DC)

marcxml

query

pakollinen

Varsinainen hakukysely CQL-hakukielellä

"koira" and "kissa"

Hakuehdot

SRU:ssa käytetään CQL-kyselykieltä. Nellissä on käytössä oletuksena sanahaku ja se käyttä vain osaa CQL-kielen ominaisuuksista. Jos käyttäjä kirjoittaa hakukenttään useita hakusanoja, tehdään haku kaikilla sanoilla niin, että niiden väliin lisätään and-operaattori. Haku tehdään fraasina vain, jos hakusanat on kirjoitettu lainausmerkkien sisään. Esimerkkejä:

Haku Nellissä

CQL-kysely

kissa

"kissa"

kissa koira

"kissa" and "koira"

"harry potter"

"harry potter"

me and you

"me" and "and" and "you"

Tarkennetussa haussa on käytettävissä kaksi hakukenttää ja niiden boolen-operaattori "JA", "TAI" tai "EI". Esimerkkejä:

1. hakuehto

Operaattori

2. hakuehto

CQL-kysely

harry potter

JA

rowling

"harry" and "potter" and "rowling"

"harry potter"

JA

rowling

"harry potter" and "rowling"

"harry potter"

TAI

"barry trotter"

"harry potter" or "barry trotter"

"harry potter"

EI

"barry trotter"

"harry potter" not "barry trotter"

Hakuehtojen katkaisu tapahtuu tähtimerkillä. Esimerkkejä (Nellissä katkaisumerkkinä toimii kysymysmerkki):

Haku Nellissä

CQL-kysely

kissa?

"kissa*"

kissa koira*

"kissa" and "koira*"

Kaikkien kenttien (kuten yllä) lisäksi haku voidaan kohdistaa myös aiheeseen, nimekkeeseen, tekijään, ISSN-tunnukseen, ISBN-tunnukseen tai vuoteen. Oletuksena hakuindeksit mapataan Nellissä seuraavasti:

Haun kohde

Indeksi CQL-kyselyssä

Kaikki kentät

(ei määritelty)

Aihe

dc.subject

Nimeke

dc.title

Tekijä

dc.creator

ISSN

dc.identifier

ISBN

dc.identifier

Vuosi

dc.date

Esimerkkejä hauista:

1. hakuehto

Operaattori

2. hakuehto

CQL-kysely

nimeke=harry potter

JA

tekijä=rowling

dc.author="harry" and dc.author="potter" and dc.creator="rowling"

nimeke="harry potter"

JA

kaikki kentät=rowling

dc.title="harry potter" and "rowling"

Mappauksia voidaan muokata aineistokohtaisesti, tai ne voidaan määritellä automaattisesti explain-kyselyn antamien tietojen perusteella.

Tietuemuodot

Ilmaisuvoimansa takia suositeltava tietuemuoto on MARCXML. Riippuu kuitenkin aineistosta, miten helppoa sisällön esittäminen MARCXML-muodossa on. MARCXML sisältää MARC 21 -formaatin mukaiset kentät. Suomenkielisestä MARC 21 -oppaasta (bibliografiset tiedot) löytyvät tarkemmat tiedot kenttien sisällöstä. Esimerkkitietue:

<record xmlns="http://www.loc.gov/MARC21/slim">
  <leader>01233nam a22003374i 4500</leader>

  <controlfield tag="001">1867370</controlfield>
  <controlfield tag="005">20060105133856.0</controlfield>
  <controlfield tag="008">040802s2004    fi                  fin  </controlfield>
  <datafield tag="015" ind1=" " ind2=" ">
    <subfield code="a">fx764653</subfield>
    <subfield code="2">skl</subfield>

  </datafield>
  <datafield tag="020" ind1=" " ind2=" ">
    <subfield code="a">951-692-570-7 (nid.)</subfield>
  </datafield>
  <datafield tag="024" ind1="3" ind2=" ">
    <subfield code="a">9789516925700</subfield>
  </datafield>
  <datafield tag="245" ind1="1" ind2="0">

    <subfield code="a">Fantasian monet maailmat /</subfield>
    <subfield code="c">toim. Kristian Blomberg, Irma Hirsja&#x308;rvi, Urpo Kovala.</subfield>
  </datafield>
  <datafield tag="260" ind1=" " ind2=" ">
    <subfield code="a">Helsinki :</subfield>
    <subfield code="b">BTJ Kirjastopalvelu,</subfield>

    <subfield code="c">2004.</subfield>
  </datafield>
  <datafield tag="300" ind1=" " ind2=" ">
    <subfield code="a">268 s. :</subfield>
    <subfield code="b">kuv. ;</subfield>
    <subfield code="c">21 cm.</subfield>
  </datafield>

  <datafield tag="600" ind1="1" ind2="4">
    <subfield code="a">Tolkien, John Ronald Reuel.</subfield>
    <subfield code="t">Taru sormusten herrasta</subfield>
  </datafield>
  <datafield tag="600" ind1="1" ind2="4">
    <subfield code="a">Rowling, J. K..</subfield>
    <subfield code="t">Harry Potter -kirjat</subfield>

  </datafield>
  <datafield tag="600" ind1="1" ind2="4">
    <subfield code="a">Delany, Samuel R.</subfield>
  </datafield>
  <datafield tag="650" ind1=" " ind2="7">
    <subfield code="a">myytit</subfield>
    <subfield code="x">kansantarinat</subfield>

    <subfield code="x">fantasia.</subfield>
    <subfield code="2">ysa</subfield>
  </datafield>
  <datafield tag="650" ind1=" " ind2="7">
    <subfield code="a">novellit</subfield>
    <subfield code="x">kerronta.</subfield>
    <subfield code="2">ysa</subfield>

  </datafield>
  <datafield tag="650" ind1=" " ind2="7">
    <subfield code="a">saturomaanit.</subfield>
    <subfield code="2">ysa</subfield>
  </datafield>
  <datafield tag="650" ind1=" " ind2="7">
    <subfield code="a">tieteiskirjallisuus.</subfield>

    <subfield code="2">ysa</subfield>
  </datafield>
  <datafield tag="650" ind1=" " ind2="7">
    <subfield code="a">sadut.</subfield>
    <subfield code="2">ysa</subfield>
  </datafield>
  <datafield tag="650" ind1=" " ind2="7">

    <subfield code="a">keijut.</subfield>
    <subfield code="2">ysa</subfield>
  </datafield>
  <datafield tag="650" ind1=" " ind2="7">
    <subfield code="a">kirjallisuudentutkimus</subfield>
    <subfield code="x">lastenkirjallisuus</subfield>
    <subfield code="x">nuortenkirjallisuus.</subfield>

    <subfield code="2">ysa</subfield>
  </datafield>
  <datafield tag="650" ind1=" " ind2="7">
    <subfield code="a">kirjallisuudenhistoria.</subfield>
    <subfield code="2">ysa</subfield>
  </datafield>
  <datafield tag="650" ind1=" " ind2="7">

    <subfield code="a">fantasiakirjallisuus</subfield>
    <subfield code="x">aiheet</subfield>
    <subfield code="x">mytologia.</subfield>
    <subfield code="2">kitu</subfield>
  </datafield>
  <datafield tag="650" ind1=" " ind2="7">
    <subfield code="a">kaunokirjallisuus</subfield>

    <subfield code="x">genret</subfield>
    <subfield code="x">fantasiakirjallisuus.</subfield>
    <subfield code="2">kitu</subfield>
  </datafield>
  <datafield tag="650" ind1=" " ind2="7">
    <subfield code="a">lastenkirjallisuus</subfield>
    <subfield code="x">fantasiakirjallisuus.</subfield>

    <subfield code="2">kitu</subfield>
  </datafield>
  <datafield tag="700" ind1="1" ind2=" ">
    <subfield code="a">Blomberg, Kristian</subfield>
  </datafield>
  <datafield tag="700" ind1="1" ind2=" ">
    <subfield code="a">Hirsja&#x308;rvi, Irma</subfield>

  </datafield>
  <datafield tag="700" ind1="1" ind2=" ">
    <subfield code="a">Kovala, Urpo</subfield>
  </datafield>
</record>

Vaihtoehtona on Dublin Core, jonka muodostaminen on helpompaa, mutta tietosisältö rajoittuneempi. Esimerkkitietue:

<dc xmlns="info:srw/schema/1/dc-schema">
  <title>Fantasian monet maailmat</title>
  <creator>Blomberg, Kristian</creator>
  <creator>Hirsja&#x308;rvi, Irma</creator>
  <creator>Kovala, Urpo</creator>
  <type>text</type>
  <publisher>Helsinki : BTJ Kirjastopalvelu</publisher>
  <date>2004</date>
  <language>fin</language>
  <subject>Tolkien, John Ronald Reuel</subject>
  <subject>Rowling, J. K.</subject>
  <subject>Delany, Samuel R.</subject>
  <subject>myytit</subject>
  <subject>novellit</subject>
  <subject>saturomaanit</subject>
  <subject>tieteiskirjallisuus</subject>
  <subject>sadut</subject>
  <subject>keijut</subject>
  <subject>kirjallisuudentutkimus</subject>
  <subject>kirjallisuudenhistoria</subject>
  <subject>fantasiakirjallisuus</subject>
  <subject>kaunokirjallisuus</subject>
  <subject>lastenkirjallisuus</subject>
  <identifier>1867370</identifier>
  <identifier>URN:ISBN:951-692-570-7 (nid.)</identifier>
</dc>

Linkitys

Jotta käyttäjä voisi päästä tarvittaessa Nellistä aineiston omaan käyttöliittymään eli natiiviliittymään, pitäisi tietueissa olla joko valmiit linkit tai yksilöivät tunnisteet, joiden perusteella Nelli voi luoda linkit. Linkkien tai tunnisteiden muodolle ei ole erityisiä rajoituksia. MARCXML-muotoisissa tietueissa käytetään tyypillisesti 001-kenttää tietueen identifikaationumeron tallentamiseen. Dublin Core -muodossa identifikaationumero löytyy tyypillinen identifier-kentästä.

Autentikointi ja tilastointi

Tarvittaessa haun autentikointiin voidaan käyttää HTTP-autentikaatiota tai erikseen sovittua metodia. Hakujen tilastointia helpottavat organisaatiokohtaiset tunnukset tai hakuosoitteet. Koska Nellissä kaikki haut tulevat samasta IP-osoitteesta organisaatiosta riippumatta, ei IP-osoitetta voida käyttää tilastoinnissa organisaation tunnistamiseen.