Número:_________________ Nome: _________________________________________ -------------------------------------------------------------------------------------------------------------- INSTITUTO SUPERIOR TÉCNICO Gestão e Tratamento de Informação Exame 1 22 Janeiro 2009 -------------------------------------------------------------------------------------------------------------- A duração deste exame é de 2Horas. É um exame com consulta. Não é permitida a utilização de computadores nem telemóveis. O número total de pontos é 20. Marque as suas respostas NA FOLHA DE EXAME. Escreva o seu número e nome no topo de cada página. Escreva todas as fórmulas. Para o uso oficial somente 1 4 2 4 3 4 4 4 5 4 SUM 20 1 Número:_________________ Nome: _________________________________________ 2 1. (4 pts) Miscelânia 1.1. (2 pts) Indique se as seguintes afirmações são verdadeiras ou falsas: a. A ferramenta RoadRunner, introduzida nas aulas de laboratório, permite fazer o reconhecimento de entidades em texto com base num algoritmo de machine learning. b. A ferramenta LingPipe, introduzida nas aulas de laboratório, permite fazer o reconhecimento de entidades em texto com base em Hidden Markov Models. c. A linguagem XSLT é baseada num mecanismo de templates. As templates definem as transformações a serem efectuadas sobre partes do documento XML original. d. A XQuery Update acrescenta à linguagem XQuery, entre outras coisas, a possibilidade de usar a claúsula "order" em conjunto com as claúsulas "for", "let", "where" e "return" das expressões FLWR. e. Num sistema de integração de dados virtual, a componente de reformulação de interrogações tem como função reescrever as interrogações que foram colocadas sobre as fontes de dados em interrogações que se referem ao esquema do mediador. f. O schema matching é um dos passos de um processo de schema mapping e tem como objectivo a criação de correspondências entre dois esquemas de dados. g. A framework de limpeza e transformação de dados AJAX oferece um conjunto de operadores que não podem ser especificados em SQL. h. A seguinte interrogação SQL: SELECT id, LONGEST(name) FROM people GROUP BY id é válida e serve para fundir os vários tuplos de people cujos nomes sejam aproximados. Número:_________________ Nome: _________________________________________ 1.2. (2 pts) Responda às seguintes questões: a. Indique um dos principais problemas dos classificadores Naive Bayes. Justifique. b. Face à informação que lhe foi facultada durante o semestre, se tivesse que escolher uma ferramenta comercial para detectar e eliminar registos aproximadamente duplicados de uma tabela, qual escolheria e porquê. 3 Número:_________________ Nome: _________________________________________ 4 2. (4 pts) XML: XSD, XPath, XSLT, XQuery Considere a base de dados relacional esquematizada na figura abaixo. Tenha em atenção que a relação entre as entidades Publisher e Book é de um-para-muitos, e que a relação entre Author e Book é de muitos-para-muitos. Os atributos ID, PuID, AuID e ISBN têm como valores números inteiros, e os atributos Date e BDay são do tipo data. Todos os restantes atributos são do tipo string. Os IDs são chaves primárias (i.e. not null e unique) e os atributos Address , Date e BDay são opcionais. ID 1 2 Publisher Wiley O’Reilly Address 45 A St. Chicago ID 1 2 ID 1 2 PuID 1 1 AuID 1 2 Author John Joe Date 10-10-1995 BDay 12-11-1969 Book Information Management XQuery for Dummies 2.1 (1 pt) – Apresente um ficheiro XML que represente a estrutura e a informação da base de dados relacional. O mesmo ficheiro XML deve representar Livros, Editoras e Autores. O XML deve ser bem formado. Número:_________________ Nome: _________________________________________ 5 2.2 (1 pt) – Apresente um XML Schema (XSD) que permita validar o ficheiro XML produzido como resultado da alínea anterior, respeitando a integridade da base de dados relacional. 2.3 (2 pts) - Tendo em consideração o ficheiro XML definido como resposta à pergunta 1.1, apresente expressões XQuery que permitam responder às seguintes necessidades de informação. 2.3.1 - Retornar o título de todos os livros publicados no ano 1995. Número:_________________ Nome: _________________________________________ 6 2.3.2 - Retornar o nome de todos os autores de livros com a palavra XQuery no título. 2.3.3 - Retornar o nome dos autores com livros publicados na editora Wiley, por ordem alfabética. 2.3.4 - Retornar o número de livros publicados pela editora O'Reiley entre 1990 e 2005. Número:_________________ Nome: _________________________________________ 7 3. (4 pts) Extracção de Informação 3.1. (1 pt) Considere o alfabeto composto pelos símbolos A, B, C e D. Escreva expressões regulares que reconheçam: a) Sequências com um número par de As. b) Sequências de tamanho maior que 1, que terminam sempre com um símbolo diferente do símbolo inicial. 3.2. (1,5 pt) Considere o seguinte Hidden Markov Model, em que as probabilidades iniciais de cada estado estão representadas nas elipses: Número:_________________ Nome: _________________________________________ Calcule a probabilidade de ocorrência da sequência de símbolos AABABB Apresente os cálculos efectuados. 8 Número:_________________ Nome: _________________________________________ 9 3.3 (1,5 pt) - Atente no ficheiro XHTML cujo código se apresenta abaixo. <html> <head> <title>Nomes e contacto dos clientes</title> </head> <body> <h1>Nomes e contacto dos clientes</h1> <br/> <table> <tr><td>Nome</td><td>Cidade</td><td>Telefone</td><tr> <tr><td>Joana</td><td>Lisboa</td><td>212214567</td><tr> <tr><td>Francisca</td><td>Porto</td><td>934568234</td><tr> <tr><td>Mariana</td><td>Coimbra</td><td>912452345</td><tr> </table> </body> Escreva um programa XQuery que permita converter os dados apresentados no ficheiro sobre a forma de uma tabela HTML, para o formato XML cuja estrutura se apresenta abaixo. <clientes> <cliente nome="Joana" cidade="Lisboa" telefone="212214567"/> <cliente nome="Francisca" cidade="Porto" telefone="934568234"/> <cliente nome="Mariana" cidade="Coimbra" telefone="912452345"/> </clientes> Número:_________________ Nome: _________________________________________ 10 4. (4 pts) Integração de dados 4.1 (3pts) – Os dois ficheiros XML que se apresentam abaixo codificam informação sobre os clientes de uma determinada loja online e o número de encomendas que estes efectuaram. <clients> <client name="Ola Nordmann"> <address>Langgt 23</address> <city>Stavanger</city> <country>Norway</country> <num-orders>5</num-orders> </client> <client name="Marie Rose"> <address>La Daille 4</address> <city>Compiegne</city> <country>France</country> <num-orders>2</num-orders> </client> </clients> <clients> <country name="Portugal"> <client orders="1"> <name>Pedro Martins</name> <city>Lisboa</city> <card>visa</card> </client> <client orders="2"> <name>João Neves</name> <city>Porto</city> <card>mastercard</card> </client> </country> <country name="France"> <client orders="1"> <name>Jean Paul</name> <card>visa</card> </client> </country> </clients> a) (0,5 pt) - Apresente, sobre a forma de um documento XML, um formato de representação comum para as duas fontes de dados apresentadas acima. Número:_________________ Nome: _________________________________________ 11 b) (0,5 pt)- Apresente um ficheiro XSD que permita validar o documento XML correspondente ao formato de representação comum. c) (1 pt) - Apresente views em XQuery que convertam a informação das fontes de dados originais para o formato de representação comum (i.e. dois wrappers). d) (1 pt) - Apresente uma view em XQuery que permita consolidar a informação das duas views definidas na alínea 2.3 (i.e. um mediador), retornando a união das duas fontes de dados. Número:_________________ Nome: _________________________________________ 12 4.2.(1 pt) Considere os seguintes esquemas de dados: Esquema origem: Professor (id, nome, salarioBase) Projecto(pid, orcamento) Trabalha (id, pid, horas) Esquema destino: Pessoa (nome, salario) Sabendo que existem os seguintes mapeamentos de esquema: Professor(nome) -> Pessoa(nome) Professor(salarioBase),Projecto(orcamento),Trabalha(horas) -> Pessoa(salario) e que o salário de uma pessoa é calculado de acordo com a seguinte fórmula: salario = salarioBase + K*orçamento*horas/100, em que K é uma constante arbitrária, a) (0,5 pt) Escreva uma interrogação SQL que gere os tuplos a inserir na tabela Pessoa a partir dos tuplos das três tabelas origem. (Relembre as expressões de mapeamento do sistema CLIO) Número:_________________ Nome: _________________________________________ b) (0,5 pt) Imagine que é acrescentada outra tabela origem: Aluno (id, nome) o seguinte mapeamento de esquema: Aluno(nome) -> Pessoa (nome) Aluno(id), Projecto(pid), Trabalha(horas) -> Pessoa (salario) e a seguinte fórmula de cálculo: Pessoa.salario = 50*horas para um aluno que trabalha num projecto. Reescreva a interrogação SQL da alínea anterior considerando o novo esquema origem enriquecido com a tabela Aluno. 13 Número:_________________ Nome: _________________________________________ 5. (4 pts) Limpeza e transformação de dados 5.1. (1pt) Considere as seguintes sequências de caracteres: i) TROMBAS ii) TROLHAS Usando o algoritmo de programação dinâmica: a) Calcule a distância de edição entre as sequências b) Indique um possível alinhamento mínimo. 14 Número:_________________ Nome: _________________________________________ 15 5.2. (1 pt) Considere as mesmas duas cadeias de caracteres da alínea 5.1. a) Calcule o número de 3-grams em comum. b) Calcule a distância de edição entre as duas cadeias baseada em 3-grams. 5.3. (2 pts) Considere a seguinte tabela com registos sobre pessoas: Nome Maria Amélia Francisco Martins Pedro Carvalho Diogo Antunes Pedro M. Carvalho Cod. Postal 3750-011 9400-025 1250-144 3750-151 1250 Morada Agadão, Águeda Casinhas, Porto Santo Mouraria, Lisboa Águeda, Águeda Porto Santo Joana Almeida Maria Amália João de Sousa 3750-031 3751-011 9400-035 Aguada de Baixo, Águeda Águeda Matas, Porto Santo Escreva um programa AJAX para detectar e consolidar registos aproximadamente duplicados nesta tabela. Se invocar funções externas dentro dos operadores, indique qual a semântica da função.