linguagens de interrogação de dados xml - xpath · 1.l2.l3…ln sobre um grafo de dados: é um...

35
Linguagens de interrogação de dados XML - XPath Gestão e Tratamento de Informação DEI IST

Upload: trinhkhanh

Post on 24-May-2018

221 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

Linguagens de interrogação de dados XML - XPath

Gestão e Tratamento de InformaçãoDEI IST

Page 2: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

Agenda

Introdução Expressões de caminho (path expressions) XPath

Page 3: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

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-estruturação dos dados

Page 4: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

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

XSLT: conjunto de template rules – W3C XQL: extensão do XSL – Microsoft + W3C XQuery ….

Page 5: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

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 em programas Interrogações podem ser geradas automaticamente

Page 6: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

Expressões de caminho (path expressions)

Seja l1.l2.l3…ln - sequência de etiquetas de arcos,

Expressão de caminho (path expression) - é uma interrogação simples, cujo resultado é um conjunto de nós de um dado grafo.

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 é um conjunto de dados semi-estruturados.

Page 7: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

Exemplo

db

bookn1

n2

n3

biblio

author

author

date

title

authordate

title

paper

Roux

Combalusier

1976

Database Systems

Smith

1999

Database Systems...

book

Page 8: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

Exemplo

db

bookn1

n2

n3

biblio

author

author

date

title

authordate

title

paper

Roux

Combalusier

1976

Database Systems

Smith

1999

Database Systems...

biblio.book: {n1, n2}

book

Page 9: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

Exemplo

db

book n1

n2

n3

biblio

author

author

date

title

author

date

title

paper

Roux

Combalusier

1976

Database Systems

Smith

1999

Database Systems...

biblio.book.author: nós e conteúdo {“Roux”, “Combalusier”, “Smith”}

book

Page 10: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

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

Page 11: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

Outro exemplo

biblio._*.section.([tT]itle | paragraph.*heading)

Corresponde a qualquer caminho que começa com a 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 cadeia de caracteres heading.

A expressão regular _* corresponde a um número infinito de caminhos sempre que existe um ciclo.

Page 12: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

Lacunas das path expressions Não constroiem nós novos Não conseguem executar o equivalente a um

join Não conseguem testar valores da base de

dados

=> Linguagem de interrogação é necessária

Page 13: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

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 Query (XQuery)

Page 14: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

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

Page 15: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

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><book price=“55”> <publisher> Freeman </publisher> <author> Jeffrey D. Ullman </author> <title> Principles of Database and Knowledge Base Systems </title> <year> 1998 </year></book>

</bib>

<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><book price=“55”> <publisher> Freeman </publisher> <author> Jeffrey D. Ullman </author> <title> Principles of Database and Knowledge Base Systems </title> <year> 1998 </year></book>

</bib>

Page 16: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

Modelo de dados para XPath

bib

book book

publisher author . . . .

Addison-Wesley Serge Abiteboul

A raíz

O elemento raíz

Page 17: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

Expressão XPathPode ser:- Expressão absoluta: começa com ‘/’, é seguida por uma

expressão relativa, e é avaliada começando pelo nó raiz- Expressão relativa: sequência de passos de localização

separados por ‘/’.

Passo de localização pode ser:

