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

Slides:



Advertisements
Apresentações semelhantes
Object Query Language - OQL
Advertisements

Introdução Marcus Vinícius Carneiro Teixeira.
Modelo de Objetos ODMG.
Álgebra Relacional Marcelo Mendes Manaus
Banco de Dados Prof. Antonio.
SQL Avançado Continuação
SQL Structured Query Language (continuação)
Prof.: Bruno Rafael de Oliveira Rodrigues
XQuery (1ª parte) Helena Galhardas DEI IST
Objectivos Objectivos
Bacharelado em Ciência da Computação
Otimização de Consultas em SQL Parte I - Planos de Execução e Equivalências de Expressões da Álgebra Relacional AULA 19 Profa. Sandra de Amo Programa.
Gerenciamento de Banco de Dados
Otimização de Consultas em SQL Planos de Execução e Equivalências de Expressões da Álgebra Relacional AULA 24 Profa. Sandra de Amo GBC053 – BCC
Subconsultas ou Consultas Aninhadas
SQL – Consultas Básicas
SQL – Noções Gerais Por Márcia Jacyntha N. Rodrigues Lucena
SQL – DML Consultas envolvendo relacionamentos entre tabelas
SQL – DML Consulta a dados de uma tabela
Operadores Especiais da SQL
SCC Bancos de Dados e Suas Aplicações
Tecnologia para Web JavaScript
Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação.
Equipe de monitoria Aula prática 4.  Tipos  Tabela de Objetos  Herança  Métodos  Referências  Coleções  Composição de coleções  Conectividade.
Geração de Planos de Execução Planos para Consultas Aninhadas
Banco de Dados II Prof. Antônio Cordeiro.
SQL Álvaro Vinícius de Souza Coêlho
XQuery (2ª parte) Helena Galhardas DEI IST (baseado nos slides de Ioana Manolescu, acessíveis em:
Linguagens de interrogação de dados XML XPath
Otimizador de consultas
Design Patterns / Acesso ao banco de dados (java.sql)
Banco de Dados Aplicado ao Desenvolvimento de Software
Otimização de Consultas em SQL Planos de Execução
Cálculo relacional Lílian Simão Oliveira.
Bags n Servem para armazenar a repetição de elementos n Tal qual conjuntos, a ordem dos elementos não importa n Por isso, também recebem a designação de.
© CIn, UFPE1 Linguagens de consulta em XML – Enfoque XQuery Thiago Alves Costa CIn – UFPE Recife-PE, 3 de julho de 2003.
Desenvolvendo um script SQL
Baseado no material do Professor Raul Paradeda
REVISÃO Comandos SQL - DML SELECT * FROM ?.
Definições de Esquemas, Restrições básicas e buscas
Tradução Dirigida por Sintaxe
©Silberschatz, Korth and Sudarshan (modificado)4.1.1Database System Concepts Capítulo 4: SQL Estrutura básica Operações com conjuntos Funções de agregação.
©Silberschatz, Korth and Sudarshan (modificado)9.1.1Database System Concepts Capítulo 9: BDs Objecto-Relacional Relações imbricadas Tipos complexos e objectos.
Banco de Dados I I Comandos SQL
Linguagem SQL Prof. Juliano.
Bases de Dados Dedutivas Bases de dados dedutivas usam a tecnologia de linguagens de programaçao lógica para aumentar as bases de dados relacionais com.
©Silberschatz, Korth and Sudarshan (modificado)4.2.1Database System Concepts Capítulo 4: SQL Estrutura básica Operações com conjuntos Funções de agregação.
©Silberschatz, Korth and Sudarshan (modificado)9.2.1Database System Concepts Capítulo 9: BDs Objecto-Relacional Relações imbricadas Tipos complexos e objectos.
IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho
©Silberschatz, Korth and Sudarshan (modificado)10.2.1Database System Concepts Capítulo 10: XML XML para transferência de dados Estrutura hierárquica do.
Sumário 1 SQL Embutida 2 Processamento de Consultas
Object Constraint Language Philip Stephen Medcraft.
1 XSL - eXtensible Stylesheet Language. 2 XSL - Motivação Vantagens de separar apresentação de conteúdo: Múltiplos formatos de saída: tamanhos diferentes,
XQuery Helena Galhardas DEI IST. Agenda XPath – exercício XQuery.
Banco de Dados I Unidade 6 Processamento de Consultas Otimização Lógica.
ODMG - Object Database Management Group Padrão para SGBDOO Consórcio de pesquisadores e fabricantes Objetivo –integração e padronização de funcionalidades.
Subconsultas ou Consultas Aninhadas Forma alternativa de especificar consultas envolvendo relacionamentos entre tabelas Otimização –filtragens prévias.
Consultando Documentos XML com XQUERY Vânia Maria Ponte Vidal
Linguagens de interrogação de dados XML XPath Helena Galhardas DEI IST.
1 Introdução à Manipulação de Dados SQL – Structured Query Language  Tabela = Relação  DDL – Data Definition Language  Sub-conjunto do SQL que suporta.
©Silberschatz, Korth and Sudarshan (modificado)4.2.1Database System Concepts Capítulo 4: SQL Estrutura básica Operações com conjuntos Funções de agregação.
SQL SERVER XML Guia Essencial para Programação com XML no SQL Server.
Sintaxe de uma Linguagem
Aula 09: Comando SELECT: Ligações entre tabelas e Subconsultas
Programação Funcional 4a. Seção de Slides Tuplas e Definição de Funções Locais em Haskell.
UCSal – Bacharelado em Informática
Faculdade Pernambuca - FAPE Compiladores Abril/2007 Compiladores Abril/2007.
Acesso a Banco de Dados com o JDBC Prof. M.Sc. Ronnison Reges Vidal.
Programação para Internet Aula 12 SQL (Comandos de Consulta ao BD)
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Capítulo 5 Mais SQL: Consultas Complexas, Triggers e Views.
Transcrição da apresentação:

Unidade 3- Consulta a dados semi-estruturados

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

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

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

LOREL: uma linguagem de consultas para dados semi-estruturadoss Dados exemplo Consulta &bibdb &n1 &n2 &n3 paper book biblio Roux author Combalusier date1976 titleDatabase systems Smith author date1999 titleDatabase systems

LOREL Sintaxe baseada em OQL Exemplo select author:X from 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

Query 1: SELECT author: X FROM biblio.book.author X &o1 &o12&o24&o29 &96 &30 paper book author date title author date title biblio &o47&o48 &o50 &o52 &25 Smith 1999Database Systems Roux Combalusier 1976 Database Systems... resposta author Resposta = {author: “Smith”, author: “Roux”, author: “Combalusier”} Resposta = {author: “Smith”, author: “Roux”, author: “Combalusier”}

LOREL Restrição dentro da cláusula where Exemplo select row:X from biblio._ X where "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

Query 2: SELECT row: X FROM biblio._ X WHERE “Smith” in X.author &o1 &o12&o24&o29 &96 &30 paper book author date title author date title biblio &o47&o48 &o50 &o52 &25 Smith 1999Database Systems Roux Combalusier 1976 Database Systems... resposta row... resposta = {row: {author:“Smith”, date: 1999, title: “Database…”}, row: … } resposta = {row: {author:“Smith”, date: 1999, title: “Database…”}, row: … }

LOREL Restrições dentro da cláusula where Exemplo select author:Y from biblio._ X, X.author Y, X.title Z where 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

LOREL Criação de vários nodos dentro da projeção select row:{title:Y, author:Z} from biblio.book X, X.title Y, X.author Z Composição de consultas select 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.author from biblio.book X Consulta

Query 3: SELECT row: ( SELECT author: Y FROM X.author Y) FROM biblio.book X &o1 &o12&o24&o29 &96 &30 paper book author date title author date title biblio &o47&o48 &o50 &o52 &25 Smith 1999Database Systems Roux Combalusier 1976 Database Systems... resposta row &a1 &a2 author Resposta = {row: {author:“Smith”}, row: {author:“Roux”, author:“Combalusier”,}, }

LOREL Outro exemplo de composição select row:{ select author:Y, title:T from X.author Y X.title T} from biblio.book X where "Roux" in X.author Consulta

Query 4: SELECT ( SELECT row: {author: Y, title: T} FROM X.author Y, X.title T) FROM biblio.book X WHERE “Roux” in X.author &o1 &o12&o24&o29 &96 &30 paper book author date title author date title biblio &o47&o48 &o50 &o52 &25 Smith 1999Database Systems Roux Combalusier 1976 Database Systems... resposta row &a1 &a2 author title Resposta = {row: {author:“Roux”, title: “Database…”}, row: {author:“ Combalusier ”, title: “Database…”}, } Resposta = {row: {author:“Roux”, title: “Database…”}, row: {author:“ Combalusier ”, title: “Database…”}, } (Query está errada no livro texto) title

LOREL Semântica dos predicados de comparação select a:A, c:C from r1.row X, r2.row Y, X.a A, X.b B, Y.b B', Y.c C where 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

LOREL Comparações de valores select row:X from biblio.paper X where X.author = "Smith" – X.author é um conjunto de objetos, "Smith" é um valor atômico where exists Y in X.author : Y="Smith" select row:X from biblio.paper X where X.year>1993 Consultas

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.author FROM biblio.book WHERE biblio.book.year = 1999 SELECT X.author FROM biblio.book X WHERE X.year = 1999

Lorel Variáveis existenciais: – O que acontece com livros com múltiplos autores? Author é existencialmente quantificado: SELECT biblio.book.year FROM biblio.book WHERE biblio.book.author = “Roux” SELECT biblio.book.year FROM biblio.book X, X.author Y WHERE Y = “Roux”

UnQL Patterns: Equivalente a: SELECT row: X WHERE {biblio.book: {author “Roux”, title X}} in DB, SELECT row: X FROM biblio.book Y, Y.author Z, Y.title X WHERE Z=“Roux”

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,

Bases de dadoss semi-estruturados O sistema LORE

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

Arquitetura LORE Compilação de consultas Data Engine Armazenamento físico gerente de dados externos gerente de índices operadores físicos gerente de objetos parserpréprocessador gerador de planos de consultas optimizador de consultas A P I GUIApplications consultas

Linguagem de Consulta 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

Patterns em XML-QL WHERE Morgan Kaufmann $A in “ CONSTRUCT $A WHERE Morgan Kaufmann $A in “ CONSTRUCT $A Encontre todos os autores que publicaram pela Morgan Kaufmann: Abreviação: fecha qualquer tag.

Exemplo2 Encontre os autores e títulos dos livros da AWL where AWL $T $A in “ construct $A $T

Resultado do Exemplo2 Ceri Active Database System Widom Active Database System...

Patterns em XML-QL where Jones in “ construct $X where Jones in “ construct $X Encontre as linguagens nas quais Jones têm publicado:

Construtores em XML-QL where $A in “ construct $A $L where $A in “ construct $A $L Resultado: Smith English Smith French Doe English.. Encontre todos os autores e as linguagens nas quais eles publicaram:

Consultas aninhadas em XML-QL WHERE $A in “ CONSTRUCT $A WHERE $A in “ CONSTRUCT $L WHERE $A in “ CONSTRUCT $A WHERE $A in “ CONSTRUCT $L Encontre os autores e as linguagens nas quais eles publicaram; agrupando por autores: Obs: book.author é uma expressão de caminho

Smith English French … Doe English … Resultado:

Junção em XML-QL WHERE $a CONTENT_AS $p in “ $a in “ $L = “English” CONSTRUCT $p WHERE $a CONTENT_AS $p in “ $a in “ $L = “English” CONSTRUCT $p Encontre os artigos que têm pelo menos um autor que também escreveu um livro em inglês

Variáveis Tag em XML-QL WHERE $t 2000 Carlos in “ in {author, editor} CONSTRUCT $t Carlos WHERE $t 2000 Carlos in “ in {author, editor} CONSTRUCT $t Carlos Encontre as publicações publicadas em 2000 nas quais Carlos é um autor ou editor

Path Expressions em XML-QL Seja o DTD: 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 $r Ford in “ CONSTRUCT $r

Path Expressions em XML-QL No exemplo anterior peca* é uma expressão de caminho regular que é equivalente à seguinte sequência infinita de patterns: $r Ford...

Path Expressions em XML-QL A consulta a seguir ilustra o uso de alternativa (|), concatenação(.) e asterisco(*) em expressões regulares: WHERE $r IN “ CONSTRUCT $r

Integrando dados de diferentes fontes XML Encontre os nomes e CPF das fontes e WHERE $n $c IN “ $c $i IN “ CONSTRUCT $n $i

Linguagem de Consulta X-Query

XQuery Baseda em Quilt (que é baseda em XML-QL) XML Query data model

FLWR (“Flower”) Expressions FOR... LET... WHERE... RETURN...

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 FOR $x IN document("bib.xml") /bib/book WHERE $x/year > 1995 RETURN $x/title Resultado: abc def ghi

XQuery Para 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 $a, FOR $t IN /bib/book[author=$a]/title RETURN $t FOR $a IN distinct( document("bib.xml") /bib/book[publisher=“Morgan Kaufmann”]/author) RETURN $a, FOR $t IN /bib/book[author=$a]/title RETURN $t distinct = elimina duplicatas

XQuery Resultado: Jones abc def Smith ghi

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

XQuery count = função (aggregate) que retorna o número de elementos FOR $p IN distinct(document("bib.xml")//publisher) LET $b := document("bib.xml")/book[publisher = $p] WHERE count($b) > 100 RETURN $p FOR $p IN distinct(document("bib.xml")//publisher) LET $b := document("bib.xml")/book[publisher = $p] WHERE count($b) > 100 RETURN $p

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 FOR $b in document("bib.xml") /bib/book LET $a=avg( document("bib.xml") /bib/book/price) WHERE $b/price > $a RETURN $b

XQuery Sumário: FOR-LET-WHERE-RETURN = FLWR FOR/LET Clauses WHERE Clause RETURN Clause Lista de tuplas Instância do modelo de dados Xquery

FOR versus LET FOR liga variáveis nodo  iteration LET liga variáveis coleção  one value

FOR versus LET FOR $x IN document("bib.xml") /bib/book RETURN $x FOR $x IN document("bib.xml") /bib/book RETURN $x Retorna:... LET $x IN document("bib.xml") /bib/book RETURN $x LET $x IN document("bib.xml") /bib/book RETURN $x Retorna:...

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 $b/author Retorna:...

Ordenação em XQuery FOR $p IN distinct(document("bib.xml")//publisher) RETURN $p/text(), FOR $b IN document("bib.xml")//book[publisher = $p] RETURN $b/title, $b/price SORTBY(price DESCENDING) SORTBY(name) FOR $p IN distinct(document("bib.xml")//publisher) RETURN $p/text(), FOR $b IN document("bib.xml")//book[publisher = $p] RETURN $b/title, $b/price SORTBY(price DESCENDING) SORTBY(name) Argumentos de sort referem-se ao namespace da cláusula RETURN e não da cláusula FOR

If-Then-Else FOR $h IN //holding RETURN $h/title, IF = "Journal" THEN $h/editor ELSE $h/author SORTBY (title) FOR $h IN //holding RETURN $h/title, IF = "Journal" THEN $h/editor ELSE $h/author SORTBY (title)

Quantificador Existencial FOR $b IN //book WHERE SOME $p IN $b//para SATISFIES contains($p, "sailing") AND contains($p, "windsurfing") RETURN $b/title FOR $b IN //book WHERE SOME $p IN $b//para SATISFIES contains($p, "sailing") AND contains($p, "windsurfing") RETURN $b/title

Quantificador Universal FOR $b IN //book WHERE EVERY $p IN $b//para SATISFIES contains($p, "sailing") RETURN $b/title FOR $b IN //book WHERE EVERY $p IN $b//para SATISFIES contains($p, "sailing") RETURN $b/title