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

Sari la navigare Sari la căutare
 
(Nu s-au afișat 7 versiuni intermediare efectuate de același utilizator)
Linia 1: Linia 1:
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://dexonline.ro/update4.php pentru a sincroniza periodic baza de date.
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://dexonline.ro/update5.php pentru a sincroniza periodic baza de date.


== Generalități ==
== Generalități ==
Linia 47: Linia 47:
=== Lexeme ===
=== Lexeme ===


"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">
<syntaxhighlight lang="xml">
Linia 54: Linia 54:
     <Timestamp>1189683958</Timestamp>
     <Timestamp>1189683958</Timestamp>
     <Form>cop'il</Form>                                      ;; Forma poate include un apostrof înainte de vocala accentuată
     <Form>cop'il</Form>                                      ;; Forma poate include un apostrof înainte de vocala accentuată
    <EntryId>12345</EntryId>                                ;; Intrarea căreia îi aparține lexemul
     <Description>persoană</Description>                      ;; Opțional
     <Description>persoană</Description>                      ;; Opțional
     <InflectedForm>                                          ;; Formele flexionare
     <InflectedForm>                                          ;; Formele flexionare
       <InflectionId>1</InflectionId>
       <InflectionId>1</InflectionId>
       <Form>cop'il</Form>
       <Form>cop'il</Form>
     </Inflection>
     </InflectedForm>
     ...
     ...
     <Inflection>
     <InflectedForm>
       <InflectionId>3</InflectionId>
       <InflectionId>3</InflectionId>
       <Form>cop'ii</Form>
       <Form>cop'ii</Form>
     </Inflection>
     </InflectedForm>
     ...
     ...
     <Inflection>
     <InflectedForm>
       <InflectionId>5</InflectionId>
       <InflectionId>5</InflectionId>
       <Form>cop'ilul</Form>
       <Form>cop'ilul</Form>
     </Inflection>
     </InflectedForm>
     ...
     ...
     <Inflection>
     <InflectedForm>
       <InflectionId>8</InflectionId>
       <InflectionId>8</InflectionId>
       <Form>cop'iilor</Form>
       <Form>cop'iilor</Form>
     </Inflection>
     </InflectedForm>
   </Lexem>
   </Lexem>
   <Lexem id="57484">
   <Lexem id="57484">
     <Timestamp>1189683961</Timestamp>
     <Timestamp>1189683961</Timestamp>
     <Form>cop'il</Form>
     <Form>cop'il</Form>
    <EntryId>12346</EntryId>
     <Description>lăstar</Description>
     <Description>lăstar</Description>
     <Inflection>
     <InflectedForm>
       <InflectionId>1</InflectionId>
       <InflectionId>1</InflectionId>
       <Form>cop'il</Form>
       <Form>cop'il</Form>
     </Inflection>
     </InflectedForm>
     ...
     ...
     <Inflection>
     <InflectedForm>
       <InflectionId>3</InflectionId>
       <InflectionId>3</InflectionId>
       <Form>cop'ili</Form>
       <Form>cop'ili</Form>
     </Inflection>
     </InflectedForm>
     ...
     ...
     <Inflection>
     <InflectedForm>
       <InflectionId>5</InflectionId>
       <InflectionId>5</InflectionId>
       <Form>cop'ilul</Form>
       <Form>cop'ilul</Form>
     </Inflection>
     </InflectedForm>
     ...
     ...
     <Inflection>
     <InflectedForm>
       <InflectionId>8</InflectionId>
       <InflectionId>8</InflectionId>
       <Form>cop'ililor</Form>
       <Form>cop'ililor</Form>
     </Inflection>
     </InflectedForm>
   </Lexem>
   </Lexem>
   ...
   ...
Linia 107: Linia 105:
Precizări:
Precizări:


* Scriptul nu trimite informații despre ștergerea unui lexem. Când un lexem este șters în ''dexonline'', 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. Clientul dumneavoastră va primi noua tabelă de asocieri intrări-lexeme și poate observa că lexemul nu mai apare în nicio asociere. Nu este o problemă dacă clientul păstrează lexemul pe termen nelimitat, deoarece el nu mai este folosit.
* 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 ''dexonline'' 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 ''dexonline'' 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.
* Există lexeme cu modele de flexionare multiple, ca de exemplu ''monedă'' cu pluralele ''monede'' sau ''monezi''. Abordarea corectă ar fi să îmbrăcăm fiecare model de flexiune într-o etichetă <tt>&lt;Model></tt>. Totuși, pentru a nu modifica formatul din mers, vom lista toate modelele concatenat. Este posibil ca unele forme flexionare să apară de mai multe ori (cum ar fi singularul ''monedă'').
* Dacă un cuvânt are mai multe modele de flexionare (cum ar fi ''monedă-monede'' și ''monedă-monezi''), vor exista două lexeme separate.
* 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.


=== Intrări ===
=== Intrări ===


