• Nenhum resultado encontrado

5 A EPISTEMOLOGIA DA ARQUITETURA

5.3 Ontologia BI

5.3.1 Mapeando dados do Data Warehouse aos conceitos do negócio

Verificam-se várias referências na literatura sobre a aplicação de ontologias para descrever a organização dos repositórios de dados, visando apoiar o processamento de consultas (MENA et al., 2000; NECIB; FREITAG, 2003; PATON et al., 1999). Entretanto, nessas pesquisas o dado não é replicado como instâncias para formar uma base de conhecimento; o suporte a inferências é feito por máquinas de inferência customizadas para uma base de dados específica, o que dificulta a aplicação desses métodos em outros domínios de aplicação ou a utilização de máquinas de inferência já existentes.

Por outro lado, com a replicação de todos os dados dos repositórios da organização em uma base de conhecimento, torna-se possível utilizar

máquinas de inferência já existentes para a exploração da base de conhecimento. Nessa estratégia, os dados dos bancos de dados são transformados em instâncias de classes, permitindo que sejam processadas inferências a partir de axiomas ou regras diretamente sobre as instâncias geradas na base de conhecimento. Entretanto, essa alternativa não é viável no domínio de soluções de BI, em que são agregados tipicamente centenas ou milhares de gigabytes de dados em um DW (KIMBALL et al. 1998), tornando-se complexa e cara a manutenção dessa replicação. Além disso, consultas analíticas típicas envolvem várias restrições e operadores de agregação (BERSON, 1997; THOMSEN, 2002), que não são trivialmente reproduzidos em linguagens de consultas para ontologias.

Na abordagem adotada na arquitetura proposta, as consultas são processadas diretamente sobre o DW. Entretanto, os conceitos do negócio descritos na Ontologia do Domínio são utilizados para suportar a redefinição das consultas de maneira a expandir ou filtrar os resultados de uma consulta. O processo de redefinição de consultas, descrito nas próximas seções, é apoiado pela replicação parcial dos dados do DW (i.e., somente os dados descritivos mantidos nas dimensões do DW), na forma de instâncias dos conceitos do negócio dentro da Ontologia de Domínio. Em consultas OLAP, o usuário tipicamente relaciona atributos das dimensões para definir os cabeçalhos de linha e os marcadores de página. Do mesmo modo, os atributos das dimensões são utilizados como fonte de restrição e para dar suporte aos diversos tipos de

drill implementados pelas ferramentas OLAP (HARRISON, 1997; THOMSEN,

2002). Dimensões são tipicamente tabelas pequenas e com pouca freqüência de alteração (KIMBALL et al., 1998; KIMBALL; ROSS, 2002).

No exemplo de modelo dimensional ilustrado na Figura 4 (apresentada no Capítulo 2, página 30), figuram as dimensões descritivas de instituições de ensino, de grupos de pesquisa, do local onde a instituição está situada e da data. Essas dimensões, ligadas a uma tabela de fatos, a qual naquele exemplo representa a quantidade de pesquisadores, estudantes e linhas de pesquisa dos grupos de pesquisa em um dado mês, permitem análises como a do acompanhamento da evolução do número de pesquisadores por unidade federativa. As dimensões como as deste exemplo mantêm todos os dados que

possuem alguma relação com os conceitos do negócio, visto que os fatos em um DW normalmente mantêm apenas valores numéricos que mensuram o negócio da organização (CHUCK et al., 1998; KIMBALL et al., 1998; TANLER, 1998; SELL, 2001).

Assim, na abordagem utilizada nesta pesquisa, são geradas instâncias para os conceitos da Ontologia do Domínio de acordo com os dados das dimensões do DW, visando apoiar o processo de redefinição de consultas e outras inferências. No caso do exemplo do modelo dimensional de grupos de pesquisa, torna-se necessário modelar conceitos para representar instituições de ensino, de grupos de pesquisa, localidades e tempo. Em seguida, são criadas as instâncias para cada conceito a partir dos registros das tabelas de dimensão correspondentes. Esse processo de criação de instâncias não é suportado por um componente da arquitetura na presente versão. Este processo deverá ser feito através de uma ferramenta ETL ou através de APIs para criação de instâncias de ontologia a partir de dados mantidos em banco de dados, como a API SOFA (2006) ou a API JENA (2006), entre outras.

