Simpósio Brasileiro de Bancos de Dados - SBBD 2012 Short Papers Adição de termos semânticos a consultas OLAP Robson do N. Fidalgo, Samuel de França Arcoverde Universidade Federal de Pernambuco [email protected], [email protected] Abstract. OLAP tools have been widely used for decision support analysis. In turn, ontologies has proven to be an effective and well accepted technology for recovering of semantic information. Thus, the integration of these technologies (OLAP and ontology) allows new types of queries that, individually, these technologies are not capable of performing. In this context, considering that related works still have not provided a solution to integrate OLAP Servers, the MultiDimensional eXpressions (MDX) language and ontologies, this paper proposes: i) a software architecture for OLAP and ontology integration; ii) a mapping between the metadata of a cube and the metadata of an ontology; iii) an extension of the MDX language to allow the use of semantic terms and iv) an algorithm to rewrite a MDX query with semantic terms in a query fully compliant with the standard syntax of this language. As proof of concept, we have developed a prototype and presented an application that implements our proposal and shows its feasibility. Resumo. Ferramentas OLAP são amplamente usadas para analises de suporte à decisão. Por sua vez, ontologias tem mostrado ser uma tecnologia bem aceita e efetiva para recuperação de informação semântica. Portanto, a integração destas tecnologias (OLAP e Ontologias) permite novos tipos de consultas que, individualmente, estas tecnologias não são capazes de executar. Neste contexto, considerando que os trabalhos relacionados ainda não forneceram uma solução para integrar servidores OLAP, a linguagem MultiDimensional eXpressions (MDX) e ontologias, este artigo propõe: i) uma arquitetura de software para integrar OLAP e ontologia; ii) um mapeamento entre os metadados de um cubo e os metadados de uma ontologia; iii) uma extensão da linguagem MDX para permitir o uso de termos semânticos e iv) um algoritmo para reescrever uma consulta MDX com termos semânticos em uma consulta MDX totalmente em conformidade com a sintaxe padrão desta linguagem. Como prova de conceito, foi desenvolvido um protótipo e apresentado uma aplicação que implementa as propostas deste trabalho, o que visa mostrar a sua viabilidade. Keywords: OLAP and Ontologies 1. INTRODUÇÃO Sistemas para suporte à decisão permitem analisar estrategicamente os dados de uma organização. Neste contexto, as tecnologias para processamento analítico de dados (On-Line Analytical Processing - OLAP) [Thomsen 2002] se destacam e podem ser resumidas como ferramentas para analisar, sobre diferentes cruzamentos de dados e níveis de detalhes, grandes Bancos de Dados (BD) conhecidos como Data Warehouses (DW) [Kimball et al. 2008]. Apesar da boa aceitação destas ferramentas, elas ainda não dão suporte para utilizar a semântica de um negócio (i.e., suas terminologias e regras) de forma a enriquecer o processo de tomada de decisão. Isso ocorre pelo fato de que as ferramentas OLAP priorizam facilitar e agilizar o processamento de consultas analíticas, ignorando os conhecimentos específicos de cada organização. Por exemplo, as consultas “qual o total vendido de produtos baratos nos últimos semestres e meses por fornecedor e loja?”, “qual o total de internações graves por hospital, tipo de doença e faixa salarial do paciente nos últimos 4 anos?” e “qual o total de homicídios que ocorreram nos dias quentes por tipo de arma, região geográfica e perfil do criminoso?” não podem ser diretamente executadas por uma ferramenta OLAP, pois estas consultas exigem o processamento semântico dos termos “barato”, “grave” e “quente”, os quais dependem do contexto do negócio analisado e, ao longo do tempo, podem ter suas semânticas alteradas. Neste contexto, visando adicionar descrição semântica e lógica ao negócio de uma 105 Simpósio Brasileiro de Bancos de Dados - SBBD 2012 Short Papers organização, as tecnologias para processamento semântico (e.g., ontologias [Lacy 2005]) vêm sendo amplamente utilizadas para identificar as entidades e os relacionamentos de um domínio, definindo um vocabulário conceitual para dar suporte à realização de inferências sobre esse domínio. Ressalta-se que o conhecimento representado através de ontologias pode ser explorado por máquinas de inferência, permitindo a geração de conhecimento adicional e não trivial, o qual pode ser útil para o enriquecimento semântico de consultas que visam o processamento analítico de dados. Com o objetivo de dar uma contribuição para resolver o problema de integrar consultas OLAP e consultas semânticas em uma única ferramenta para suporte à decisão, este trabalho propõe i) uma arquitetura de software para a integração entre OLAP e ontologia; ii) um mapeamento entre os metadados de um cubo e os metadados de uma ontologia; iii) uma extensão da linguagem MultiDimensional eXpressions (MDX) [Fouché and Langit 2011] para permitir o uso de termos semânticos em consultas OLAP; e iv) um algoritmo para reescrever a consulta MDX com termos semânticos em uma nova consulta totalmente em conformidade com a sintaxe padrão de MDX. Para avaliação do presente trabalho, desenvolveu-se, como prova de conceito, um protótipo que implementa e mostra que as propostas apresentadas neste artigo são relevantes e factíveis. O restante deste artigo é organizado da seguinte forma. Na seção 2, apresenta-se os conceitos básicos relacionados a OLAP e ontologias. Na seção 3, propõe-se uma arquitetura de software, um mapeamento entre cubos e ontologias, um algoritmo e uma extensão da linguagem MDX para realizar processamento analítico e semântico. Na seção 4, o protótipo desenvolvido é apresentado e avaliado. Na seção 5, os principais trabalhos relacionados são discutidos. Por fim, na seção 6, as considerações finais e trabalhos futuros são apresentados. 2. CONCEITOS BÁSICOS SOBRE OLAP E ONTOLOGIAS OLAP [Thomsen 2002] [Fouché and Langit 2011] é uma ferramenta de consulta que permite realizar cruzamentos e análises em diferentes níveis de agregação dos dados de um DW [Kimball et al. 2008]. Este tipo de ferramenta realiza consultas sobre uma base de dados (materializada ou virtual) chamada de cubo de dados [Thomsen 2002] [Fouché and Langit 2011], o qual corresponde a sumarizações/agregações sobre um subconjunto dos dados do DW. Alguns conceitos básicos sobre cubo de dados são [Thomsen 2002] [OMG 2003]: i) Dimensão (eixos de análises); ii) Níveis (projeções de uma dimensão); iii) Hierarquia (visão ordenada do níveis); iv) Membro (item de dado de um nível) e v) Medida (atributo mensurável a ser analisado). A partir de um cubo de dados, várias operações OLAP podem ser executadas. Dentre estas, as principais são [Thomsen 2002] [Fouché and Langit 2011]: i) Roll-up (agregação dos dados para um nível acima); ii) Drill-down (agregação dos dados para um nível abaixo); iii) Slice (projeção sobre um ou mais níveis da dimensão de um cubo de dados); iv) Dice (seleção sobre um ou mais membros do cubo de dados); e v) Pivoting/Rotate (rotação dos eixos do cubo de dados). Estas operações estão disponíveis na linguagem MDX [Fouché and Langit 2011], a qual é um padrão de facto para realizar consultas sobre servidores OLAP. Em linhas gerais, uma consulta MDX pode ser composta pelas cláusulas: WITH (adiciona uma lista de membros calculados e/ou conjuntos pré-definidos), SELECT (contém os dados que serão projetados), FROM (indica o cubo a ser consultado), WHERE (impõe uma seleção ao escopo da consulta). Ressalta-se que apenas as cláusulas SELECT e FROM são obrigatórias. Ontologias [Lacy 2005] [Segaran 2009] são especificações explícitas e formais de termos ou conceitos compartilhados. Isto é, estas capturam e explicitam a semântica de um negócio (suas terminologias e regras) de forma a evitar ambiguidades e torná-la computável. A estrutura de uma ontologia é geralmente formada por um conjunto de classes (conceitos de um domínio), relações (associações entre as classes) e propriedades (atributos de uma classe). Uma ontologia também pode possuir axiomas, os quais são sentenças que descrevem as regras formais de um domínio. Dentre as linguagens para especificar ontologias, a Ontology Web Language (OWL) [Lacy 2005] é um padrão definido pelo World Wide Web Consortium (W3C). Esta linguagem possui três sub-linguagens, dispostas em uma sequência crescente de níveis expressividade, a saber: OWL-Lite (suporta apenas a 106 Simpósio Brasileiro de Bancos de Dados - SBBD 2012 Short Papers criação de taxonomias e restrições simples), OWL-DL (utiliza o vocabulário completo de OWL e garante completude e decidibilidade) e OWL-Full (permite representar ontologias com maior flexibilidade, mas sem as garantias de computabilidade de OWL-DL). Como suporte adicional ao uso de ontologias, é possível utilizar mecanismos de dedução chamados de raciocinadores, os quais agem como motores de inferência sobre a descrição das ontologias, realizando checagem de consistência e classificação automática das classes. 3. INTEGRANDO OLAP E ONTOLOGIAS De forma a integrar OLAP e ontologias para realizar processamento analítico e semântico, na Figura 1 apresenta-se a arquitetura de software proposta neste trabalho. Nesta figura tem-se três camadas: Dados, Processamento e Apresentação, as quais, juntamente com seus componentes, são discutidas a seguir. Fig. 1. Arquitetura para integrar OLAP e Ontologias A Camada de Dados é composta por um cubo OLAP e por uma Base de Conhecimento formada por um conjunto de ontologias. O cubo OLAP deve estar em conformidade com os padrões Common Warehouse Metamodel (CWM) [OMG 2003] e XML for Analysis (XMLA) [MSDN 2012]. Por sua vez, a base de conhecimento é formada por três tipos de ontologias: Dimensão, Semântica do Negócio e Integração, as quais são resumidas assim: • Ontologia de Dimensão - representa os dados (i.e., membros) e metadados (i.e., hierarquia e nível) da dimensão de um cubo OLAP como classes e relacionamentos ontológicos (ver Mapeamento OLAPOntologia na Figura 1). A construção desta ontologia é automática e segue os três passos a seguir: i) nomear a Ontologia de Dimensão com o mesmo nome da dimensão que ela representa; ii) criar, para cada membro de um nível da dimensão, uma classe ontológica cujo nome deve ser o mesmo nome único (propriedade UNIQUE NAME de MDX) do membro e, para cada classe criada, deve-se definir a propriedade NÍVEL, a qual registra o nome do nível a que pertence o membro representado pela classe; e iii) definir os relacionamentos entre as classes de modo que estes representem os mesmos relacionamentos hierárquicos existentes entre os membros de uma dimensão. Ressalta-se que todas as relações de hierarquia devem possuir as propriedades de inversão e transitividade e que o nome dessas relações deve ser o mesmo nome das hierarquias que elas representam, pois isto permite representar o 107 Simpósio Brasileiro de Bancos de Dados - SBBD 2012 Short Papers conjunto de hierarquias de uma dimensão apenas definindo novos relacionamentos entre as classes. Além disso, é importante destacar que, devido ao fato de todos os membros e hierarquias de uma dimensão estarem presentes em sua respectiva Ontologia de Dimensão, este tipo de representação é completa e única para cada dimensão; • Ontologia de Semântica do Negócio - descreve as regras e termos semânticos (i.e., conceitos que representam um conhecimento empírico de um negócio) de uma organização. Esta ontologia é construída em três passos: i) importação de uma ou mais Ontologias de Dimensão, ii) criação de uma classe ontológica para cada termo semântico e iii) definição manual das regras e/ou axiomas que modelam a semântica do negócio da organização. Ressalta-se que uma Ontologia de Semântica do Negócio pode importar várias Ontologias de Dimensão, as quais podem ser importadas por várias Ontologias de Semântica do Negócio (ver Base de Conhecimento na Figura 1). Note que separar as Ontologias de Semântica do Negócio das Ontologias de Dimensão dá flexibilidade para alterar a semântica do negócio sem afetar as Ontologias de Dimensão (representação ontológica dos dados do cubo OLAP), o que facilita e torna menos custosas as alterações dos termos e regras do negócio; • Ontologia de Integração - importa as Ontologias de Semântica do Negócio que estão relacionadas a um cubo OLAP, abstraindo a complexidade de manipular várias ontologias diferentes. A partir da Ontologia de Integração qualquer uma das classes das Ontologias de Semântica do Negócio e das Ontologias de Dimensões podem ser acessadas, pois a Ontologia de Integração importa as Ontologias de Semântica do Negócio e estas importam as Ontologias de Dimensão. Portanto, por transitividade, uma Ontologia de Integração contém todas as classes das suas Ontologias de Semântica do Negócio e de Dimensões. Ressalta-se que uma Ontologia de Integração deve ter o mesmo nome do cubo OLAP, pode importar várias Ontologias de Semântica do Negócio e estas podem ser importadas por outras Ontologias de Integração (ver Base de Conhecimento na Figura 1). Além disso, um cubo está associado a uma única Ontologia de Integração e esta só pode estar associada a um cubo (ver Mapeamento OLAP-Ontologia na Figura 1). A Camada de Processamento é composta pelo componente Tradutor OLAP-Ontologia, pela API OLAP e pela API Semântica. O Tradutor OLAP-Ontologia é basicamente a fusão de um analisador de tokens (i.e., termos semânticos) e um gerador de código (i.e., reescrita de uma MDX com termos semânticos em uma MDX padrão). No Quadro 1, apresenta-se o pseudocódigo com os principais passos para implementar o componente Tradutor OLAP-Ontologia. Quadro 1. Pseudocódigo do Componente Tradutor OLAP-Ontologia Entrada: mdx //consulta OLAP com termo semântico Saída: resultado //resultado da consulta OLAP com termos semânticos reescritos em membros OLAP Método: 01: INÍCIO 02: LER (mdx); //Leitura da MDX com termos semânticos 03: vetorTermosSemanticos[] = obterTermosSemanticos(mdx); // Obtenção dos termos semânticos da MDX 04: SE (vetorTermosSemanticos <> vazio) ENTÃO { //Teste para verificar se a MDX tem temos semânticos 05: PARA (i = 1; i <= VetorTermosSemanticos[].tamanho(); i++){ //Construção do vetor de classes ontológicas 06: vetorClassesOntologicas[] = obterClassesOntologicas(vetorTemosSemanticos[i]); 07: vetorMembrosOLAP[] = vazio; // Limpeza do vetor de membros OLAP 08: PARA (j = 1; j <= vetorClassesOntologicas[].tamanho(); j++){ //Construção do vetor de membros OLAP 09: vetorMembrosOLAP [] = obterNomeUnicoMembroOLAP(vetorClassesOntologicas[j]); 10: } 11: mdx = reescreverTermoSemantico(mdx, vetorMembrosOLAP[]); // Reescrita da MDX 12: vetorClassesOntologicas[] = vazio; //Limpeza do vetor de classes Ontológicas 13: } 14: } 15: resultado = executarMdx(mdx); // Execução da MDX 16: enviarResultado(resultado); // Envio do resultado para a interface gráfica do usuário 17: FIM No quadro 1 tem-se os seguintes passos mais importantes: i) A leitura da MDX com termos semânticos (ver linha 02); 108 Simpósio Brasileiro de Bancos de Dados - SBBD 2012 Short Papers ii) A construção do vetor de termos semânticos (ver linha 03). Este vetor é construído a partir de uma análise léxica para obter os tokens (termos semânticos) da consulta MDX. Ressalta-se que um termo semântico é gramaticamente definido pela seguinte expressão regular #\([a-zA-Z0-9_\-]+\). A partir desta expressão regular pode-se criar termos semânticos como: #(PeríodoQuente), #(Período_Quente), #(PeríodoQuente2012) e #(Período-Quente), os quais são usados para estender a sintaxe da linguagem MDX, pois podem ser usados em substituição da função MEMBERS desta linguagem. Ou seja, assim como a função MEMBERS, um termo semântico retorna um conjunto de membros de um cubo; iii) O teste que verifica se o vetor de termos semânticos não está vazio (ver linha 04). Isto é, se não houver termo semântico na consulta MDX, não há necessidade de reescrevê-la; iv) A iteração para construir o vetor com as classes ontológicas (ver linha 06). Para cada iteração, usando uma API Semântica (e.g., Jena), deve-se consultar a Ontologia de Integração e obter todas as classes que são filhas da classe que possui o mesmo nome do termo semântico da iteração atual; v) A sub-iteração para construir o vetor com os membros OLAP correspondentes aos termos semânticos (ver linha 08). Para cada iteração, deve-se obter o nome de cada classe ontológica correspondente ao termo semântico e atribuí-lo ao nome de cada membro do vetor de membros OLAP. Note que, como os nomes das classes das Ontologias de Dimensão são idênticos aos nomes únicos dos seus respectivos membros OLAP, os elementos do vetor com membros OLAP já estão totalmente aderentes à sintaxe de MDX; vi) A reescrita de cada termo semântico da consulta MDX (ver linha 11). Neste passo, cada termo semântico é substituído pela função MEMBERS de MDX (e.g., [Data].[Dia].#(PeriodoQuente) [Data].[Dia].MEMBERS). Além disso, como os membros OLAP não precisam estar no mesmo nível hierárquico, para cada nível diferente, deve-se escrever uma função EXISTS de MDX. Esta função tem dois argumentos obrigatórios (conjunto1 e conjunto2) e retorna todos os membros do conjunto1 que pertencem ao conjunto2. Para a reescrita da consulta MDX, o primeiro argumento deve ser a expressão com a função MEMBERS, enquanto o segundo argumento, o conjunto de membros correspondentes ao termo semântico (e.g., EXISTS( [Data].[Dia].MEMBERS, {[Data].[Dia].[29/4/2012], [Data].[Dia].[30/4/2012]}) ). Ressalta-se que os membros do conjunto2 devem ser do mesmo nível; vii) A execução da consulta MDX reescrita (ver linha 15). Este passo é realizado fazendo-se uso de uma API OLAP (e.g., XMLA); viii) O envio do resultado para a interface gráfica do cliente (ver linha 16). Por fim, a Camada de Apresentação é formada pelo componente Interface Gráfica do Usuário. Este componente pode ser qualquer cliente OLAP (local ou remoto) que esteja em conformidade com o padrão XMLA (e.g., JPivot). 4. PROTÓTIPO DESENVOLVIDO Como prova de conceito das propostas apresentadas neste trabalho, um protótipo do tradutor OLAPOntologia foi desenvolvido na linguagem de programação Java. Os demais componentes da arquitetura de software apresentada na Figura 1 reusam as seguintes tecnologias: Mondrian (servidor de cubos OLAP), OWL (Base de Conhecimento), XMLA (API OLAP), Jena e Pellet (API Semântica) e JPivot (Interface Gráfica do Usuário). Uma aplicação usando o protótipo desenvolvido é apresentada a seguir. 4.1 AVALIAÇÃO DO PROTÓTIPO Para avaliar o protótipo foi desenvolvida uma aplicação a partir de um cubo de dados Vendas e as seguintes ontologias: Vendas (Ontologia de Integração), Períodos (Ontologia de Semântica do Negócio) e Data (Ontologia de Dimensão), todas escritas em OWL-DL. O cubo Vendas é formado pelas 109 Simpósio Brasileiro de Bancos de Dados - SBBD 2012 Short Papers dimensões Data, Cliente e Produto e pela medida Quantidade de Vendas. A dimensão Data possui a hierarquia Ano-Mês-Dia (Ano > Mês > Dia). A dimensão Cliente possui a hierarquia País-Região-Cidade (País > Região > Cidade). Por fim, a dimensão Produto possui a hierarquia Categoria-Subcategoria-Tipo (Categoria > Subcategoria > Tipo). Por sua vez, as ontologias são definidas assim: a ontologia Data representa todos os membros da dimensão Data, bem como as suas relações de acordo com a hierarquia Ano-Mês-Dia. A ontologia Períodos importa a ontologia Data e reutiliza as classes dessa ontologia para especificar os seguintes termos semânticos: PeríodoQuente, PeríodoFrio e PeríodoMorno. Finalmente, após a importação da ontologia Períodos, a ontologia Vendas está pronta para ser utilizada pela aplicação. Por limitação de espaço, a Figura 2 ilustra o trecho dessas ontologias que define o termo semântico PeríodoMorno, o qual corresponde aos dias 29/4/2012, 30/4/2012 e a todos os dias do mês de maio. Fig. 2. Ontologia de Integração Vendas Os Quadros 2 e 4 apresentam duas consultas que foram usadas para avaliar o protótipo desenvolvido. Ressalta-se que um termo semântico pode ser usado em substituição da função MEMBERS de MDX, o que permite a construção de várias outras consultas. Quadro 2. Consulta semântica #1 SELECT DRILLDOWNMEMBER( [Data].[Ano-Mês-Dia].[2012].CHILDREN, [Data].[Ano-Mês-Dia].[Mês].#(PeríodoMorno) ) ON 0, [Measures].[Quantidade de Vendas] ON 1 FROM [Vendas] Ao utilizar a função DRILLDOWNMEMBER, a consulta do Quadro 2 tem como objetivo exibir qual a quantidade de vendas para todos os meses do ano de 2012, detalhando pelo nível Dia apenas os meses que pertencerem à definição do termo semântico PeríodoMorno. Após o Tradutor OLAP-Ontologia realizar a reescrita da consulta do Quadro 2, tem-se a consulta apresentada no Quadro 3, a qual está totalmente em conformidade com a sintaxe padrão de MDX e já pode ser executada por qualquer servidor OLAP em conformidade com o padrão XMLA. Quadro 3. Reescrita da consulta semântica #1 SELECT DRILLDOWNMEMBER( [Data].[Ano-Mês-Dia].[2012].CHILDREN, { EXISTS([Data].[Ano-Mês-Dia].[Mês].MEMBERS,{[Data].[Dia].[29/4/2012],[Data].[Dia].[30/4/2012]}, EXISTS([Data].[Ano-Mês-Dia].[Mês].MEMBERS,{[Data].[Mês].[MAIO,2012]} } ) ON 0, [Measures].[Quantidade de Vendas] ON 1 FROM [Vendas] 110 Simpósio Brasileiro de Bancos de Dados - SBBD 2012 Short Papers Quadro 4. Consulta semântica #2 SELECT NON EMPTY CROSSJOIN( [Cliente].[Cidade].MEMBERS, [Data].[Mês].#(PeríodoMorno) ) ON 0, [Measures].[Quantidade de Vendas] ON 1 FROM [Vendas] O objetivo da consulta semântica #2 (ver Quadro 4) é processar a quantidade de vendas por cidade e mês que ocorreram em períodos mornos. Após a reescrita da consulta do Quadro 4, tem-se a consulta apresentada no Quadro 5, a qual também está totalmente em conformidade com a sintaxe padrão de MDX. Quadro 5. Reescrita da consulta semântica #2 SELECT NON EMPTY CROSSJOIN( [Cliente].[Cidade].MEMBERS, { EXISTS([Data].[Ano-Mês-Dia].[Mês].MEMBERS,{[Data].[Dia].[29/4/2012],[Data].[Dia].[30/4/2012]}), EXISTS([Data].[Ano-Mês-Dia].[Mês].MEMBERS,{[Data].[Mês].[MAIO,2012]}) } ) ON 0, [Measures].[Quantidade de Vendas] ON 1 FROM [Vendas] 5. TRABALHOS RELACIONADOS [Necib and Freytag 2003] realizam consultas a um BD relacional adicionando termos semânticos às consultas SQL. Os autores baseiam-se na ideia de que um termo semântico, correspondente a uma classe ontológica, pode ser adicionado como um predicado da cláusula WHERE. O passo final do processo consiste em reescrever a consulta SQL substituindo os termos semânticos pelos predicados que representam o significado dos termos. As consultas SQL semânticas definidas aqui possuem maior poder de expressividade e por isso produzem resultados mais significativos. Entretanto, o trabalho de [Necib and Freytag 2003] só funciona para BD relacionais. Isto é, ele não apresenta uma solução para integrar OLAP e Ontologias, tampouco para fazer processamento analítico e semântico a partir de MDX. [Sell et al. 2008] propõe um framework que realiza a tradução de consultas semânticas em consultas analíticas que simulam o comportamento de um cubo OLAP. O framework desenvolvido utiliza uma ontologia formada pelos dados das tabelas de dimensão de um DW e pelas regras de negócio inerentes aos dados. Uma consulta semântica é construída a partir da adição de filtros semânticos na cláusula WHERE de SQL. Apesar de ser apresentado como uma solução OLAP, ao invés de consultar um cubo de dados com a linguagem MDX, o framework realiza consultas SQL diretamente no DW utilizando operadores de agregação. Ou seja, este trabalho também não provê uma solução para integrar um servidor OLAP e uma base de conhecimento ontológica a fim de permitir a realização de consultas analíticas e semânticas a partir da linguagem MDX. [Saleh 2011] sugere uma abordagem para realizar consultas semânticas em um BD relacional. Ele propõe que o esquema relacional e os dados do BD sejam mapeados em uma ontologia e caso seja necessário, um especialista pode adicionar novas classes ou relações à ontologia inicial. A consulta semântica definida pelo usuário é na verdade uma consulta escrita em SPARQL que será traduzida para SQL baseando-se nas informações da ontologia. Embora o autor utilize consultas SPARQL e SQL, seu trabalho não integra efetivamente as duas tecnologias, pois elas não podem ser utilizadas simultaneamente em uma mesma consulta. Além disso, a abordagem proposta por [Saleh 2011] também não é voltada para integrar servidores OLAP com ontologias, tampouco estende a sintaxe da linguagem MDX para permitir a realização de consultas analíticas e semânticas. [Prat et al. 2012] descrevem um conjunto de passos e regras de transformação que visam construir uma ontologia a partir dos conceitos de um metamodelo de um cubo. Assim como todos os trabalhos anteriormente discutidos, este não faz uso de um servidor OLAP tampouco da linguagem MDX. Ou seja, dentre os trabalhos investigados, nenhum ataca o problema de como realizar consultas semânticas usando um servidor OLAP e a linguagem MDX. 111 Simpósio Brasileiro de Bancos de Dados - SBBD 2012 Short Papers 6. CONSIDERAÇÕES FINAIS A integração entre OLAP e ontologias permite estender o poder das consultas OLAP a partir do processamento de termos semânticos e da realização de inferências e raciocínios sobre o domínio de um negócio, enriquecendo o processo de tomada de decisão. A partir de um estudo sobre os principais trabalhos relacionados, pode-se constatar que nenhum deles propõe uma solução que permite integrar OLAP e ontologias para realizar consultas semânticas a partir da linguagem MDX. Dado que este ponto em aberto é relevante, pois estas tecnologias (i.e., OLAP, ontologia e a linguagem MDX) são amplamente usadas pela indústria e academia, este trabalho, de forma a dar uma contribuição na direção de resolver este ponto em aberto, propôs: i) uma arquitetura de software para a integração OLAP e ontologia; ii) um mapeamento entre os metadados de um cubo e os metadados de uma ontologia; iii) uma extensão da linguagem MDX para permitir o uso de termos semânticos; e iv) um algoritmo para reescrever a consulta MDX com termos semântico em uma consulta totalmente em conformidade com a sintaxe padrão de MDX. Como pontos fortes deste trabalho têm-se: i) a independência de um servidor OLAP específico, pois como a arquitetura de software é baseada no padrão XMLA, pode-se usar qualquer servidor OLAP aderente a este padrão; ii) a especificação do mapeamento e dos passos necessários para traduzir um termo semântico em membros do cubo e iii) uma expressão regular que permite facilmente estender a sintaxe da linguagem MDX de forma a fazer uso de termos semânticos. Em resumo, este artigo contribui para avançar o estado da arte na área de processamento semântico e analítico, pois propõe o primeiro trabalho que consegue realizar a integração entre servidor OLAP, linguagem MDX e Ontologias em um único ambiente para suporte à decisão, o que abre uma nova perspectiva de pesquisa científica e industrial. Apesar das contribuições obtidas, muitos trabalhos futuros ainda têm que ser realizados, como por exemplo, uma avaliação experimental usando um cubo com um enorme volume de dados (10GB/20GB), a fim de analisar a escalabilidade das propostas apresentadas neste artigo (para este trabalho pode-se usar ferramentas que geram DW artificiais - e.g., Star Schema Benchmark - SSB). Além deste, outros trabalhos futuros são: melhorar a atual ontologia para que esta permita a realização de inferências que gerem conhecimento adicional e definir operações de drill-down/roll-up semânticos que exporem as hierarquias das ontologias. Agradecimento: Os autores agradecem ao CNPQ pelo apoio financeiro dado a realização deste trabalho, o qual está no contexto do projeto 475777/2010-7. REFERÊNCIAS F OUCHÉ G, L ANGIT L. Foundations of SQL Server 2008 R2 Business Intelligence. Apress; 2011 KIMBALL R, R OSS M, THORNTHWAITE W, M UNDY J, BECKER B. The Data Warehouse Lifecycle Toolkit. 2nd ed. John Wiley & Sons; 2008. L ACY L. W. OWL: Representing Information Using the Web Ontology Language. Trafford Publishing; 2005 MSDN. XML for Analysis Reference (XMLA). Available at: http://msdn.microsoft.com/en-us/library/ms186604.aspx. Accessed July 2012. NECIB, C. B., F REYTAG, J. C. Ontology-based Query Processing in Database Management Systems, 2003. OMG. Common Warehouse Metamodel (CWM) Specification. 2003. P RAT , N., AKOKA, J., COMYN-WATTIAU, I. Transforming Multidimensional Models into OWL-DL Ontologies, 2012. S ALEH, M. E. Semantic-Based Query in Relational Database Using Ontology, Canadian Journal on Data Information and Knowledge Engineering, vol. 2, nº 1, 2011. S EGARAN T, EVANS C, TAYLOR J. Programming the Semantic Web. O’Reilly Media; 2009. S ELL , D., S ILVA, D. C., BEEPLER, F. D., NAPOLI, M., G HISI, F. B., P ACHECO, R. C. S., AND T ODESCO, J. L. SBI: A Semantic Framework to Support Business Intelligence. OBI, pp. 1-11, 2008. T HOMSEN E. OLAP Solutions: Building Multidimensional Information Systems. 2nd ed. John Wiley & Sons; 2002. 112