HTML

View Péter Király's profile on LinkedIn

20 éves a MEK, 10 éves az EPA Én is
MEK önkéntes
vagyok

20 éves a MEK
10 éves az EPA

kirunews

Király Péter, keresés, Lucene, Solr, Java, Perl, PHP, OAI-PMH, webfejlesztés, digitális könyvtár, MARC, FRBR, RDA, Drupal, EAD, EAC, Europeana, eXtensibleCatalog.org, MEK, és sok minden más.

Friss topikok

Linkblog

MEK referensz-link feloldó

2010.12.16. 12:44 kirunews

Hosszú-hosszú vajúdás után most került végre pont egy régi ügyre.

Káldos János, aki ma már az Országos Széchényi Könyvtár különgyűjteményeinek (Kézirattár, Térképtár, Régi Könyvek Tára stb.) igazgatója, kb. 7-8 évvel ezelőtt, de lehet, hogy van az már tíz is, felvázolt egy fájlelnevezési nómenklatúrát, az úgynevezett Káldos-féle nevezéktant, ami meghatározta, hogy a régi könyves anyag digitális másolatainak milyen könyvtárstruktúrát és fájlneveket kell adni. A lényege ennek a nevezéktannak az volt, hogy a fájlnevek követik a magyar könyvtári rendszer logikáját, vagyis nem mesterséges sorszámokkal dolgozik, hanem a könyvek valós könyvtári jelzeteit veszik alapul. Ez azért jó, mert egy fájlra ránézve rögtön látszik, hogy annak mit kell tartalmaznia, ráadásul tudományos publikációkban egyszerűen lehet hivatkozni magukra az állományokra. János sajnos - mint a legtöbb könyvtáros - a kelleténél szerényebb ember és tudomásom szerint sohasem publikálta a vázlatát

Az OSzK-ban annak idején el is indult egy digitalizálási munka, de egészen pontosan nem tudom miért, ez a munka nem lett nyilvános. (Egy kis kitérő. Ha jól sejtem itt is közrejátszik az a félelem, hogy ha nyilvános és ingyenes a dokumentum, akkor a könyvtár elesik bizonyos bevételektől, aminek a beszedését a fenntartó - véleményem szerint káros módon - előírja. Káros, mivel a könyvtár (múzeum, levéltár stb.) nem az által hajt hasznot, hogy a szolgáltatásaiért pénzt szed be (ezek a pénzek a fenntartási költség nevetséges hányadát képezik), hanem azáltal, hogy a tudást, műveltséget, vagy akár gyakorlati információkat terjeszti. Minél kevesebb gát és akadály van az információforrások és a felhasználók között, annál hatékonyabb az információáramlás, és így a közművelődési intézmények tevékenysége. Ha korlátozzuk a hozzáférést, akkor a könyvtár hatékonyságát, az információterjedést korlátozzuk.)

