• Nenhum resultado encontrado

Processamento de consultas contínuas contendo preferências condicionais

Algoritmo 20 Ű IsConsistent(Φ) Entrada: Teoria-pct Φ

Saída: truequando Φ é consistente, caso contrário, false

1: for all φ ∈ Φ do //Para cada regra-pct φ de Φ

2: if Γ(Φφ) is not consistent then //Teste de consistência para teorias-pc 3: return false

4: return true

nas seções anteriores o modelo de preferência da CPrefSQL permite expressar preferências condicionais enquanto o formalismo TPref permite expressar preferências condicionais temporais. Já a linguagem StreamPref possui operadores capazes de processar consultas tanto com preferências condicionais quanto com preferências condicionais temporais. Tabela 2 Ű Análise comparativa entre o modelo de preferência da StreamPref e trabalhos

correlatos

CPrefSQL TPref StreamPref

Preferências simples ✓ ✓ ✓

Preferências temporais ✓ ✓

Teste de consistência viável ✓ ✓

igualdade ✓ ✓ ✓

Predicados desigualdade ✓ ✓

intervalos ✓

Condições temporais com fórmulas arbitrárias ✓

Atributos Indiferentes ✓ ✓

presente ✓ ✓ ✓

Domínio temporal passado ✓ ✓

futuro ✓

Quanto ao teste de consistência, as linguagens CPrefSQL e a StreamPref levam vantagem sobre o formalismo TPref. Os testes de consistência das linguagens CPrefSQL e StreamPref são viáveis para testar qualquer conjunto de preferências dentro das respectivas linguagens, já o formalismo TPref possui um teste de consistência viável apenas para um fragmento de sua linguagem.

No que diz respeito ao poder de expressão, os predicados da StreamPref são mais expressivos pois permitem expressar faixas de valores como a < A < a. As fórmulas derivadas e, consequentemente, as condições temporais do formalismo TPref podem usar fórmulas arbitrárias, já na StreamPref as condições temporais são compostas por fórmulas mais simples. No entanto, pela propriedade da separação, é possível converter algumas teorias-pct do formalismo TPref para o modelo de preferência da linguagem StreamPref. Outra vantagem da StreamPref em relação ao TPref é a possibilidade de expressar preferências com atributos indiferentes. Deste modo é possível comparar posições de sequências que diferem em mais de um atributo, assim como ocorre na comparação de tuplas da CPrefSQL.

5.6. Considerações Ąnais 105 O modelo de preferência da StreamPref não possui o domínio temporal de futuro (fórmulas derivadas do operador temporal until). Todavia, no contexto de dados em Ćuxo este domínio temporal não é muito adequado, pois os usuários, em geral, expressam suas preferências com base nos dados dos instantes anteriores e do instante atual.

5.6 Considerações Ąnais

Este capítulo apresentou o modelo de preferência utilizado pela linguagem Stre- amPref que teve como base o formalismo TPref. Este modelo de preferência permite expressar preferências condicionais temporais através de regras. O diferencial do modelo de preferência da linguagem StreamPref está em seu poder de expressão, já que, além da possibilidade de especiĄcar atributos indiferentes, as regras são compostas por predicados capazes de representar faixas de valores.

Foi realizada uma comparação entre os modelos de preferência da linguagem CPrefSQL, do formalismo TPref e da linguagem StreamPref. Apesar de ser baseado no formalismo TPref, o modelo de preferência da linguagem StreamPref possui vantagens signiĄcativas como a deĄnição de um teste de consistência viável.

O próximo capítulo apresentará os operadores da linguagem StreamPref. No caso dos operadores de preferência, o modelo de preferência apresentado no capítulo atual será utilizado para comparar sequências durante a execução de consultas contendo preferências temporais.

107

Capítulo

6

A linguagem StreamPref

