55
Unidade 3- Consulta a dados semi- estruturados

Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

Embed Size (px)

Citation preview

Page 1: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

Unidade 3- Consulta a dados semi-estruturados

Page 2: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

Requisitos desejáveis (Maier ’98)

Expressividade– linguagem de consulta ao estilo SQL – possibilitar a restruturação de dados semi-estruturados

Semântica precisa– muito importante para XML

Composição– o resultado de uma consulta deve poder ser utilizado dentro

de uma outra consulta Consulta ao esquema

– visando otimização Facilitar a geração automática de consultas

Consulta

Page 3: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

Expressões de caminho (Path expressions)

Expressões que permitem navegar no grafo de dados Expressões de caminho simples

– sequências de labels– exemplos

root.pessoas {&p1,&p2,&p3}root.pessoas.filhos {&p2,&p3}

– semântica o resultado de uma expressão de caminho r.l1. … .ln, onde l1,

…,ln são os labels e r um objeto, é o conjunto de nodos do grafo acessíveis de r por um caminho do grafo tal que os arcos percorridos passam sucessivamente pelos labels l1,…,ln.

Consulta

Page 4: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

Expressões de caminho

Expressões de caminho generalizadas Idéia: além de especificar completamente um caminho, permite

exprimir restrições (constraints) sobre o caminho Utilização de expressões regulares Exemplos

_ é um caracter coringa que designa um label qualquer(pessoa|estudante)._.idade

As expressões de caminho definidas até o presente retornam os conjuntos de objetos e não de dados semi-estruturados

Consulta

Page 5: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

LOREL: uma linguagem de consultas para dados semi-estruturadoss

Dados exemplo

Consulta

&bibdb

&n1

&n2

&n3paper

book

bookbiblio

Rouxauthorauthor Combalusierdate 1976title Database

systems

Smithauthor

date 1999title Database

systems

Page 6: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

LOREL

Sintaxe baseada em OQL Exemplo

select author:Xfrom biblio.book.author X

Semântica– para cada nodo do conjunto biblio.book.author

X toma o valor deste nodo cria um nodo de label author e de valor X

Resultado{author:"Roux", author:"Combalusier", author:"Smith"}

Consulta

Page 7: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

Query 1: SELECT author: XFROM biblio.book.author X

&o1

&o12 &o24 &o29

&96&30

paper bookbook

authordate

titleauthor

authordate

title

biblio

&o47 &o48 &o50

&o52 &25

Smith 1999 DatabaseSystems

Roux Combalusier1976

DatabaseSystems

. . .

resposta

author

authorauthor

Resposta ={author: “Smith”, author: “Roux”, author: “Combalusier”}

Page 8: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

LOREL

Restrição dentro da cláusula where Exemplo

select row:Xfrom biblio._ Xwhere "Smith" in X.author

Resultado{row:{

author:"Smith", date:1999, title:"Database systems" } }

Observações– X.author é uma expressão de caminho– X.author é um conjunto de valores, "Smith" in X.author é um

predicado de pertinência a um conjunto

Consulta

Page 9: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

Query 2:SELECT row: XFROM biblio._ XWHERE “Smith” in X.author

&o1

&o12 &o24 &o29

&96&30

paper bookbook

authordate

titleauthor

authordate

title

biblio

&o47 &o48 &o50

&o52 &25

Smith 1999 DatabaseSystems

Roux Combalusier1976

DatabaseSystems

. . .

resposta

row

row

. . .resposta ={row: {author:“Smith”, date: 1999, title: “Database…”}, row: …}

Page 10: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

LOREL

Restrições dentro da cláusula where Exemplo

select author:Yfrom biblio._ X, X.author Y, X.title Zwhere Z matches "*[D|d]atabase*"

Resultado– retorna os autores de publicações cujo título contém a palavra "database".

Tratamento de uma consulta select-from-where– três momentos:

determinação do conjunto de valores definido dentro da cláusula from restrição deste conjunto com a cláusula definida dentro do where projeção dentro da cláusula select

Consulta

Page 11: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

LOREL

Criação de vários nodos dentro da projeçãoselect row:{title:Y, author:Z}from biblio.book X, X.title Y, X.author Z

Composição de consultasselect row:{ select author:Y from X.author Y}from biblio.book X

Lorel também permite o uso de expressões de caminho na cláusula select:

select X.authorfrom biblio.book X

Consulta

Page 12: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

