• Nenhum resultado encontrado

Uma Abordagem para Reescrita de Consultas Baseada no Contexto

N/A
N/A
Protected

Academic year: 2021

Share "Uma Abordagem para Reescrita de Consultas Baseada no Contexto"

Copied!
113
0
0

Texto

(1)

Pós-Graduação em Ciência da Computação

UMA ABORDAGEM PARA REESCRITA DE CONSULTAS BASEADA NO CONTEXTO

Por

Antonio Ezequiel de Mendonça Dissertação de Mestrado

Universidade Federal de Pernambuco posgraduacao@cin.ufpe.br www.cin.ufpe.br/~posgraduacao

(2)

ANTONIO EZEQUIEL DE MENDONÇA

UMA ABORDAGEM PARA REESCRITA DE CONSULTAS BASEADA NO CONTEXTO

Dissertação de Mestrado apresentada ao Centro de Informática da Universidade Federal de Pernambuco por Antonio Ezequiel de Mendonça, sob a orientação da Profª. Drª. Ana Carolina Salgado e co-orientação da Profª. Drª. Damires Yluska de Souza Fernandes, como requisito parcial para a obtenção do título de Mestre em Ciência da Computação.

(3)

Catalogação na fonte

Bibliotecária Monick Raquel Silvestre da Silva CRB4-1217

M539a Mendonça, Antonio Ezequiel de.

Uma abordagem para reescrita de consultas baseada no contexto / Antonio Ezequiel de Mendonça – Recife: O Autor, 2014.

112 f.: il., fig., tab.

Orientador: Ana Carolina Salgado.

Mestrado (Dissertação) – Universidade Federal de Pernambuco. CCEN. Estatística, 2014.

Inclui referências e apêndices.

1. Banco de dados. 2. Contexto. 3. Semântica. I. Salgado, Ana Carolina (orientador). II. Titulo.

005.74 CDD (23. ed.) UFPE-MEI - 153

(4)

Dissertação de Mestrado apresentada por Antônio Ezequiel de Mendonça à Pós-Graduação em Ciência da Computação do Centro de Informática da Universidade Federal de Pernambuco, sob o título Uma Abordagem para Reescrita de Consultas baseada no Contexto orientada pela Profª. Drª. Ana Carolina Salgado e aprovada pela Banca Examinadora formada pelas professoras:

______________________________________________ Profª. Patricia Cabral de Azevedo Restelli Tedesco

Centro de Informática/UFPE

______________________________________________

Profª.

Maria Lencastre Pinheiro de Menezes Cruz

Escola Politécnica/ UPE

_______________________________________________ Profª. Ana Carolina Salgado

Centro de Informática /UFPE

Visto e permitida a impressão. Recife, 21 de agosto de 2014.

___________________________________________________ Profa. Edna Natividade da Silva Barros

Coordenadora da Pós-Graduação em Ciência da Computação do Centro de Informática da Universidade Federal de Pernambuco.

(5)

AGRADECIMENTOS

Agradeço a Deus por minha saúde e por ter permitido que eu concluísse mais este trabalho. Agradeço à minha esposa Luize Êmile por todo amor, compreensão, ajuda na correção do texto e apoio em todos os momentos.

Agradeço à minha família, em especial à minha mãe Maria do Carmo de Mendonça por me dar todo o suporte necessário para que eu pudesse chegar onde estou. Agradeço também ao meu amigo Walter Sarinho pelos momentos em que dividimos a moradia em Recife, as tristezas e alegrias, e ao meu companheiro de pesquisa Paulo Maciel que me ajudou durante esta caminhada.

Agradeço às minhas amigas e orientadoras, Ana Carolina Salgado e Damires Yluska de Souza Fernandes que desde a graduação, estimularam-me na pesquisa científica e me motivaram a cursar o mestrado. Durante este trabalho sempre me auxiliaram com muita paciência e confiança, indispensáveis, durante este trajeto. Foi um privilégio trabalhar com excelentes orientadoras.

Agradeço à Fundação de Amparo à Ciência e Tecnologia do Estado de Pernambuco (FACEPE) pelo auxílio financeiro que possibilitou a realização deste trabalho. E à Universidade Federal de Pernambuco (UFPE) por ter me proporcionado a oportunidade de fazer parte de um dos melhores programas de pós-graduação (CIn/UFPE) do Brasil onde são formados pesquisadores compromissados com o conhecimento científico.

De forma geral, meu muitíssimo obrigado a todos que conviveram comigo nestes dois últimos anos, pela paciência, orações e incentivo.

(6)

RESUMO

Usuários acessam aplicações de consulta a dados com a intenção de obter informações que lhes possam ser úteis. Para isso, eles submetem uma consulta e, dependendo da resposta, podem tentar refazê-la diversas vezes e, a cada nova consulta submetida, procuram filtrar os resultados, até que uma resposta satisfatória seja encontrada. Esse problema ocorre devido, principalmente, à grande quantidade de informação disponível e, até mesmo, devido à diferença de contexto existente para cada usuário. Entendemos por contexto o conjunto de elementos que caracterizam uma entidade de domínio e que são considerados relevantes em uma situação específica, durante um intervalo de tempo. Diante disso, temos que diferentes usuários podem receber informações diversas e considerá-las relevantes ou não para suas consultas, pois eles têm contextos e objetivos diferentes quando as realizam. Nesse sentido, um processo automático para reescrita de consultas pode criar uma consulta personalizada fazendo uso do contexto adquirido (por exemplo, do usuário e do ambiente) e, assim, as respostas retornadas tendem a ser mais adequadas. Para isso, a consulta pode ser reescrita usando técnicas de expansão, relaxamento ou formatação de respostas. Nesse panorama, o presente trabalho propõe a utilização de informações contextuais a fim de realizar a reescrita de consultas SQL submetidas pelos usuários. Para tanto, é apresentada a abordagem para reescrita de consultas denominada CORE - Context-based Rules for rEwriting queries, que proporciona a adequação da consulta original submetida pelo usuário de acordo com o contexto adquirido. O trabalho incluiu o desenvolvimento de um protótipo que implementa a abordagem. Este protótipo foi usado para realizar experimentos com usuários, os quais submeteram consultas que consideravam ou não o uso do contexto. Em outro experimento, foram aplicadas métricas de precisão e cobertura para avaliar a relevância da informação retornada pelas consultas com e sem o uso do contexto. Analisando os resultados dos experimentos, pôde-se observar que as consultas reescritas a partir do contexto obtiveram mais repostas consideradas relevantes do que as consultas sem contexto. O presente trabalho traz como diferencial de pesquisa em comparação com outros, o fato de tanto fazer uso de contexto como realizar inferência de novos elementos contextuais.

Palavras-chave: Contexto. Personalização de Consultas. Reescrita de Consultas. Consultas SQL.

(7)

ABSTRACT

Users make use of data querying applications with the intention of obtaining information that can be useful. In this light, they submit queries and, depending on the obtained answers, they may try to rebuild the query over and over again until a satisfactory set of answers is considered as good. This problem occurs not only due to the large amount of available data but also to the fact that users may be in different contexts when they formulate queries. We consider context as a set of elements surrounding a domain entity of interest, which are considered relevant in a specific situation during some time interval. Therefore, different users may receive diverse answers and may not consider them as relevant, because they are in different contexts and may have diverse goals. To help matters, an automatic process of query rewriting may produce a personalized query in accordance with the context that has been acquired (e.g., the user and the environment context). As a result, the set of obtained answers would be more adequate. To this end, the query may be rewritten by using expansion, relaxation and formatting techniques. In this scenario, this work proposes the usage of contextual information in order to accomplish the rewriting of SQL queries submitted by users. Particularly, we propose a query rewriting approach, named CORE - Context-based Rules for Rewriting queries, which produces a rewritten query for a given submitted one according to the acquired context. We present the definitions underlying the approach and some implementation results. Also, we present some experiments which have been accomplished with users. Users submitted queries by considering and not considering the use of context. In another experiment, precision and recall metrics were used to evaluate the relevance of the information that was returned by the queries with and without the use of context. Experimental results have shown that context based rewritten queries could produce answers with a higher degree of relevance. This work presents a differential research in comparison with others, the fact that both make use of context to perform inference of new contextual elements.

