SlideShare a Scribd company logo
1 of 50
Download to read offline
<?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

More Related Content

More from Sabin Buraga

Web 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturaleWeb 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturaleSabin Buraga
 
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebWeb 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebSabin Buraga
 
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie WebWeb 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie WebSabin Buraga
 
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Sabin Buraga
 
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...Sabin Buraga
 
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object ModelWeb 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object ModelSabin Buraga
 
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...Sabin Buraga
 
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Sabin Buraga
 
Web 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma RESTWeb 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma RESTSabin Buraga
 
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...Sabin Buraga
 
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...Sabin Buraga
 
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţialeWeb 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţialeSabin Buraga
 
STAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor WebSTAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor WebSabin Buraga
 
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţialeSTAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţialeSabin Buraga
 
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.Sabin Buraga
 
STAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.jsSTAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.jsSabin Buraga
 
STAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului WebSTAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului WebSabin Buraga
 
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uriSTAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uriSabin Buraga
 
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScriptSTAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScriptSabin Buraga
 
STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5Sabin Buraga
 

More from Sabin Buraga (20)

Web 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturaleWeb 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturale
 
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebWeb 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
 
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie WebWeb 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
 
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
 
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
 
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object ModelWeb 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
 
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
 
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
 
Web 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma RESTWeb 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma REST
 
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
 
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
 
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţialeWeb 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
 
STAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor WebSTAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor Web
 
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţialeSTAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
 
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
 
STAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.jsSTAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.js
 
STAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului WebSTAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului Web
 
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uriSTAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
 
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScriptSTAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
 
STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5
 

Semantic Web: baze de date native XML (laborator)

  • 1. <?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
  • 2. <?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
  • 3. <?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
  • 4. <?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
  • 5. <?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
  • 6. <?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
  • 7. <?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
  • 8. <?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
  • 9. <?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
  • 10. <?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
  • 11. <?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
  • 12. <?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
  • 13. <?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
  • 14. <?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
  • 15. <?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
  • 16. <?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
  • 17. <?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
  • 18. <?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
  • 19. <?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
  • 20. <?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
  • 21. <?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
  • 22. <?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
  • 23. <?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
  • 24. <?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
  • 25. <?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
  • 26. <?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
  • 27. <?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
  • 28. <?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
  • 29. <?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
  • 30. <?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
  • 31. <?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
  • 32. <?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
  • 33. <?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
  • 34. <?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
  • 35. <?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
  • 36. <?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
  • 37. <?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
  • 38. <?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
  • 39. <?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
  • 40. <?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
  • 41. <?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
  • 42. <?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
  • 43. <?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
  • 44. <?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
  • 45. <?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
  • 46. <?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
  • 47. <?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
  • 48. <?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
  • 49. <?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
  • 50. <?xml version=“1.0” ?> Semantic Web <curs desc=“…” /> ? Dr. Sabin Buraga http://www.purl.org/net/busaco