Extração de Sequências • Equivalência (CQL) • Algoritmos Manipulação de Sequências • Equivalências (CQL) • Algoritmos • Otimizações Preferência Temporal • Modelo de Preferência • Equivalências (CQL) • Algoritmos • Otimizações SEQUÊNCIAS PREFERIDAS Operadores CQL FLUXOS RELAÇÕES Preferência • Modelo de Preferência • Algoritmos • Otimizações TUPLAS PREFERIDAS

Figura 19 Ű Visão geral da linguagem StreamPref destacando os novos operadores Como já foi explicado nos capítulos anteriores, a linguagem StreamPref é uma extensão da linguagem CQL. Conforme descrito no Capítulo 2, a linguagem CQL foi projetada para manipular tuplas provenientes de Ćuxos ou relações. Por outro lado, como foi mostrado no Capítulo 5, o modelo de preferência StreamPref é utilizado para comparar sequências de tuplas. Desta maneira, a linguagem StreamPref possui, além dos operadores CQL, novos operadores adequados para lidar com sequências. A Seção 6.6 mostra que existem equivalências para os operadores StreamPref usando apenas os operadores da CQL. Contudo, estas equivalências não são triviais e, como será mostrado nos capítulos posteriores, os operadores StreamPref realizam um processamento de consultas muito mais eĄciente do que suas contrapartes em CQL. Além disto, a escrita de uma consulta com preferências usando as equivalências CQL envolve diversas operações complexas que

diĄcultam sua escrita pelo usuário.

A Figura 19 apresenta novamente uma visão geral da linguagem com os novos operadores destacados em cinza. O foco deste capítulo é a deĄnição dos novos operadores e suas equivalências na linguagem CQL (RIBEIRO et al., 2017c). Contudo, é impor- tante ressaltar que, além dos novos operadores descritos no capítulo atual, a linguagem StreamPref incorpora também os operadores BEST e TOPK explicados no Capítulo 3. A Figura 20 apresenta as categorias de operadores da linguagem StreamPref. As arestas tracejadas indicam as categorias de operadores já existentes na linguagem CQL. Os operadores BEST e TOPK se enquadram na categoria relação-para-relação. Observe que a StreamPref introduz duas novas categorias de operadores: Ćuxo-para-sequência e sequência-para-sequência. A categoria Ćuxo-para-sequência possui um operador que extrai sequências a partir de Ćuxos. Dentro da categoria sequência-para-sequência estão os os operadores de preferência e operadores para manipular sequências.

relações Ćuxos sequências

relação para relação relação para Ćuxo Ćuxo para relação Ćuxo para sequência sequência para sequência

Figura 20 Ű Categorias de operadores da linguagem StreamPref

Este capítulo está organizado como se segue. A Seção 6.1 apresenta o operador para extração de sequências a partir de Ćuxos de dados. Os operadores de preferências são explicados na Seção 6.2. A Seção 6.3 descreve os operadores para obtenção de subsequências e os operadores para Ąltragem de sequências por comprimento. Já a Seção 6.4 discute sobre o plano de execução de consultas contendo preferências temporais. A Seção 6.5 apresenta a sintaxe de consultas na linguagem StreamPref. Em seguida, a Seção 6.6 aborda as equivalências CQL dos novos operadores. A Seção 6.7 faz uma análise comparativa entre a linguagem StreamPref e os trabalhos correlatos sobre processamento de consultas contínuas com preferências. Por Ąm, a Seção 6.8 apresenta as considerações Ąnais sobre o capítulo.

6.1 Extração de sequências

Antes que as preferências temporais possam ser processadas em uma consulta StreamPref, é necessário converter os dados das relações e Ćuxos envolvidos para o formato de sequências. O operador SEQ extrai sequências identiĄcadas (DeĄnição 25) a partir de um Ćuxo de dados. Quando existem relações na consulta, as mesmas podem ser convertidas para Ćuxos usando os operadores relação-para-Ćuxo da CQL.

6.1. Extração de sequências 109