Chestiuni documentaristice (inclusiv bibliologice)

Dan Matei (care își dă și el cu părerea).

Culturalia: Un portal românesc (?)

with one comment

Și România are în plan un portal de tip Europeana (adică un catalog care să ofere acces la resurse culturale digitale, fie ele texte, imagini, audiograme sau videograme), Culturalia pe numele lui (stipulat în Ordinul ministrului culturii și cultelor nr. 2467/2008, între atribuțiile agregatorului național).  Cu resurse foarte limitate, se lucrează la proiectarea acestui portal.

Pe scurt — pentru a nu intra în prea fine detalii tehnice —, modelul de date Culturalia este conform paradigmei datelor interconectate  (vezi postarea anterioară). Nu doar pentru a fi „în trend”, ci și fiindcă această paradigmă permite atât agregarea de seturi de date foarte eterogene — cerință vitală pentru cataloagele de tip Europeana — cât și coexistența datele de granularitate variabilă. De pildă, e perfect posibil (deși nu foarte dezirabil) să avem alături aserțiunile:

subiect

predicat

object

id(Naum) nume Gellu Naum
id(Naum) prenume Gellu
id(Naum) nume de familie Naum
__

Însă mixtura de predicate și obiecte de granularitate diferită este inevitabilă atunci când sursele de date sunt eterogene.

În figura 1 se schițează model conceptual, adică ierarhia claselor (frunzele arborelui — cele albastre — reprezintă tabelele esențiale ale bazei de date) de nivel înalt.

Fig. 1. Culturalia: vârful ierarhiei claselor

De remarcat că se disting trei tipuri de aserțiuni (și această distincție constituie mica diferența față de modelul canonic RDF):

  • relații – asocieri între entități (atât clase cât și instanțe de clase);
  • atribute – asocieri între entități și literali (e.g. șiruri de caractere);
  • intrări de index – asocieri între signaturi (i.e. atribute de reprezentarea a entităților, e.g. nume pentru persoane, titluri pentru cărți) și cheile lor de sortare.

Fig. 2. Culturalia: relațiile dintre componentele modelului

În figura 2 sunt evidențiate legăturile între elementele modelului de date (care se identifică cu tabelele bazei de date). De remarcat că atât o relație, cât și un atribut poate fi subiectul unei alte aserțiuni (ceea ce în terminologia RDF se cheamă „reificarea” unei aserțiuni). Din acest motiv, aserțiunile au și ele identificatori.

Paranteză:

Identificatorii din prezentul model sunt un anume tip de identificatori standard, și anume „identificatori globali unici” — GUID [Globally Unique Identifier]  — care (cvasi)asigură unicitatea la nivel global. Partea proastă e că un asemenea identificator e de ne-citit/memorat pentru oameni. Exemplu:

ac16a9e1-8a01-4c2a-90f9-8970a0f3e553

De aceea, în ilustrările următoare, identificatorul elementului x este reprezentat prin guid(x).

Închis paranteza.

De pildă, să zicem că avem aserțiunea:

identificator guid(a1)
subiect guid(Jan van Eyck )
predicat guid(născut pe)
obiect 1390

și asertăm că această aserțiune este îndoielnică:

identificator guid(a2)
subiect guid(a1)
predicat guid(este îndoielnică)
obiect true

În figura 3 se vede cum fiecare aserțiune este înscrisă într-un „jurnal”, unde se consemnează cine a făcut afirmația, când și pe ce bază. Astfel, se pot urmări corecturile succesive și — mai ales — se evidențiază responsabilitățile intelectuale asupra aserțiunilor. De remarcat că proveniența aserțiunii (inclusiv responsabilitatea intelectuală)  se indică prin trimiterea la o entitate din clasa „eveniment” de tip „asignare de atribut” („E13 Attribute Assignment” în ontologia CIDOC-CRM [Conceptual Reference Model]). Acest eveniment poate fi o entitate complexă, adică să fie asociat cu mai mulți agenți și cu mai multe surse bibliografice.

Fig. 3. Culturalia: jurnalizarea fiecărei aserțiuni

Nota bene: aserțiunile „modificate” sau „șterse” sunt doar arhivate, nu sunt modificare sau șterse cu adevărat. Cu alte cuvinte, o aserțiune „ștearsă” e doar marcată ca „arhivată”, iar o aserțiune „modificată” este de fapt o versiune nouă, cea veche fiind arhivată. Aceasta permite să se urmărească „evoluția” unei aserțiuni și — la nevoie — să se revină la o stare anterioară.

