• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Semantic Web: baze de date native XML (laborator)
 

Semantic Web: baze de date native XML (laborator)

on

  • 4,829 views

O prezentare privitoare la bazele de date native XML, in contextul Web-ului semantic.

O prezentare privitoare la bazele de date native XML, in contextul Web-ului semantic.

Statistics

Views

Total Views
4,829
Views on SlideShare
4,790
Embed Views
39

Actions

Likes
1
Downloads
65
Comments
0

3 Embeds 39

http://www.slideshare.net 34
http://www.health.medicbd.com 3
http://health.medicbd.com 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Semantic Web: baze de date native XML (laborator) Semantic Web: baze de date native XML (laborator) Presentation Transcript

    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> Web semantic Dr. Sabin­Corneliu Buraga Facultatea de Informatica Universitatea “A.I.Cuza” – Iasi, Romania http://www.infoiasi.ro/~busaco/ Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> Marcarea datelor pentru <Web /> Baze de date native XML Limbajul de interogare XQuery Detalii in [TX, 153‐177] Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> cuprins Interogarea datelor XML Introducere Stocarea datelor XML Definitii Limbajul XQuery Sisteme de manipulare a informatiilor XML Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> intro In sens strict, un document XML este o baza (colectie) de date viziune centrata spre documente (document centric) Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> intro 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,...) Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> intro Mai trebuie asigurate:  stocarea eficienta mecanismele de indexare securitatea datelor tranzactiile integritatea datelor accesul concurent multi­user trigger‐ele interogarile rapide in documente multiple ... Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> stocarea datelor XML Maniere: documente centrate pe date (data­centric documents) viziunea centrata pe documente (document­centric documents) Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> stocarea datelor XML Documente centrate pe date:  XML folosit pentru transportul datelor Documente XML proiectate pentru a fi eficient procesate 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 Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> stocarea datelor XML Viziunea centrata pe documente:  XML utilizat pentru date destinate oamenilor Exemple: carti electronice, mesaje e­mail,  documente XHTML Caracter semi­structurat 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 Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> stocarea datelor XML Practic, cele doua categorii nu pot fi distinse intotdeauna clar Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> stocarea datelor XML Datele se stocheaza in baze de date  relationale, orientate‐obiect ori ierarhice Datele pot fi accesate in format XML  Modelul RHOX (Relational,  via sisteme XML­enabled Hypertext, Object, Schema DB ↔ schema XML XML) Adoptarea unui model obiect‐relational XML binding Documentele (nu datele) sint stocate in baze de date native XML ori in sisteme de management al continutului (CMS‐uri) Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> “definitii” Baze de date native XML ≡ baze de date proiectate special 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 Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> “definitii” Baze de date native XML arhitectura interna poate fi bazate pe text (fisier, cimp BLOB/CLOB) sau model (arbore DOM) utilizate pentru stocarea informatiilor centrate pe documente si pentru managementul datelor semi‐structurate Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> aspecte importante Normalizarea Dependente functionale Redundanta & anomaliile cauzate de actualizarile datelor XML Integritatea referentiala ID, IDREF, key & keyref (XML Schema), XLink Scalabilitatea Operatiile sa aiba loc in termen rezonabil si pentru documente XML de mari dimensiuni Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> facilitati Utilizarea colectiilor de documente colectie ≡ tabela (la modelul relational) ori director (la sistemul de fisiere) Recurgerea la limbaje de interogare Suport pentru tranzactii, locking, concurenta Folosirea de API‐uri Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> facilitati Optimizarea accesului (round­tripping) Accesul la date la distanta (remote data) Suportul pentru indexare (value/structural/full­text indexes) Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> RDBMS vs. XMLDBS Baze de date relationale Baze de date native XML O baza de date relationala O baza de date XML  contine tabele contine colectii O baza de date relationala O colectie contine documente contine inregistrari avind XML avind scheme identice ori aceeasi schema diferite O inregistrare reprezinta o lista Un document XML reprezinta neordonata de valori iden‐ un arbore de noduri, ce poate tificate prin nume si avind tipuri include date semi‐structurate a­priori stabilite O interogare intoarce un set O interogare intoarce o sec‐ neordonat de inregistrari venta ordonata de noduri Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> interogare Scop #1 Dezvoltarea unor limbaje de interogare a continutului XML Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> interogare Necesitati: Obtinerea rezultatelor in format XML Suportul pentru procesare pe partea de server Realizarea 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 Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> interogare 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/xquery XQueryX: www.w3.org/TR/xqueryx Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> interogare: xquery Model: document XML ≡ arbore compus din noduri (conform XPath 2.0 + XSLT 2.0) Documentul XML interogat poate avea asociata o schema (optionala) Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> interogare: xquery O valoare (value) ≡ secventa de noduri sau de valori atomice O secventa de noduri este ordonata, de obicei in ordinea aparitiei acestora in document Valorile atomice sunt cele tipice (vezi XML Schema) Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> interogare: xquery Spatii de nume ce pot fi folosite: xs (schema XML) http://www.w3.org/2001/XMLSchema xsi (instanta de schema XML)  http://www.w3.org/2001/XMLSchema-instance xdt (tipuri de date XPath 2.0) http://www.w3.org/2003/xpath-datatypes local (functii XQuery locale)  http://www.w3.org/2003/11/xquery-local-functions xml (XML) http://www.w3.org/XML/1998/namespace Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> interogare: xquery Pentru selectarea nodurilor, se foloseste XPath Orice expresie XPath reprezinta un program XQuery Rezultatul unui program XQuery este o padure (secventa de arbori XML) Ca la XSLT, interogarile pot fi incluse in sabloane care sa genereze rezultatul dorit <proiecte> { /projects/project/* } Program XQuery ce contine o expresie </proiecte> XQuery Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> interogare: xquery O expresie de forma $nume este o referinta la variabila nume Variabilele pot fi folosite (si) in cadrul expresiilor XPath Variabilele pot contine valori sau rezultate ale expresiilor FLOWR (For­Let­Order­Where­Result) Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> interogare: xquery – expresii for serveste la atasarea de valori unor variabile,  in maniera iterativa (se permit si join‐uri) let asigneaza valoarea unei expresii unei variabile where permite formularea de conditii (filtrari de date)  asociate unei constructii for order by specifica ordinea de selectare a valorilor return intoarce rezultatul unei expresii XQuery,  putind include sabloane, expresii XPath,  sub‐expresii FLOWR imbricate Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> interogare: xquery – expresii 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 Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> interogare: xquery – expresii 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 Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> interogare: xquery – expresii Pot fi declarate tipuri de date (cele oferite de XML Schema) pentru valorile intoarse for $contor as xs:integer in 1 to 5 return $contor * 3 Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> interogare: xquery – functii uzuale 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() Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> interogare: xquery – functii uzuale 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 Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> interogare: xquery – exemple for $proj in doc (http://www.infoiasi.ro/projects.xml)/projects/* where some $projid in $proj/@id satisfies ($projid = $stud/project) return Generarea <project class={ $proj/@class }> altei structuri { $proj/title } XML { $proj/desc } </project> Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> interogare: xquery – exemple (: Listeaza ca document XHTML toti studentii ale caror nume contin 'Ping' si se termina cu 'uin‘ :) <div class=stud> { for $stud in doc (students.xml)//student let $e := $stud/name[ contains (string (.), Ping) and ends-with (string (.), uin) ] where exists ($e) return <p><span class=name> { $stud/name/text() } </span> cu proiectul <span class=title> { $stud/project/text() } </span></p> } </div> Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> interogare: xquery – exemple (: Fibonacci recursiv – dupa Chris Wallace, 2008 :) declare function s:fib-rec ($n as xs:integer) as xs:integer? { if ($n < 0) then () else if ($n = 0) then 0 else if ($n = 1) then 1 else s:fib-rec ($n - 1) + s:fib-rec ($n - 2) }; A se consulta si http://en.wikibooks.org/wiki/XQuery/ Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> interogare: xquery – exemple 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)), ) }; Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> interogare: xquery – exemple Utilizarea functiei definite anterior: import module namespace utils=http://urn:infoiasi.ro:xdb-utils; declare variable $data external; <data> { utils:format-date-RO ($data) } </data> Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> interogare: xquery – exemple (: Autentificare prin nume de cont & parola preluate din 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 Se folosesc functii ($user, $pass) externe – aici, oferite else de serverul eXist () }; Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> interogare: alte limbaje Limbajul XQuery in varianta actuala nu ofera suport pentru actualizarea datelor XML (operatii CRUD – Create, Read, Update, Delete) XUpdate – in curs de standardizare, dar suportat deja de o serie de aplicatii www.w3.org/TR/xquery‐update‐10/ Viitoarele versiuni ale XQuery vor include si posibilitati de actualizare a datelor Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> interogare: alte limbaje Pentru tipuri particulare de documente, pot fi folosite limbaje de interogare speciale exemplu: SPARQL pentru RDF Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> interogare: implementari Instrumente, aplicatii & implementari (exemple): Editare & depanare: <oXygen />, Stylus Studio Suport pentru baze de date native XML:  Berkeley DB XML, eXist, Mark Logic’s CIS, Sedna Sisteme relationale XML­enabled:  Oracle, MS SQL Server API‐uri – e.g., Saxon (Java, .NET), XML::XQuery (modul Perl),  XQuery API for Java (XQJ) – JSR 225 Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> manipulare Scop #2: Implementarea unor sisteme de management al informatiilor XML Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> manipulare 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 XML­enabled:  DB2 Information Integrator, MS SQL, Oracle,… Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> manipulare 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 Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> manipulare: utilizari 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 Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> manipulare: utilizari 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 Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> manipulare: utilizari Necesitatea suportului pentru tranzactii stocare cozi de mesaje arhive meta‐date depozite Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> manipulare: exemple Elsevier Science peste 2 TB de informatii >5 mil. articole, >60 mil. referinte + rezumate, >1000 carti,... Mark Logic’s CIS Oxford University Press platforma online de publicare, continutul stocat in format XML, facilitati de cautare Mark Logic’s CIS Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> manipulare: exemple Autodesk manuale (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 Navy peste 100 mii volume tehnice Tamino Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> rezumat Interogarea datelor XML Introducere Stocarea datelor XML Definitii Limbajul XQuery Sisteme de manipulare a informatiilor XML Dr. Sabin Buraga http://www.purl.org/net/busaco
    • <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> ? Dr. Sabin Buraga http://www.purl.org/net/busaco