(8)

LISTA DE ACRÔNIMOS

EC – Elemento Contextual

SGBD – Sistema de Gerenciamento de Banco de Dados DBA – Database Administrator

PDMS - Peer Data Management System BD – Banco de Dados

XML - eXtensible Markup Language ED – Especialista no Domínio RC – Regra Contextual

(9)

LISTA DE TABELAS

Tabela 1 - Heurísticas de Tuning de Consultas SQL. ... 31

Tabela 2 - Especificação das Tabelas [adaptado de Hachani e Ounelli 2006]. ... 44

Tabela 3 - Regras de Preferências [adaptado de Amo e Pereira 2010]. ... 50

Tabela 4 - Análise Comparativa ... 51

Tabela 5 - Operadores Padrão [Maciel e Mendonça 2013]. ... 60

Tabela 6 - Operadores Propostos [Maciel e Mendonça 2013]. ... 60

Tabela 7 - Diretivas Texere e Cláusulas CORE. ... 62

Tabela 8 - Regras Executadas. ... 71

Tabela 9 - Ações Transformadas em Diretivas. ... 71

Tabela 10 - Análise Comparativa ... 75

Tabela 11- Logs de Reescrita. ... 87

Tabela 12 - Valores das Métricas para o Domínio Jurídico. ... 90

Tabela 13 - Valores das Métricas para o Domínio de Professores. ... 91

(10)

LISTA DE FIGURAS

Figura 1 – Aplicações de Consulta a Dados. ... 22

Figura 2 - Consulta Original e Reescrita [adaptado de Araujo et al. 2013]. ... 25

Figura 3 - Esquema do Banco de Dados [adaptado de Ines e Habib 2012]. ... 35

Figura 4 - Fragmento da Ontologia [adaptado de Ines e Habib 2012]. ... 35

Figura 5 - Arquitetura Proposta [adaptado de Asfari et. al. 2010]. ... 37

Figura 6 - Fases da Expansão da Consulta [extraído de Vilar 2009]. ... 39

Figura 7 - Condição de Relaxamento de Consultas [extraido de Koudas et al. 2006]. ... 41

Figura 8 - Exemplos de Hierarquias [extraído de Stefanidis et al. 2007]. ... 42

Figura 9 - Lógica Fuzzy de Relaxamento [extraído de Hachani e Ounelli 2006]. ... 45

Figura 10 - Lógica com os Valores do Relaxamento [extraído de Hachani e Ounelli 2006] ... 45

Figura 11 - Arquitetura e Módulos Principais [extraído de Amo e Pereira 2010]. ... 49

Figura 12 - Arquitetura do Texere [adaptado de Maciel e Mendonça 2013]. ... 56

Figura 13 - Etapas do Processamento de Regras ... 59

Figura 14 - Processo de Reescrita... 67

Figura 15 - Algoritmo CORewriting. ... 69

Figura 16 - Camadas da abordagem CORE... 78

Figura 17 - Componentes e suas atividades na CORE. ... 78

Figura 18 - Diagrama de casos de uso do TexereLibrary. ... 80

Figura 19 - Submissão de Consultas na Aplicação... 82

Figura 20 - Respostas da Consulta. ... 83

Figura 21 - Relevância das Respostas das Consultas sem e com Contexto. ... 85

Figura 22 - Precisão das Respostas das Consultas. ... 93

(11)

Sumário Capítulo 1 ... 12 Introdução ... 12 1.1 Motivação ... 12 1.2 Definição do Problema ... 13 1.3 Objetivos ... 14 1.4 Hipóteses ... 15 1.5 Estrutura ... 15 Capítulo 2 ... 17 Fundamentação Teórica ... 17 2.1 Contexto ... 17

2.1.1 Aplicações Sensíveis ao Contexto ... 19

2.2 Aplicações de Consulta a Dados ... 21

2.3 Personalização de Consultas ... 22

2.4 Reescrita de Consultas ... 23

2.4.1 Reescrita de Consultas em Estratégias de Otimização de Consultas ... 24

2.4.2 Reescrita de Consultas em Ambientes de Integração de Dados ... 25

2.4.3 Reescrita de Consultas em Ambientes de Recuperação da Informação ... 25

2.4.4 Reescrita de Consultas com Uso de Semântica ... 26

2.5 Expansão de Consultas ... 27

Expansão de Consultas em Bancos de Dados Relacionais ... 28

2.6 Relaxamento de Consultas... 29

Relaxamento de Consultas em Ambiente PDMS ... 30

2.7 Tuning de Consultas ... 30

2.8 Considerações ... 32

Capítulo 3 ... 33

Trabalhos Relacionados ... 33

3.1 Reescrita Usando Expansão de Termos ... 33

3.1.1. Expansão de Consultas Usando uma Ontologia de Domínio ... 33

3.1.2. Expansão de Consultas Baseadas no Contexto do Usuário ... 36

3.1.3. Expansão de Consultas Baseadas em Ontologias ... 38

3.2 Reescrita Usando Relaxamento de Termos ... 40

3.2.1 Relaxamento de Atributos de Seleção em SQL ... 40

3.2.2 Relaxamento de Consultas Considerando Preferências ... 41

3.2.3 Relaxamento por meio de Consultas Flexíveis ... 44

3.3 Abordagens Híbridas de Reescrita de Consultas ... 46

3.4 Outras Estratégias de Reescrita de Consultas ... 48

3.4.1 Cpref-SQL ... 48

Capítulo 4 ... 53

CORE - Uma Abordagem para Reescrita de Consultas Baseada no Contexto ... 53

(12)

4.2 O Sistema Texere ... 55

4.2.1 Regras Baseadas no Contexto ... 57

4.2.2 Diretivas e operadores ... 58

4.3 Abordagem CORE ... 62

4.3.1 Cláusulas SQL Alteradas pelas Diretivas ... 62

4.3.2 Processo de Reescrita de Consultas da CORE ... 67

4.4 Exemplo do Processo de Reescrita de Consultas ... 70

4.5 Análise Comparativa ... 73

4.6 Considerações ... 76

Capítulo 5 ... 77

Implementação e Experimentos ... 77

5.1 Implementação da CORE ... 77

5.1.1 Uma Aplicação para Submissão de Consultas... 79

5.1.2 Exemplo de Utilização ... 81 5.2 Experimentos ... 84 5.2.1 Experimento 1 ... 84 5.2.2 Experimento 2 ... 88 5.3 Considerações ... 95 Capítulo 6 ... 97

Conclusões e Trabalhos Futuros ... 97

6.1 Contribuições da Dissertação ... 97

6.2 Limitações ... 98

6.3 Trabalhos Futuros ... 98

6.4 Considerações Finais ... 99

Referências ... 101

Apêndice A – Formulário de Avaliação ... 107

Apêndice B – Logs de Reescrita ... 108

(13)

CAPÍTULO 1

INTRODUÇÃO

Este capítulo fornece uma visão geral dos aspectos que levaram ao desenvolvimento deste trabalho. Para tal, apresenta a motivação do estudo, a definição do problema, os objetivos gerais e específicos, as hipóteses de pesquisa, bem como a estrutura da dissertação.

1.1 Motivação

Quando um usuário decide realizar uma consulta sobre um determinado assunto por meio de uma aplicação, por exemplo, na Web, o volume de dados disponível é, geralmente, alto. Aliado a isso, na prática, as aplicações lidam com diversos tipos de usuários que possuem interesses e realidades distintas e que interagem em momentos diferentes, por vezes, utilizando dispositivos ou ambientes também diferentes. Percebe-se que esses dois aspectos dificultam o retorno de respostas mais precisas e relevantes para o contexto dos usuários. Assim, a tarefa de distinguir as informações relevantes das secundárias, ou mesmo dos ruídos, torna-se, às vezes, muito difícil, devido aos fatores acima apresentados e outros, tais como: descrições de consultas muito genéricas ou condições de consultas muito restritivas. Estes fatores causam, algumas vezes, a falta de informações de que o indivíduo necessita ou considera relevante [ASFARI et. al; 2010].

