Diferență între revizuiri ale paginii „Protocol de exportare a datelor”

Sari la navigare Sari la căutare
fără descrierea modificării
(Pagină nouă: = Sincronizarea aplicațiilor-client = Dacă doriți să scrieți o aplicație care să transfere baza de date și să o folosească off-line, comunicați cu scriptul http://dexon...)
 
Linia 5: Linia 5:
== Generalități ==
== Generalități ==


* Copierea, folosirea și redistribuirea definițiilor din ''DEX online'' sunt permise sub [http://dexonline.ro/informatii#licenta Licența Publică Generală GNU].
* Copierea, folosirea și redistribuirea definițiilor din ''DEX online'' sunt permise sub [http://dexonline.ro/informatii#licenta Licența Publică Generală GNU].
* Puteți citi detalii despre [http://wiki.dexonline.ro/wiki/Ghidul_voluntarului formatarea definițiilor].
* Puteți citi detalii despre [http://wiki.dexonline.ro/wiki/Ghidul_voluntarului formatarea definițiilor].
* Acest protocol înlocuiește versiunile anterioare (update3.php și update.php), care au fost retrase din folosință pe 4 aprilie 2012. Motivul este că protocoalele anterioare calculau un set de date particularizat pentru fiecare client, ceea ce încărca serverul. Noul protocol precalculează datele rezonabil de des (de obicei săptămânal).
* Acest protocol înlocuiește versiunile anterioare (update3.php și update.php), care au fost retrase din folosință pe 4 aprilie 2012. Motivul este că protocoalele anterioare calculau un set de date particularizat pentru fiecare client, ceea ce încărca serverul. Noul protocol precalculează datele rezonabil de des (de obicei săptămânal).


== Date exportate ==
== Date exportate ==
Linia 15: Linia 15:
''DEX online'' își preia definițiile din diferite surse, care de obicei se referă la un dicționar tipărit, identificat prin titlu, autor, editură și an de apariție. Lista de surse este întotdeauna exportată complet. Ea se modifică rar și vă recomandăm să o descărcați numai dacă observați că ați primit definiții care folosesc surse necunoscute.
''DEX online'' își preia definițiile din diferite surse, care de obicei se referă la un dicționar tipărit, identificat prin titlu, autor, editură și an de apariție. Lista de surse este întotdeauna exportată complet. Ea se modifică rar și vă recomandăm să o descărcați numai dacă observați că ați primit definiții care folosesc surse necunoscute.


{{{
<syntaxhighlight lang="xml">
#!xml
<Sources>
<Sources>
   <Source id="1">
   <Source id="1">
Linia 27: Linia 26:
   ...
   ...
</Sources>
</Sources>
}}}
</syntaxhighlight>


=== Flexiuni ===
=== Flexiuni ===


Această categorie exportă tipurile distincte de flexiuni folosite de ''DEX online'', care reprezintă un subset al flexiunilor limbii române. Și această categorie este exportată complet, întrucât se modifică foarte rar (vă recomandăm să o transferați numai atunci când, la sincronizarea lexemelor, întâlniți o valoare nouă pentru parametrul `InflectionId`).
Această categorie exportă tipurile distincte de flexiuni folosite de ''DEX online'', care reprezintă un subset al flexiunilor limbii române. Și această categorie este exportată complet, întrucât se modifică foarte rar (vă recomandăm să o transferați numai atunci când, la sincronizarea lexemelor, întâlniți o valoare nouă pentru parametrul <tt>InflectionId</tt>).


{{{
<syntaxhighlight lang="xml">
#!xml
<Inflections>
<Inflections>
   <Inflection id="1">
   <Inflection id="1">
Linia 45: Linia 43:
   ...
   ...
</Inflections>
</Inflections>
}}}
</syntaxhighlight>


=== Lexeme ===
=== Lexeme ===
Linia 51: Linia 49:
"Lexemul" este un termen lingvistic pentru cuvânt. Un lexem este caracterizat printr-un identificator numeric unic, un nume, o descriere opțională (folosită pentru diferențierea omonimelor) și o listă de forme flexionare.
"Lexemul" este un termen lingvistic pentru cuvânt. Un lexem este caracterizat printr-un identificator numeric unic, un nume, o descriere opțională (folosită pentru diferențierea omonimelor) și o listă de forme flexionare.


{{{
<syntaxhighlight lang="xml">
#!xml
<Lexems>
<Lexems>
   <Lexem id="57483">
   <Lexem id="57483">
Linia 104: Linia 101:
   ...
   ...
</Lexems>
</Lexems>
}}}
</syntaxhighlight>


Precizări:
Precizări:


* Scriptul nu trimite informații despre ștergerea unui lexem. Când un lexem este șters în ''DEX online'', el este în mod automat disociat de toate definițiile cu care era asociat. Clientul dumneavoastră va primi noua tabelă de asocieri lexeme-definiții și va face și el disocierea. Nu este o problemă dacă clientul păstrează lexemul pe termen nelimitat, deoarece el nu mai este folosit, iar ștergerea unui lexem este o operație rară.
* Scriptul nu trimite informații despre ștergerea unui lexem. Când un lexem este șters în ''DEX online'', el este în mod automat disociat de toate definițiile cu care era asociat. Clientul dumneavoastră va primi noua tabelă de asocieri lexeme-definiții și va face și el disocierea. Nu este o problemă dacă clientul păstrează lexemul pe termen nelimitat, deoarece el nu mai este folosit, iar ștergerea unui lexem este o operație rară.
* Dacă cel puțin una din formele flexionare se modifică, întreg lexemul va fi resincronizat.
* Dacă cel puțin una din formele flexionare se modifică, întreg lexemul va fi resincronizat.
* Lexemul are întotdeauna cel puțin o formă flexionară. Echipa ''DEX online'' nu a terminat încă de etichetat toate lexemele și deci paradigmele unor lexeme sunt încă necunoscute. Totuși, chiar și acele lexeme au o singură formă flexionară identică cu forma lexemului.
* Lexemul are întotdeauna cel puțin o formă flexionară. Echipa ''DEX online'' nu a terminat încă de etichetat toate lexemele și deci paradigmele unor lexeme sunt încă necunoscute. Totuși, chiar și acele lexeme au o singură formă flexionară identică cu forma lexemului.
* Nu vă recomandăm să folosiți numele lexemului (cel din câmpul form) pentru căutări. Folosiți formele flexionare pentru aceasta. De cele mai multe ori, numele lexemului coincide cu prima dintre formele flexionare, iar când nu este așa, există un motiv.
* Nu vă recomandăm să folosiți numele lexemului (cel din câmpul form) pentru căutări. Folosiți formele flexionare pentru aceasta. De cele mai multe ori, numele lexemului coincide cu prima dintre formele flexionare, iar când nu este așa, există un motiv.


=== Definiții ===
=== Definiții ===


{{{
<syntaxhighlight lang="xml">
#!xml
<Definitions>
<Definitions>
   <Definition id="9432">                                        ;; Exemplu de definiție adăugată sau modificată
   <Definition id="9432">                                        ;; Exemplu de definiție adăugată sau modificată
Linia 131: Linia 127:
   </Definition>
   </Definition>
</Definitions>
</Definitions>
}}}
</syntaxhighlight>


Precizări:
Precizări:


* Este posibil ca, în cazul unei definiții șterse, să vă fie transmis un ID pe care clientul dumneavoastră să nu îl aibă în baza de date. Acest lucru se întâmplă când o definiție este ștearsă pe site fără să fi fost vreodată activă (inițial toate definițiile trimise pentru ''DEX online'' intră în starea temporară până când sunt moderate). În această situație, ignorați pur și simplu înregistrarea.
* Este posibil ca, în cazul unei definiții șterse, să vă fie transmis un ID pe care clientul dumneavoastră să nu îl aibă în baza de date. Acest lucru se întâmplă când o definiție este ștearsă pe site fără să fi fost vreodată activă (inițial toate definițiile trimise pentru ''DEX online'' intră în starea temporară până când sunt moderate). În această situație, ignorați pur și simplu înregistrarea.
* ''DEX online'' indică abrevierile între două semne ''#''. De exemplu, ''#expr.#'' înseamnă ''expresie''. Vedeți și secțiunea despre abrevieri.
* ''DEX online'' indică abrevierile între două semne ''#''. De exemplu, ''#expr.#'' înseamnă ''expresie''. Vedeți și secțiunea despre abrevieri.


=== Asocieri lexeme-definiții ===
=== Asocieri lexeme-definiții ===
Linia 142: Linia 138:
Această categorie exportă asocierile între lexeme și definiții, care sunt de tipul ''many-to-many'' (un cuvânt căutat poate produce mai multe definiții, iar o definiție poate fi afișată la căutarea mai multor cuvinte).
Această categorie exportă asocierile între lexeme și definiții, care sunt de tipul ''many-to-many'' (un cuvânt căutat poate produce mai multe definiții, iar o definiție poate fi afișată la căutarea mai multor cuvinte).


{{{
<syntaxhighlight lang="xml">
#!xml
<LexemDefinitionMap>
<LexemDefinitionMap>
   <Map lexemId="12345" definitionId="98723"/>      ;; Asociază lexemul 12345 cu definiția 98723
   <Map lexemId="12345" definitionId="98723"/>      ;; Asociază lexemul 12345 cu definiția 98723
Linia 149: Linia 144:
   <Unmap lexemId="1234" definitionId="89071"/>    ;; Disociază lexemul 1234 de definiția 89071 -- numai în fișierele diff
   <Unmap lexemId="1234" definitionId="89071"/>    ;; Disociază lexemul 1234 de definiția 89071 -- numai în fișierele diff
</LexemDefinitionMap>
</LexemDefinitionMap>
}}}
</syntaxhighlight>


=== Abrevieri ===
=== Abrevieri ===
Linia 155: Linia 150:
Această categorie exportă abrevierile folosite de ''DEX online'', așa cum au fost ele moștenite din dicționarele originale. Această categorie este exportată complet. Vă recomandăm să o transferați numai atunci când, la sincronizarea definițiilor, întâlniți o abreviere necunoscută. Nu toate dicționarele au fost prelucrate pentru expandarea abrevierilor, dar le vom procesa pe toate, în timp.
Această categorie exportă abrevierile folosite de ''DEX online'', așa cum au fost ele moștenite din dicționarele originale. Această categorie este exportată complet. Vă recomandăm să o transferați numai atunci când, la sincronizarea definițiilor, întâlniți o abreviere necunoscută. Nu toate dicționarele au fost prelucrate pentru expandarea abrevierilor, dar le vom procesa pe toate, în timp.


{{{
<syntaxhighlight lang="xml">
#!xml
<AbbrevList>
<AbbrevList>
   <Sources>
   <Sources>
Linia 189: Linia 183:
   ...
   ...
</AbbrevList>
</AbbrevList>
}}}
</syntaxhighlight>


Precizări:
Precizări:


* Întrucât multe din dicționare folosesc sisteme asemănătoare sau chiar identice de abrevieri (de exemplu diversele ediții din DEX), am creat un sistem bazat pe secțiuni. În exemplul de mai sus, sursele sunt 0, 1, 2..., iar sursele 1 și 2 folosesc un set identic de abrevieri, compus din secțiunile ''common'' și ''dex''.
* Întrucât multe din dicționare folosesc sisteme asemănătoare sau chiar identice de abrevieri (de exemplu diversele ediții din DEX), am creat un sistem bazat pe secțiuni. În exemplul de mai sus, sursele sunt 0, 1, 2..., iar sursele 1 și 2 folosesc un set identic de abrevieri, compus din secțiunile ''common'' și ''dex''.
* Dacă o abreviere este definită în mai multe secțiuni, trebuie folosită valoarea din secțiunea definită mai târziu în eticheta `<Source>`. De exemplu, DEX folosește secțiunile ''common'' și ''dex'' și ambele definesc o abreviere pentru ''mil.'' În acest caz, trebuie folosită valoarea ''milion'', nu ''termen militar''. În practică nu avem încă o astfel de situație, dar anticipăm apariția ei pe măsură ce procesăm noi dicționare.
* Dacă o abreviere este definită în mai multe secțiuni, trebuie folosită valoarea din secțiunea definită mai târziu în eticheta <tt><Source></tt>. De exemplu, DEX folosește secțiunile ''common'' și ''dex'' și ambele definesc o abreviere pentru ''mil.'' În acest caz, trebuie folosită valoarea ''milion'', nu ''termen militar''. În practică nu avem încă o astfel de situație, dar anticipăm apariția ei pe măsură ce procesăm noi dicționare.
* Când abrevierea are atributul `ambiguous="1"`, înseamnă că varianta scurtă are și sens de sine stătător. De exemplu, ''loc.'' înseamnă ''locuțiune,'' dar poate fi și cuvântul ''loc'' (punct, poziție) la sfârșitul unei fraze. Similar, ''bot.'' înseamnă ''botanică'', dar poate fi și cuvântul ''bot'' (gură de animal) la sfârșitul unei fraze.
* Când abrevierea are atributul <tt>ambiguous="1"</tt>, înseamnă că varianta scurtă are și sens de sine stătător. De exemplu, ''loc.'' înseamnă ''locuțiune,'' dar poate fi și cuvântul ''loc'' (punct, poziție) la sfârșitul unei fraze. Similar, ''bot.'' înseamnă ''botanică'', dar poate fi și cuvântul ''bot'' (gură de animal) la sfârșitul unei fraze.


== Setul inițial de date ==
== Setul inițial de date ==
Linia 201: Linia 195:
Când utilizatorul deschide pentru prima dată aplicația, sau dacă dumneavoastră doriți să obțineți un set complet de date pentru a-l livra împreună cu aplicația, accesați adresa http://dexonline.ro/update4.php?last=0. Veți primi un fișier XML cu legături către șase fișiere, în formatul:
Când utilizatorul deschide pentru prima dată aplicația, sau dacă dumneavoastră doriți să obțineți un set complet de date pentru a-l livra împreună cu aplicația, accesați adresa http://dexonline.ro/update4.php?last=0. Veți primi un fișier XML cu legături către șase fișiere, în formatul:


{{{
<syntaxhighlight lang="xml">
#!xml
<Files>
<Files>
   <Full date="2011-09-18">
   <Full date="2011-09-18">
Linia 215: Linia 208:
   </Diffs>
   </Diffs>
</Files>
</Files>
}}}
</syntaxhighlight>


Aplicația trebuie să păstreze valoarea `2011-09-18` a atributului `date`. Aceasta este data setului de date care îi este servit. Dacă clientul solicită din nou actualizarea peste câtva timp, trebuie să apeleze scriptul http://dexonline.ro/update4.php?last=2011-09-18 pentru a primi noutățile survenite de la ultima sincronizare:
Aplicația trebuie să păstreze valoarea <tt>2011-09-18</tt> a atributului <tt>date</tt>. Aceasta este data setului de date care îi este servit. Dacă clientul solicită din nou actualizarea peste câtva timp, trebuie să apeleze scriptul http://dexonline.ro/update4.php?last=2011-09-18 pentru a primi noutățile survenite de la ultima sincronizare:


{{{
<syntaxhighlight lang="xml">
#!xml
<Files>
<Files>
   <Full date="2011-10-09">
   <Full date="2011-10-09">
Linia 245: Linia 237:
   </Diffs>
   </Diffs>
</Files>
</Files>
}}}
</syntaxhighlight>


Datele din secțiunea `Full` (abrevieri, flexiuni și surse) sunt întotdeauna servite integral. Datele din secțiunea `Diffs` (definiții, lexeme și asocieri) sunt servite în diferențe incrementale, generate de regulă săptămânal. Diff-urile din secțiunile `Diff` sunt servite în ordine cronologică.
Datele din secțiunea <tt>Full</tt> (abrevieri, flexiuni și surse) sunt întotdeauna servite integral. Datele din secțiunea <tt>Diffs</tt> (definiții, lexeme și asocieri) sunt servite în diferențe incrementale, generate de regulă săptămânal. Diff-urile din secțiunile <tt>Diff</tt> sunt servite în ordine cronologică.

Meniu de navigare