Os mapeamentos entre as dimensões mantidas nas fontes de dados da organização e os conceitos na Ontologia do Domínio são feitos através da classes DB_Attribute e DB_Collection. Essas e outras classes utilizadas para apoiar esse mapeamento são apresentadas no Quadro 11.

Na definição dos conceitos da Ontologia BI, a classe DB_Collection mapeia uma tabela criada em um repositório de dados a um conceito descrito na Ontologia do Domínio, identificando ainda seus atributos e sua chave, além de outras informações. Os mapeamentos entre os atributos das tabelas e os slots dos conceitos da Ontologia do Domínio são feitos através da classe

DB_Attribute. A propriedade has_attribute_name na classe DB_Attribute é

usada para identificar um campo de uma determinada tabela, enquanto

has_concept e has_slot identificam o conceito e o slot correspondentes na

Ontologia do Domínio. A propriedade has_pk_attribute na classe DB_Collection é usada para retornar valores da chave primária durante o processo de redefinição de condições das consultas implementado pelo módulo Gerenciador de Análise (vide Seção 6.4.2).

As classes Dimension e Fact estendem a classe DB_Collection para descrever as dimensões e as tabelas de fato de um DW. Uma instância da classe Dimension pode ter várias hierarquias de dados, como, por exemplo, uma hierarquia geográfica descrevendo que uma região possui vários Estados e que cada Estado possui vários municípios. As hierarquias (representadas pela classe Hierarchy) são utilizadas para descrever como podem ser realizadas operações de drill-down e drill-up utilizando os atributos das dimensões de um DW. Cada nível de uma hierarquia é descrito por uma instância da classe Level. As hierarquias explicitadas pela classe Hierachy correspondem às hierarquias mapeadas no momento do projeto do DW. Além dessas, o usuário conta com as hierarquias dos conceitos definidos na Ontologia do Domínio para efetuar operações de drill sobre os dados.

A classe Fact representa uma tabela de fatos e possui atributos que identificam as dimensões associadas. Essas ligações são representadas através de instâncias da classe Dimension_Usage. A classe Dimension_Usage identifica como uma determinada dimensão pode ser unida a uma tabela de fatos através de uma coleção de instâncias da classe DB_Collection_Join, a qual identifica os atributos necessários para se efetuar a junção entre duas tabelas.

Quadro 11 - Descrição das classes utilizadas para suportar o mapeamento de fontes de dados e conceitos

Classe Atributo Descrição

has_collection_name Descreve o nome tabela

has_pk_attribute Descreve a chave primária da tabela através

de uma lista de instâncias de DB_Attribute

has_attribute Mantém a lista de DB_Attribute que expressa

os campos da tabela DB_Collection

has_schema Identifica o esquema do banco de dados no

qual a tabela é mantida

has_attribute_name Descreve o nome do campo da tabela

correspondente

has_concept Aponta um conceito descrito na Ontologia do

Domínio (e.g., research_group)

has_slot Identifica o slot do conceito (e.g.,

group_name)

DB_Attribute

has_allowed_summarization

Classe Atributo Descrição

(e.g., AVG, SUM, MAX, MIN, etc.)

is_additive Descreve se o atributo pode ser sumarizado

(e.g., somado, computada a média, etc.)

has_presentation_format Expressa a máscara de formatação para