Nessa perspectiva, técnicas de personalização de consultas vêm sendo empregadas com o intuito de prover respostas individualizadas aos usuários [KOUTRICA E IOANNIDIS; 2005]. Como a consulta ocorre dentro de um contexto, o uso de informações contextuais pode ajudar a proporcionar a personalização de consultas do usuário.

Em um sentido mais amplo, a personalização evoluiu a partir da noção de um perfil simples até chegar a uma coleção de informações que podem ser utilizadas para caracterizar uma entidade, tal como um usuário, um lugar ou uma tarefa [TANCA et. al; 2011].

A personalização de consultas pode ser realizada executando operações de reescrita da consulta, tais como expansão, relaxamento e classificação das respostas [KOSTADINOV et. al; 2007; LIAN et. al; 2007]. Em todas estas possibilidades, o contexto em torno do usuário, da sua tarefa e do meio ambiente pode ser usado para ajudar a fornecer a personalização da consulta. Isso ocorre porque, quando se formulam consultas ou se interage com um aplicativo,

(14)

o usuário pode estar em diferentes contextos, e esses contextos podem mudar com frequência ao longo de toda a interação [ALVES et. al; 2013].

O contexto pode ser entendido como um conjunto de elementos circunstanciais que fazem uma situação única e compreensível [BRÉZILLON; 1999]. Assim, o contexto pode ser usado como recurso computacional que possibilita as aplicações adaptarem-se às necessidades específicas de cada usuário ou do ambiente em questão [VIEIRA et. al; 2009].

Neste trabalho, consideramos o contexto como um conjunto de elementos que caracterizam uma entidade de domínio e que são considerados relevantes em uma situação específica durante um intervalo de tempo [SOUZA et. al; 2008]. A entidade de domínio pode ser uma pessoa (por exemplo, um usuário) ou uma tarefa (por exemplo, uma consulta) e o elemento contextual (EC) refere-se às partes de dados, à informação ou ao conhecimento que podem ser utilizados para caracterizar uma entidade em um domínio de aplicação [VIEIRA et. al; 2009].

Para ilustrar o processo de reescrita de consultas considerando um contexto, tomemos como exemplo uma aplicação que permite a execução de consultas sobre livros. Nesta, o usuário submeteu uma consulta solicitando os livros da categoria “romance”, mas não especificou o idioma desejado. No entanto, foi identificado, a partir do contexto do usuário, que o mesmo prefere textos escritos no idioma português. Nesse caso, a consulta é reescrita, incluindo uma nova restrição, ou seja, serão retornados primeiro os livros escritos em português. Percebe-se, neste caso, a adição de uma restrição com base no contexto percebido.

Por outro lado, em um cenário em que a condição é muito restritiva e, por isso, um retorno vazio ou pequeno de respostas poderia ser obtido, pode-se realizar uma operação de relaxamento, ou seja, a condição que causa o retorno de pouco ou nenhuma resposta será modificada. Nesse caso, serão realizadas alterações sobre as restrições da consulta original, de modo que a nova consulta relaxada poderá retornar uma quantidade maior de respostas relevantes. Por exemplo, considerando o mesmo cenário de consultas a livros, o usuário realiza uma consulta, solicitando apenas livros impressos da categoria de “engenharia de software”. No entanto, o sistema identifica, a partir do contexto do usuário, que livros digitais do mesmo assunto também podem ser relevantes para o usuário. Diante disso, a consulta original é relaxada, incluindo também livros em formato digital.

1.2 Definição do Problema

Considerando o panorama descrito, onde usuários acessam aplicações que permitem a submissão de consultas, podem ocorrer situações nas quais o usuário submeterá várias

(15)

consultas até encontrar as informações que julga relevantes. E, nesse processo, a cada nova consulta criada, geralmente é usada uma restrição diferente para filtrar as respostas, e essa operação pode se repetir até que o usuário obtenha um conjunto satisfatório de respostas. Em outra situação, o usuário pode estar usando uma interface de alto nível que pode não prover todas as condições de que o usuário precisa. Podem ocorrer também circunstâncias nas quais o usuário está usando uma linguagem específica para realizar as consultas, mas ele não detém o conhecimento da sintaxe da linguagem para expressar seu desejo de consulta (por exemplo, SQL). Diante disso, por vezes, a tarefa de submeter consultas pode se tornar bastante demorada e imprecisa.

Ante o exposto, argumentamos que o contexto envolvido na submissão da consulta pode ser utilizado para fornecer elementos que visam auxiliar o processo de reescrita da consulta, de modo a torná-la mais compatível com as expectativas daquele usuário. Neste escopo, o principal problema abordado nesta dissertação pode ser definido como segue:

Dada uma consulta do usuário Q, expressa por meio de uma aplicação, como podemos obter uma consulta reescrita Q’, que seja, semanticamente, relacionada à consulta original Q, mas que leve em conta o contexto do usuário, da consulta e do ambiente, percebido no momento da submissão da consulta Q, através de fontes contextuais?

1.3 Objetivos

Este trabalho tem como objetivo propor uma abordagem para a reescrita de consultas utilizando o contexto adquirido. A abordagem denominada CORE - Context-based Rules for rEwriting queries, realiza a reescrita de consultas utilizando informações obtidas anteriormente a partir do processamento de regras baseadas no contexto do usuário e da consulta.

Na abordagem, as consultas submetidas são expandidas, formatadas e/ou relaxadas, de acordo com o contexto capturado. Assim, cada elemento contextual (EC) identificado é passível de ser utilizado como condição para o processamento de uma regra, proporcionando assim os meios para a inferência de um fato, o qual pode ser uma parte do contexto ou uma diretiva de reescrita. O primeiro refere-se aos elementos que são inferidos e classificados como contextuais, enquanto que o último refere-se a um comando usado na identificação de cláusulas específicas.

A abordagem CORE é parte integrante da arquitetura do sistema Texere, proposto para fornecer recursos de sensibilidade contextual a um SGBD [MACIEL E MENDONÇA; 2013].

(16)

Neste trabalho, vamos nos concentrar na abordagem para reescrita de consultas que foi desenvolvida por meio de alguns componentes da referenciada arquitetura, tendo como foco a submissão, reescrita e execução de consultas utilizando o modelo relacional.

Neste trabalho entendemos que o contexto pode ser utilizado no processo de personalização de consultas, ajudando a decidir, por exemplo, como a consulta pode ser reescrita de modo a contemplar o contexto adquirido.

Os objetivos específicos deste trabalho são pontuados a seguir:

 Investigar o problema de reescrever consultas utilizando informações contextuais;

 Investigar técnicas de expansão, formatação e relaxamento de consultas no panorama de consultas relacionais;

Especificar a abordagem CORE para reescrita de consultas, definindo formas de expansão, formatação e relaxamento com base no uso de diretivas de reescrita obtidas a partir do contexto;

 Identificar cláusulas SQL que possam ser usadas para as diretivas e realizar a reescrita da consulta original;

 Implementar um protótipo e realizar experimentos para a avaliação da abordagem proposta.

1.4 Hipóteses

A dissertação possui as seguintes hipóteses de pesquisa:

H1: Consultas submetidas por usuários geram respostas mais relevantes para eles quando o contexto adquirido é levado em consideração.

H2: A reescrita de consultas baseada no contexto e em técnicas de expansão e relaxamento gera respostas com maior precisão e cobertura.

Para avaliar cada uma das hipóteses, experimentos serão apresentados ao longo deste trabalho.

1.5 Estrutura

Além do presente capítulo, esta dissertação está estruturada da seguinte forma:

 O Capítulo 2 apresenta uma revisão bibliográfica com o objetivo de identificar os principais conceitos envolvidos neste trabalho.

(17)

 O Capítulo 3 discute alguns trabalhos relacionados a este, apresentando, ao final, um quadro comparativo.

 O Capítulo 4 apresenta a abordagem CORE - proposta deste trabalho. Para tanto, são introduzidas as definições que a norteiam e o processo de reescrita.

 O Capítulo 5 discute a implementação da CORE e os resultados obtidos com os experimentos realizados.

 Por fim, o Capítulo 6 tece as considerações finais sobre o trabalho desenvolvido, suas principais contribuições e indica propostas de trabalhos futuros.

