1 / 37

Linguagens de interrogação de dados XML XPath

Linguagens de interrogação de dados XML XPath. Helena Galhardas DEI IST. Agenda. Introdução Expressões de caminho ( path expressions ) XPath. Porquê uma linguagem de interrogação para dados SS?. Essencial para dados Web Seleccionar partes de um documento

mattox
Download Presentation

Linguagens de interrogação de dados XML XPath

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Linguagens de interrogação de dados XMLXPath Helena Galhardas DEI IST

  2. Agenda • Introdução • Expressões de caminho (path expressions) • XPath

  3. Porquê uma linguagem de interrogação para dados SS? • Essencial para dados Web • Seleccionar partes de um documento • Interessante ter uma linguagem de interrogação do tipo de BD para aplicar predicados aos dados, e executar re-estrutuação dos dados

  4. Linguagens de interrogação para documentos XML • LOREL e UnQL: • linguagens de consulta p/ dados semi-estruturados • XML-QL: estende SQL • Strudel Project - AT&T Labs • XML-GL: linguagem gráfica • Transforma o DTD e os documentos XML em grafos • XSL: conjunto de template rules – W3C • XQL: extensãodo XSL – Microsoft • .... • XQuery

  5. Linguagem de interrogação para dados semi-estruturados • Poder expressivo • Capacidade de re-estruturação de dados SS • Semântica precisa • Composição • Saída de uma interrogação pode ser usada como entrada noutra interrogação • Esquema • Explorar a estrutura (se existir) para verificação de tipos • Manipulação de programas • Interrogações podem ser geradas automaticamente logo convém ser linguagem verbosa

  6. Expressões de caminho (path expressions) Seja l1.l2.l3…ln - sequência de etiquetas de arcos, Expressão de caminho - é uma interrogação simples, cujo resultado é um conjunto de nós para um dado grafo de nós. • resultado de l1.l2.l3…ln sobre um grafo de dados é um conjunto de nós vn tal que existem arestas (r,l1,v1), (v1,l2,v2),…, (vn-1, ln, vn) no grafo de dados onde r é a raíz. • Mas ainda não resulta num conjunto de dados semi-estruturados.

  7. Exemplo Roux author Combalusier author date 1976 n1 book biblio db title Database Systems book author n2 Smith date paper 1999 title n3 Database Systems ...

  8. Exemplo Roux author Combalusier author date 1976 n1 book biblio db title Database Systems book author n2 Smith date paper 1999 title n3 Database Systems ... biblio.book: {n1, n2}

  9. Exemplo Roux author Combalusier author date 1976 n1 book biblio db title Database Systems book author n2 Smith paper date 1999 title n3 Database Systems ... biblio.book.author: nós e conteúdo {“Roux”, “Combalusier”, “Smith”}

  10. Expressões regulares • Sintaxe genérica: e::= l |  | _ | e’.’e | ‘(‘e’)’ | e ’|’e | e’*’ | e’+’ | e’?’ , Em que l varia entre as etiquetas, e sobre expressões e  é o conjunto vazio. • Exemplo: • ((s|S)ection|paragraph)(s)? Corresponde a : • Section, Section, sections, Sections, paragraph, paragrahs

  11. Outro exemplo biblio._*.section.(“[tT]itle” | paragraph”.*heading.*”) Corresponde a qualquer caminho que começa com uma etiqueta biblio e acaba com uma etiqueta section, seguido quer por um título (com possível primeira letra maiúscula) ou uma aresta paragraph seguida por uma aresta que contém a string heading. • A expressão regular _* corresponde a um número infinito de caminhos sempre que existe um ciclo.

  12. Lacunas das path expressions • Não constroiem nós novos • Não conseguem executar o equivalente a um join • Não conseguem testar vaores da base de dados => Linguagens de interrogação

  13. Sintaxe básica (Lorel) Select author: X From biblio.book.author X Resultado: {author: “Roux”, author: “Combalusier”, author: “Smith”} Roux author Combalusier author author q1 Smith

  14. select row: X from biblio._ X where “Smith” in X.author {row: {author: “Smith”, date: 1999, title: “Database Systems”,...} author n2 Smith date q2 1999 title ... Database Systems

  15. select author: Y from biblio._ X X.author Y, X.title Z where matches(“.*(D|d)atabase.*”, Z) Resultado: todos os autores de publicações cujo título contém a palavra “database” 3º 1º 2º

  16. XML Path Language (XPath) • Recomendação 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

  17. Xpath: Definição • Uma expressão Xpath, p, estabelece uma relação 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

  18. Exemplo <bib><book> <publisher> Addison-Wesley </publisher> <author> Serge Abiteboul </author> <author> <first-name> Rick </first-name> <last-name> Hull </last-name> </author> <author> Victor Vianu </author> <title> Foundations of Databases </title> <year> 1995 </year></book><bookprice=“55”> <publisher> Freeman </publisher> <author> Jeffrey D. Ullman </author> <title> Principles of Database and Knowledge Base Systems </title> <year> 1998 </year></book> </bib>

  19. bib Modelo de dados para XPath A raíz O elemento raíz book book publisher author . . . . Idêntico ao modelo de dados de XQuery Addison-Wesley Serge Abiteboul

  20. Expressões simples /bib/book/year Resultado: <year> 1995 </year> <year> 1998 </year> /bib/paper/year Resultado: empty (não existem artigos)

  21. Expressões um pouco mais complicadas //author Resultado:<author> Serge Abiteboul </author> <author> <first-name> Rick </first-name> <last-name> Hull </last-name> </author> <author> Victor Vianu </author> <author> Jeffrey D. Ullman </author> /bib//first-name Resultado: <first-name> Rick </first-name>

  22. Nós de texto /bib/book/author/text() Resultado: Serge Abiteboul Jeffrey D. Ullman Rick Hull não aparece porque tem firstname, lastname Algumas funções em XPath: text() = matches the text value node() = retorna qq. nó (= * or @* or text()) name() = retorna o nome da etiqueta corrente

  23. Wildcard //author/* Resultado: <first-name> Rick </first-name> <last-name> Hull </last-name> * Corresponde a qualquer elemento

  24. Exemplo <bib><book> <publisher> Addison-Wesley </publisher> <author> Serge Abiteboul </author> <author> <first-name> Rick </first-name> <last-name> Hull </last-name> </author> <author> Victor Vianu </author> <title> Foundations of Databases </title> <year> 1995 </year></book><bookprice=“55”> <publisher> Freeman </publisher> <author> Jeffrey D. Ullman </author> <title> Principles of Database and Knowledge Base Systems </title> <year> 1998 </year></book> </bib>

  25. Nós atributo /bib/book/@price Resultado: “55” @price significa que price tem que ser um atributo

  26. Qualificadores (1) /bib/book/author[firstname] Resultado: <author> <first-name> Rick </first-name> <last-name> Hull </last-name> </author>

  27. Qualificadores (2) /bib/book/author[firstname][address[//zip][city]]/lastname Result: <lastname> … </lastname> <lastname> … </lastname>

  28. Qualificadores (3) /bib/book[@price < “60”] /bib/book[author/@age < “25”] /bib/book[author/text()]

  29. Sumário dos exemplos bib elemento 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|book um paper ou um book @price atributo price bib/book/@price atributo price em book, em bib db/book[@price]books que têm um atributo price db/book[@price=’10’]books com price igual a 10

  30. A raíz • <bib> <paper> 1 </paper> <paper> 2 </paper> </bib> • bib é o “document element” • A “root” está acima de bib • /bib = retorna o elemento documento • / = returna a raíz • Se tivermos comentários antes e depois de <bib>, estes tornam-se irmãos de <bib>

  31. Navegação usando a sintaxe completa • Passo de localização tem a sintaxe: axis :: node-test predicates Em que: • Axis selecciona um conjunto de nós candidatos • node-test filtra os candidatos baseado no tipo ou nome do nó • E os predicates são opcionais

  32. Navegação • 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

  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

  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 navegação dão-nos mais poder

  35. Sintaxe abreviada vs sintaxe completa Sintaxe completa Sintaxe abreviada child:: nada (child eixo por omissão) attribute:: @ /descendant-or-self::node()/ // self::node() . parent::node() .. [position()=i] [i] • Se o caminho começa com //, então o contexto inicial é a raíz.

  36. Tópicos próximas aulas • XQuery • XSLT

  37. Referências • 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/cse590ds/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 Recomendação W3C do XPath • www.w3schools.com/xpath Tutorial XPath

More Related