apresentação em relatórios (e.g., #.##9,99) has_coljoin_first_collection Identifica a primeira DB_Collection.

has_coljoin_first_collection_k ey

Identifica um atributo da primeira DB_Collection que será utilizado para unir as DB_Collections

has_coljoin_second_collectio n

Identifica a segunda DB_Collection. DB_Colletion_Joi

n

has_coljoin_second_collectio

n_key Identifica um atributo da segundaDB_Collection.

has_dimension_name Descreve o nome da dimensão

has_presentation_slots Determina a lista de slots que são utilizados para apresentar uma instância ao usuário

has_dimension_top_agg Determina se podem ser apresentados

agrupadores para os níveis existentes na dimensão (e.g., todas as regiões, todos os sexos, etc)

Dimension

has_dimension_hierarchy Determina as hierarquias existentes na dimensão (e.g., geografia, área de conhecimento)

has_hierarchy_name Descreve o nome da hierarquia

Hierarchy

has_hierarchy_level Relaciona os níveis existentes em uma

hierarquia (e.g., região, estado e município)

has_level_name Descreve o nome do nível de uma hierarquia.

is_unique_member Determina se o nível pode ter múltiplos

valores. Level

has_level_attribute Identifica a instâncias de DB_Attribute relacionada ao nível corrente.

has_usage_dimension Identifica uma instância da classe Dimension Dimension_Usag

e

has_usage_collection_join Identifica uma coleção de instâncias da classe

DB_Collection_Join visando mostrar como a

dimensão identificada em

has_usage_dimension será ligada a uma

tabela de fatos ou à unidade de análise.

has_fact_dimension_usage Identifica as instâncias da classe

Dimension_Usage utilizadas para associar as Dimensions da tabela de fatos.

Fact

has_fact_measure Identifica as instâncias de DB_Attribute que

correspondem às medidas da tabela de fatos.

Um fragmento do código OCML utilizado na descrição do mapeamento entre a tabela de dimensão dim_grupo e o conceito research_group da

Ontologia do Domínio para gestão de C&T é apresentado na Listagem 2. Este mapeamento é realizado por quatro instâncias da classe DB_Attribute e uma instância da classe Dimension. A partir dessas definições, o usuário pode navegar sobre os dados desta tabela e das tabelas de fato correspondentes através do conceito research_group da Ontologia do Domínio. Este processo de navegação é ilustrado no Capítulo 7.

Um exemplo de definição de hierarquia, de níveis de hierarquia e do mapeamento do relacionamento entre a dimensão dim_geografia e a tabela de fatos fato_grupo é apresentado de forma parcial na Listagem 3 a seguir.

Listagem 2 – Definição das instâncias utilizadas para mapear a dimensão dim_grupo ao conceito research_group

(def-instance dimension dim grupo dimension ((has_collection_name "dim_GRUPO") (has_pk_attribute att_dim_grupo_seq_id_grupo) (has_presentation_slots att_dim_grupo_nme_grupo) (has_attribute att_dim_grupo_nme_grupo att_dim_grupo_ano_formacao att_dim_grupo_nro_id_grupo)))

(def-instance att_dim_grupo_nme_grupo db_attribute ((has_attribute_name "NME_GRUPO")

(has_concept research_group) (has_slot has_group_name) (is_additive "false")))

(def-instance att_dim_grupo_seq_id_grupo db_attribute ((has_attribute_name "SEQ_ID_GRUPO") (has_concept research_group) (has_slot has_group_id) (is_additive "true") (has_allowed_additive_summarization Summarization_Count Summarization_Count_Distinct)))

(def-instance att_dim_grupo_nro_id_grupo db_attribute ((has_attribute_name "NRO_ID_GRUPO") (has_concept research_group) (has_slot has_group_code) (is_additive "true") (has_allowed_additive_summarization Summarization_Count Summarization_Count_Distinct)))

(def-instance att_dim_grupo_year_formation db_attribute ((has_attribute_name "ANO_FORMACAO") (has_concept research_group) (has_slot has_group_creation_year) (is_additive "true") (has_allowed_additive_summarization Summarization_Avg Summarization_Min Summarization_Max)))

Listagem 3 – Fragmento da ontologia BI ilustrando uma hierarquia e a ligação entre a dimensão dim_grupo e tabela de fatos fato_grupo