(18)

CAPÍTULO 2

FUNDAMENTAÇÃO TEÓRICA

Este capítulo descreve a problemática relacionada à reescrita de consultas em aplicações de consulta a dados. Para tal, introduz conceitos relacionados a contexto, a aplicações sensíveis ao contexto, a aplicações de consulta a dados associadas ao uso de contexto computacional, à personalização de consultas e, à reescrita de consultas, com ênfase em técnicas de expansão e relaxamento de consultas.

2.1 Contexto

Quando é necessário tomar uma decisão, normalmente, as pessoas utilizam as informações contextuais para compreender a situação na qual elas estão inseridas naquele momento, e usam tais informações capturadas na escolha da decisão mais apropriada. Por exemplo, quando um cliente deseja acender um cigarro, ele deve verificar se o contexto (local) permite tal prática, se existe um fumódromo, e, por exemplo, nesse caso, se não há nenhum problema em fumar. Mas, se esse mesmo fato ocorrer em um local onde é proibido, certamente desencadeará problemas para o fumante. Diante do exposto, entende-se que o contexto em que ocorre uma determinada interação é fundamental para que os indivíduos possam responder de maneira apropriada à situação [QUIDUTE; 2010].

O contexto é definido por diversos autores, tais como Dey e seu grupo (2001). Estes apresentam o contexto como qualquer informação que caracteriza a situação de uma entidade, a qual pode ser uma pessoa, um lugar ou um objeto considerado relevante para a interação entre um usuário e uma aplicação, incluindo o próprio usuário e a aplicação [DEY et. al; 2001]. ZIMMERMANN et. al; (2007) ampliam a definição anterior, fazendo uso de uma categorização da situação de uma entidade em: individualidade (propriedades e atributos que definem a própria entidade), atividade (descreve as tarefas nas quais a entidade pode estar envolvida), localização, tempo, e relações (informações de relacionamentos que uma entidade estabelece com outras). Nesse cenário, a atividade é determinante no momento de realizar a avaliação de relevância de um elemento do contexto em situações específicas, bem como a

(19)

localização é a unidade de tempo que conduz à criação de relações entre as entidades e possibilita a troca de informações de contexto entre elas [ZIMMERMANN et. al; 2007].

Na área de Inteligência Artificial, o trabalho de Brezillon e Araújo (2005) define o contexto como algo que restringe sem interferir explicitamente, e cuja restrição é um foco para o ator. (1) contexto é relativo ao foco; (2) como o foco se desenvolve, evolui também o seu contexto; e o (3) contexto tem alta dependência do domínio. O autor entende que não se pode falar de contexto de uma forma abstrata e, portanto, divide-o em conhecimento externo, já que este não possui nenhuma relação com o foco e conhecimento contextual que constitui uma espécie de reservatório onde o contexto está diretamente relacionado com o foco. Sendo assim, o foco evolui quando ocorre um novo evento ou é resultante de uma decisão tomada na fase anterior ao foco [BRÉZILLON E ARAÚJO; 2005].

VIEIRA et. al; (2009) ampliam a definição de contexto apresentada e introduzem o conceito de elementos contextuais, onde pode-se notar uma clara distinção entre os dois termos [VIEIRA et. al; 2009];

 O contexto está presente em uma interação entre um agente e uma aplicação. Sendo identificado através de um conjunto de elementos contextuais instanciados que são necessários para apoiar a tarefa atual.

Elemento contextual (EC, Contextual Element) é entendido como qualquer dado, informação ou conhecimento que permite caracterizar uma entidade em um determinado domínio. O EC é um tipo de informação que pode ser identificada, codificada e pode ser definida em tempo de projeto.

A definição adotada nesse trabalho é apresentada por SOUZA et. al; (2008) e diz que contexto é um conjunto de elementos que caracterizam uma entidade de domínio, e que são considerados relevantes em uma situação específica durante um intervalo de tempo [SOUZA et. al; 2008].

O desenvolvimento de aplicações que exigem uma maior intervenção do usuário na recuperação de informações, as chamadas aplicações tradicionais, tendem a perder espaço para aquelas que são capazes de identificar e recuperar as informações de forma mais flexível e adaptável. Nessa perspectiva, o contexto tem auxiliado no processo de tornar as aplicações capazes de executar tarefas de forma automática. No entanto, compreender e identificar o contexto e, a partir dessa etapa, agir automaticamente, não é uma tarefa relativamente simples. Para obter sucesso, é necessário entender e modelar o que considerar como contexto, e em que cenários ele pode ser utilizado e, ainda, saber como melhor manipular as informações obtidas [KRAMER et. al; 2005].

(20)

2.1.1 Aplicações Sensíveis ao Contexto

A definição de Schilit e Theimer (1994) determinou o uso do termo “context aware” para as aplicações que utilizam o contexto e cujos processamentos realizados por elas foram, de alguma forma, afetados, quer seja interagindo e/ou reagindo de forma diferente baseado no contexto. Por exemplo, uma aplicação que reage de acordo com a localização do usuário ou com a temperatura do ambiente pode ser chamada de aplicação sensível ao contexto [QUIDUTE; 2010].

Aplicações sensíveis ao contexto fazem uso das informações fornecidas explicitamente pelo usuário ou capturadas automaticamente. Estas podem também utilizar dados que estão armazenados em uma base de conhecimento contextual, ou ainda que foram geradas a partir da inferência, utilizando um raciocinador [VALE et. a;. 2010].

As aplicações sensíveis ao contexto também são conhecidas por sistemas baseados em contexto ou aplicações adaptativas [ZORZAL; 2009]. Elas estão relacionadas com a adaptação, de acordo com algumas informações disponíveis (elementos contextuais) em um dado momento, como: a localização, as pessoas ou objetos circundantes, bem como alterações que podem ocorrer ao longo da utilização da aplicação. Estas aplicações devem ser capazes de: (i) perceber o contexto do ambiente, (ii) monitorar, capturar e compor as informações contextuais (iii) detectar automaticamente as mudanças relevantes no contexto, e (iv) reagir às mudanças, adaptando seu comportamento ou requisitando os serviços apropriados [VALE et. al; 2010].

VIEIRA et. al; (2009) mostra que os sistemas sensíveis ao contexto fazem uso de ECs relacionados a uma aplicação em um determinado domínio e usam esses elementos para auxiliar algum agente na execução da tarefa. O apoio pode ser visto através do aumento da percepção do agente em relação à tarefa que deve ser executada ou pelo fornecimento de adequações que auxiliem no cumprimento da tarefa.

Os sistemas sensíveis ao contexto necessitam que as informações contextuais possam ser compartilhadas por diferentes entidades seguindo a mesma compreensão semântica. Sendo assim, o modelo de contexto a ser adotado deve fornecer uma interoperabilidade semântica [WANG et. al; 2004]. As aplicações sensíveis ao contexto devem ainda incluir um serviço de gestão do contexto, o qual é responsável pelo tratamento das informações contextuais [SOUZA et. al; 2008].

Para representar o contexto, deve-se avaliar técnicas que usam as seguintes características: Ao realizar a modelagem, analisar se o modelo de representação é portável; se

(21)

tem ferramentas para edição, checagem de tipos e transformações entre diferentes formatos; o modelo deve é formal o suficiente para facilitar sua definição, fornece raciocínio, mecanismos para tal tarefa e permitir reuso [SOUZA et. al; 2006].

A decisão de utilizar o contexto em uma aplicação implica em executar tarefas que não são simples, já que a aplicação sensível ao contexto é fortemente dependente da importância que o contexto vai exercer quando a aplicação for realizar suas atividades. O uso do contexto é atualmente uma premissa quando se quer desenvolver sistemas inteligentes. Sendo assim, os requisitos básicos que devem ser considerados incluem: aquisição, representação, processamento, armazenamento, uso (percepção, assistência e adaptação) e compartilhamento, trabalhando com uma política de segurança e privacidade [VIEIRA et. al; 2006].

