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

2,280
-1

Published 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.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,280
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
20
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. Dr. Sabin-Corneliu Buraga Facultatea de Informatică Universitatea “Alexandru Ioan Cuza” – Iași, România www.purl.org/net/busaco @busaco
  2. 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. 3. Cum modelăm (reprezentăm) datele?
  4. 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. 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. 6. Ce model de reprezentare a datelor alegem pentru… stocarea datelor eterogene, provenind din surse multiple?
  7. 7. Ce model de reprezentare a datelor alegem pentru… informații care evoluează rapid?
  8. 8. Ce model de reprezentare a datelor alegem pentru… reprezentarea limbajului natural?
  9. 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. 10. o soluție Folosim HTML pentru modelarea datelor și – eventual – CSS pentru prezentarea lor
  11. 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. 12. Nu putem defini propriile noastre marcaje!?
  13. 13. Necesitate: un limbaj de marcare explicită a datelor
  14. 14. Necesitate: un limbaj de marcare explicită a datelor datele modelate pot fi practic nelimitate (unbound) și necunoscute
  15. 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. 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. 17. Necesitate: modelul adoptat să se preteze arhitecturilor navigaționale actuale, bazate pe hipertext suport pentru specificarea adreselor Web – URI-uri
  18. 18. Am putea recurge la sau specifica un nou format de document?
  19. 19. Documente: formate particulare (proprietare) versus formate generice (deschise, standardizate)
  20. 20. definiție Marcaj – adnotare, codare, mark-up orice actiune de a interpreta explicit o porțiune de text (conținut)
  21. 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. 22. definiție Limbaj de specificare (de adnotare, de marcare) set de convenții de marcare utilizate pentru codificarea datelor
  23. 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. 24. Extensible Markup Language meta-limbaj de marcare permite definirea de limbaje
  25. 25. Extensible Markup Language descendent simplificat al SGML destinat utilizării în Internet (1996–prezent)
  26. 26. Extensible Markup Language standard al Consorțiului Web (W3C) www.w3.org/TR/REC-xml
  27. 27. Extensible Markup Language o tehnologie + o familie de limbaje www.w3.org/XML/
  28. 28. Asigură inter-operabilitatea la nivel de date are suport pe orice platformă hardware/software, inclusiv în cadrul navigatoarelor Web
  29. 29. Asigură inter-operabilitatea la nivel de date procesoarele XML sunt implementate în toate limbajele de programare
  30. 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. 31. Asigură inter-operabilitatea la nivel de date recurge la Unicode – independent de codificare
  32. 32. Soluție pentru reprezentarea conținutului resurselor Web identificate de URI/IRI
  33. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 44. Multe alte limbaje la http://xml.coverpages.org/
  45. 45. Așadar, până la urmă, ce este XML?
  46. 46. XML unifică tehnologii privind: procesarea documentelor stocarea și prelucrarea tradițională a datelor accesul la Internet (Web)
  47. 47. Internet XML Baze Docu- de date mente
  48. 48. XML se pretează pentru stocarea (reprezentarea) datelor semi-structurate
  49. 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. 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. 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. 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. 53. Direcții de interes: comunicatii și interacțiune
  54. 54. Direcții de interes: comunicatii și interacțiune person-to-person instant messaging – e.g., Jabber via XMPP micro-blogging – exemplu: Twitter
  55. 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. 56. Direcții de interes: comunicatii și interacțiune computer-to-computer servicii Webaplicații hibride (mash-up-uri)
  57. 57. Twitter + Google EarthTwittEarth
  58. 58. Direcții de interes: publicare deschisă a datelor
  59. 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. 60. Direcții de interes: publicare deschisă a datelor procesare independentă de platformă/limbaj
  61. 61. Direcții de interes: publicare deschisă a datelor prezentări multiple ale conținutului, în diverse formate, pe sisteme eterogene
  62. 62. Direcții de interes: modelarea proceselor (de afaceri, mai ales)
  63. 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. 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. 65. Firefinder – folosirea interogărilor XPath în cadrul Firebug
  66. 66. Instrumente de convertire Tidy Instrumente de arhivare XMill Sisteme de gestiune a bazelor de date XML Berkeley DB XML, eXist, Sedna etc.
  67. 67. Există bune practici privind utilizarea și/sau modelarea documentelor XML?
  68. 68. Cum trebuie structurat un document XML pentru a modela (stoca) anumite date sau meta-date?
  69. 69. Recurgerea la șabloane de proiectare (design patterns)
  70. 70. definiție Pattern (șablon) regulă ce exprimă o relație dintre un context, o problemă și o soluție Christopher Alexander, 1979
  71. 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. 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. 73. folosirea șabloanelor de interacțiune
  74. 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. 75. Un șablon nu reprezintă o regulă fermă uneori nu trebuie aplicatanti-patterns
  76. 76. Este necesară adoptarea unui vocabular comun corespunzător domeniului problemei pattern language
  77. 77. Șabloane privitoare la: proiectare arhitectură analiză dezvoltare structură comportament
  78. 78. Ne interesează modelarea datelor pe baza familiei XML
  79. 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. 80. exemplu Use XML determină situația în care XML este soluția viabilă de reprezentare a informațiilor (semi-)structurate
  81. 81. exemplu Use XML reprezentări multiple: binar, CSV (Comma-Separated Values), HTML, baze de date relaționale, obiecte serializate, XML,…
  82. 82. exemplu Use XML XML poate fi o soluție adecvată atunci când: datele (conținutul) trebuie separat(e) de formatare
  83. 83. exemplu Use XML XML poate fi o soluție adecvată atunci când: datele trebuie partajate între aplicații, organizații,...
  84. 84. exemplu
  85. 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. 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. 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. 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. 89. exemplu Short Understandable Names convenții de numire: <nume_tag> <NumeTag> <numeTag>
  90. 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. 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. 92. exemplu Content Element șabloane înrudite: Head-Body Collection Element
  93. 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. 94. exemplu Envelope oferă un tip de document care va desemna un „plic” în care se vor putea stoca date XML arbitrare
  95. 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. 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. 97. exemplu Envelope exemplu tipic de utilizare: protocolul SOAP folosit la vehicularea datelor dintre servicii Web și clienți
  98. 98. exemplu Envelope
  99. 99. exemplu Role Attribute problemă: unui element îi trebuie precizat rolul (i.e. caracteristica definitorie)
  100. 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. 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. 102. exemplu Role Attribute exemple de utilizare în cadrul microformatelor www.microformats.org vezi direcția POSH (Plain Old Semantic HTML)
  103. 103. Alte șabloane reutilizarea tipurilor de documente existente: Reuse Document Type
  104. 104. Alte șabloane alegerea elementului/elementelor rădăcină: Multiple Document Types Multi Root Document Types
  105. 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. 106. Alte șabloane facilitarea extinderii: Catch-All Element Role Attribute Extensible Content Model
  107. 107. Alte șabloane asigurarea consistenței: Common Attributes Consistent Element Set
  108. 108. Alte șabloane asocierea de meta-date: Separate Metadata & Data Metadata in Separate Document Head-Body Metadata First
  109. 109. studiu de caz Modelarea datelor (de la implicit la explicit) specificarea preferințelor utilizatorului în contextul navigării pe Web
  110. 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. 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. 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. 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. 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. 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. 116. Ă

×