• Nenhum resultado encontrado

6 OS MÓDULOS FUNCIONAIS DA ARQUITETURA SBI

6.2 Gerenciador de Ontologias

Para o cumprimento dos requisitos funcionais da arquitetura no que tange à navegação sobre as fontes de dados, à utilização de regras de negócio e à recomendação de recursos durante as análises, torna-se necessário definir um conjunto de métodos que possibilitem:

1. a manipulação dos conceitos definidos nas ontologias da arquitetura, através de métodos que permitam a criação, a alteração e a recuperação de instâncias das ontologias; e

2. a recuperação e a execução de regras definidas na Ontologia do Domínio, visando suportar o processamento das inferências preconizadas pelos requisitos da arquitetura.

O Gerenciador de Ontologias é o módulo da arquitetura SBI que provê o conjunto de métodos necessários para a execução de consultas e inferências sobre os repositórios de ontologias da arquitetura SBI. De forma geral, este módulo visa possibilitar que as ontologias da arquitetura sejam utilizadas no cumprimento de todos os requisitos funcionais definidos no Capítulo 4. Este módulo foi concebido para tornar transparente a manipulação das ontologias

aos demais módulos da arquitetura e oferecer liberdade para seleção do mecanismo de inferência e do formalismo de representação das ontologias, conforme previsto no requisito RNF2.

A partir da análise dos requisitos funcionais e não funcionais da arquitetura, foi definida uma interface (FOLDOC, 2005a) que reúne um conjunto de métodos para o acesso aos repositórios de ontologias. Essa interface pode ser implementada sobre diferentes mecanismos de inferência e formalismos de representação e armazenamento de ontologias. A Figura 20 ilustra as classes que constituem o Gerenciador de Ontologias. Uma ilustração das classes que implementam a versão atual do Gerenciador de Ontologias é apresentada na Figura 20. No momento, o módulo conta com uma implementação para a linguagem OCML, através da classe

OntologyManagerOCML. Essa classe implementa os métodos definidos na

interface OntologyManager apoiando-se no plugin Java para a linguagem OCML (KMi, 2005).

O Gerenciador de Ontologias na arquitetura SBI permite um baixo nível de acoplamento (FOLDOC, 2005b) entre aplicações analíticas, mecanismo de consulta e repositório de ontologias, resultando em maior flexibilidade para mudanças nos repositórios e formalismos de representação. Essa característica é possibilitada porque os demais módulos da arquitetura SBI acessam as ontologias através dos métodos padrão definidos na interface

OntologyManager. Dessa forma, a Arquitetura SBI torna possível a adoção de

diferentes formalismos de representação de ontologias, desde que uma classe específica para o formalismo desejado seja desenvolvida de acordo com a lista de métodos da interface padrão.

Conforme ilustra a Figura 20, a interface OntologyManager prevê métodos para:

1. criação de instâncias (i.e., método createInstance). Através deste método, o Gerenciador de Análises persiste na Ontologia BI as definições das análises criadas pelos usuários. Da mesma forma, este método é utilizado pelo Gerenciador de Instâncias para criar os conceitos na ontologia do Domínio a partir de dados selecionados dos repositórios de dados da organização. Para a

linguagem OCML, a execução deste método corresponde à chamada do método homônimo no plugin OCML;

2. recuperação de informações gerais sobre as instâncias e classes definidas nas ontologias da arquitetura (i.e., através dos métodos

get e retrieve, como o método getInstanceData e getSlots). Esses

métodos utilizam duas classes de suporte para auxiliar na manipulação das informações das instâncias e respectivos slots, as classes Instance e Slot. Através desses métodos torna-se possível recuperar as definições das ontologias da arquitetura, como, por exemplo, para apresentar as instâncias de instituições recuperadas pela relação institution-competitor apresentada na Listagem 1;

3. recuperação de filtros semânticos e relações para um dado conceito (i.e., getRelation e getSemanticFilters). Esses métodos são utilizados para recuperar alternativas de inferências para os conceitos relacionados em uma análise. Tais alternativas consistem de relações e regras definidas na Ontologia do Domínio que envolvam um determinado conceito nas premissas das regras ou como parâmetro de uma relação. Na linguagem OCML, a execução desses métodos demanda a execução de uma consulta na Ontologia do Domínio, buscando relações e regras que possuam em seus cabeçalhos, na Seção constraint (MOTTA, 1999), referências ao conceito a ser localizado; e

4. extração dos rótulos para as tabelas e respectivos campos de acordo com o perfil do usuário (i.e., retrieveLabel e

retrieveTableLabel). Esses dois últimos métodos correspondem à

execução da relação label-role-idiom definida na Ontologia BI e apresentada na Listagem 4.

Além dos métodos descritos acima, um método específico para comparação entre conceitos é previsto na interface OntologyManager. Trata-se do método compareConcepts, que verifica se dois conceitos são compatíveis, conforme algoritmo ilustrado na Figura 21. Esse método foi criado a partir da definição de graus de semelhança entre descrições de Web services

semânticos apresentada em Li e Horrocks (2003), aqui adaptado para a comparação de qualquer tipo de conceito representado na Ontologia do Domínio. O método compareConcepts é utilizado no processo de localização e recomendação de análises e serviços, de acordo com os conceitos manipulados em uma análise definida pelo tomador de decisão em uma ferramenta analítica, conforme o requisito RF6. Nesse processo de localização, são considerados os conceitos utilizados na definição da análise corrente do usuário e os conceitos que descrevem os serviços, as análises, as relações e as regras nas ontologias da arquitetura. Esses métodos de localização e recomendação são apresentados nas seções correspondentes ao Gerenciador de Serviços (Seção 6.3) e Gerenciador de Análises (Seção 6.4).