Há diversas formas de implementar sistemas sensíveis ao contexto. A decisão de qual arquitetura utilizar depende dos requisitos apresentados e das condições particulares de cada implementação. Um grande influenciador na decisão da arquitetura é o método de aquisição dos elementos contextuais [BALDAUF et. al; 2007].

CHEN (2004) em seu trabalho descreve três diferentes abordagens para aquisição dos elementos contextuais [CHEN; 2004]:

 Acesso direto às fontes de contexto: Nessa abordagem, a aplicação cliente obtém os elementos contextuais diretamente nas fontes de contexto, ou seja, não é desenvolvida uma camada adicional para tratar o contexto, o processamento dos elementos contextuais é realizado junto ao código das regras de negócio da aplicação.

 Infraestrutura intermediária: Nesta perspectiva, é usada uma arquitetura intermediária nos sistemas sensíveis ao contexto, e esta incorpora a manipulação do contexto, não deixando claro os detalhes de obtenção dos elementos contextuais nas fontes de dados. Essa infraestrutura facilita a extensibilidade, já que o código da aplicação cliente não precisa sofrer alterações, caso haja alterações na maneira de capturar os elementos contextuais.

 Servidor de contexto: Esta abordagem usa como base a arquitetura que incorpora um componente remoto de gerenciamento do acesso às fontes de contexto. O que muda nessa arquitetura é a obtenção dos elementos contextuais que é realizada em um servidor, também denominado de servidor de contexto. Tais servidores facilitam os múltiplos acessos simultâneos às fontes, trazendo como vantagem uma menor carga sobre as aplicações clientes, evitando que estas realizem intensivas operações para obtenção dos elementos contextuais de suas fontes de contexto, o que é

(22)

uma característica importante, considerando que as aplicações sensíveis ao contexto podem ser executadas em dispositivos com baixo recurso de hardware.

Com base no exposto, as informações contextuais podem auxiliar no enriquecimento semântico das aplicações tradicionais, tornando-as aplicações sensíveis ao contexto. A nova aplicação, de posse desse enriquecimento, tende a melhorar a requisição do usuário e, com isso, executar serviços mais próximos das suas necessidades. Estes serviços são geralmente: (i) assistência na execução da tarefa que está sendo realizada em um dado momento, por exemplo, informar sobre recursos disponíveis e que estão relacionados à tarefa em execução; (ii) percepção do contexto - deve informar ao usuário sobre o contexto associado a pessoas e interações do seu interesse, relativos à tarefa em execução; (iii) adaptação - deve responder de forma adequada às alterações que ocorrem no ambiente e às preferências dos usuários (ex. personalização de interfaces e conteúdo) [VIEIRA et. al; 2009].

2.2 Aplicações de Consulta a Dados

Aplicações de consulta a dados são aquelas que fazem uso intensivo de dados em seu processamento [PRESSMAN; 2011; ALVES et. al; 2013]. Nos últimos anos, essas aplicações, bem como os dados utilizados por elas, passaram por um grande crescimento, especialmente na web. Diante desse aumento, tornou-se difícil para os usuários encontrar as informações que eles precisam na forma que consideram relevantes [ALVES et. al; 2013]. Tendo por base o exemplo de uma aplicação de consulta a dados que permite realizar consultas a livros disponíveis em uma biblioteca, o usuário pode acessar e executar consultas sobre os livros disponíveis, podendo, assim, decidir se deve realizar uma locação ou até mesmo descobrir se o livro pesquisado existe no acervo. Este tipo de aplicação tem por objetivo permitir o acesso aos dados armazenados em um banco de dados específico, ou seja, fornece um acesso ao SGBD de forma transparente.

A Figura 1 apresenta a ideia de funcionamento de uma aplicação para consulta a dados. Nesse exemplo, as consultas são formuladas usando a linguagem SQL 92 [ANSI; 2014] e, posteriormente, são submetidas através de aplicações web, desktop ou dispositivos móveis que utilizam uma app instalada no dispositivo. Em todos esses casos, as consultas são submetidas através de uma interface e encaminhadas ao SGBD, que as executa em um banco de dados específico. Após o processamento da consulta, os dados retornados pelo SGBD são devolvidos à aplicação e apresentados ao usuário. Em todas as interfaces de execução de consultas apresentadas, o objetivo da aplicação é fornecer dados aos usuários. Diante disso, essas aplicações são denominação de aplicações para consulta a dados.

(23)

Figura 1 – Aplicações de Consulta a Dados.

Nesse ambiente, pode ocorrer que a consulta seja escrita de uma forma que não retorne as informações de que o usuário necessita, ou o mecanismo de consulta pode não ser capaz de retornar respostas que correspondam ao verdadeiro objetivo do usuário no momento em que ele a realiza. A Seção 2.3 abordará os conceitos relacionados à personalização de consultas com o uso de contexto, a fim de resolver os problemas mencionados anteriormente.

2.3 Personalização de Consultas

Nos dias atuais, os usuários se deparam com um grande volume de informações que poderiam ser de grande valia na execução de suas tarefas. Diante disso, o desenvolvimento de ferramentas que auxiliem na personalização de consultas de forma adaptável e individualizada é visto como algo de grande importância [FRKOVIC; 2012].

Para KOUTRIKA (2010) personalização de consultas é o processo de melhorar dinamicamente uma consulta com o objetivo de fornecer respostas personalizadas, utilizando as preferências do usuário que estão armazenadas no seu perfil.

A personalização de consultas é vista como um mecanismo avançado que permite a reescrita de consultas de modo a adaptá-las ao domínio de interesse do usuário e às suas preferências. Desse modo, a identificação das preferências e do domínio de interesse pode ser explicitamente definida pelo usuário ou derivada dos logs de interações [KOSTADINOV et. al; 2007].

Os dados utilizados para se realizar a personalização de consultas podem ser desde um simples perfil até uma coleção de informações relevantes e que podem ser usadas para caracterizar a situação de uma entidade [TANCA et. al; 2011]. Neste trabalho, isso pode ser identificado como o contexto da entidade.

Devido às diferentes preferências de cada indivíduo, a personalização de consultas possibilita que respostas mais apropriadas sejam encaminhas aos usuários, uma vez que

(24)

diferentes usuários podem encontrar diferentes respostas para uma consulta e considerá-las relevantes. Assim, para ser possível realizar a personalização de consultas deve-se ter um modelo para representar e armazenar o contexto do usuário, um framework que personaliza a consulta e algoritmos que geram respostas personalizadas usando preferências armazenadas no perfil [KOUTRIKA; 2010].

Considere como exemplo a seguinte situação: suponha que um usuário está em uma cidade que ele pouco conhece e, no horário do almoço, acessa um aplicativo do seu celular desejando receber informações sobre restaurantes onde ele possa almoçar. No momento da submissão da consulta, a aplicação tem acesso aos recursos do aparelho, como o GPS e a câmera, bem como às preferências do usuário, por exemplo, tipos de comidas preferidas, locais que gosta de frequentar, média de preços dos restaurantes mais visitados, dentre outras. Após o processamento da consulta, a aplicação indica os locais onde, possivelmente, o usuário gostaria de almoçar, levando em consideração as informações disponíveis a respeito dele. Nesse exemplo, é enfatizada a personalização das consultas, levando em consideração as limitações de deslocamento e as preferências do usuário.

Nas próximas seções serão apresentadas técnicas de reescrita, tais como expansão e relaxamento, as quais podem ajudar na personalização de consultas submetidas pelo usuário. 2.4 Reescrita de Consultas

A motivação para a realização de reescrita de consultas pode vir de muitos e diversos objetivos, dentre eles: pode-se destacar o desejo de reescrever uma consulta a fim de torná-la mais eficiente quanto à execução. Para um DBA (DataBase Administrator), por exemplo, o monitoramento de consultas SQL e a necessidade de ajustes pode se tornar uma atividade que consome muito tempo devido à complexidade e por representar a maior parte das operações realizadas no SGBD. As consultas sem reescrita podem não alcançar o desempenho esperado, pelo fato de terem sido criadas preocupando-se apenas com as respostas a serem obtidas, e não em como a melhor forma de escrevê-las a fim de obter as mesmas respostas [DANDAN et. a;. 2010]. Outro objetivo que pode levar o indivíduo a realizar a reescrita de consultas é permitir que dados que estão distribuídos em diversas fontes possam ser consultados e apresentados de forma unificada [KOSTADINOV et. al; 2007].