Egy ideje részt veszek az egyik legrégibb magyar bölcsészinformatikai projekt, az RPHA munkálataiban. Az RPHA a XVI. századi magyar versek repertóriuma, és Horváth Iván indította el még a 70-es években. Az RPHA sokat módosult az idők során, volt "nagygépes", DOS-os ISIS-es, és mindenféle változata. Régi igény volt, hogy a benne szereplő verseket össze kellene kötni ezek digitális facsimiléivel. Mivel az OSzK-ban ezek nem voltak nyilvánosak, bekerült némi időbe, míg el tudtunk indítani egy kisérleti adást. A Huszár Gál-féle Énekeskönyv (RMNy 353) lett a kiválasztott mű, mivel ez közel 250 XVI. századi verset tartalmaz. A kötet felkerült a MEK-be (http://mek.oszk.hu/08800/08838/). Csakhogy a MEK-nek, mint látható már van egy kiszabott struktúrája, a kanonikus MEK URL-ek pedig nem felelnek meg a Káldos-féle nevezéktannak. Szerencsére az Apache webszerver (más webszerverek is) rendelkeznek egy URL átíró képességgel, ami lehetővé teszi, hogy logikai URL-eket rendeljünk hozzá a fizikai állományokhoz, vagyis egy fizikai állományt többfajta címzéssel is el tudjunk érni. Ehhez esetünkben a következő sorokat kellett beilleszteni az Apache egyik konfigurációs állományába:

<IfModule mod_rewrite.c>
  RewriteEngine on

  # Rewrite URLs of the form 'rmny/x' to the form
  # 'reference_redirector.php?q=rmny/x'.
  # It is case insensitive
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^((rmny|rmk)/.*)$ reference_redirector.php?q=$1 [NC,QSA]
</IfModule>

Ez az RMK/akármi URLeket átfordítja reference_redirector.php?q=akármi formába. A szrikpt feldolgozza a bejövő adatokat és ha van megfelelő oldal, vagy könyv egy HTTP fejlécben elhelyezett Location paranccsal átdobja a böngészőt a megfelelő helyre. Ha nincs ilyen, akkor a MEK címoldalára visz. A dolog lényege, hogy a linkek feloldását egy helyen kell karbantartani, a MEK oldalán és azt minden tudományos vagy ismeretterjesztő projekt használhatja. Nekik csak azt kell megjegyezniük, hogy hogyan is kell a linkeket megalkotniuk. Íme tehát egy rövid bevezető.

Hogyan alakítsunk ki referensz-linkeket a MEK állományokra?

A linkfeloldó jelenleg két sémát kezel, az RMNy és RMK referensz számokat, de még idén ez ki fog bővülni az ISBN számokra és az EPA (http://epa.oszk.hu) esetén az ISSN-ekre is.

RMK séma:
RMK/<az RMK kötetszám arab vagy római számmal>/<az RMK-szám>/<a referált kötet>(opcionális)/<oldalszám>

RMNy séma:
RMNY/<az RMNy-szám>/<a referált kötet>(opcionális)/<oldalszám>

ISBN séma:
IBN/<ISBN szám>

A séma neve nem kisbetű-nagybetű érzékeny, bármit lehet használni. Az oldalszámok esetén lehet A, B, R, V betűkkel jelezni a recto-verzo oldalpárokat. A számokat fel lehet tölteni 0-val (néhány adatbázisban ezt alkalmazzák), például 0003, de lehet feltöltés nélkül is alkalmazni.

Példák:

http://mek.oszk.hu/rmny/353 (nem adtunk meg oldalszámot, így a kötetre ugrik)
http://mek.oszk.hu/rmny/353/1/3
http://mek.oszk.hu/RMNy/0353/1/0003A
http://mek.oszk.hu/RMNY/0353/1/0003r
http://mek.oszk.hu/RMK/1/0332/1/0003A
http://mek.oszk.hu/rmk/I/0332/1/0003A
http://mek.oszk.hu/ISBN/9637593403
http://mek.oszk.hu/isbn/963034792X

Mint a bejegyzés elején említettem jelen pillanatban ez az egy kötet töltötte be a próbababa szerepét, de hamarosan elkészül a feloldás a MEK-ben tárolt többi RMK-jellegű kötetre is. Sajnos a legtöbb PDF formában van tárolva, és nincs oldalszám összevetésük, tehát ezek esetében a kötetre fog a böngésző ugrani és nem a pontos oldalra. Ám ha bárki késztetést érez magában, hogy oldalszámokat oldjon fel fizikai képfájlokra, vagy PDF oldalszámokra, kérem, hogy küldjön nekem egy egyszerű szövegállományt a következő formában:

<kötetszám>/<oldalszám>;<MEK-oldalszám>például:
1/0005A;014
1/0014B;024
Ebben az esetben a kötetszámot arab számmal, a recto-verzo jelölést pedig A, B betűkkel kell megadni.

Problémák

Meglehet, hogy vannak olyan esetek, amikor a korabeli nyomdák a lapszámozásokat tökéletesen végezték, a Huszár Gál-féle énekeskönyv esetében erről nincs szó. Találhatók benne újrakezdett sorszámok (van olyan oldalszám, ami háromszor is felbukkan), és felcserélt ívek (ezeket betudhatjuk a könyvkötőt megzavaró történelmi viharoknak is, ne szegény nyomdászt szídjuk érte), ezért nem lehet egyszerű képlettel előállítani a könyvoldal-fájlnév megfeleltetést. Arra, hogy a többször előforduló oldalakat hogy lehetne megkülönböztetni az URL-ben egyelőre nincs ötletem, ha valakinek van, azt örömmel veszem.

6 komment

A bejegyzés trackback címe:

https://kirunews.blog.hu/api/trackback/id/tr142519453

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

R4bbit 2011.05.30. 16:53:36

Hogyan lehet ugyanezt megoldani egy drupalos oldalon? Mert a drupal alapból redirectet használ (már amennyiben be van kapcsolva a Path modul, és engedélyezve a rövid webcímek használata).

kirunews 2011.05.31. 09:37:01

@R4bbit: bocs, nem nagyon értem a kérdést. Amiről írtam az a MEK adatbázisához kötött szolgáltatás, ami más gépen természetszerűleg nincs meg. Ha van egy Drupalos szervered és annak adataihoz szeretnél hasonlót csinálni, akkor ahhoz az adatbázishoz kell passzoljon az URL felépítése. A Drupalban egyébként ezt viszonylag egyszerű megcsinálni. A Views modul lehetőséget ad rá, hogy egy lekérdezést URL-hez rendelj, a paraméterek értelmezését pedig a view definíciójában add meg. Mivel én elsősorban modulfejlesztő vagyok, a Views használata helyett modulokat szoktam írni. Ebben az esetben a hook_menu()-ben kell megadni efféle tételeket:

<code>rmny/%</code>
vagy
<code>rmny/%rmny</code>

a második esetben definiálnod kell egy <code>rmny_load($id)</code> függvényt, ami betölti a rekordod tulajdonságait. A hook_menu()-s tételek egyik tulajdonság-párja a 'page callback' és a 'page arguments'. Az elsőben az átdobást megvalósító függvény nevét kell megadni, a másodikban a hozzá tartozó paraméterek tömbjét (mivel itt az URL második eleme a fő paraméter, és az első elemet 0.-nak veszünk, ennek az értéke <code>'page arguments' => array(1)</code> lesz. A függvényen belül <a href="http://api.drupal.org/api/drupal/includes--common.inc/function/drupal_goto/6">drupal_goto()</a> függvényt érdemes az átirányításra használni, de ha ez nem lenne jó, akkor a <code>header()</code> PHP függvényt (egyébként a drupal_goto() egy burkoló a header() köré).

Remélem valami ilyesmire gondolt.

R4bbit 2011.05.31. 09:54:07

@kirunews: A drupal htaccessében eleve van ilyen:
<code>
# Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</code>
Emellé nem tudom berakni a saját redirectemet. Egyébként a views modulra nem is gondoltam. De talán mégis egyszerűbb lenne, ha a szerver irányítaná át.

R4bbit 2011.06.01. 14:01:36

Ej, most nézem, hogy redirectet meg átirányítást írok, de rewrite-ra gondoltam.

kirunews 2011.06.01. 23:17:00

Rewrite nem kell a Drupalba, menüvel illik megoldani.

kirunews 2011.06.01. 23:17:39

Mármint hogy a .htaccess-ben definiáltakon kívül nem kell más rewrite
süti beállítások módosítása