Intrările grupează lexeme cu forme sau flexiuni diferite, dar cu sensuri identice. Exemple: ''căpșună'' (pl. ''căpșuni'') și ''căpșună'' (pl. ''căpșune''), ''tr'afic'' și ''traf'ic'' etc. Fiecare lexem aparține exact unei intrări. Majoritatea intrărilor vor cuprinde un singur lexem. Intrările sunt obiecte minimale. În afară de ID, ele conțin doar o descriere, de obicei egală cu forma lexemului cuprins (fără accent).
Intrările grupează lexeme cu forme sau flexiuni diferite, dar cu sensuri identice. Exemple: ''căpșună'' (pl. ''căpșuni'') și ''căpșună'' (pl. ''căpșune''), ''tr'afic'' și ''traf'ic'' etc. Intrările sunt asociate ''many-to-many'' cu definiții și cu lexeme. În rest, intrările sunt obiecte minimale. În afară de ID, ele conțin doar o descriere, de obicei egală cu forma unuia dintre lexeme (fără accent).


<syntaxhighlight lang="xml">
<syntaxhighlight lang="xml">
Linia 151: Linia 149:
* ''Dexonline'' indică abrevierile între două semne ''#''. De exemplu, ''#expr.#'' înseamnă ''expresie''. Vedeți și secțiunea despre abrevieri.
* ''Dexonline'' indică abrevierile între două semne ''#''. De exemplu, ''#expr.#'' înseamnă ''expresie''. Vedeți și secțiunea despre abrevieri.


=== Asocieri lexeme-definiții ===
=== Asocieri intrări-definiții ===


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 intrări ș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">
<syntaxhighlight lang="xml">
<LexemDefinitionMap>
<EntryDefinition>
   <Map lexemId="12345" definitionId="98723"/>      ;; Asociază lexemul 12345 cu definiția 98723
   <Map entryId="12345" definitionId="98723"/>      ;; Asociază intrarea 12345 cu definiția 98723
   <Map lexemId="12345" definitionId="98724"/>
   <Map entryId="12345" definitionId="98724"/>
   <Unmap lexemId="1234" definitionId="89071"/>    ;; Disociază lexemul 1234 de definiția 89071 -- numai în fișierele diff
   <Unmap entryId="1234" definitionId="89071"/>    ;; Disociază intrarea 1234 de definiția 89071 -- numai în fișierele diff
</LexemDefinitionMap>
</EntryDefinition>
</syntaxhighlight>
 
=== Asocieri intrări-lexeme ===
 
Această categorie exportă asocierile între intrări și lexeme, care sunt de tipul ''many-to-many'' (o intrare ca ''monedă'' poate conține mai multe lexeme ca ''monedă-monede'' și ''monedă-monezi'', iar un lexem ca ''broască'' poate fi parte din mai multe intrări omonime: animalul și mecanismul).
 
<syntaxhighlight lang="xml">
<EntryLexem>
  <Map entryId="12345" lexemId="98723"/>      ;; Asociază intrarea 12345 cu lexemul 98723
  <Map entryId="12345" lexemId="98724"/>
  <Unmap entryId="1234" lexemId="89071"/>    ;; Disociază intrarea 1234 de lexemul 89071 -- numai în fișierele diff
</EntryLexem>
</syntaxhighlight>
</syntaxhighlight>


Linia 210: Linia 220:
== Setul inițial de date ==
== Setul inițial de date ==


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/update5.php?last=0. Veți primi un fișier XML cu legături către șase fișiere, în formatul:


<syntaxhighlight lang="xml">
<syntaxhighlight lang="xml">
<Files>
<Files>
   <Full date="2011-09-18">
   <Full date="2017-04-22">
     <Abbrevs>http://static.dexonline.ro/download/xmldump/2011-09-18-abbrevs.xml.gz</Abbrevs>
     <Abbrevs>https://dexonline.ro/static/download/xmldump/v5/2017-04-22-abbrevs.xml.gz</Abbrevs>
     <Inflections>http://static.dexonline.ro/download/xmldump/2011-09-18-inflections.xml.gz</Inflections>
     <Inflections>https://dexonline.ro/static/download/xmldump/v5/2017-04-22-inflections.xml.gz</Inflections>
     <Sources>http://static.dexonline.ro/download/xmldump/2011-09-18-sources.xml.gz</Sources>
     <Sources>https://dexonline.ro/static/download/xmldump/v5/2017-04-22-sources.xml.gz</Sources>
     <Definitions>http://static.dexonline.ro/download/xmldump/2011-09-18-definitions.xml.gz</Definitions>
     <Definitions>https://dexonline.ro/static/download/xmldump/v5/2017-04-22-definitions.xml.gz</Definitions>
     <Lexems>http://static.dexonline.ro/download/xmldump/2011-09-18-lexems.xml.gz</Lexems>
     <Entries>https://dexonline.ro/static/download/xmldump/v5/2017-04-22-entries.xml.gz</Entries>
     <LexemDefinitionMap>http://static.dexonline.ro/download/xmldump/2011-09-18-ldm.xml.gz</LexemDefinitionMap>
    <Lexems>https://dexonline.ro/static/download/xmldump/v5/2017-04-22-lexems.xml.gz</Lexems>
     <EntryDefinitionMap>https://dexonline.ro/static/download/xmldump/v5/2017-04-22-edm.xml.gz</EntryDefinitionMap>
    <EntryLexemMap>https://dexonline.ro/static/download/xmldump/v5/2017-04-22-elm.xml.gz</EntryLexemMap>
   </Full>
   </Full>
   <Diffs>
   <Diffs></Diffs>
  </Diffs>