As estratégias de reescrita visam gerar uma nova consulta a partir de uma preexistente, onde a nova consulta mantém alguma relação semântica com a original. As técnicas de reescrita têm sido alvo de pesquisa em diversas áreas da Ciência da Computação. Dentre elas, algumas são destacadas: (i) otimização de consultas [ARAUJO et. al; 2013; DANDAN et. al;

(25)

2010], onde o objetivo é gerar uma consulta que tenha uma execução mais rápida na base de dados; (ii) integração de dados baseada em mediadores, onde o objetivo é fornecer uma forma de integrar dados de diversas fontes de dados [GODFREY E GRYZ; 1996; HALEVY; 2000; KOSTADINOV et. al; 2007; LENZERINI; 2002] e (iii) recuperação da informação [SEHER et. al; 2007]. As categorias de trabalho têm diferentes objetivos quando realizam a reescrita, por exemplo, melhorar tempo de resposta de execução de uma consulta ou fornecer integração de dados de diversas fontes. No entanto, todos os trabalhos utilizam a reescrita para alcançar seu objetivo de forma a atender às necessidades da pesquisa que motivaram o estudo. A seguir, abordaremos em mais detalhes essas estratégias.

2.4.1 Reescrita de Consultas em Estratégias de Otimização de Consultas

As aplicações que utilizam bancos de dados tornaram-se muito complexas e, ao mesmo tempo, passaram a ter que lidar com um grande volume de dados armazenados. Devido a essa complexidade, o tempo de resposta e a alta taxa de transferência fizeram surgir a necessidade de melhor analisar as consultas submetidas [ARAUJO et. al; 2013].

O processo de reescrita que busca a otimização de execução tem por objetivo escrever uma nova consulta Q’ equivalente em termos de respostas à consulta original Q. A nova consulta só será semelhante à original se, e somente se, as duas consultas forem equivalentes e a execução de ambas produzir as mesmas respostas. Para realizar a reescrita, o otimizador de consultas escolhe o plano de execução mais eficaz, utilizando um conjunto de heurísticas no processo de decisão [ARAUJO et. al; 2013]. Por exemplo, BRUNO et. al; (2009) criaram um framework que realiza indicações de reescrita de forma dinâmica e as alterações indicadas são executadas sobre uma consulta Q, objetivando torná-la mais eficiente.

Na Figura 2 são apresentadas duas consultas, a que está à esquerda é a consulta original e a da direita é a consulta reescrita. Nesse processo de reescrita, a consulta original perdeu o operador ALL, e este foi substituído por uma subconsulta que visa encontrar o menor precototal e comparar com o precototal da primeira consulta. Com a eliminação do operador ALL e a inclusão do operador MIN na subconsulta, diversas comparações são eliminadas, reduzindo assim o tempo de processamento. Nesse caso, a consulta reescrita retorna as mesmas respostas da consulta original, mas com um tempo bem menor.

(26)

Figura 2 - Consulta Original e Reescrita [adaptado de ARAUJO et. al; 2013]. 2.4.2 Reescrita de Consultas em Ambientes de Integração de Dados

A Integração de dados visa oferecer uma interface uniforme de acesso a diferentes fontes de dados, de modo que se possa definir “o que” se deseja obter nas consultas, e o sistema determine “onde” as informações podem ser encontradas [SOUZA et. al; 2008].

Na integração de dados, a reescrita de consultas é utilizada para a unificação de dados de diversas fontes distribuídas [KOSTADINOV et. al; 2007] e é definida como uma tripla <G, S, M> onde, G representa o esquema global com as estruturas e restrições, S é o esquema de origem com estruturas e restrições, e M demonstra o mapeamento entre G e S e é constituído por um conjunto de assertivas da forma {Qs,Qg}. Qs é uma consulta realizada sobre o esquema da fonte de dados local e Qg é a consulta realizada sobre o esquema global [SOUZA et. al; 2008]. O esquema global é entendido por uma união de todos os esquemas das fontes locais, de modo a criar uma visão única que será o elo de comunicação com o usuário no momento de realizar consultas.

O processo de reescrita ocorre da seguinte forma: (i) uma consulta Q é reescrita com a inclusão de novos predicados, quer sejam elementos de seleção e/ou junção; Cada novo predicado é associado a um peso definido no perfil do usuário, que é flexibilizado dentro de um intervalo e representa a sua importância na consulta; (iii) a reescrita traduz a consulta para o esquema de cada fonte de dados. Por exemplo, em um domínio relacionado a turismo uma consulta é reescrita para uma fonte de dados A, nesse cenário o predicado travel.departure = ‘Toulouse’ tem peso 0.8, já travel.departure = ‘Paris’ tem peso 0.3, logo o primeiro predicado tem maior relevância na reescrita de consultas para a fonte A [KOSTADINOV et. al. 2007].

2.4.3 Reescrita de Consultas em Ambientes de Recuperação da Informação

O conceito é utilizado em trabalhos ligados à recuperação da informação os quais utilizam palavras-chave em motores de busca. SEHER et. al; (2007) conceitua a reescrita como uma

(27)

técnica que visa melhorar a consulta do usuário, adicionando novos termos a uma consulta existente, buscando, com isso, a melhoria na precisão da recuperação das respostas.

Na abordagem clássica, a decisão de quais palavras utilizar na expansão de consultas, baseia-se em repetidas ocorrências estáticas de uma palavra-chave em documentos do domínio consultado. Para tanto deve-se adicionar à nova consulta termos que mais ocorrem, juntamente com as expressões da consulta original [YAGUINUMA et. al; 2007]. Por exemplo, para descrever o conceito da bicycle, os termos " bicycle" e "bike" podem ser usados. No entanto, a expressão "bicycle" também pode se referir ao conceito de motocicleta [Andreou 2005]. De forma semelhante, se o usuário informar na consulta o termo "carro", esta pode ser reescrita incluindo os termos "car, carros, automóveis, auto" [PANCHAL; 2012].

O importante é analisar a dependência entre os termos e a ocorrência estatística numa consulta para definir quais palavras estarão presentes na reescrita. Para tanto, deve-se realizar também a análise da relação de dependência e a da semântica entre as expressões [ANDREOU; 2005]. SUM et. al; (2006) utilizam um método que visa melhorar a eficácia da consulta original, ou seja, busca apresentar as respostas mais importantes para o processo de recuperação de informação. Para tanto, realiza uma etapa de alteração da consulta original, através da reformulação com a inclusão de termos contextuais adicionais obtidos através da análise estatística e semântica [SUM et. al; 2006].

2.4.4 Reescrita de consultas com uso de semântica

Para desenvolver aplicações complexas, adaptáveis e flexíveis, é necessário criar mecanismos que aprimorem os serviços e que enriqueçam a semântica, e, assim, forneçam funcionalidades que aproximem mais o “homem” da “máquina” de maneira transparente [SOUZA et. al; 2008].

A semântica pode ser entendida como a tarefa de atribuir significado a elementos ou expressões que precisam ser interpretados em uma determinada situação. Nos ambientes distribuídos, tais como os de Peer Data Management Systems (PDMSs), o uso de semântica é apoiado pelo conhecimento armazenado em ontologias, bem como por informações que são adquiridas de maneira estática ou em tempo real, tais como preferências do usuário [SOUZA et. al; 2011].

No processo de reescrita, a semântica informa que alterações podem ser realizadas sobre a consulta submetida de forma a torná-la mais adequada. Esse processo pode envolver diferentes alterações e diversas etapas de reescrita. Isso ocorre, pois o processamento é todo

(28)

baseado no significado que cada consulta tem para quem a submeteu, então ao se analisar os elementos contextuais, diversas etapas de reescrita podem ser geradas. VILAR (2009) mostra que a reescrita semântica é utilizada também para aperfeiçoar algumas das características da consulta, seja para melhor definir a semântica ou para otimizar a execução com alterações na sintaxe [VILAR; 2009].

