Pe parcursul acestui articol voi abandona, de cele mai multe ori, spiritul tehnic al expunerii – cu care unii dintre cititorii mai "vechi" ai NET Report-ului s-ar fi obişnuit – şi voi încerca să scriu o poveste: despre... Web. Sau ce va fi. Sau deja ce este. Sau...
După cum (presupun...) oricine cunoaşte (dacă nu, să ia să citească!), spaţiul World-Wide Web funcţionează în practică datorită:
unei scheme consistente de identificare a resurselor, prin intermediul identificatorilor universali de resurse (URI) – popularele "adrese Web" (sau mai inexact, după cum se poate percepe prin mass-media, "adrese Internet");
unui mecanism flexibil de transfer de date, reprezentat de protocolul HTTP (HyperText Transfer Protocol) – care stabileşte regulile comunicării dintre serverele şi clienţii Web (aceştia din urmă fiind navigatoarele, în cele mai multe situaţii);
unei descrieri logice a structurii documentelor hipertext, via limbajelor de adnotare (sau de marcare...) HTML şi XHTML (urmaşul HTML-ului).
În prezent, Web-ul a devenit fără îndoială "universul informaţiilor accesibile în reţea", conform definiţiei anticipative dată de creatorul acestuia, Tim Berners-Lee. Spaţiul WWW s-a achitat de această promisiune într-o manieră spectaculoasă, din (cel puţin) două motive.
Primul dintre ele este reprezentat de flexibilitatea şi independenţa faţă de conţinut a protocolului HTTP – care se poate adapta pentru a putea transfera orice format de document – şi, în plus, de existenţa identificatorilor universali de resurse (URI) capabili de a reprezenta legături către orice format de document.
Un al doilea motiv este faptul că selecţia naturală pare să fi favorizat câteva formate care au fost dezvoltate pentru Web în mod explicit. În peisajul de o prolifică variaţie a sintaxei, stilului, structurii şi semanticii documentelor Web, observăm adoptarea preferenţială a limbajelor SGML (Standard Generalized Markup Language), HTML (HyperText Markup Language), CSS (Cascading Style Sheets) şi XML (Extensible Markup Language). Fiecare dintre acestea aduce o strategie evoluţionară lentă, favorizând codările declarative faţă de formatele binare (de cele mai multe ori proprietare), stilurile de afişare separabile de conţinutul propriu-zis faţă de formatarea directă, marcarea declarativă faţă de cea procedurală şi semantica bine definită faţă de comportamentul operaţional.
Evoluţia Web-ului – pe care în titlul articolului mi-am permis s-o denumesc Weboluţia – se poate remarca mai ales în direcţiile următoare:
evoluţia sintaxei spre formate declarative
Primul compromis se face în privinţa optării între limbajul maşină (binar) şi limbajul natural (textual). La o primă vedere, codificarea specifică maşinii (oricare ar fi aceasta) pare mai puţin costisitoare datorită faptului că ea reflectă direct datele în memorie. Totuşi, transformarea datelor în format binar poate fi prea fragilă pentru a fi folosită pe platforme eterogene (de exemplu, reprezentarea internă a numerelor în diferitele procesoare folosite – bătaia de cap a oricărui programator de aplicaţii în reţea) şi în versiuni de software multiple. Codificarea binară poate, de asemenea, necesita mai mult spaţiu şi timp pentru împachetare şi despachetare. Fişierele text pot fi la fel de eficiente, în plus formatele textuale (chiar şi cele în forme parţial lizibile) sunt mai uşor de editat, de corectat şi de extins.
Al doilea compromis este legat de amalgamul dintre formatele declarative şi cele procedurale. Poate fi mai uşor de elaborat un analizor (iar apoi un compilator, de pildă) pentru un program care calculează numărul p decât de transmis un miliard de cifre ale sale. Limbajul TeX, bazat pe marcaje, este un exemplu edificator privind puterea oferită de formatele procedurale pentru conceperea şi procesarea documentelor, faţă de editoarele de texte folosind formate binare proprietare (e.g. Word).
În sfârşit, există un compromis între formatele specifice şi cele generice. În măsura în care refolosirea informaţiei este o preocupare critică, o importanţă chiar mai mare decât aceasta o are promovarea unei familii de gramatici înrudite. Puterea meta-limbajelor SGML şi XML este reflectată de flexibilitatea în gestionarea documentelor de toate tipurile, de la manuale şi comunicate de presă până la contracte legale şi specificaţii de proiecte, şi de posibilitatea de reutilizare a acestora în vederea producerii de cărţi, rapoarte şi ediţii electronice (pentru CD-ROM, Web, dispozitive mobile etc.) pornind de la acelaşi (aceleaşi) fişier(e) sursă, folosind marcaje declarative similare (şi, de ce să nu o recunoaştem, simple).
Există o tensiune fundamentală între performanţa, costul şi capacitatea de utilizare a strategiilor de codificare uşor lizibile de către maşină şi, respectiv, de către om. Abordarea XML găseşte un echilibru rezonabil între cele două. Facila lizibilitate pentru om implică robusteţe, iar descifrarea rapidă de către maşină implică validitate; ambele calităţi adaugă valoare informaţiei şi facilitează evoluţia documentelor în timp.
evoluţia stilului: de la formatare la foi de stiluri
De când au apărut documentele, există autori şi proiectanţi care şi-au concentrat efortul de perfecţionare tehnică şi stilistică pentru fiecare atingere de peniţă, fiecare fragment de corp de literă, fiecare imagine plasată. În măsura în care stilul generic al unei prezentări poate fi captat în vederea reutilizării ulterioare, cu atât mai multă valoare capătă design-ul şi documentul în sine. Istoria evoluţiei formatelor de documente pentru Web favorizează formatarea externă în detrimentul directivelor încapsulate tocmai cu scopul ca informaţia să poată fi reprezentată independent de stil şi viceversa.
Pe parcursul istoriei procesării computerizate a datelor, au existat numeroase abordări ale reprezentărilor orientate spre formatări interne, de la comenzile "antice" troff sau groff din Unix la directivele formatului RTF (Rich Text Format), şi la marcajele pentru fonturi din HTML (vezi de exemplu marcatorul clasic <font>). Aproape inevitabil, acestea au fost completate cu "scurtături" de formatare reutilizabile: pachete de macro-uri, rigle şi parametri pentru afişarea în navigator etc. Clădite pe această experienţă, formatele actuale de documente Web – HTML şi XML – permit ca formatarea datelor să poată fi realizată extern, prin foi de stiluri, într-o manieră comodă. Foile de stiluri în cascadă – CSS (Cascading Style Sheets) – merg mai departe şi permit compunerea unor stiluri separate, cum ar fi proprietăţile de culoare şi font, seturile de caractere, grafica şi prezentarea, similare cumva facilităţilor utilizate de vechii maeştri în tipărituri. Mai mult, controlul formatării este divizat între autor şi cititor, acesta din urmă putându-şi interpune propria sa înlănţuire de foi de stiluri, deci contribuind la prezentarea datelor, în funcţie de dorinţele sale individuale.
Stilurile nu sunt limitate la domeniul vizual – ele pot controla redarea conţinutului pentru monitoare, hârtie, audio, medii Braille, terminale mobile şi multe altele. Acest lucru este preţios îndeosebi dacă se doreşte adaptarea prezentării documentului pentru utilizatorii cu handicapuri fizice, dislexie sau pentru analfabeţi – ca şi în cazul a diverse privaţiuni de circumstanţă – utilizatori care vorbesc (toată ziua...) la telefon sau lucrează într-un mediu zgomotos. Fluxurile audio pot fi transcrise pe Web ca text pentru persoanele cu deficienţe de auz; navigatoarele audio (precum Web Galaxy, Vox Portal sau WIRE) oferă facilitatea de a citi paginile Web pentru utilizatorii care nu le pot parcurge în mod direct, în conformitate cu foile de stiluri aurale.
Cu toate că tehnologia Web actuală suportă atât formatarea internă, cât şi pe cea prin intermediul foilor de stiluri, sistemele pentru gestionarea unor cantităţi mari de informaţie de tip hipertext necesită de cele mai multe ori formatare externă pentru ca informaţia să rămână uşor navigabilă şi facil de prelucrat. Se recomandă deci separarea datelor de modul lor de prezentare.
evoluţia structurii
Consider pentru expunerea de mai jos următorul exemplu banal:
Structura unui articol de ziar – sau de revistă ca să fim mai aproape de NET Report – include un titlu, numele autorului, corpul articolului şi subsolul. Diversele formate concurente (e.g. SGML) de documente încearcă să surprindă această structură în cadrul reprezentării lor.
Unele descriu bucăţi din document
în termeni legaţi de prezentarea datelor:
proprietăţi precum italic, indentat,
stabilirea unui anumit corp de literă (font) şi aşa
mai departe. La cealaltă extremă, alte formate folosesc
termeni declarativi: titlu, adresă, intrare de la
tastatură etc. Multe alte formate se află undeva
între aceste două extreme, precum marcajele XHTML
<em>
şi <font>, în
comparaţie cu <address>
sau
<abbr>.
Alt tip de structuri declarative pentru
aplicaţiile SGML şi XML sunt definiţiile de tipuri
de documente – DTD (Document Type Definition)
– care impun documentelor valide să includă mai
multe elemente (marcaje) într-o ordine precizată (de
exemplu, "fiecare apariţie a lui
<oraş>
trebuie să fie precedată
de marcajul <adresă>
şi urmată de
<cod_poştal>
"). În prezent,
declaraţiile DTD tind a fi înlocuite de schemele XML;
acestea din urmă definesc tipurile de documente XML chiar
în XML, fără a folosi vreo altă sintaxă
specială, aşa cum se întâmpla în cazul
DTD-urilor.
Luarea unei decizii finale de-a lungul acestei
axe aduce după sine compromisuri între precizie şi
comprehensibilitate: semanticile orientate spre prezentare, mai
lejere, sunt în mod universal mai bine înţelese
(de oameni) decât cele declarative. Marcajul
<address>
a devenit parte din repertoriul clasic
HTML, însă <abstract>
(denotând
marcarea rezumatului unei lucrări) nu – poate şi
fiindcă mai multă lume îşi scrie adresa pe
Web, decât publică articole, oricare ar fi subiectul
lor. Marcarea declarativă, indicând în mod clar
rolul diverselor părţi de document, are avantajul de a
putea fi refolosită mai târziu. De exemplu, motoarele de
căutare (de pildă Google cel de 5 anişori şi
ceva...) pot atribui ponderi termenilor dintr-un rezumat
într-un mod mai semnificativ, sau pot extrage automat numele
reporterilor dintr-un set de "tăieturi din ziare" folosind un
instrument de captare "inteligentă" a informaţiei.
Vom opta, mai ales noi ce avem oarece tangenţă cu informatica, pentru descrierea structurii unui document după funcţia sa mai degrabă decât după formă. Aceasta conduce la asigurarea unui suport pentru un set extensibil de marcaje, ceea ce HTML şi CSS nu pot oferi. Evoluţia centralizată a HTML împiedică întocmirea unei liste exhaustive de marcaje răspunzând tuturor idiomurilor dorite de potenţialii autori de pagini Web (tu doreşti <succes>, altcineva <credit>, iar eu <bani>...). Un marcaj nou are în mod potenţial o sintaxă ambiguă, o semantică ambiguă şi o prezentare ambiguă (mai ales fără adăugiri de foi de stil).
Comunităţile de interese de pe Web au nevoie să-şi publice propriile definiţii uşor, proces facilitat de folosirea meta-limbajului XML. Aceste noi definiţii pot chiar să meargă mai departe de specificarea rolului fiecărui marcaj, pentru a include interpretări şi comportamente; adică pentru a suporta noi semantici. De altfel, navigatoarele Web actuale oferă suport (mai mult sau mai puţin dezvoltat) pentru documentele XML.
evoluţia semanticii
Testul suprem pentru ca un format de document să "supravieţuiască" pe Web este măsura în care conţinutul său suportă diversele tipuri de utilizări. Documentele există ca artefacte ale unor procese mai largi, precum achiziţionarea, raportarea sau dezvoltarea software-ului, iar aceste utilizări ataşează componente semantice diferitelor părţi ale documentului.
Suportul pentru semantică al unui anumit format se referă începând de la comportamentul operaţional codat hard în procesele care manipulează conţinutul şi ajungând până la a fi bine definit, adică a da definiţii larg disponibile şi documentate ale conţinutului.
Să considerăm un fişier text
constând dintr-o listă cu acţiuni planificate
pentru perioada de timp imediat următoare. Acest fişier
poate fi folosit – şi, în fapt, chiar este
utilizat de unii dintre cunoscuţii mei – drept
mini-agendă de activităţi descrise în limbaj
natural de către un utilizator – ceva de genul
"mâine la 21:33 am întâlnire de 27 de minute cu
Mărioara". O versiune HTML – codificare mai
"pretenţioasă" a informaţiilor –
cuprinzând termene-limită pentru fiecare activitate ar
putea fi analizată de un program care procesează
conţinutul şi alertează utilizatorul (eventual via
un mesaj pe telefonul mobil) în preajma acestor termene. Mai
mult, o a treia variantă a acestui fişier, în
format XML, ar putea declara o clasă de documente care să
definească în mod explicit un marcator
<agenda>
pentru datele dorite. Doar ultimul
dintre formate poate pretinde că are o semantică bine
definită, legată de documentul însuşi prin
intermediul oricărei aplicaţii separate. Această
semantică poate fi încapsulată în interiorul
altor documente XML şi interschimbată cu alte
comunităţi de utilizatori, păstrându-şi
totuşi neambiguitatea.
Limbajul XML suportă eficient ontologii ocazionale prin intermediul definiţiilor tipurilor de documente (DTD) sau al schemelor care pot fi compuse în mod dinamic şi referite prin identificatori uniformi de resurse, în acest fel descentralizând, şi prin urmare accelerând ciclul publicării şi adoptării noilor formate de documente.
În mod fundamental, ontologiile – reprezentând specificări ale unor conceptualizări – întruchipează principiul peren care afirmă faptul că sistemele autoreprezentative sau autodescriptive reduc costul unui articol. Prin stabilirea unei adrese Web (dată sintactic printr-un URI) pentru un fragment de cunoştinţe conţinând programe şi/sau informaţii, şi apoi prin partajarea acelei adrese cu alţii, autorii pun în practică procesul democratic următor: oricine din comunitatea Web poate arăta că informaţiile respective sunt interesante ("bune", "beton" sau orice alt termen la modă) prin crearea unei legături către această resursă, pentru o eventuală utilizare ulterioară. Utilizatorii nu copiază documentul iniţial, eventual operând mici modificări, pentru că ar fi prea costisitor; cel mai ieftin mod de a accesa şi propaga ideile conţinute de respectivul document este prin intermediul adresei Web, realizându-se o legătură hipertext către acel fragment de informaţie. Aceasta alimentează ciclul selecţiei naturale în reprezentarea cunoştinţelor: utilizarea determină comunitatea, care rafinează la rândul ei, permanent, ontologia comună. Astfel, o pagină Web este considerată de un motor de căutare relevantă conform interogării formulate de utilizator şi în funcţie de gradul de citare a acesteia de către alţii...
Un alt exemplu, relativ mai complex, este următorul. Să presupunem că în timp ce citiţi acest articol întâlniţi următoarea referinţă, scrisă astfel:
"PHP, programare obiectuală şi XML", Sabin Buraga, NET Report, 11 (03): 38-43 (2001)
Folosindu-vă intuiţia, aţi putea stabili înţelesul acestei referinţe, pe când un analizor digital e posibil să nu fie capabil să o facă – dacă nu credeţi, întrebaţi-i pe cei care se preocupă de tehnicile de compilare sau de lingvistica computaţională. Mai mult, din cauza diverselor convenţii de publicare, alt editor ar putea formata referinţa în maniera următoare:
S. Buraga, "PHP, programare obiectuală şi XML", NET Report, 2001, Vol. 11, Nr. 03, pp. 38-43
Până şi diferenţele minore de punctuaţie şi de notaţie pot încurca un program de calculator care încearcă să analizeze referinţa; drept rezultat, automatizarea conversiilor între diversele formate reprezentând acelaşi tip de cunoştinţe este tentantă. Utilizarea unei sintaxe fragile, având doar o sintaxă de formatare şi una operaţională, deşi are destulă semnificaţie pentru un utilizator uman, furnizează puţine informaţii pentru maşină.
Prin reformatarea referinţei utilizând marcarea prezentaţională a limbajului XHTML, referinţa devine mai accesibilă, deşi regulile reale, tacite ("cuvintele scrise italic reprezintă publicaţia") sunt invizibile:
<p>"PHP, programare obiectuală şi XML", Sabin Buraga, <i>NET Report</i>, <b>11</b> (03): 38-43 (2001)</p>
Cu toate că XHTML permite autorului o oarecare precizare a structurii, impune în acelaşi timp atât autorului cât şi cititorului să cadă de acord asupra înţelesului atributelor, a valorilor şi a modului lor de marcare. Această structură (ambiguă) bazată pe elementele de prezentare a datelor permite autorului şi cititorului să scoată în evidenţă ceea ce este important, dar reprezintă doar un stadiu incipient pe drumul către o marcare structurală mai semnificativă.
Prin reformatarea referinţei
utilizând marcarea structurală (destul de precară
şi ea) a limbajului XHTML, regulile reale de interpretare
devin ceva mai clare ("caracterele incluse într-un element
<cite>
reprezintă un titlu de
referinţă" şi "conţinutul elementului
<h3> referă numele unei publicaţii"):
<cite>PHP, programare obiectuală şi XML</cite> <h3>NET Report</h3> <h4>Sabin Buraga</h4> <ul> <li>11 (03): 38-43</li> <li>2001</li> </ul>
Utilizarea structurii de mai sus în referinţele bibliografice poate îmbunătăţi şi modul de formatare a informaţiilor.
Mergem mai departe prin reformatarea referinţelor bibliografice utilizând un document XML particularizat pentru astfel de referinţe. Astfel, regulile reale de interpretare devin foarte precise:
<bibliografie> <titlu>PHP, programare obiectuală şi XML</titlu> <revista>NET Report</revista> <autor> <prenume>Sabin</prenume> <nume>Buraga</nume> </autor> <volum>11</volum> <numar>3</numar> <an>2001</an> <pagini>38-43</pagini> </bibliografie>
Documentul din acest exemplu este bine formatat chiar în lipsa unei definiţii DTD sau a unei scheme XML. Cititorul uman(oid) poate înţelege semantica, iar maşinile pot manevra informaţiile marcate în XML foarte bine (de exemplu se pot afişa toate revistele prin parcurgerea marcajelor şi selectarea caracterelor din interiorul fiecărui element <revista>).
Acest tip de marcare permite modelului informaţional să fie mai descriptiv, astfel încât o maşină să poată analiza lucrurile pe care o comunitate umană le înţelege de la sine. Problemele sintactice – precum codificarea caracterelor şi punctuaţia – sunt definite utilizând adnotări structurate; manipularea documentelor – de exemplu restructurarea şi filtrarea – pot fi automatizate (există o sumedenie de analizoare XML), iar fiecare componentă a unui document poate fi identificată în mod precis.
Putem continua rafinarea marcării datelor, stabilind un spaţiu de nume pentru marcajele definind referinţe bibliografice (în vederea evitării ambiguităţilor), plus ataşând metadate fiecărei informaţii (de exemplu, specificând faptul că Sabin Buraga este creatorul acelui articol şi traducătorul articolului într-o altă limbă, iar drepturile de proprietate intelectuală asupra publicaţiei sunt deţinute de altcineva etc.).
Aceasta face posibilă reprezentarea cunoştinţelor pentru:
descoperirea resurselor prin furnizarea unor indicii utile motoarelor de căutare;
catalogarea computerizată a conţinutului şi relaţiilor sale cu alte date, în vederea constituirii bibliotecilor digitale;
evaluarea conţinutului pentru agregare şi filtrare;
codificarea, partajarea şi schimbul de cunoştinţe, într-o manieră inteligentă.
Se desprinde limpede motivul pentru care familia XML câştigă tot mai mult teren în domeniul Web-ului. Deşi nu există încă soluţii universale menite a satisface toate exigenţele pentru procesarea datelor XML, mai ales în ceea ce priveşte conţinutul efectiv al paginilor – ca dovadă că imensa majoritate a documentelor existente pe Web sunt scrise, în continuare, în HTML –, soluţiile bazate pe XML trebuie luate serios în considerare.
Formatul de document | Sintaxa | Stilul | Structura | Semantica |
---|---|---|---|---|
ASN.1 (Abstract Syntax Notation) | Binară | Tip-lungime-valoare | Dependentă de aplicaţie | |
Text | ASCII, Unicode,... | Linii | Limbaj natural | |
troff | Text lizibil | Directive interne | Secţiuni, pagini | Compunere |
TeX | Program lizibil | LaTeX | Secţiuni, pagini | Compunere |
PostScript | Limbaj de programare | Pagini | Desenare | |
Rich Text Format | Text opac | Directive extensibile | Caractere, paragrafe | |
Formatare HTML | Text lizibil | Directive imbricate | Prezentaţională | |
Structură HTML | Text lizibil | CSS | Declarativă | Fixă (e.g. <address> ) |
XML (Extensible Markup Language) |
Text lizibil | CSS, XSL | Declarativă | Extensibilă |
RDF (Resource Description Framework) |
Text XML | Declarativă | Scheme pentru metadate, suport pentru descrieri semantice |
Evoluţia către formatele declarative (vezi tabelul de mai sus) poate fi constatată nu numai în domeniul documentelor, ci şi în tendinţele comunităţii programatorilor. Aceleaşi forţe par să acţioneze şi în dezvoltarea succesivă a limbajelor de programare de tipul mai mult declarativ şi mai puţin operaţional: de exemplu, de la cod-maşină evoluţia a condus la limbajul de asamblare, apoi spre Pascal, C, C++, Perl, Java, Python, Pike şi C#.
Consorţiul Web – forţa motrice din spatele XML-ului – consideră că misiunea sa este aceea de a conduce evoluţia Web-ului. Deşi a împărtăşit mai multe idei comune Internetului – precum "software-ul gratuit se răspândeşte mai repede", "sistemele bazate pe text (ASCII sau Unicode) proliferează mai rapid decât cele binare" şi "protocoalele proaste imită; protocoalele bune fură" – a impus o strategie inovatoare: "autodescrierea".
Într-adevăr, Web-ul poate fi construit peste el însuşi. Identificatorii universali de resurse, formatele de date uşor de procesat de către maşină şi specificaţiile capabile de a fi interpretate de calculatoare pot fi împletite într-un sistem extensibil care asimilează orice concurenţă. În esenţă, apariţia limbajului XML în spectrul formatelor de date pentru Web pune capăt luptei asupra structurării documentelor în vederea realizării viziunii originare a creatorilor Web-ului. La ora actuală, XML reprezintă unica modalitate existentă pentru adnotarea complexă a datelor, indiferent de platformă (hard, soft, reţea, limbaj, utilizatori etc.).
De asemenea, XML este – şi încă rămâne – principala speranţă a celor care încearcă trecerea la etapa superioară, cea a Web-ului semantic, prin intermediul RDF (Resource Description Framework) – cadru, bazat tot pe XML, pentru descrierea resurselor oferind interoperabilitatea între diverse aplicaţii (i.e. agenţii Web) care realizează schimbul inteligent de informaţii. Conform creatorului Web-ului, Tim Berners-Lee, Web-ul semantic reprezintă o pânză consistentă şi logică a tuturor resurselor de pe Web, accentul punându-se pe interpretarea datelor de către maşină şi nu pe reprezentarea lor. Web-ul trebuie să fie "conştient" de el însuşi şi să nu fie doar un depozit enorm de informaţii, aşa cum este considerat a fi în prezent. Unii cercetători anticipează mai mult: spaţiul WWW va fi, poate nu peste mulţi ani, primul organism inteligent artificial al planetei. Cititorii mai tineri poate vor confirma această previziune... Sau poate că nu?
Tot în legătură cu familia de limbaje XML, înainte de final trebuie să menţionez că unul dintre paşii importanţi ai evoluţiei spaţiului WWW îl reprezintă serviciile Web bazate pe XML. Serviciile Web permit ca elemente programabile (implementate în oricare limbaj de programare) să fie plasate pe siturile Web, alţi programatori putând accesa funcţionalităţile acestor programe, în manieră distribuită şi directă, pentru orice număr potenţial de sisteme independente, prin folosirea unor standarde deschise precum XML şi HTTP. Aceasta va conduce la adoptarea unei alte viziuni privind programarea Web şi la construirea unei infrastructuri complexe – ca de exemplu Grid-ul, despre care voi discuta cu altă ocazie (urmăriţi viitoarele NET Report-uri) – pe baza căreia să se dezvolte diverse aplicaţii specifice, în domenii ca economia digitală, cercetarea ştiinţifică sau divertismentul interactiv.
S. Buraga, Tehnologii Web, Matrix Rom, Bucureşti, 2001: http://www.infoiasi.ro/~busaco/books/web.html
S. Buraga, Proiectarea siturilor Web, Polirom, Iaşi, 2002: http://www.infoiasi.ro/~design/
Rapoartele tehnice ale Consorţiului Web: http://www.w3.org/TR/
SemanticWeb.org: www.SemanticWeb.org
WebServices.org: www.WebServices.org
XML.org: www.xml.org