cd o nt

I nst a n ce - ont ology: St r ing = null - class: St r ing = null - inst anceName: St r ing = null - inst Slot s: Slot ([]) = null + Inst ance()

+ Inst ance(St r ing, St r ing) + Inst ance(St r ing, St r ing, St r ing) + Inst ance(St r ing, St r ing, St r ing, St r ing) + init ializ eInst anceSlot s(int ) : void + get Ont oName() : St r ing + get ClassName() : St r ing + get Inst anceName() : St r ing + get Inst anceSlot s() : Slot [] + get Number Of Slot s() : int + get Slot At (int ) : Slot

+ get Slot Wit hName(St r ing) : Slot + set Ont oName(St r ing) : void + set ClassName(St r ing) : void + set Inst anceName(St r ing) : v oid + pr int Inf o() : v oid

Slot - name: St r ing = null - t y pe: St r ing = null + Inst anceSlot () + Inst anceSlot (St r ing)

+ Inst anceSlot (St r ing, St r ing, St r ing, Color ) + get Name() : St r ing

+ get Ty pe() : St r ing + get ValueAt (int ) : St r ing + get ValuesToSt r ing() : St r ing

+ get ValuesToSt r ingNoRep(boolean) : St r ing + set Name(St r ing) : v oid

+ set Type(St r ing) : void

«int er f ace»

Ont ol ogy Ma na ger + connect Ont ologyServ er( ) : v oid

+ creat eI ns t ance( St ring, St ring, Vect or, Vect or) : St ring[ ] + com pareConcept s ( St ring, St ring) : int

+ get Ont ology Nam e( ) : St ring + get Sem ant icFilt ers( St ring) : Vect or + get Relat ions ( St ring) : Vect or + get Slot s( St ring) : Vect or

+ get I ns t anceDat a( St ring, St ring) : I ns t ance + get I ns t anceI nf o( St ring, St ring) : St ring + proces s Query ( St ring) : St ring[ ]

+ ret riev eI ns t anceI D( St ring, St ring) : St ring

+ ret riev eI ns t anceI Df orSt ringSlot ( St ring, St ring) : St ring + ret riev eSlot Values( St ring, St ring) : St ring

+ ret riev eI ns t anceof Slot ( St ring, St ring) : St ring + ret riev eRelat ionRes ult ( St ring, St ring) : St ring[ ] + ret riev ePres ent at ionAt t ribut es ( St ring) : St ring[ ] + ret riev eLabel( St ring, St ring) : St ring

+ ret riev eTableLabel( St ring, St ring) : St ring + ret riev eRole( St ring) : St ring

+ ret riev eI ns t anceClass ( St ring) : St ring O nt ology Ma na ge r Fa ct or y

+ get Ont ology Manager (St r ing) : Ont ologyManager

O n t ology Ma na g e r O CML - osPlugin: IEOnt oSer v er Plugin - ont ology : St r ing = "ont odss- goal" - v ecAGoal: Vect or

+ Ont ology Manager OCML() + connect Ont ologySer v er () : v oid

+ cr eat eInst ance(St r ing, St r ing, Vect or , Vect or ) : St r ing[] + compar eConcept s(St r ing, St r ing) : int

+ get Plugin() : IEOnt oSer v er Plugin + get Ont ologyName() : St r ing + get Semant icFilt er s(St r ing) : Vect or + get Relat ions(St r ing) : Vect or + get Slot s(St r ing) : Vect or

+ get Inst anceDat a(St r ing, St r ing) : Inst ance + get Inst anceInf o(St r ing, St r ing) : St r ing + pr ocessQuer y(St r ing) : St r ing[]

+ r et r iev eInst anceID(St r ing, St r ing) : St r ing

+ r et r iev eInst anceIDf or St r ingSlot (St r ing, St r ing) : St r ing + r et r iev eSlot Values(St r ing, St r ing) : St r ing

+ r et r iev eInst anceof Slot (St r ing, St r ing) : St r ing + r et r iev eRelat ionResult (St r ing, St r ing) : St r ing[] + r et r iev ePr esent at ionAt t r ibut es(St r ing) : St r ing[] + r et r iev eLabel(St r ing, St r ing) : St r ing

+ r et r iev eTableLabel(St r ing, St r ing) : St r ing + r et r iev eRole(St r ing) : St r ing

+ r et r iev eInst anceClass(St r ing) : St r ing + t est WebOnt o() : v oid

- inst Slot s

Figura 20 - Ilustração das classes que compõem o módulo Gerenciador de Ontologias

Conforme ilustrado na Figura 21, caso os dois conceitos informados como parâmetro para o método compareConcepts sejam idênticos, diz-se que existe um match exato (exact) entre eles. Se o conceito 2 for pai do conceito 1, diz-se que há uma relação do tipo plugin entre o conceito 1 e o conceito 2 e, caso contrário, diz-se que o conceito 1 inclui (subsume) o conceito 2. Caso um filho do conceito 1 seja idêntico a um filho do conceito 2, diz-se que há uma

relação de intersecção (intersection) entre os dois conceitos. Em caso de total incompatibilidade entre os dois conceitos, o método retorna que os dois conceitos são disjuntos (disjoint).

a ct co m pa r e Conce pt s

Início

Conceit o1 = Conceit o2?

Conceit o2 t em f ilhos = Conceit o1? Re t or ne " Ex a ct " Re t or ne " P lugI n" Conceit o1 t em f ilhos = Conceit o2? Re t or ne " Subsum e " Conceit o2 e Conceit o1

possuem f ilhos iguais? Re t or ne

" I nt e r se ct ion" Re t or ne " D isj oin t " Fim F F F T T T F T

Figura 21 - Ilustração do processo de comparação de conceitos