Algumas operações de reescrita, como a expansão e o relaxamento, são executadas pela interpretação de elementos, que, ao serem processados, determinam a semântica. Por exemplo, o usuário submete uma consulta solicitando visualizar livros impressos sobre Engenharia de Software. Nessa consulta são encontrados dois elementos importantes para se compreender a semântica, que são livros impressos e Engenharia de Software. No momento da reescrita, o sistema percebe esses elementos e define, baseado nesse contexto, que o usuário poderia também se interessar por livros digitais que se referem a Engenharia de Software. No exemplo apresentado, a semântica identificada possibilitou a realização de uma operação de reescrita com expansão, ou seja, a consulta passou a incluir não apenas livros físicos, mas também os digitais.

Como visto anteriormente, o processo de reescrita de consultas pode fazer uso da semântica, atrelada a técnicas de reescritas, tais como, expansão e relaxamento, nas quais a técnica utilizada depende da semântica identificada.

2.5 Expansão de Consultas

Dentro do processo de reescrita, pode-se executar operações de expansão que auxiliem a montagem da nova consulta. Esse processo irá incluir novos termos na consulta original e, dessa forma, possivelmente, obter-se-á um aumento no número e na relevância das respostas retornadas com a execução da consulta reescrita [MISHRA E KOUDAS; 2009]. Por exemplo, o usuário realiza a consulta em uma biblioteca procurando por livros, após a execução, a consulta pode ser expandida retornando não apenas livros, mas também documentários que tenha uma relação com os livros consultados. A consulta sofreu uma expansão com a inclusão de mais uma entidade, pois apenas foi solicitado o retorno de livros, no entanto, na resposta, percebeu-se a presença de documentários e livros relacionados ao tema consultado.

O processo de expansão se faz necessário devido ao grande crescimento dos dados e sua diversidade. A cada dia, torna-se mais complicado o processo de criação de consultas que retornem informações relevantes. Diante disso, a expansão de consultas auxilia o processo de recuperação de informações e, com isso, espera-se reduzir a quantidade de respostas

(29)

irrelevantes e garantir que as respostas importantes não sejam descartadas [KHAN et. al; 2004].

Expansão de Consultas em Bancos de Dados Relacionais

Diversas pesquisas em diferentes áreas utilizam o termo expansão de consultas. O trabalho de INES E HABIB; 2012 utiliza a expressão para operações que adicionam novas entidades a consultas relacionais escritas em SQL. A pesquisa tem por objetivo geral modificar a consulta original, quer seja pela alteração de suas condições ou pela adição de novos termos relacionados, com o objetivo de tornar as consultas mais eficientes e abrangentes [INES E HABIB; 2012].

A definição, bem como o entendimento de expansão é tratado por INES E HABIB (2012) que pesquisam o enriquecimento semântico de bancos de dados tradicionais, fazendo uso de ontologias, tendo como objetivo auxiliar o usuário em consultas que, inicialmente, não retornam respostas. A expansão de consultas pode ser classificada como [INES E HABIB; 2012]:

 A expansão por sinônimos - Consiste em substituir alguns termos presentes na consulta original por alguns sinônimos. Esse processo gera uma nova consulta que é semanticamente equivalente à inicial (duas consultas são semanticamente equivalentes se elas retornam as mesmas respostas).

 Expansão por especialização – Consiste de uma especialização da consulta inicial. Como consequência, o conjunto de respostas geradas pela nova consulta é incluído no conjunto de respostas relevantes para o usuário.

 Expansão por refinamento de meronímia1 – Consiste em substituir alguns conceitos da consulta inicial pelos seus merônimos presentes na ontologia.

 Expansão por generalização - consiste em substituir alguns conceitos da consulta original por termos mais gerais presentes em uma ontologia.

 A expansão de um conjunto de colunas (Col) relacionadas a uma tabela (T) - Consiste em determinar um conjunto de termos relacionados com a tabela (T) e representá-los com atributos da tabela (T) na base de dados. Este procedimento é denominado “columns_expansion”.

A expansão de tabela por sinônimo - É aplicada se uma tabela Tab da cláusula FROM não se refere a uma tabela na base de dados. Este refinamento é usado

1

Relação semântica entre uma palavra que tem o significado de uma parte e outra com significado de um todo em relação à primeira.

(30)

para gerar um novo termo Tab1, sinônimo de Tab e referindo-se a uma tabela no banco de dados.

 A expansão por especialização - É descrito por um procedimento "get_specialized_tables", que pode gerar um conjunto de termos (LTab1) especializados de uma tabela Tab e estes se referem a tabelas do banco de dados. A expansão das colunas, aplicada para cada elemento da LTab1, gera novas consultas cuja execução satisfaz o usuário.

2.6 Relaxamento de Consultas

O relaxamento de consultas é uma técnica que não procura manter o significado ou sentido exato de uma consulta original, mas busca generalizá-la, transformando-a em uma consulta bem sucedida por meio da remoção ou suavização de alguns termos da consulta original [LIAN et. al; 2007].

Com o relaxamento e a geração da nova consulta, possivelmente obtém-se um número maior de respostas relevantes, pois essa alteração tende a suavizar os critérios de seleção, permitindo assim atingir um número maior de respostas. Por exemplo, o usuário acessa uma aplicação e deseja encontrar restaurantes no subúrbio da cidade. Devido à dependência de dois conceitos presentes na consulta, restaurante e localidade, o usuário pode ter sua consulta relaxada, recebendo também os restaurantes que fazem entrega em domicílio, na região que ele solicitou, e não apenas os restaurantes que se localizam na região informada [STUCKENSCHMIDT et. al; 2005].

O cenário de relaxamento pode apresentar um problema na redução da especificidade da consulta, onde o entendimento do objetivo do usuário ao realizar a consulta pode ser comprometido, retornando assim respostas que ele não gostaria [JONES et. al; 2006]. Por exemplo, se as informações contextuais definidas e/ou adquiridas não forem corretas, o processo de relaxamento, que é baseado no contexto, pode gerar alterações nas restrições que não condizem com o real contexto do usuário, retornando assim respostas não desejadas.

O processo de relaxamento de consultas pode envolver diferentes propostas, que podem ir desde uma simples alteração no valor de comparação de um predicado como, por exemplo, o valor usado com o operador “maior que” ou, até mesmo, realizar a ampliação de critérios de seleção. Por exemplo, em uma consulta, a restrição utilizada era o termo cidade (cidade=Recife), com a realização do relaxamento, essa mesma consulta pode incorporar o estado ao qual a cidade pertence como a nova restrição (estado=pe), fazendo uso de derivação para descobrir essa nova informação [VILAR; 2009]. De modo geral, o relaxamento pode

(31)

incluir operações tais como: remover partes da consulta, generalizar critérios, encontrar e eliminar falsas afirmações e utilizar uma “relação de tolerância” para satisfazer consultas do tipo fuzzy. A utilização da relação de tolerância permite relaxar uma consulta que não tem um critério para relaxamento claramente definido. Por exemplo, “consultar os carros que são grandes”, o conceito de “grandes” pode variar, pois, dependendo da categoria e modelos comparados, o conceito de “grande” pode ou não ser aplicado [VILAR; 2009].

Relaxamento de Consultas em Ambiente PDMS

Em um ambiente PDMS (Peer Data Management System) com mapeamentos amplos e parcialmente diferentes, foi visto uma situação em que descrições de diferentes peers, que fazem referência a um mesmo objeto do mundo real, podem ser significativamente diferentes, e essa disparidade se dá no sentido em que diferentes relações são usadas para relacionar o mesmo objeto com outros objetos no domínio. Devido a essa diferença, os objetos do mundo real, que seriam recuperados com a execução de uma consulta, não serão retornados, pois a sua descrição não coincide com a da consulta. STUCKENSCHMIDT et. al; (2005) buscaram resolver esse problema com o relaxamento da consulta, ou seja, deve-se enfraquecer as restrições que são responsáveis pela falha no retorno das informações. É realizado um processo no qual a consulta é simplificada através do enfraquecimento das restrições ou expressões da consulta que são responsáveis por limitar o retorno de informações [STUCKENSCHMIDT et. al; 2005].