Figurile 4, 5, 7 și 8 prezintă structurile tabelelor esențiale ale bazei de date Culturalia (versiunea alfa: o implementare Access experimentală — „proof-of-concept”, cum îi zic anglofonii).

Nota bene: se presupune că interfața-utilizator va fi suficient de elaborată pentru a ascunde complexitatea rețelei de aserțiuni pe care sistemul le va acumula.

Fig. 4. Culturalia: structura tabelei „entitate”

Tabela „entity” e simplă: o intrare conține doar identificatorul și (eventual) URI-ul http [Uniform Resource Identifier]  fiecărei entități (fie ea clasă sau instanță). La limită, această tabelă ar putea lipsi, fiindcă aserțiunile nu sunt aici. Dar poate se va dovedi util ca identificatorii entităților să fie centralizați undeva.

Fig. 5. Culturalia: structura tabelei „relație”

Cum îi spune numele, tabela  „relation” (figura 5) conține instanțele de relații (i.e. aserțiunile în care obiectul e o entitate). Pe lângă identificatorii membrilor tripletelor (canonici în modelul RDF):

  • subjectGuid – identificatorul subiectului;
  • predicateGuid – identificatorul predicatului (zis și „proprietate”);
  • objectGuid – identificatorul obiectului;

o intrare mai conține:

  • modifierGuid – identificatorul (eventualului) modificator  al obiectului. Ca de pildă „ante”, calificând un obiect-perioadă sau „la sud de”, calificând un obiect-loc.
  • predicateTypeGuid – identificatorul (eventualului) tip al predicatului.  Posibilitatea de a categorisi un predicat (ceea ce constituie un substitut pentru generarea de sub-predicate), permite evitarea proliferării predicatelor. În plus, ar putea fi un mecanism convenabil în cazul preluării datelor moștenite.

Un exemplu pentru a ilustra utilitatea categorisirii predicatului: să presupunem că avem relația „derivată din” dintre „L.H.O.O.Q.” lui Duchamp și „Mona Lisa” lui Leonardo (figura 6). Ulterior, se poate categorisi predicatul „derivată din” prin relaționarea cu conceptul „parodie”.

 

derivată din

(parodie)

 

Fig. 6. <L.H.O.O.Q. / Duchamp> <derivată din> <Mona Lisa / Leonardo>

Așadar, aserțiunea inițială:

subjectGuid guid(L.H.O.O.Q.)
predicateGuid guid(derivată din)
objectGuid guid(Mona Lisa)

se poate rafina, adăugându-i-se elementul:

predicateTypeGuid guid(parodie)

Abordarea alternativă, presupune:

a)      adăugarea unui nou predicat, prin aserțiunea:

subjectGuid guid(parodiază pe)
predicateGuid guid(e sub-proprietate a)
objectGuid guid(derivată din)

b)     înlocuirea aserțiunii inițiale cu:

subjectGuid guid(L.H.O.O.Q.)
predicateGuid guid(parodiază pe)
objectGuid guid(Mona Lisa)

Fig. 7. Culturalia: structura tabelei „atribut”

După cum îi spune numele, tabela „attribute” (figura 7) conține instanțele de atribute (i.e. aserțiunile în care obiectul e un literal). Pe lângă identificatorii subiectului și predicatului aserțiunii:

  • subjectGuid – identificatorul subiectului;
  • predicateGuid – identificatorul predicatului/proprietății;

o intrare conține și cinci forme (alternative) de literal:

  • textualValue – text (până în 255 de caractere);
  • longTextualValue – text lung;
  • booleanValue – boolean;
  • dateValue – dată calendaristică;
  • numericalValue – număr;

și mai conține:

  • modifierGuid – identificatorul (eventualului) modificator  al obiectului. Ca de pildă „ante”, calificând o dată calendaristică sau „mai mic(ă) decât”, calificând o cantitate;
  • unitGuid – identificatorul (eventualei) unități de măsură;
  • languageGuid – identificatorul (eventualei) limbi a literalului;
  • predicateTypeGuid – identificatorul (eventualului) tip al predicatului, similar cu cel din tabela „relation”;
  • objectTypeGuid – identificatorul (eventualului) tip al obiectului. Similar cu cazul predicatului, permite o categorisire a obiectului, ceea ce limitează și mai mult proliferarea predicatelor;
  • datatypeGuid – identificatorul naturii literalului, i.e. al tipului de dată (e.g. număr întreg);
  • qualifierGuid – identificatorul unui (eventual) calificator (e.g. o unitate de măsură);
  • syntaxEncodingScheme – (eventuala) schemă sintactică (pentru valorile structurate).