</Files>
</Files>
</syntaxhighlight>
</syntaxhighlight>


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:
Aplicația trebuie să păstreze valoarea <tt>2017-04-22</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/update5.php?last=2017-04-22 pentru a primi noutățile survenite de la ultima sincronizare:


<syntaxhighlight lang="xml">
<syntaxhighlight lang="xml">
<Files>
<Files>
   <Full date="2011-10-09">
   <Full date="2017-05-06">
     <Abbrevs>http://static.dexonline.ro/download/xmldump/2011-10-09-abbrevs.xml.gz</Abbrevs>
     <Abbrevs>https://dexonline.ro/static/download/xmldump/v5/2017-05-06-abbrevs.xml.gz</Abbrevs>
     <Inflections>http://static.dexonline.ro/download/xmldump/2011-10-09-inflections.xml.gz</Inflections>
     <Inflections>https://dexonline.ro/static/download/xmldump/v5/2017-05-06-inflections.xml.gz</Inflections>
     <Sources>http://static.dexonline.ro/download/xmldump/2011-10-09-sources.xml.gz</Sources>
     <Sources>https://dexonline.ro/static/download/xmldump/v5/2017-05-06-sources.xml.gz</Sources>
   </Full>
   </Full>
   <Diffs>
   <Diffs>
     <Diff date="2011-09-25">
     <Diff date="2017-04-29">
       <Definitions>http://static.dexonline.ro/download/xmldump/2011-09-25-definitions-diff.xml.gz</Definitions>
       <Definitions>https://dexonline.ro/static/download/xmldump/v5/2017-04-29-definitions-diff.xml.gz</Definitions>
       <Lexems>http://static.dexonline.ro/download/xmldump/2011-09-25-lexems-diff.xml.gz</Lexems>
       <Entries>https://dexonline.ro/static/download/xmldump/v5/2017-04-29-entries-diff.xml.gz</Entries>
       <LexemDefinitionMap>http://static.dexonline.ro/download/xmldump/2011-09-25-ldm-diff.xml.gz</LexemDefinitionMap>
       <Lexems>https://dexonline.ro/static/download/xmldump/v5/2017-04-29-lexems-diff.xml.gz</Lexems>
    </Diff>
       <EntryDefinitionMap>https://dexonline.ro/static/download/xmldump/v5/2017-04-29-edm-diff.xml.gz</EntryDefinitionMap>
    <Diff date="2011-10-02">
       <EntryLexemMap>https://dexonline.ro/static/download/xmldump/v5/2017-04-29-elm-diff.xml.gz</EntryLexemMap>
       <Definitions>http://static.dexonline.ro/download/xmldump/2011-10-02-definitions-diff.xml.gz</Definitions>
       <Lexems>http://static.dexonline.ro/download/xmldump/2011-10-02-lexems-diff.xml.gz</Lexems>
      <LexemDefinitionMap>http://static.dexonline.ro/download/xmldump/2011-10-02-ldm-diff.xml.gz</LexemDefinitionMap>
     </Diff>
     </Diff>
     <Diff date="2011-10-09">
     <Diff date="2017-05-06">
       <Definitions>http://static.dexonline.ro/download/xmldump/2011-10-09-definitions-diff.xml.gz</Definitions>
       <Definitions>https://dexonline.ro/static/download/xmldump/v5/2017-05-06-definitions-diff.xml.gz</Definitions>
       <Lexems>http://static.dexonline.ro/download/xmldump/2011-10-09-lexems-diff.xml.gz</Lexems>
       <Entries>https://dexonline.ro/static/download/xmldump/v5/2017-05-06-entries-diff.xml.gz</Entries>
       <LexemDefinitionMap>http://static.dexonline.ro/download/xmldump/2011-10-09-ldm-diff.xml.gz</LexemDefinitionMap>
      <Lexems>https://dexonline.ro/static/download/xmldump/v5/2017-05-06-lexems-diff.xml.gz</Lexems>
       <EntryDefinitionMap>https://dexonline.ro/static/download/xmldump/v5/2017-05-06-edm-diff.xml.gz</EntryDefinitionMap>
      <EntryLexemMap>https://dexonline.ro/static/download/xmldump/v5/2017-05-06-elm-diff.xml.gz</EntryLexemMap>
     </Diff>
     </Diff>
   </Diffs>
   </Diffs>
Linia 256: Linia 266:
</syntaxhighlight>
</syntaxhighlight>


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ă.
Datele din secțiunea <tt>Full</tt> (abrevieri, flexiuni și surse) sunt întotdeauna servite integral. Datele din secțiunea <tt>Diffs</tt> (definiții, intrări, 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