2.7 Tuning de Consultas

A cada dia que passa, um número maior de profissionais de tecnologia da informação tem utilizado as técnicas de tuning, principalmente, quando se trabalha com a otimização do desempenho na recuperação ou atualização de dados em banco de dados [ANDRADE; 2005]. Com o aumento da produção dos dados e, consequentemente, o crescimento da quantidade de usuários, principalmente na internet, as aplicações de consulta a dados (Ex.: E-Commerce, Internet Banking), têm se deparado com um desafio cada dia maior de como desenvolver sistemas rápidos e eficientes e, assim, poder atrair, manter e satisfazer as necessidades de seus usuários. Diante do exposto, os bancos de dados têm um papel importante e fundamental nesse processo de responder aos usuários de forma rápida e satisfatória e, para tanto, as consultas e atualizações devem seguir alguns padrões, evitando, assim, uma perda de tempo desnecessária. ANDRADE (2005) diz que uma vez identificado que existem problemas nas consultas enviadas à base de dados, é preciso saná-los. De fato, as

(32)

consultas SQL são responsáveis por grande parte dos problemas de desempenho das aplicações que utilizam bancos de dados relacionais [ANDRADE; 2005].

IKEMATU (2003) realizou um estudo com o objetivo de avaliar e desenvolver aplicações que possam auxiliar o DBA no processo de checagem e criação de consultas com um desempenho melhor. Para o autor, tuning é visto como uma sintonia ou ajuste, para que a consulta funcione de forma mais eficiente.

Ao realizar o processo de tuning, o Administrador de BD (Database Administrator ou DBA) recebe uma pré-avaliação por parte de uma aplicação, de possíveis alterações sobre a consulta. Esta avaliação simplifica o trabalho de análise de desempenho da consulta realizada pelo DBA, e proporciona a realização de possíveis ajustes que afetem significativamente a performance do banco de dados, transformando uma tarefa de alto custo e complexidade, em um processo mais simples e rápido [IKEMATU; 2003].

O processo de realizar tuning em uma consulta foi apresentado por TRAMONTINA (2008), o qual o dividiu em três tipos de ações: (i) realizar o refinamento do esquema, das relações e das consultas/atualizações feitas no banco de dados, (ii) realizar uma configuração do sistema operacional em que está instalado no servidor, e (iii) realizar configurações cuidadosas dos parâmetros dos SGBD’s [TRAMONTINA; 2008]. Por exemplo, em uma consulta onde é realizada uma restrição com um conjunto de operações IN na clausula Where, deve-se substituir por join.

A literatura traz diversas estratégias de tuning que podem ser usadas, na Tabela 1 são apresentadas tais regras. As heurísticas são tratadas como regras e foram formuladas por fabricantes de SGBDs e por pesquisas realizadas sobre a execução de consultas [ARLINO et. al; 2013; ORACLE; 2013; BRUNO et. al; 2013]:

Tabela 1 - Heurísticas de Tuning de Consultas SQL. Heurísticas SQL Tuning

H1 Transformar consultas que criam e usam a tabela temporária em uma sub-consulta equivalente.

H2 Eliminar group by desnecessário

H3 Remover a cláusula having, cujos predicados não têm qualquer função de agregação. Os predicados devem ser inseridos em uma cláusula WHERE.

H4 Alterar consulta com disjunção no WHERE para uma união das respostas de uma consulta.

(33)

função de agregação MAX ou MIN na subconsulta.

H6 Remover operação SOME com operadores maior / menor de comparação, incluindo função de agregação MAX ou MIN na subconsulta.

H7 Remover operação ANY com operadores maior / menor de comparação, incluindo função de agregação MAX ou MIN na subconsulta.

H8 Substituir conjunto de operações IN por uma operação de join; H9 Eliminar distinct desnecessário.

2.8 Considerações

Este capítulo apresentou aspectos relacionados à reescrita de consultas em aplicações de consulta a dados fazendo uso de contexto e detalhou outros conceitos que fundamentam esta dissertação como: contexto, aplicações sensíveis ao contexto, aplicações de consulta a dados, personalização de consultas, reescrita de consultas, expansão e relaxamento e tuning.

Entre as técnicas estudadas no processo de reescrita foram encontradas diferentes formas de melhorar as respostas obtidas: a reescrita de uma consulta com expansão e o enfraquecimento das restrições utilizando a técnica de relaxamento, a fim de obter um número maior de respostas relevantes.

Dentro do enfoque introduzido, o Capítulo 3 apresentará alguns trabalhos relacionados à reescrita, expansão, relaxamento e personalização de consultas.

(34)

CAPÍTULO 3

TRABALHOS RELACIONADOS

Encontrar informação relevante em meio à grande quantidade de dados existente é uma tarefa difícil, porque a descrição de qual tipo de informação o usuário necessita nem sempre é precisa e clara. Esse é um problema complexo e, por isso, algumas abordagens vêm sendo desenvolvidas em diversas áreas de pesquisa. As técnicas de reescrita de consultas com utilização de contexto foram abordadas em alguns trabalhos ligados à expansão, relaxamento e personalização de consultas, respectivamente, INES E HABIB (2012), ASFARI et. al; (2010), VILAR (2009), KOUDAS et. al; (2006), STEFANIDIS et. al; (2007), HACHANI e OUNELLI (2006) e MISHRA E KOUDAS (2009). A seguir, apresentamos os trabalhos relacionados a cada uma dessas categorias.

3.1 Reescrita Usando Expansão de Termos

Os bancos de dados são bastante úteis no processo de armazenamento e recuperação de informações, e isso levou muitas empresas a dependerem de tais sistemas para armazenar e proteger seus dados. Embora os SGBDs sejam eficientes para organizar os dados, a pobreza semântica os impede de satisfazer algumas necessidades dos usuários como, por exemplo, prover a personalização das respostas para uma consulta.

Nessa seção, apresentaremos os trabalhos que realizam expansão de consultas usando ontologias, contexto.

3.1.1.

Expansão de Consultas Usando uma Ontologia de Domínio

O trabalho de INES E HABIB; (2012) tem como objetivo ajudar o usuário em uma consulta que não retorna qualquer resposta, normalmente decorrente de uma formulação muito restritiva. A abordagem proposta é usada para detectar e resolver conflitos em situações diferentes.

Os conflitos existentes podem ser de agregação e generalização. O primeiro ocorre quando um termo é usado numa fonte de dados para identificar um conjunto de termos em outra fonte, ou seja, a agregação pode envolver alguns atributos relacionados a uma tabela e que são usados para especificar um atributo na consulta do usuário. Os conflitos de generalização podem ser causados quando se representa um conjunto de tabelas em diferentes níveis de generalização no banco de dados e na consulta escrita pelo usuário. Por exemplo, o

Referências

Documentos relacionados

Há vários ti- pos de 2HDM, iremos nos restringir a dois tipos: o modelo de dubleto inerte(2HDMI), em que apenas um dos dubletos desenvolve vev, e uma das partículas escalares, ge-

Dessa maneira, os resultados desta tese são uma síntese que propõe o uso de índices não convencionais de conforto térmico, utilizando o Índice de Temperatura de Globo Negro e

na situação dada, estar excluído do trabalho também significa mutilação, tanto para os desempregados, quanto para os que estão no polo social oposto.. Os mecanismos

Com o objetivo de comparar os grupos no que tange às possíveis mudanças na pontuação média no pós-teste, se comparada à pontuação obtida na avaliação de

When the 10 th percentile of the Alexander stan- dard growth curve for twins was used, a birth weight below the 10 th percentile was observed in 4.9% of newborn of

Our contributions are: a set of guidelines that provide meaning to the different modelling elements of SysML used during the design of systems; the individual formal semantics for

esperados na população de referência, baseado nas taxas do grupo exposto, e o número de casos observados na população de referência.. Estudos

Para as análises estatísticas foram empregados e aplicados os métodos de regressão linear, por meio das médias móveis e das suavizações, além dos testes não paramétricos,