De notat că doar identificatorul limbii și cel al naturii literalului se regăsesc în modelul canonic RDF.

Un exemplu pentru a ilustra utilitatea modificatorului obiectului:

subjectGuid guid(David al lui  Michelangelo)
predicateGuid guid(are masa)
modifierGuid guid(mai mare de)
numericalValue 6.000
unitGuid guid(kg)

Sigur că această aserțiune s-ar putea exprima mult mai simplu astfel:

subjectGuid guid(David al lui  Michelangelo)
predicateGuid guid(are masa)
textualValue peste 6.000 kg
languageGuid guid(română)

Dar această formulare nu permite procesări numerice asupra literalului. Nici nu e independentă de limbă, deci pentru a exprima același lucru în rusă, ar fi necesară încă o aserțiune:

subjectGuid guid(David al lui  Michelangelo)
predicateGuid guid(are masa)
textualValue более 6.000 кг
languageGuid guid(rusă)

Pe de altă parte, tratarea kilogramului ca o entitate distinctă ar permite (pe lângă asertarea unei definiții, de pildă), folosirea ei convenabilă în contexte lingvistice diferite. Astfel, am putea avea aserțiunile:

subjectGuid

predicateGuid

textualValue

objectTypeGuid

guid(kilogram) guid(are abrevierea) кг guid(alfabet chirilic)
guid(kilogram) guid(are abrevierea) kg guid(alfabet latin)

Un exemplu pentru a ilustra utilitatea categorisirii predicatului:

subjectGuid guid(Turnul Eiffel)
predicateGuid guid(are dimensiunea)
numericalValue 324
unitGuid guid(m)
predicateTypeGuid guid(înălțime)

Un exemplu pentru a ilustra utilitatea categorisirii obiectului:

subjectGuid guid(conceptul de poem)
predicateGuid guid(e designat prin)
textualValue poems
languageGuid guid(engleză)
objectTypeGuid guid(plural)

Un exemplu pentru a ilustra utilizarea schemei sintactice (MARCXML în acest caz):

subjectGuid guid(Capcanele istoriei/Lucian Boia, ed.1)
predicateGuid guid(titlu și mențiune de responsabilitate)
textualValue <datafield tag=”245″ ind1=”1″ ind2=”0″>
<subfield code=”a”>Capcanele istoriei : </subfield>
<subfield code=”b”>
         Elita intelectuală românească între 1930 şi 1950 /
</subfield>
<subfield code=”c”>Lucian Boia</subfield></datafield
syntaxEncodingScheme http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd
Figura 8 prezintă structura tabelei „logEntry”.

Fig. 8. Culturalia: structura tabelei „intrare de jurnal”

În esență, o intrare în această tabelă constă din (vezi și figura 3):

  • resourceGuid – identificatorul resursei (entitate sau aserțiune) jurnalizate;
  • provenanceGuid – identificatorul entității-eveniment (de tip „asignare de atribut”) care agregă informațiile despre cine și pe ce bază a operat asupra resursei;
  • timeStamp – momentul în care s-a produs intervenția asupra resursei;
  • statusChange – ce schimbare de status a produs intervenția;
  • oldVersionGuid – identificatorul resursei înlocuite (în cazul modificărilor).

În postarea următoare se va comenta modul de constituire a indexului general (implică și decizii de proiectare mai subiective), respectiv se va prezenta tabela „indexEntry”.

Corecție: postarea următoare discută jurnalizarea. Indexul se amână :-)

Anunțuri

Written by poliptic

3 Iunie 2012 la 1:06 pm

Un răspuns

Subscribe to comments with RSS.


Lasă un răspuns

Completează mai jos detaliile tale sau dă clic pe un icon pentru a te autentifica:

Logo WordPress.com

Comentezi folosind contul tău WordPress.com. Dezautentificare / Schimbă )

Poză Twitter

Comentezi folosind contul tău Twitter. Dezautentificare / Schimbă )

Fotografie Facebook

Comentezi folosind contul tău Facebook. Dezautentificare / Schimbă )

Fotografie Google+

Comentezi folosind contul tău Google+. Dezautentificare / Schimbă )

Conectare la %s

%d blogeri au apreciat asta: