Upload
sabin-buraga
View
1.815
Download
0
Embed Size (px)
DESCRIPTION
Citation preview
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Tehnologii Web
Dr. SabinCorneliu BuragaFacultatea de Informatica
Universitatea “A.I.Cuza” – Iasi, Romania
http://www.infoiasi.ro/~busaco/
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Marcarea datelor pentru <Web />
Baze de date native XMLLimbajul de interogare XQuery
Detalii in [TX, 153‐177]
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Interogarea datelor XMLIntroducere
Stocarea datelor XMLDefinitii
Limbajul XQuerySisteme de manipulare a informatiilor XML
cuprins
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
In sens strict, un document XMLeste o baza (colectie) de date
viziune centrata spre documente (document centric)
intro
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Pentru managementul datelor XML,trebuie sa existe suport pentru: stocare (documente/arbori XML)
scheme (DTD, scheme XML, RELAX NG etc.)limbaje de interogare (XPath, XSLT, XQuery,...)
procesare – via API‐uri (SAX, DOM,...)
intro
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Mai trebuie asigurate: stocarea eficientamecanismele de indexaresecuritatea datelortranzactiileintegritatea dateloraccesul concurentmultiusertrigger‐eleinterogarile rapide in documente multiple...
intro
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Maniere:documente centrate pe date(datacentric documents)
viziunea centrata pe documente(documentcentric documents)
stocarea datelor XML
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Documente centrate pe date: XML folosit pentru transportul datelorDocumente XML proiectate pentru a fi eficientprocesate de calculator: structura regulata, reprezentari fine ale datelor
Exemple: orare de curse aeriene, date stiintifice, ordine de plata
Caracter structurat al datelor stocare in baze de date relationale + interschimb de date
stocarea datelor XML
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Viziunea centrata pe documente: XML utilizat pentru date destinate oamenilorExemple: carti electronice, mesaje email, documente XHTML
Caracter semistructurat al datelor(structura interna nu este atit de regulata)
Ordinea aparitiei unor elemente situate pe acelasi nivel (siblings) este, uzual, importanta
Documentele sunt concepute manual sau provin din alte formate, fara a fi stocate in baze de date clasice
stocarea datelor XML
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Practic, cele doua categorii nu pot fi distinseintotdeauna clar
stocarea datelor XML
avansatavansat
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Datele se stocheaza in baze de date relationale, orientate‐obiect ori ierarhice
Datele pot fi accesate in format XML via sisteme XMLenabledSchema DB ↔ schema XMLAdoptarea unui model obiect‐relationalXML binding
Documentele (nu datele) sint stocatein baze de date native XML ori in sistemede management al continutului (CMS‐uri)
stocarea datelor XML
avansatavansat
Modelul RHOX(Relational,
Hypertext, Object,XML)
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Baze de date native XML ≡ baze de date proiectatespecial pentru a stoca documente XML
unitatea fundamentala de stocare (logica)este documentul XML (si nu inregistrarea – record)
nu necesita folosirea unui sistem de stocare fizica
“definitii”
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Baze de date native XML
arhitectura interna poate fi bazate petext (fisier, cimp BLOB/CLOB) sau model (arbore DOM)
utilizate pentru stocarea informatiilor centratepe documente si pentru managementul datelor
semi‐structurate
“definitii”
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
NormalizareaDependente functionaleRedundanta & anomaliilecauzate de actualizarile datelor XML
Integritatea referentialaID, IDREF, key & keyref (XML Schema), XLink
ScalabilitateaOperatiile sa aiba loc in termen rezonabilsi pentru documente XML de mari dimensiuni
aspecte importante
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Utilizarea colectiilor de documentecolectie ≡ tabela (la modelul relational)ori director (la sistemul de fisiere)
Recurgerea la limbaje de interogare
Suport pentru tranzactii, locking, concurenta
Folosirea de API‐uri
facilitati
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Optimizarea accesului (roundtripping)
Accesul la date la distanta (remote data)
Suportul pentru indexare(value/structural/fulltext indexes)
facilitati
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
RDBMS vs. XMLDBS
BazeBaze de date de date relationalerelationale BazeBaze de date native XMLde date native XML
O O bazabaza de date de date relationalarelationalacontinecontine tabeletabele
O O bazabaza de date XML de date XML continecontine colectiicolectii
O O bazabaza de date de date relationalarelationalacontinecontine inregistrariinregistrari avindavindaceeasiaceeasi schemaschema
O O colectiecolectie continecontine documentedocumenteXML XML avindavind scheme scheme identiceidentice orioridiferitediferite
O O inregistrareinregistrare reprezintareprezinta oo listalistaneordonataneordonata de de valorivalori ideniden‐‐tificatetificate prinprin numenume sisi avindavind tipuritipuriaaprioripriori stabilitestabilite
Un document XML Un document XML reprezintareprezintaun un arborearbore de de nodurinoduri, , cece poatepoateinclude date semiinclude date semi‐‐structuratestructurate
O O interogareinterogare intoarceintoarce un setun setneordonatneordonat de de inregistrariinregistrari
O O interogareinterogare intoarceintoarce o seco sec‐‐ventaventa ordonataordonata de de nodurinoduri
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Scop #1Dezvoltarea unor limbaje de interogare
a continutului XML
interogare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Necesitati:Obtinerea rezultatelor in format XMLSuportul pentru procesare pe partea de serverRealizarea de operatii complexe(selectii, extractii, reductii, restructurari,...)
Suportul pentru alte standarde XML (XPath, spatii de nume, XML Schema etc.)
Suportul pentru noi tipuri de date
interogare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Precursori: WebSQL, XML‐QL, XML‐GL, XQL, UnQL, XMAS,...
Standarde: XPath 1.0/2.0:
www.w3.org/TR/xpath-datamodel/ XSLT 1.0/2.0: www.w3.org/TR/xslt20/XQuery 1.0: www.w3.org/TR/xqueryXQueryX: www.w3.org/TR/xqueryx
interogare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Model:document XML ≡ arbore compus din noduri
(conform XPath 2.0 + XSLT 2.0)
Documentul XML interogat poate avea asociatao schema (optionala)
interogare: xquery
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
O valoare (value) ≡ secventa de nodurisau de valori atomice
O secventa de noduri este ordonata, de obiceiin ordinea aparitiei acestora in document
Valorile atomice sunt cele tipice (vezi XML Schema)
interogare: xquery
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Spatii de nume ce pot fi folosite:xs (schema XML) http://www.w3.org/2001/XMLSchemaxsi (instanta de schema XML)
http://www.w3.org/2001/XMLSchema-instancexdt (tipuri de date XPath 2.0)
http://www.w3.org/2003/xpath-datatypeslocal (functii XQuery locale)
http://www.w3.org/2003/11/xquery-local-functionsxml (XML)
http://www.w3.org/XML/1998/namespace
interogare: xquery
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Pentru selectarea nodurilor, se foloseste XPathOrice expresie XPath reprezinta un program XQueryRezultatul unui program XQuery este o padure(secventa de arbori XML)
Ca la XSLT, interogarile pot fi incluse in sabloanecare sa genereze rezultatul dorit
<proiecte>{ /projects/project/* }</proiecte>
interogare: xquery
Program XQueryce contine o expresie
XQuery
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
O expresie de forma $nume este o referintala variabila nume
Variabilele pot fi folosite(si) in cadrul expresiilor XPath
Variabilele pot contine valori sau rezultateale expresiilor FLOWR
(ForLetOrderWhereResult)
interogare: xquery
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
for serveste la atasarea de valori unor variabile, in maniera iterativa (se permit si join‐uri)
let asigneaza valoarea unei expresii unei variabilewhere permite formularea de conditii (filtrari de date) asociate unei constructii for
order by specifica ordinea de selectare a valorilorreturn intoarce rezultatul unei expresii XQuery, putind include sabloane, expresii XPath, sub‐expresii FLOWR imbricate
interogare: xquery – expresii
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Exemplu
for $stud in doc("students.xml")//student where $stud/year = 2 return $stud/name
echivalent cu fraza SQL
select stud.name from students stud where stud.year = 2
interogare: xquery – expresii
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Se poate recurge la facilitatile XPath 2.0:cuantificatori (all si some),
expresii conditionale (if...then...else), operatori (cei de la XPath 2.0 + suplimentari), functii (predefinite ori scrise de utilizator)
Nu sunt acceptate toate axele XPath
interogare: xquery – expresii
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Pot fi declarate tipuri de date(cele oferite de XML Schema)pentru valorile intoarse
for $contor as xs:integer in 1 to 5return $contor * 3
interogare: xquery – expresii
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Erori & depanare: error(), trace()Accesori de date: node-name(), string(), data()Numerice: abs(), ceiling(), round(), count(), avg(),
max(), min(), sum(),...Siruri de caractere: compare(), concat(), string-join(),
substring(), string-length(), upper-case(), translate(),escape-uri(), contains(), starts-with(), ends-with(),substring-before(), substring-after(),...
Expresii regulate: matches(), replace(), tokenize()
interogare: xquery – functii uzuale
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Data & timp: duration-equal(), time-less-than()...Noduri: name(), local-name(), namespace-uri(), root()Secvente: zero-or-one(), one-or-more(), exactly-one(), index-of(),
empty(), exists(), distinct-values(), remove(), insert-before(), reverse(), unordered(), deep-equal(),...
Context: position(), last(), current-dateTime(),...Generare de secvente: doc(), collection()
Detalii la http://www.w3.org/TR/xpath-functions/ Pot fi folosite si functii externe
interogare: xquery – functii uzuale
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
for $proj in doc ("http://www.infoiasi.ro/projects.xml")/projects/*
where some $projid in $proj/@idsatisfies ($projid = $stud/project)
return<project class="{ $proj/@class }">
{ $proj/title }{ $proj/desc }
</project>
interogare: xquery – exemple
Generareaaltei structuri
XML
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
(: Listeaza ca document XHTML toti studentiiale caror nume contin 'Ping' si se termina cu 'uin‘ :)
<div style="font-size: 14pt">{for $stud in doc ("students.xml")//studentlet $e := $stud/name[ contains (string (.), "Ping")
and ends-with (string (.), "uin") ]where exists ($e)return<p><em> { $stud/name/text() } </em> cu proiectul<span style="color: blue"> { $stud/project/text() } </span></p>
}</div>
interogare: xquery – exemple
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Modularizare via fisiere‐modul (.xqm) si functii‐utilizator
module namespace utils="http://urn:infoiasi.ro:xdb-utils";(: Declara o secventa de nume de luni :)declare variable $utils:months { ("Ian", "Feb", "Mar", "Apr", "Mai", "Iun",
"Iul", "Aug", "Sep", "Oct", "Nov", "Dec")};(: Transforma data in forma dd Mmm yyyy :)declare function utils:format-date-RO ($date as xs:dateTime)
as xs:string {string-join ((
day-from-date ($date),item-at ($utils:months, month-from-date ($date)),
year-from-date ($date)), " ")};
interogare: xquery – exemple
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Utilizarea functiei definite anterior:
import module namespaceutils="http://urn:infoiasi.ro:xdb-utils";
declare variable $data external; <data>{ utils:format-date-RO ($data) } </data>
interogare: xquery – exemple
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
(: Autentificare prin nume de cont & parola preluatedin sesiunea HTTP curenta; intoarce o pereche(user, password) sau o secventa vida in caz de esec :)
declare function main:checkUser() as xs:string* {let $user := request:get-session-attribute ("user"),
$pass := request:get-session-attribute ("password"),$login := xdb:authenticate ("xmldb:exist:///db",
$user, $pass)return
if ($login) then($user, $pass)
else()
};
interogare: xquery – exemple
Se folosesc functiiexterne – aici, oferitede serverul eXist
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Limbajul XQuery in varianta actuala nu oferasuport pentru actualizarea datelor XML
(operatii CRUD)
XUpdate – in curs de standardizare,dar suportat deja de o serie de aplicatii
Viitoarele versiuni ale XQuery vor includesi posibilitati de actualizare a datelor
interogare: alte limbaje
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Pentru tipuri particulare de documente,pot fi folosite limbaje de interogare speciale
exemplu: SPARQL pentru RDF
interogare: alte limbaje
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
SPARQLStandard W3C:
www.w3.org/TR/rdfsparqlquery/
Inspirat din RDQL (oferit de Jena, RAP, Redland etc.)
Limbaj descriptiv pentru realizarea de interogari pe baza potrivirilor de sabloane referitoare la triple RDF
interogare: alte limbaje
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
SPARQLUn sablon specifica variabile indicind date ce vor fi
returnate in urma realizarii interogarii: ?subiect ?predicat ?obiect .
Exemplu: lista persoanelor inter‐conectate via foaf:knows se obtine cu:
?persoana foaf:knows ?alta_persoana .
Sabloanele pot fi combinate pentru a forma sabloane mai complexe sabloane de tip graf (graph patterns)
interogare: alte limbaje
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
PREFIX foaf: <http://xmlns.com/foaf/0.1/>PREFIX s: <http://infoiasi.ro/varste#>SELECT ?nume ?adresa ?aniWHERE {?pers foaf:name ?nume .?pers s:ani ?ani . FILTER (?ani < 33) .
OPTIONAL { ?pers foaf:mbox ?adresa . }}ORDER BY ?ani DESC (?nume)LIMIT 10
interogare: alte limbaje
Optional, se ofera si adresa de email
Informatii despre primele 10 persoane cu virsta < 33(extrase dintr‐un document FOAF)
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Instrumente, aplicatii & implementari (exemple):Editare & depanare: <oXygen />, Stylus StudioSuport pentru baze de date native XML: Berkeley DB XML, eXist, Mark Logic’s CIS, Sedna
Sisteme relationale XMLenabled: Oracle, MS SQL Server
API‐uri – e.g., Saxon (Java, .NET),XML::XQuery (modul Perl), XQuery API for Java (XQJ) – JSR 225
interogare: implementari
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Scop #2:Implementarea unor sisteme de management
al informatiilor XML
manipulare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Middleware:DB2XML, DBIx::XML, XDBC (XML DataBase Connectivity)
Sisteme de baze de date native XML:Berkeley DB XML, DBDOM, eXist, Tamino, XDB, Xindice,...
Servere (suportind) XML:AxKit, Enhydra, WebObjects
Servere XMLenabled: DB2 Information Integrator, MS SQL, Oracle,…
manipulare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Motoare de interogare XML
Conectoare (XML data binding)
Sisteme de management al continutului:Docato, Dynabase, Frontier, iENGINE, Mark Logic’s CIS,
Prowler, Syncato, UltraXML,...
API‐uri: Persistent DOM (PDOM), XML:DB, XQJ
manipulare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Integrarea datelor semi‐structurate:date privitoare la afaceri
“Get a coherent view of the mess in the back office”(Michael Champion)
analiza cererilor de plata
productia de stiri (online)
date financiare
manipulare: utilizari
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Integrarea datelor semi‐structurate:informatii privitoare la transport (aerian)
industrii: medicala, de divertisment,...
suportul acordat clientilor(in contextul CRM – Client Relationship Management)
informatii din domeniul legal
manipulare: utilizari
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Necesitatea suportului pentru tranzactiistocare
cozi de mesajearhive
meta‐datedepozite
manipulare: utilizari
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Elsevier Sciencepeste 2 TB de informatii
>5 mil. articole, >60 mil. referinte + rezumate,>1000 carti,...Mark Logic’s CIS
Oxford University Pressplatforma online de publicare,
continutul stocat in format XML, facilitati de cautareMark Logic’s CIS
manipulare: exemple
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Autodeskmanuale (HTML, PDF, CHM,...) in >30 de limbi
X‐Hive/DB
Las Vegas Sun>10 GB (peste 750000 doc. XML, imagini si doc. PDF)
FDX XML Server
US Navypeste 100 mii volume tehnice
Tamino
manipulare: exemple
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Interogarea datelor XMLIntroducere
Stocarea datelor XMLDefinitii
Limbajul XQuerySisteme de manipulare a informatiilor XML
rezumat
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
??