1 / 17

Gestione dei cambiamenti per documenti digitali sul Web

Gestione dei cambiamenti per documenti digitali sul Web. Tesi di Laurea di: MICHELE SCHIRINZI. Relatore: Chiar.mo Prof. FABIO VITALI.

Download Presentation

Gestione dei cambiamenti per documenti digitali sul Web

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Gestione dei cambiamenti per documenti digitali sul Web Tesi di Laurea di: MICHELE SCHIRINZI Relatore: Chiar.mo Prof. FABIO VITALI

  2. “Un documento non può essere semplicemente pensato come una sequenza statica di caratteri invariata nel tempo, ma è una struttura evolutiva a cui vengono aggiunte, eliminate o modificate delle parti. Queste modifiche sono parte integrante del documento stesso: è utile (se non fondamentale) poter ricostruire qualsiasi porzione di una qualsiasi versione, così come era in un qualsiasi momento della storia del documento ” [Nelson T.H.] Introduzione Un sistema che soddisfi questa definizione deve poter memorizzare tutti gli stati di sviluppo intermedi(versioni) di un documento. • Possono esserci due modi per compiere questa operazione: • Memorizzare interamente ogni stato del documento. • Memorizzare i cambiamenti avvenuti fra una versione e la sua successiva.

  3. Nel primo caso immaginiamo di “fotografare” il documento in diversi momenti del suo sviluppo e mantenere ordinatamente le varie “fotografie”. Prima stesura del documento Versione attuale del documento Questo è il documento nella sua versione originale, la prima stesura del documento Questo è il documento nella sua seconda versione , la seconda stesura del documento Questo è il documento nella sua terza versione, la terza stesura del documento Questo è il documento nella sua versione attuale, l’ultima stesura del documento Memorizzazione delle versioni Nel secondo caso andiamo a memorizzare solo i cambiamenti avvenuti fra una versione e la sua successiva (delta). Prima stesura del documento Questo è il documento nella sua versione originale, la prima stesura del documento Delete(8) Delete(15) Insert(testo1) Update(4,Ndelta) Insert(testo) Insert(testo2) Update(7,Ndelta) Delete(12) Insert(testo4) Delete(4) Delete(9) Insert(testo5) Algoritmi di Diff. • L’input consiste in due versioni di uno stesso documento; • Il risultato è un documento delta che rappresenta i cambiamenti avvenuti fra questi. Versione del documento Diff (Delta) Differenze fra le due versioni Versione del documento

  4. Presentiamo ora un algoritmo ideato da noi per la ricerca dei cambiamenti fra versioni all’interno del progetto IsaWiki. L’algoritmo è stato implementato in PHP per essere usato all’interno del sistema IsaWiki. Sono state realizzate la funzionalità di Diff, la ricostruzione di un documento e la possibilità di visualizzare i cambiamenti fra due versioni. L’algoritmo si divide in 4 passi principali: HML-diff: Un algoritmo di Diff per documenti XML • Ricerca della massima parte invariata fra i documenti. • Ricerca delle parti spostate dei documenti (una parte è considerata spostata se appare in punti diversi fra le due versioni rispetto alla parte più grande rimasta invariata delle versioni). • Ricerca delle parti aggiornate dei documenti (una parte è considerata aggiornata se appare nella stessa posizione fra le due versioni e differisce per una certa quantità limitata da una costante). • Espressione delle informazioni rilevate nelle fasi precedenti.

  5. Il primo passo è serializzare i documenti XML. La serializzazione avviene attraverso una visita in profondità con pre-ordine degli alberi dei documenti. Ogni elemento della sequenza è un valore hash che rappresenta un sottoalbero dell’albero del documento. Ricerca delle parti invariate 1 2 7 3 4 8 9 11 sequenza E1 E2 .. .. .. .. .. .. .. .. E11 5 6 10

  6. Applichiamo un algoritmo per trovare la LCS (Longest Common Subsequence) fra le sequenze che rappresentano i documenti da confrontare. L’algoritmo per trovare la LCS suppone che una LCS sia formata dalla concatenazione ordinata di LCCS(Longest Common Continuous Subsequence). Durante il calcolo della LCS possiamo usare i seguenti accorgimenti: Ricerca delle parti invariate • Se S1[i]=S2[j] allora anche gli N elementi successivi a i e j saranno uguali, dove N è il numero di nodi appartenenti al sottoalbero radicato nel nodo associato all’elemento S1[i]. • Dividiamo gli elementi di una sequenza in classi, in modo da limitare i confronti (Ha senso confrontare un nodo di testo con un nodo di testo). Questa suddivisione può essere compiuta in tempo lineare all’atto della creazione della sequenza.

  7. Una volta ottenute le parti uguali maggiori fra le due sequenze esaminiamo le parti restanti per rifinire la qualità del delta. Passi successivi Sequenza A Sequenza B In verde sono contrassegnate le parti uguali fra le due sequenze.

  8. Raccolte tutte le informazioni delle fasi precedenti, consideriamo: • Se un nodo della sequenza A non è stato trovato in nessuna delle fasi precedenti viene considerato cancellato • Se un nodo della sequenza B non è stato trovato in nessuna delle fasi precedenti viene considerato inserito • I nodi mossi e i nodi aggiornati sono quelli trovati nelle rispettive fasi Espressione del delta Nell’espressione del delta vengono prima esplicitate tutte le operazioni di cancellazione e aggiornamento, di seguito vengono esplicitate le operazioni di inserimento. Quest’ordine è importante perché ci garantisce di trovare dopo l’esecuzione dell’ N-esima operazione, il documento nello stato in cui deve essere applicata N+1-esima operazione.

  9. L’algoritmo descritto ha una complessità di O(N * C * D) dove: • N sono i numeri di nodi del documento A • C la cardinalità media delle classi in cui vengono divisi gli elementi del documento. C << N. • D un valore proporzionale alle differenze fra i due documenti confrontati. Complessità e Qualità La qualità del delta ottenuto è buona in quanto oltre alle classiche operazioni di inserimento e cancellazione descrive operazioni di: • Move, riconosce parti del documento spostare fra le due versioni. • Update, riconosce aggiornamenti di nodi Testo, Elemento, Commento.

  10. Con la transizione del Web verso XML, sistemi di questo tipo assumono un’importanza rilevante all’interno di CMS(Content Management System). • Inoltre questi sistemi possono essere di supporto ad applicazione che usano i nuovi standard basati su XML(DocBook, RSS, RDF, ecc..). • In generale è un’utilità fondamentale all’interno di sistemi in cui è interessante seguire lo sviluppo dei documenti in funzione del tempo, infatti permettono un’analisi semplice e comoda dell’evoluzione di un documento. Conclusioni

  11. 1 Book 24 2 12 7 Chapter 19 Chapter Chapter Chapter Chapter 5 8 13 3 10 15 22 20 Title Title Para Title Para Title Para Title Para Para 25 27 17 9 11 4 6 14 16 18 21 23 26 28 Img Text1 Text 2 Text 4 Text 5 Text 6 Text 7 Text 8 Text 9 Text 10 Text 11 Text 12 match update move match match match 1 Book 24 5 12 2 Chapter Chapter 19 Chapter Chapter Chapter 8 13 20 22 15 Title Para Para Title Para Title Title Para Para 3 6 10 25 4 11 7 9 26 14 16 17 18 23 21 Text 2 Text 11 Text 4 Text 12 Text 25 Img Text 6 Text 7 Text 8 Text 9 Text 10

  12. 19 19 oxfbng oxfbng Chapter Chapter 22 22 20 20 eewgrt + b5g43g eewgrt Title Title Para Para qtrhky qtrhky oxfbng + eewgrt + b5g43g 23 23 21 21 19 b5g43g b5g43g Text 9 Text 9 Text 10 Text 10 Chapter bcnngh bcnngh 22 20 eewgrt + b5g43g Title Para qtrhky oxfbng + eewgrt + b5g43g 19 Chapter 21 23 bcnngh b5g43g Text 9 Text 10 22 20 eewgrt + b5g43g Title Para qtrhky + bcnngh oxfbng + eewgrt + b5g43g + qtrhky + bcnngh 21 23 Chapter 19 b5g43g Text 9 Text 10 bcnngh 22 20 eewgrt + b5g43g Title Para qtrhky + bcnngh 21 23 bcnngh b5g43g Text 9 Text 10

  13. X=<A,B,F,H,F,G,T,R,K,W,E,S,D> Y=<A,B,U,H,U,G,T,R,K,M,E,S,D> X=<W,E,S,D> X=<A,B,F,H,F> Y=<M,E,S,D> Y=<A,B,U,H,U> LCCS X=<F,H,F> X=<W> X=<> X=<> Y=<U,H,U> Y=<M> Y=<> Y=<> X=<F> X=<F> Y=<U> Y=<U> LCCS LCCS LCCS <A,B> <H> <G,T,R,K> <E,S,D> LCS

  14. l3 l2 1° Ciclo l1 n a b c d a f c t e a b c d a b b a max1 = l2 = 4 m a f c t a b c d e c d b a d e b b l3 l1 l2 l3 2° Ciclo l2 l1 n a b c d a f c t e a b c d a b b a max2 = l1 = 4 m a f c t a b c d e c d b a d e b b l1 l3 l2

  15. Aggiornamento Confrontare file con 'Diff Doc' Ora è possibile confrontare documenti in modo rapido e preciso. “Diff Doc” è una potente utility per confronti e correzioni di cartelle/file di facile utilizzo. Permette infatti di confrontare file di tutti i tipi, compresi MS Word/Excel, PDF, RTF, Text, XML, HTML, Wordperfect e altri. Indipendentemente dal programma di editing utilizzato (MS Word, WordPad, Visual Basic, ecc), basta caricare i file originali e quelli modificati, premere il tasto Refresh (Aggiorna) (o F5), e il documento confrontato apparirà immediatamente. E’ inoltre possibile confrontare le cartelle per vedere esattamente quali file sono cambiati, prima ancora di effettuare il confronto. “Diff Doc” può indicare le differenze fra i file in due diverse schermate, “All in One”, o “Side by Side”. Entrambe presentano dei vantaggi, per passare da una all’altra basta un clic col mouse (o premere F6). Infine, sono disponibili numerosi report, incluso quello in HTML, in cui vengono specificate le differenze Confrontare documenti con 'Diff Doc' Ora è possibile confrontare documenti in modo veloce e preciso. “Diff Doc” è una potente utility per confronti e correzioni di cartelle/file di facile utilizzo. Permette infatti il confronto di file di tutti i tipi, compresi MS Word/Excel, PDF, RTF, HTML, Wordperfect e altri. “Diff Doc” può indicare le differenze fra i file in due diverse schermate, “All in One”, o “Side by Side”. Entrambe presentano dei vantaggi, per passare da una all’altra basta un clic col mouse (o premere F6). Infine, sono disponibili numerosi report, incluso quello in HTML, in cui vengono specificate le differenze Indipendentemente dal programma di editing utilizzato (MS Word, WordPad, Visual Basic, ecc), basta caricare i file originali e quelli modificati, premere il tasto Refresh (Aggiorna) (o F5), e il documento confrontato apparirà immediatamente. E’ inoltre possibile confrontare le cartelle per vedere esattamente quali file sono cambiati, prima ancora di effettuare il confronto. HML-diff: Esempio Aggiornamento Invariato Spostamento

  16. Nodo Inserito Nodo update A B A B B A A A B B B A B A B A B Nodo Cancellato A B Nodo Mosso

More Related