- Vazio (//) : procura todos os descendentes de cada nó no contexto

- NomeElemento [predicados] : procura todos os elementos filho de cada nó no contexto que têm o nome dado

- @nomeAtributo [predicados] : procura o nó atributo de cada nó no contexto que tem o nome dado

- Predicados: filtra os nós que são encontrados; compreendem: exps booleanas, exps numéricas, exps com um conjunto de nós, funções sobre um cjto de nós.

Page 18: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

Expressões simples

/bib/book/yearResultado: <year> 1995 </year> <year> 1998 </year>

/bib/paper/yearResultado: empty (não existem artigos)

XML

Page 19: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

Expressões um pouco mais complicadas//authorSignificado: todos os elementos autor que são

descendentes da raízResultado:<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-nameSignificado: “first-name” debaixo de “bib” a qualquer

profundidadeResultado: <first-name> Rick </first-name>

Page 20: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

Nós de texto

/bib/book/author/text()Significado: os textos debaixo de todos os autoresResultado: Serge Abiteboul Jeffrey D. Ullman

Rick Hull não aparece porque tem firstname, lastname

Algumas funções em XPath:text() = retorna o valor textualnode() = retorna qq. nó (= * or @* or text())name() = retorna o nome da etiqueta corrente

Page 21: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

Wildcard

//author/*

Resultado: <first-name> Rick </first-name>

<last-name> Hull </last-name>

“*“ Corresponde a qualquer elemento debaixo de “autor” a qualquer profundidade

Page 22: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

Nós atributo

/bib/book/@price

Resultado: “55”

@price significa que price tem que ser um atributo

Page 23: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

Qualificadores (1)

/bib/book/author[first-name]

Significado: os elementos “author” que tenham um “firstname”

Resultado: <author> <first-name> Rick </first-name>

<last-name> Hull </last-name> </author>

Page 24: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

Qualificadores (2)

/bib/book/author[first-name][address[//zip][city]]/lastname

Significado: os lastname dos “author” que tenham “firstname” e cujo endereço contenha um “zip code”, a qualquer profundidade, e uma cidade

Resultado: <lastname> … </lastname> <lastname> … </lastname>

Page 25: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

Qualificadores (3)

/bib/book[@price < “60”]

/bib/book[author/@age < “25”]

/bib/book[author/text()]

Page 26: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

Sumáriobib elemento bib * qualquer elemento/ root/bib bib debaixo de rootbib/paper paper debaixo de bibbib//paper paper bebaixo de bib, a qq profundidade//paper paper a qualquer profundidadepaper|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 pricedb/book[@price=’10’] books com price igual a 10

Page 27: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

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 / = retorna a raíz

Se tivermos comentários antes e depois de <bib>, estes tornam-se irmãos de <bib>

Page 28: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

ExercícioConsidere um documento XML d que representa uma colecção de CDs. Assuma

que o documento é válido no que diz respeito à seguinte DTD:<!ELEMENT CDlist ((CD)+)> <!ELEMENT CD (composer, (performance)+, publisher, (length)?)> <!ELEMENT performance (composition, (soloist)?, (orchestra, conductor)?)> <!ELEMENT composer (#PCDATA)><!ELEMENT publisher (#PCDATA)> <!ELEMENT length (#PCDATA)> <!ELEMENT composition (#PCDATA)> <!ELEMENT soloist (#PCDATA)><!ELEMENT orchestra (#PCDATA)> <!ELEMENT conductor (#PCDATA)> Quais as expressões XPath que retornam o seguinte de d, assumindo que o

contexto inicial é o elemento CDlist: Todas as composições Todas as composições envolvendo um solista Todas as execuções com uma orquesta mas sem solista Todos os solistas que tocaram com a London Symphony Orchestra num CD

publicado pela Deutsche Grammophon Todos os CDs que têm execuções pela London Symphony Orchestra

Page 29: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

Todas as composições: CD/performance/composition

Todas as composições envolvendo um solista: CD/performance[soloist]/composition

Todas as execuções com uma orquestra mas sem solista: CD/performance[orchestra and not(soloist)]

Todos os solistas que tocaram com a London Symphony Orchestra num CD publicado pela Deutsche Grammophon CD[publisher="Deutsche Grammophon"]/performance [orchestra="London Symphony Orchestra"]/soloist

Todos os CDs com execuções pela London Symphony Orchestra CD[performance[orchestra="London Symphony Orchestra"]]

Page 30: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

Navegação usando a sintaxe completa

Passo de localização tem a sintaxe:axis :: node-test predicatesEm 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

Page 31: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

Navegação Podemos navegar ao longo de 13 eixos:ancestorancestor-or-selfattributechilddescendant descendant-or-selffollowingfollowing-siblingnamespaceparentprecedingpreceding-siblingself

Page 32: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

Exemploschild::author/child:lastname = author/lastnamechild::author/descendant::zip = author//zipchild::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

Page 33: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

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

Page 34: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

Sintaxe abreviada vs sintaxe completaSintaxe completa Sintaxe abreviada

child:: nada (child eixo por omissão)attribute:: @/descendant::node() //self::node() .parent::node() ..[position()=i] [i]

Se o caminho começa com //, então o contexto inicial é a raíz.

Page 35: Linguagens de interrogação de dados XML - XPath · 1.l2.l3…ln sobre um grafo de dados: é um conjunto de nós vn tal que existem arestas (r,l1,v1), ... Recomendação W3C do XPath

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