Query 3:SELECT row: ( SELECT author: Y FROM X.author Y)FROM biblio.book X

&o1

&o12 &o24 &o29

&96&30

paper bookbook

authordate

titleauthor

authordate

title

biblio

&o47 &o48 &o50

&o52 &25

Smith 1999 DatabaseSystems

Roux Combalusier1976

DatabaseSystems

. . .

resposta

row

row

&a1

&a2author

authorauthor

Resposta ={row: {author:“Smith”}, row: {author:“Roux”, author:“Combalusier”,},}

Page 13: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

LOREL

Outro exemplo de composiçãoselect row:{ select author:Y, title:T

from X.author Y X.title T}

from biblio.book Xwhere "Roux" in X.author

Consulta

Page 14: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

Query 4:SELECT ( SELECT row: {author: Y, title: T} FROM X.author Y, X.title T)FROM biblio.book XWHERE “Roux” in X.author

&o1

&o12 &o24 &o29

&96&30

paper bookbook

authordate

titleauthor

authordate

title

biblio

&o47 &o48 &o50

&o52 &25

Smith 1999 DatabaseSystems

Roux Combalusier1976

DatabaseSystems

. . .

resposta

row

row

&a1

&a2author

author title

Resposta ={row: {author:“Roux”, title: “Database…”}, row: {author:“Combalusier”, title: “Database…”},}

(Query está errada no livro texto)

title

Page 15: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

LOREL

Semântica dos predicados de comparaçãoselect a:A, c:Cfrom r1.row X, r2.row Y, X.a A, X.b B, Y.b B', Y.c Cwhere B=B'

– se r1 e r2 são representações de relações, esta consulta calcula a junção natural destas relações sobre os atributos b.

– Dentro do contexto semi-estruturado, certos valores de B ou B' podem ser multi-valorados

Consulta

Page 16: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

LOREL

Comparações de valoresselect row:Xfrom biblio.paper Xwhere X.author = "Smith"

– X.author é um conjunto de objetos, "Smith" é um valor atômicowhere exists Y in X.author : Y="Smith"

select row:Xfrom biblio.paper Xwhere X.year>1993

Consultas

Page 17: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

Lorel

