Modelarea datelor via XML. Design patterns in contextul specificarii documentelor XML
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Modelarea datelor via XML. Design patterns in contextul specificarii documentelor XML

  • 2,657 views
Uploaded on

An introduction to XML (Extensible Markup Language), including several considerations regarding the use of design patterns in the context of semi-structural data modeling.

An introduction to XML (Extensible Markup Language), including several considerations regarding the use of design patterns in the context of semi-structural data modeling.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
2,657
On Slideshare
2,657
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
20
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Dr. Sabin-Corneliu Buraga Facultatea de Informatică Universitatea “Alexandru Ioan Cuza” – Iași, România www.purl.org/net/busaco @busaco
  • 2. „Lucrurile nu sunt grele de făcut, ceea ce este greu este să fim în stare să le facem!” Constantin Brâncuși
  • 3. Cum modelăm (reprezentăm) datele?
  • 4. datele: mai importante decât aplicațiile Procesare Date proprietare Publicarea Modelare Modelare (programe) (baze de date, datelor (semi) conceptuală suite de birou) pe Web structurată (RDF, OWL) (HTML) (XML) “Data is less “Data is as “Data is more important important important than code” as code” than code” 1945 -1970 1970 - 1994 1994 - 2000 2000 - 2003 2003 - evoluția conceptului de “dată” (Daconta et al., 2003)
  • 5. datele: mai importante decât aplicațiile Procesare Date proprietare Publicarea Modelare Modelare (programe) (baze de date, datelor (semi) conceptuală suite de birou) pe Web structurată (RDF, OWL) (HTML) (XML) “Data is less “Data is as “Data is more important important important than code” as code” than code” 1945 -1970 1970 - 1994 1994 - 2000 2000 - 2003 2003 - evoluția conceptului de “dată” (Daconta et al., 2003)
  • 6. Ce model de reprezentare a datelor alegem pentru… stocarea datelor eterogene, provenind din surse multiple?
  • 7. Ce model de reprezentare a datelor alegem pentru… informații care evoluează rapid?
  • 8. Ce model de reprezentare a datelor alegem pentru… reprezentarea limbajului natural?
  • 9. Dorim să modelăm și să procesăm date privitoare la… antologii de poezii, cataloage de produse ale unui e-shop, depozite de rețete gastronomice, chestionare, rețele sociale etc.
  • 10. o soluție Folosim HTML pentru modelarea datelor și – eventual – CSS pentru prezentarea lor
  • 11. o soluție Folosim HTML pentru modelarea datelor și – eventual – CSS pentru prezentarea lor <p><strong>Prietenii mei:</strong></p> <ul> <li><a href="http://twitter.com/pinguinulvesel"> Dragoș</a></li> <li><a href="mailto:tux@pinguin.info"> Tux</a></li> </ul>
  • 12. Nu putem defini propriile noastre marcaje!?
  • 13. Necesitate: un limbaj de marcare explicită a datelor
  • 14. Necesitate: un limbaj de marcare explicită a datelor datele modelate pot fi practic nelimitate (unbound) și necunoscute
  • 15. Necesitate: un limbaj de marcare explicită a datelor ar fi de dorit ca datele să se poată „explica” pe ele însele (self-explanatory)
  • 16. Necesitate: un limbaj de marcare explicită a datelor ar fi de dorit ca datele să se poată „explica” pe ele însele (self-explanatory) ce reprezintă triplul ("Sabin", "Buraga", 33)?
  • 17. Necesitate: modelul adoptat să se preteze arhitecturilor navigaționale actuale, bazate pe hipertext suport pentru specificarea adreselor Web – URI-uri
  • 18. Am putea recurge la sau specifica un nou format de document?
  • 19. Documente: formate particulare (proprietare) versus formate generice (deschise, standardizate)
  • 20. definiție Marcaj – adnotare, codare, mark-up orice actiune de a interpreta explicit o porțiune de text (conținut)
  • 21. definiție Marcaj – adnotare, codare, mark-up orice actiune de a interpreta explicit o porțiune de text (conținut) exemple: semnele de punctuație pentru limbile scrise, deliminatorii folosiți în codul-sursă
  • 22. definiție Limbaj de specificare (de adnotare, de marcare) set de convenții de marcare utilizate pentru codificarea datelor
  • 23. definiție Limbaj de specificare (de adnotare, de marcare) set de convenții de marcare utilizate pentru codificarea datelor specifică mulțimea de marcaje obligatorii, modul de identificare și de structurare a marcajelor
  • 24. Extensible Markup Language meta-limbaj de marcare permite definirea de limbaje
  • 25. Extensible Markup Language descendent simplificat al SGML destinat utilizării în Internet (1996–prezent)
  • 26. Extensible Markup Language standard al Consorțiului Web (W3C) www.w3.org/TR/REC-xml
  • 27. Extensible Markup Language o tehnologie + o familie de limbaje www.w3.org/XML/
  • 28. Asigură inter-operabilitatea la nivel de date are suport pe orice platformă hardware/software, inclusiv în cadrul navigatoarelor Web
  • 29. Asigură inter-operabilitatea la nivel de date procesoarele XML sunt implementate în toate limbajele de programare
  • 30. Asigură inter-operabilitatea la nivel de date procesoarele XML sunt implementate în toate limbajele de programare metode uzuale de procesare obiectuală: DOM (Document Object Model) secvențială bazată pe evenimente: SAX (Simple API for XML) simplificată: Simple XML
  • 31. Asigură inter-operabilitatea la nivel de date recurge la Unicode – independent de codificare
  • 32. Soluție pentru reprezentarea conținutului resurselor Web identificate de URI/IRI
  • 33. exemplu Reprezentarea unei antologii de poezii <?xml version="1.0" ?> <antologie> <poem> <titlu>...</titlu> <strofa> <vers>...</vers> <vers>...</vers> ... </strofa> </poem> <!-- mai multe poeme… (acesta e un comentariu) --> </antologie>
  • 34. exemplu Specificarea unui catalog de produse <produse> <produs tip="promo"> <nume>Ping Uinix</nume> <ofertant>http://www.pinguin.info</ofertant> </produs> <produs> <!-- un soi de portocale albastre --> <nume>Blue Ory</nume> <descriere /> <!-- un element având conținut vid --> </produs> <produs>…</produs> </produse>
  • 35. exemplu Specificarea unui catalog de produse <produse> <produs tip="promo"> <nume>Ping Uinix</nume> <ofertant>http://www.pinguin.info</ofertant> </produs> <produs> <!-- un soi de portocale albastre --> <nume>Blue Ory</nume> <descriere /> <!-- un element având conținut vid --> </produs> <produs>…</produs> </produse>
  • 36. exemplu Specificarea unui catalog de produse <produse> <produs tip="promo"> <nume>Ping Uinix</nume> <ofertant>http://www.pinguin.info</ofertant> </produs> <produs> <!-- un soi de portocale albastre --> <nume>Blue Ory</nume> <descriere /> <!-- un element având conținut vid --> </produs> <produs>…</produs> </produse> date semi-structurate
  • 37. exemplu Informații despre o persoană via vocabularul FOAF (Friend Of A Friend) <foaf:Person rdf:ID="busaco"> <foaf:name>Sabin Buraga</foaf:name> <foaf:mbox rdf:resource="mailto:busaco@infoiasi.ro"/> <foaf:homepage rdf:resource="http://www.purl.org/net/busaco"/> </foaf:Person>
  • 38. exemplu Informații despre o persoană via vocabularul FOAF (Friend Of A Friend) <foaf:Person rdf:ID="busaco"> <foaf:name>Sabin Buraga</foaf:name> <foaf:mbox rdf:resource="mailto:busaco@infoiasi.ro"/> <foaf:homepage rdf:resource="http://www.purl.org/net/busaco"/> </foaf:Person> <foaf:Image rdf:about="http://www.flickr.com/.../foto.jpg"> <dc:date rdf:datatype="xsd:date">2010-05-12</dc:date> <dc:title xml:lang="ro">Prezentare la Summer Web 2010</dc:title> <foaf:depicts rdf:resource="#busaco"/> <foaf:maker rdf:resource="#tux"/> </foaf:Image>
  • 39. exemplu Informații despre o persoană via vocabularul FOAF (Friend Of A Friend) <foaf:Person rdf:ID="busaco"> <foaf:name>Sabin Buraga</foaf:name> <foaf:mbox rdf:resource="mailto:busaco@infoiasi.ro"/> <foaf:homepage rdf:resource="http://www.purl.org/net/busaco"/> </foaf:Person> <foaf:Image rdf:about="http://www.flickr.com/.../foto.jpg"> <dc:date rdf:datatype="xsd:date">2010-05-12</dc:date> <dc:title xml:lang="ro">Prezentare la Summer Web 2010</dc:title> <foaf:depicts rdf:resource="#busaco"/> <foaf:maker rdf:resource="#tux"/> </foaf:Image> spații de nume
  • 40. sintaxa XML (Extensible Markup Language) modelul de date XML (abstract) XML Information Set – Infoset transformări/prezentări de date XSL (Extensible Stylesheet Language) interogarea datelor XQuery – împreună cu XPath
  • 41. Structurarea/formatarea conținutului (formate de prezentare a datelor) în navigatorul Web: (X)HTML – Extensible HTML formulare electronice: XForms grafică vectorială: SVG (Scalable Vector Graphics) lumi tridimensionale: X3D (Extensible 3D Graphics) în medii fără fir: XHTML-MP (Mobile Profile), Tiny SVG
  • 42. Reprezentarea diferitelor tipuri de conținut expresii matematice: MathML multimedia sincronizată: SMIL (Synchronized Multimedia Integration Language) informații vocale: VoiceXML componente ale interfeței-utilizator: XUL (Extensible User-interface Language) informații cartografice: KML (Keyhole Markup Language)
  • 43. Reprezentarea diferitelor tipuri de conținut documentații: DocBook (Documentation Book) informații prelucrate de suite de birou – e.g., Open Office: ODF (Open Document Format) mediatizare (syndication) – fluxuri de știri: RSS (Really Simple Syndication), Atom reguli de specificare a proceselor de afaceri: BRML (Business Rules Markup Language)
  • 44. Multe alte limbaje la http://xml.coverpages.org/
  • 45. Așadar, până la urmă, ce este XML?
  • 46. XML unifică tehnologii privind: procesarea documentelor stocarea și prelucrarea tradițională a datelor accesul la Internet (Web)
  • 47. Internet XML Baze Docu- de date mente
  • 48. XML se pretează pentru stocarea (reprezentarea) datelor semi-structurate
  • 49. XML se pretează pentru stocarea (reprezentarea) datelor semi-structurate sistemele tradiționale (e.g., bazele de date relaționale) necesită specificarea unei scheme rigide în vederea stocării/accesării datelor
  • 50. XML se pretează pentru stocarea (reprezentarea) datelor semi-structurate sistemele tradiționale (e.g., bazele de date relaționale) necesită specificarea unei scheme rigide în vederea stocării/accesării datelor …un punct de vedere în general centralizat
  • 51. XML se pretează pentru stocarea (reprezentarea) datelor semi-structurate datele de pe Web sunt descentralizate, eterogene și pot fi, deseori, accesate – chiar modificate – de către oricine
  • 52. XML se pretează pentru stocarea (reprezentarea) datelor semi-structurate datele de pe Web sunt descentralizate, eterogene și pot fi, deseori, accesate – chiar modificate – de către oricine resursele disponibile la un moment dat nu sunt cunoscute a-priori
  • 53. Direcții de interes: comunicatii și interacțiune
  • 54. Direcții de interes: comunicatii și interacțiune person-to-person instant messaging – e.g., Jabber via XMPP micro-blogging – exemplu: Twitter
  • 55. Direcții de interes: comunicatii și interacțiune computer-to-person syndication – via RSS/Atom recomandare de conținut – e.g., Zemanta integrare de sisteme sociale
  • 56. Direcții de interes: comunicatii și interacțiune computer-to-computer servicii Webaplicații hibride (mash-up-uri)
  • 57. Twitter + Google EarthTwittEarth
  • 58. Direcții de interes: publicare deschisă a datelor
  • 59. Direcții de interes: publicare deschisă a datelor modelare (semi)structurată utilizare de formate/vocabulare standardizate DCMI (Dublin Core Metadata Initiative), FOAF (Friend Of A Friend), DOAP (Description Of A Project), …
  • 60. Direcții de interes: publicare deschisă a datelor procesare independentă de platformă/limbaj
  • 61. Direcții de interes: publicare deschisă a datelor prezentări multiple ale conținutului, în diverse formate, pe sisteme eterogene
  • 62. Direcții de interes: modelarea proceselor (de afaceri, mai ales)
  • 63. Direcții de interes: modelarea proceselor (de afaceri, mai ales) dataflow/workflow BRML (Business Rules Markup Language), BPEL4WS (Business Process Execution Language for Web Services)
  • 64. Analizoare (procesoare, parsers) Apache Xerces, Expat, libxml,… Vizualizatoare și editoare structurale Firefox, Open Office, 4Suite, <oXygen />, Serna etc. Formatatoare – e.g., procesoare XSLT/XSL-FO Apache FOP, libxslt, Saxon,…
  • 65. Firefinder – folosirea interogărilor XPath în cadrul Firebug
  • 66. Instrumente de convertire Tidy Instrumente de arhivare XMill Sisteme de gestiune a bazelor de date XML Berkeley DB XML, eXist, Sedna etc.
  • 67. Există bune practici privind utilizarea și/sau modelarea documentelor XML?
  • 68. Cum trebuie structurat un document XML pentru a modela (stoca) anumite date sau meta-date?
  • 69. Recurgerea la șabloane de proiectare (design patterns)
  • 70. definiție Pattern (șablon) regulă ce exprimă o relație dintre un context, o problemă și o soluție Christopher Alexander, 1979
  • 71. Uzual, pattern-urile sunt utilizate în proiectarea de aplicații (object-oriented software design) pattern  “mind sized” chunk of information lucrarea de referință: E. Gamma et al., Design Patterns, Addison-Wesley, 1995
  • 72. Șabloanele de proiectare au fost folosite, ulterior, în cadrul interacțiunii om-calculator context: IA – Information Architecture resurse esențiale: J. Tidwell, Designing Interfaces, O’Reilly, 2005 www.hcipatterns.org www.welie.com/patterns
  • 73. folosirea șabloanelor de interacțiune
  • 74. Un șablon poate descrie cunoștințele unui expert (pe baza experienței sale personale) în domeniul problemei în ceea ce privește recunoașterea problemei, a contextului și a soluției la acea problemă
  • 75. Un șablon nu reprezintă o regulă fermă uneori nu trebuie aplicatanti-patterns
  • 76. Este necesară adoptarea unui vocabular comun corespunzător domeniului problemei pattern language
  • 77. Șabloane privitoare la: proiectare arhitectură analiză dezvoltare structură comportament
  • 78. Ne interesează modelarea datelor pe baza familiei XML
  • 79. Recurgerea la șabloane structurale pentru proiectarea structurii unui document XML: lungimea documentului ușurința folosirii marcajelor ușurința procesării flexibilitatea consistența gradul de abstractizare
  • 80. exemplu Use XML determină situația în care XML este soluția viabilă de reprezentare a informațiilor (semi-)structurate
  • 81. exemplu Use XML reprezentări multiple: binar, CSV (Comma-Separated Values), HTML, baze de date relaționale, obiecte serializate, XML,…
  • 82. exemplu Use XML XML poate fi o soluție adecvată atunci când: datele (conținutul) trebuie separat(e) de formatare
  • 83. exemplu Use XML XML poate fi o soluție adecvată atunci când: datele trebuie partajate între aplicații, organizații,...
  • 84. exemplu
  • 85. exemplu Use XML XML poate fi o soluție adecvată atunci când: reprezentarea resurselor trebuie să poată fi înțeleasă și de oameni
  • 86. exemplu Use XML XML poate fi o soluție adecvată atunci când: reprezentarea trebuie procesată facil de calculator, independent de platformă și de limbaj
  • 87. exemplu Short Understandable Names numele marcajelor (elemente și atribute) trebuie să fie scurte și ușor de înțeles atât de autori, cât și de dezvoltatorii software-ului care va procesa documentul XML
  • 88. exemplu Short Understandable Names numele prea scurte sunt dificil de înțeles, dar reduc lungimea documentelor <DescriereaEchipamentului CodulEchipamentului="…" /> versus <desec c="…" /> <b> <ul> versus <video /> <table> <title>
  • 89. exemplu Short Understandable Names convenții de numire: <nume_tag> <NumeTag> <numeTag>
  • 90. exemplu Content Element problemă: numeroase elemente care apar pe același nivel în document și care pot fi divizate în grupuri distincte un container grupează elemente (copil) înrudite
  • 91. exemplu Content Element adaugă un nivel de abstractizare, gruparea elementelor oferind informații semantice suplimentare – e.g., asocierea de meta-date unui grup de elemente
  • 92. exemplu Content Element șabloane înrudite: Head-Body Collection Element
  • 93. exemplu Content Element <config> <config> <hardware> <ram>4096</ram> <ram>4096</ram> <hdd tip="...">500</hdd> <hdd tip="...">500</hdd> </hardware> <parser limbaj="Java"> <software> Xerces</parser> <parser limbaj="Java"> <editor>vim</editor> Xerces</parser> <parser limbaj="Perl"> <parser limbaj="Perl"> Expat</parser> Expat</parser> </config> <editor>vim</editor> </software> </config>
  • 94. exemplu Envelope oferă un tip de document care va desemna un „plic” în care se vor putea stoca date XML arbitrare
  • 95. exemplu Envelope oferă un tip de document care va desemna un „plic” în care se vor putea stoca date XML arbitrare problemă: diferite seturi de date trebuie livrate unui sistem, într-o manieră consistentă context: structura datelor din „plic” poate varia și nu este cunoscută la momentul creării sistemului
  • 96. exemplu Envelope permite separarea diferitelor tipuri de conținuturi, oferindu-se un mecanism de livrare a datelor XML „plicul” nu interferează cu conținutul propriu-zis al mesajului transmis
  • 97. exemplu Envelope exemplu tipic de utilizare: protocolul SOAP folosit la vehicularea datelor dintre servicii Web și clienți
  • 98. exemplu Envelope
  • 99. exemplu Role Attribute problemă: unui element îi trebuie precizat rolul (i.e. caracteristica definitorie)
  • 100. exemplu Role Attribute problemă: unui element îi trebuie precizat rolul (i.e. caracteristica definitorie) soluție: se poate folosi un atribut specificând rolul
  • 101. exemplu Role Attribute valorile atributului trebuie să fie mutual exclusive pentru un element XML, nu pot apărea de mai multe ori atribute având același nume <departament rol="cercetare">…</departament>
  • 102. exemplu Role Attribute exemple de utilizare în cadrul microformatelor www.microformats.org vezi direcția POSH (Plain Old Semantic HTML)
  • 103. Alte șabloane reutilizarea tipurilor de documente existente: Reuse Document Type
  • 104. Alte șabloane alegerea elementului/elementelor rădăcină: Multiple Document Types Multi Root Document Types
  • 105. Alte șabloane referențierea unor construcții: Declare Before First Use referențierea aceleiași informații în locuri multiple: Flyweight arbore (ierarhie) versus graf: Marketplace facilitează organizarea structurii documentului XML
  • 106. Alte șabloane facilitarea extinderii: Catch-All Element Role Attribute Extensible Content Model
  • 107. Alte șabloane asigurarea consistenței: Common Attributes Consistent Element Set
  • 108. Alte șabloane asocierea de meta-date: Separate Metadata & Data Metadata in Separate Document Head-Body Metadata First
  • 109. studiu de caz Modelarea datelor (de la implicit la explicit) specificarea preferințelor utilizatorului în contextul navigării pe Web
  • 110. studiu de caz Modelarea datelor (de la implicit la explicit) specificarea preferințelor utilizatorului în contextul navigării pe Web <preferinte tema="aqua" rezolutie="1024x768" browser="Firefox 3.6" />
  • 111. studiu de caz Modelarea datelor (de la implicit la explicit) specificarea preferințelor utilizatorului în contextul navigării pe Web <preferinte tema="aqua" convenții de reprezentare ce nu pot fi deduse explicit rezolutie="1024x768" browser="Firefox 3.6" />
  • 112. studiu de caz Modelarea datelor (de la implicit la explicit) specificarea preferințelor utilizatorului în contextul navigării pe Web <preferinte tema="aqua" rezolutie="1024x768" browser="Firefox 3.6" dacă trebuie stocată o listă de navigatoare? />
  • 113. studiu de caz Modelarea datelor (de la implicit la explicit) recurgând la șabloaneo soluție mai bună <preferinte> <tema>aqua</tema> <rezolutie> <latime unit="px">1024</latime> <lungime unit="px">768</lungime> </rezolutie> <browser versiune="3.6">Firefox</browser> </preferinte>
  • 114. Resurse bibliografice S. Buraga, Tehnologii XML, Polirom, 2006 S. Buraga (coord.), Programarea în Web 2.0, Polirom, 2007 B. Daum, U. Merten, System Architecture with XML, Elsevier Science, 2003
  • 115. Situri Web de interes Consorțiul Web: www.w3.org Șabloane de proiectare XML: www.XMLPatterns.com XML.org: www.XML.org Instrumente XML open source oferite de fundația Apache: xml.apache.org
  • 116. Ă