Linguagens de interroga§£o de dados XML XPath Helena Galhardas DEI IST

  • View
    105

  • Download
    0

Embed Size (px)

Text of Linguagens de interroga§£o de dados XML XPath Helena Galhardas DEI IST

  • Slide 1
  • Linguagens de interrogao de dados XML XPath Helena Galhardas DEI IST
  • Slide 2
  • Agenda Introduo Expresses de caminho (path expressions) XPath
  • Slide 3
  • Porqu uma linguagem de interrogao para dados SS? Essencial para dados Web Seleccionar partes de um documento Interessante ter uma linguagem de interrogao do tipo de BD para aplicar predicados aos dados, e executar re- estrutuao dos dados
  • Slide 4
  • Linguagens de interrogao para docum e ntos XML LOREL e UnQL: linguagens de consulta p/ dados semi-estruturados XML-QL: estende SQL Strudel Project - AT&T Labs XML-GL: linguagem grfica Transforma o DTD e os documentos XML em grafos XSL: conjunto de template rules W3C XQL: extenso do XSL Microsoft.... XQuery
  • Slide 5
  • Linguagem de interrogao para dados semi-estruturados Poder expressivo Capacidade de re-estruturao de dados SS Semntica precisa Composio Sada de uma interrogao pode ser usada como entrada noutra interrogao Esquema Explorar a estrutura (se existir) para verificao de tipos Manipulao de programas Interrogaes podem ser geradas automaticamente logo convm ser linguagem verbosa
  • Slide 6
  • Expresses de caminho (path expressions) Seja l 1.l 2.l 3 l n - sequncia de etiquetas de arcos, Expresso de caminho - uma interrogao simples, cujo resultado um conjunto de ns para um dado grafo de ns. resultado de l 1.l 2.l 3 l n sobre um grafo de dados um conjunto de ns v n tal que existem arestas (r,l 1,v 1 ), (v 1,l 2,v 2 ),, (v n-1, l n, v n ) no grafo de dados onde r a raz. Mas ainda no resulta num conjunto de dados semi-estruturados.
  • Slide 7
  • Exemplo db book n1 n2 n3 biblio author date title author date title paper Roux Combalusier 1976 Database Systems Smith 1999 Database Systems... book
  • Slide 8
  • Exemplo db book n1 n2 n3 biblio author date title author date title paper Roux Combalusier 1976 Database Systems Smith 1999 Database Systems... biblio.book: {n1, n2} book
  • Slide 9
  • Exemplo db book n1 n2 n3 biblio author date title author date title paper Roux Combalusier 1976 Database Systems Smith 1999 Database Systems... biblio.book.author: ns e contedo {Roux, Combalusier, Smith} book
  • Slide 10
  • Expresses regulares Sintaxe genrica: e::= l | | _ | e.e | (e) | e |e | e* | e+ | e?, Em que l varia entre as etiquetas, e sobre expresses e o conjunto vazio. Exemplo: ((s|S)ection|paragraph)(s)? Corresponde a : Section, Section, sections, Sections, paragraph, paragrahs
  • Slide 11
  • Outro exemplo biblio._*.section.([tT]itle | paragraph.*heading.*) Corresponde a qualquer caminho que comea com uma etiqueta biblio e acaba com uma etiqueta section, seguido quer por um ttulo (com possvel primeira letra maiscula) ou uma aresta paragraph seguida por uma aresta que contm a string heading. A expresso regular _* corresponde a um nmero infinito de caminhos sempre que existe um ciclo.
  • Slide 12
  • Lacunas das path expressions No constroiem ns novos No conseguem executar o equivalente a um join No conseguem testar vaores da base de dados => Linguagens de interrogao
  • Slide 13
  • Sintaxe bsica (Lorel) Select author: X From biblio.book.author X Resultado: {author: Roux, author: Combalusier, author: Smith} author Roux Combalusier author Smithq1
  • Slide 14
  • select row: X from biblio._ X where Smith in X.author {row: {author: Smith, date: 1999, title: Database Systems,...} n2 q2 author date title Smith 1999 Database Systems...
  • Slide 15
  • select author: Y from biblio._ X X.author Y, X.title Z where matches(.*(D|d)atabase.*, Z) Resultado: todos os autores de publicaes cujo ttulo contm a palavra database 1 2 3
  • Slide 16
  • XML Path Language (XPath) Recomendao W3C Linguagem declarativa para especificar caminhos nas rvores Sintaxe semelhante usada para caminhos em hierarquias de ficheiros Serve de base a outros standards do W3C: XSL Transformations (XSLT) XML Link (XLink) XML Pointer (XPointer) XML Query
  • Slide 17
  • Xpath: Definio Uma expresso Xpath, p, estabelece uma relao entre: Um n de contexto e Um n que pertence ao conjunto de respostas Exemplos: author/firstname. = self.. = parent part/*/*/subpart/../name = part/*/*[subpart]/name
  • Slide 18
  • Exemplo Addison-Wesley Serge Abiteboul Rick Hull Victor Vianu Foundations of Databases 1995 Freeman Jeffrey D. Ullman Principles of Database and Knowledge Base Systems 1998 Addison-Wesley Serge Abiteboul Rick Hull Victor Vianu Foundations of Databases 1995 Freeman Jeffrey D. Ullman Principles of Database and Knowledge Base Systems 1998
  • Slide 19
  • Modelo de dados para XPath bib book publisherauthor.. Addison-WesleySerge Abiteboul A raz O elemento raz Idntico ao modelo de dados de XQuery
  • Slide 20
  • Expresses simples /bib/book/year Resultado: 1995 1998 /bib/paper/year Resultado: empty (no existem artigos)
  • Slide 21
  • Expresses um pouco mais complicadas //author Resultado: Serge Abiteboul Rick Hull Victor Vianu Jeffrey D. Ullman /bib//first-name Resultado: Rick
  • Slide 22
  • Ns de texto /bib/book/author/text() Resultado: Serge Abiteboul Jeffrey D. Ullman Rick Hull no aparece porque tem firstname, lastname Algumas funes em XPath: text() = matches the text value node() = retorna qq. n (= * or @* or text()) name() = retorna o nome da etiqueta corrente
  • Slide 23
  • Wildcard //author/* Resultado: Rick Hull * Corresponde a qualquer elemento
  • Slide 24
  • Exemplo Addison-Wesley Serge Abiteboul Rick Hull Victor Vianu Foundations of Databases 1995 Freeman Jeffrey D. Ullman Principles of Database and Knowledge Base Systems 1998 Addison-Wesley Serge Abiteboul Rick Hull Victor Vianu Foundations of Databases 1995 Freeman Jeffrey D. Ullman Principles of Database and Knowledge Base Systems 1998
  • Slide 25
  • Ns atributo /bib/book/@price Resultado: 55 @price significa que price tem que ser um atributo
  • Slide 26
  • Qualificadores (1) /bib/book/author[firstname] Resultado: Rick Hull
  • Slide 27
  • Qualificadores (2) /bib/book/author[firstname][address[//zip][city]]/last name Result:
  • Slide 28
  • Qualificadores (3) /bib/book[@price < 60] /bib/book[author/@age < 25] /bib/book[author/text()]
  • Slide 29
  • Sumrio dos exemplos bibelemento bib *qualquer elemento /root /bibbib debaixo de root bib/paperpaper debaixo de bib bib//paperpaper bebaixo de bib, a qq profundidade //paperpaper a qualquer profundidade paper|bookum paper ou um book @priceatributo price bib/book/@priceatributo price em book, em bib db/book[@price]books que tm um atributo price db/book[@price=10]books com price igual a 10
  • Slide 30
  • A raz 1 2 bib o document element A root est acima de bib /bib = retorna o elemento documento / = returna a raz Se tivermos comentrios antes e depois de, estes tornam-se irmos de
  • Slide 31
  • Navegao usando a sintaxe completa Passo de localizao tem a sintaxe: axis :: node-test predicates Em que: Axis selecciona um conjunto de ns candidatos node-test filtra os candidatos baseado no tipo ou nome do n E os predicates so opcionais
  • Slide 32
  • Navegao Podemos navegar ao longo de 13 eixos: ancestor ancestor-or-self Attribute todos os atributos do n de contexto child descendant descendant-or-self following following-sibling namespace Parent o pai do n de contexto preceding preceding-sibling self o n de contexto, ele mesmo
  • Slide 33
  • Exemplos child::author/child:lastname = author/lastname child::author/descendant::zip = author//zip child::author/parent::* = author/.. child::author/attribute::age = author/@age E os seguintes, o que querem dizer? paper/publisher/parent::*/author /bib//address[ancestor::book] /bib//author/ancestor::*//zip
  • Slide 34
  • Mais exemplos name() = o nome do n corrente /bib//*[name()=book] o mesmo que /bib//book O que quer dizer ? /bib//*[ancestor::*[name()!=book]] Os eixos de navegao do-nos mais poder
  • Slide 35
  • Sintaxe abreviada vs sintaxe completa Sintaxe completa Sintaxe abreviada child:: nada (child eixo por omisso) attribute:: @ /descendant-or-self::node()/ // self::node(). parent::node().. [position()=i] [i] Se o caminho comea com //, ento o contexto inicial a raz.
  • Slide 36
  • Tpicos prximas aulas XQuery XSLT
  • Slide 37
  • Referncias Peter Wood, Slides on Representing and Querying Data on the Web, http://www.dcs.bbk.ac.uk/~ptw/teaching/data-on-the- web.html. Dan Suciu, Slides on The semistructured data model, CSE 590ds: Management of XML and Semistructured Data, http://www.cs.washington.edu/education/courses/cse5 90ds/01sp/ S. Abiteboul, P. Buneman, D. Suciu, Data on the Web, From Relations to Semistructured Data and XML, Morgan Kaufmann, 2000, (cap 4) www.w3.org/TR/xpath Recomendao W3C do XPath www.w3.org/TR/xpath www.w3schools.com/xpath Tutorial XPath www.w3schools.com/xpath