Pequenas diferenças sintáticas na expressões de caminho (% ao invés de _, # ao invés de _*)

Convenção de caminho:

torna-se:

SELECT biblio.book.authorFROM biblio.bookWHERE biblio.book.year = 1999

SELECT X.authorFROM biblio.book XWHERE X.year = 1999

Page 18: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

Lorel

Variáveis existenciais:

– O que acontece com livros com múltiplos autores? Author é existencialmente quantificado:

SELECT biblio.book.yearFROM biblio.bookWHERE biblio.book.author = “Roux”

SELECT biblio.book.yearFROM biblio.book X, X.author YWHERE Y = “Roux”

Page 19: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

UnQL

Patterns:

Equivalente a:

SELECT row: XWHERE {biblio.book: {author “Roux”, title X}} in DB,

SELECT row: XFROM biblio.book Y, Y.author Z, Y.title XWHERE Z=“Roux”

Page 20: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

UnQL

Variávels Label:– “encontre todos os tipos de publicação e seus

títulos onde Roux é autor”

SELECT row: {type: L, title : Y}WHERE {biblio.L: {author “Roux”, title X}} in DB,

Page 21: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

Bases de dadoss semi-estruturados

O sistema LORE

Page 22: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

O sistema LORE

LORE: Lightweight Object Repository Um SGBD para dados semi-estruturados Desenvolvido em Stanford Utiliza o modelo OEM

LORE

Page 23: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

ArquiteturaLORE

Compilação de consultas

Data Engine

Armazenamento físico

gerente de dados externos

gerentede índicesoperadores

físicos

gerentede objetos

parser préprocessador gerador deplanos de consultas

optimizadorde consultas

A P I

GUI Applications

consultas

Page 24: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

Linguagem de Consulta

XML-QL

Page 25: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

XML-QL

Primeira linguagem declarativa para XML Como obter uma query language para XML

rapidamente ?– Assumir OEM como modelo de dados– Usar características de UnQL e StruQL

Patterns Templates

– Projetar uma sintaxe XML-like

Page 26: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

Patterns em XML-QL

WHERE <book> <publisher> <name> Morgan Kaufmann </> </> <author> $A </> </book> in “www.a.b.c/bib.xml”CONSTRUCT <author> $A </>

Encontre todos os autores que publicaram pela Morgan Kaufmann:

Abreviação: </> fecha qualquer tag.

Page 27: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

Exemplo2

Encontre os autores e títulos dos livros da AWL

where <book> <publisher> <name> AWL </> </> <title> $T </> <author> $A </></> in “www.a.b.c/bib.xml”

construct <resultado><author> $A </><title> $T </>

</>

Page 28: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

Resultado do Exemplo2

<resultado><author> Ceri </author><title> Active Database System </title>

</resultado><resultado>

<author> Widom </author><title> Active Database System </title>

</resultado><resultado>

<author> ... </author><title> ... </title>

</resultado>

Page 29: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

Patterns em XML-QL

where <book language=$X> <author> Jones </author>

</book> in “www.a.b.c/bib.xml”construct <result> $X </>

Encontre as linguagens nas quais Jones têm publicado:

Page 30: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

Construtores em XML-QL

where <book language = $L> <author> $A </> </> in “www.a.b.c/bib.xml”construct <result> <author> $A </> <lang> $L </> </>

Resultado:<result> <author>Smith</author> <lang>English </lang> </result><result> <author>Smith</author> <lang>French</lang> </result><result> <author>Doe </author> <lang>English </lang> </result>. . . .

Encontre todos os autores e as linguagens nas quais eles publicaram:

Page 31: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

Consultas aninhadas em XML-QL

WHERE <book.author> $A </> in “www.a.b.c/bib.xml”CONSTRUCT <result> <author> $A </> WHERE <book language = $L> <author> $A </> </> in “www.a.b.c/bib.xml” CONSTRUCT <lang> $L </> </>

Encontre os autores e as linguagens nas quais eles publicaram; agrupando por autores:

Obs: book.author é uma expressão de caminho

Page 32: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

<result> <author>Smith</author> <lang>English</lang> <lang>French</lang> <lang>…</lang> …</result><result> <author>Doe</author> <lang>English</lang> …</result>

Resultado:

Page 33: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

Junção em XML-QL

WHERE <article> <author> $a </>

</> CONTENT_AS $p in “www.a.b.c/bib.xml” <book language = $L>

<author > $a </></> in “www.a.b.c/bib.xml”,$L = “English”

CONSTRUCT <result> $p </>

Encontre os artigos que têm pelo menos um autor que também escreveuum livro em inglês

Page 34: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

Variáveis Tag em XML-QL

WHERE <$p> <title> $t </> <year> 2000 </><$e> Carlos </>

</> in “www.a.b.c/bib.xml”, <$e> in {author, editor} CONSTRUCT <$p>

<title> $t </> <$e> Carlos </> </>

Encontre as publicações publicadas em 2000 nas quais Carlos é um autor ou editor

Page 35: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

Path Expressions em XML-QL

Seja o DTD:<!ELEMENT peca (nome fabricante peca*) ><!ELEMENT nome CDATA><!ELEM fabricante CDATA>

A consulta: “Encontre os nomes da peças que contêm um fabricante “Ford” sem considerar o nível de aninhamento em que a peça occorre:

WHERE <peca*> <nome> $r </> <fabricante> Ford </> in “www.a.b.c/pecas.xml”

CONSTRUCT <resultado> $r </>

Page 36: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

Path Expressions em XML-QL

No exemplo anterior peca* é uma expressão de caminho regular que éequivalente à seguinte sequência infinita de patterns:

<nome> $r </> <fabricante> Ford</> <peca> <nome> $r </> <fabricante> Ford</> </><peca> <peca> <nome> $r </> <fabricante> Ford</> </> </><peca> <peca> <peca> <nome> $r </> <fabricante> Ford</> </> </>...

Page 37: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

Path Expressions em XML-QL

A consulta a seguir ilustra o uso de alternativa (|), concatenação(.)e asterisco(*) em expressões regulares:

WHERE <peca+.(subpeca|componente.parte)> $r </>IN “www.a.b.c/peca.xml”

CONSTRUCT <resultado> $r </>

Page 38: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

Integrando dados de diferentes fontes XML

Encontre os nomes e CPF das fontes www.receita.gov.br/contribuintes.xml e www.ufpb.br/professores.xml

WHERE <professores><nome> $n </><cpf> $c </>

</> IN “www.ufpb.br/professores.xml”, <contribuintes>

<cpf> $c </><imposto> $i </>

</> IN “www.receita.gov.br/contribuintes.xml”CONSTRUCT <resultado> $n $i </>

Page 39: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

Linguagem de Consulta

X-Query

Page 40: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

XQuery

Baseda em Quilt (que é baseda em XML-QL)

http://www.w3.org/TR/xquery/2/2001 XML Query data model

Page 41: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

FLWR (“Flower”) Expressions

FOR ... LET... WHERE...RETURN...

Page 42: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

XQuery

Encontre os títulos dos livros publicados após 1995:

FOR $x IN document("bib.xml")/bib/book

WHERE $x/year > 1995

RETURN $x/title

Resultado: <title> abc </title> <title> def </title> <title> ghi </title>

Page 43: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

XQueryPara cada autor de um livro publicado pela

Morgan Kaufmann, listar os livros publicados:

FOR $a IN distinct(document("bib.xml") /bib/book[publisher=“Morgan Kaufmann”]/author)

RETURN <result>

$a,

FOR $t IN /bib/book[author=$a]/title

RETURN $t

</result>

distinct = elimina duplicatas

Page 44: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

XQuery

Resultado: <result> <author>Jones</author> <title> abc </title> <title> def </title> </result> <result> <author> Smith </author> <title> ghi </title> </result>

Page 45: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

XQuery

FOR $x in expr -- liga $x a cada valor na lista expr

LET $x = expr -- liga $x à inteira lista expr– Usado para subexpressões comuns e para

agregações

Page 46: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

XQuery

count = função (aggregate) que retorna o número de elementos

<big_publishers> FOR $p IN distinct(document("bib.xml")//publisher) LET $b := document("bib.xml")/book[publisher = $p] WHERE count($b) > 100 RETURN $p </big_publishers>

Page 47: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

XQuery

Encontre os livros cujos preços são maiores do que a média de preços:

FOR $b in document("bib.xml")/bib/book

LET $a=avg(document("bib.xml")/bib/book/price)

WHERE $b/price > $a

RETURN $b

Page 48: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

XQuery

Sumário: FOR-LET-WHERE-RETURN = FLWR

FOR/LET Clauses

WHERE Clause

RETURN Clause

Lista de tuplas

Lista de tuplas

Instância do modelo de dados Xquery

Page 49: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

FOR versus LET

FOR liga variáveis nodo iteration

LET liga variáveis coleção one value

Page 50: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

FOR versus LET

FOR $x IN document("bib.xml")/bib/book

RETURN <result> $x </result>

Retorna: <result> <book>...</book></result> <result> <book>...</book></result> <result> <book>...</book></result> ...

LET $x IN document("bib.xml")/bib/book

RETURN <result> $x </result>

Retorna: <result> <book>...</book> <book>...</book> <book>...</book> ...</result>

Page 51: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

Coleções em XQuery

Conjuntos e Bags– /bib/book/author = uma coleção do tipo Bag – Distinct(/bib/book/author) = uma coleção do tipo conjunto (Set)

LET $a = /bib/book $a é uma coleção $b/author uma coleção (vários autores...)

RETURN <result> $b/author </result>Retorna: <result> <author>...</author> <author>...</author> <author>...</author> ...</result>

Page 52: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

Ordenação em XQuery

<publisher_list> FOR $p IN distinct(document("bib.xml")//publisher) RETURN <publisher> <name> $p/text() </name> , FOR $b IN document("bib.xml")//book[publisher = $p] RETURN <book> $b/title , $b/price </book> SORTBY(price DESCENDING) </publisher> SORTBY(name) </publisher_list>

Argumentos de sort referem-se ao namespace da cláusula RETURN e não da cláusula FOR

Page 53: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

If-Then-Else

FOR $h IN //holding

RETURN <holding>

$h/title,

IF $h/@type = "Journal"

THEN $h/editor

ELSE $h/author

</holding> SORTBY (title)

Page 54: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

Quantificador Existencial

FOR $b IN //book

WHERE SOME $p IN $b//para SATISFIES

contains($p, "sailing")

AND contains($p, "windsurfing")

RETURN $b/title

Page 55: Unidade 3- Consulta a dados semi-estruturados. Requisitos desejáveis (Maier ’98) Expressividade – linguagem de consulta ao estilo SQL – possibilitar a

Quantificador Universal

FOR $b IN //book

WHERE EVERY $p IN $b//para SATISFIES

contains($p, "sailing")

RETURN $b/title