• Nenhum resultado encontrado

CAPÍTULO 4 – TRABALHOS CORRELATOS COMBINANDO

5.4 FT-FIS: Fuzzy Tableau and Fuzzy Inference System

5.4.4 Protótipo FT-FIS

A abordagem FT-FIS foi implementada por um protótipo que instancia a arquitetura de raciocínio apresentada na Seção 5.4.2. Para o desenvolvimento do protótipo, foram conside- radas linguagens de representação de ontologias fuzzy e de regras fuzzy, além de frameworks disponíveis para aplicações baseadas em ontologias fuzzy e de sistemas de inferência fuzzy.

A linguagem de representação de conhecimento utilizada para descrever a ontologia fuzzy em F-ALC(G) baseia-se na sintaxe da linguagem definida por fuzzyDL (BOBILLO; STRAC-

5.4 FT-FIS: Fuzzy Tableau and Fuzzy Inference System 109

CIA, 2008), por ser uma linguagem simplificada que contempla a expressividade de fuzzy ALC(D), subconjunto de F-ALC(G). Além disso, Bobillo e Straccia (2011) disponibilizam um tradutor de Fuzzy OWL 2 para a sintaxe utilizada por fuzzyDL que, futuramente, pode ser estendido para tratar a sintaxe de ontologias fuzzy utilizada em FT-FIS.

No contexto da abordagem FT-FIS, a linguagem definida por fuzzyDL foi estendida, neste projeto de doutorado, para representar as expressões de tipos de dados fuzzy E, a definição e o uso de predicados de tipos de dados fuzzy sobre o tipo de dados dos números reais, segundo a teoria de grupos de tipos de dados G. Os elementos adicionais, que tratam predicados fuzzy definidos a partir dos predicados embutidos de FT-FIS, são descritos na Tabela 5.4, segundo o formalismo de Backus-Naur estendido (EBNF) (SCOWEN, 1993).

Tabela 5.4: Sintaxe para definir e referenciar predicados fuzzy em FT-FIS.

defFuzPred ::= “(” “define-fuzzy-predicate” predName “(” vars “)” “*real*” E “)” ; predName ::= string ;

vars ::= varId { “,” varId } ; varId ::= string ;

E ::= atomicPred | “(” “not” atomicPred “)” | “(” “and” E E “)” | “(” “or” E E “)” ; atomicPred ::= “crisp” “(” varId “,” k1 “,” k2 “,” a “,” b “)” |

“left-shoulder” “(” varId “,” k1 “,” k2 “,” a “,” b “)” | “right-shoulder” “(” varId “,” k1 “,” k2 “,” a “,” b “)” | “triangular” “(” varId “,” k1 “,” k2 “,” a “,” b “,” c “)” | “trapezoidal” “(” varId “,” k1 “,” k2 “,” a “,” b “,” c “,” d “)” | “(” “=” varId y “)” | “(” “<>” varId y “)” | “(” “>=” varId y “)” | “(” “<=” varId y “)” | “(” “>” varId y “)” | “(” “<” varId y “)” |

“fuzzyRuleReasoning” “(” ’"’ ruleBaseName ’"’ “;” inputVars “;” outputVars “)” ; k1 ::= realNumber ; k2 ::= realNumber ; a ::= realNumber ; b ::= realNumber ; c ::= realNumber ; d ::= realNumber ; y ::= realNumber ; ruleBaseName ::= string ; inputVars ::= vars ; outputVars ::= vars ;

realNumber ::= digit { digit } [ “.” digit { digit } ] ; string ::= letter { letter | digit | “_” } ;

letter = “A” | “B” | “C” | “D” | “E” | “F” | “G” | “H” | “I” | “J” | “K” | “L” | “M” | “N” | “O” | “P” | “Q” | “R” | “S” | “T” | “U” | “V” | “W” | “X” | “Y” | “Z” ;

digit = “0” | “1” | “2” | “3” | “4” | “5” | “6” | “7” | “8” | “9” ; someConcreteConcept ::= “(” “some” concreteProperties “.” predName “)” ; allConcreteConcept ::= “(” “all” concreteProperties “.” predName “)” ; concreteProperties ::= concretePropertyName { “,” concretePropertyName } ; concretePropertyName ::= string ;

É possível notar que os elementos definidos por atomicPredcorrespondem aos predicados

embutidos providos por FT-FIS (Tabela 5.2). No caso do predicado fuzzyRuleReasoning, o parâmetroruleBaseNamese refere ao nome da base de regras fuzzy a ser considerada, pois a lin-

bases de regras identificadas por um nome. Esse recurso é interessante para alguns domínios de aplicação, por exemplo sistemas de recomendação ou suporte a decisão, em que cada base de regras fuzzy pode representar as preferências de uma categoria de indivíduos.

Além da definição dos predicados fuzzy, a Tabela 5.4 descreve os construtores de con- ceito existencial (someConcreteConcept) e universal (allConcreteConcept) que consideram os predica-

dos definidos a partir das expressões de predicados de tipos de dados fuzzy E. O elemento

concretePropertiesfaz referência a propriedades concretas T1, . . . ,Tndefinidas sobre o domínio dos

números reais. A aridade e a ordem das variáveis dos predicados fuzzy identificados porpredName

devem ser respeitadas ao utilizar os construtores de conceitosomeConcreteConcepteallConcreteConcept

em definições ou descrições de conceitos na ontologia fuzzy. A partir dessas extensões, a linguagem de representação de ontologias fuzzy utilizada em FT-FIS atende aos requisitos de modelagem apresentados na Seção 5.2.

Assim como em HyFOM, as regras fuzzy são descritas na linguagem Fuzzy Markup Lan- guage(FML) (ACAMPORA; LOIA, 2005). FML provê interoperabilidade e independência de implementação de SIF, por ser uma linguagem que modela os requisitos gerais para o raciocínio baseado em regras fuzzy. Com a ferramenta gráfica Visual FML Tool, especialistas do domínio podem modelar variáveis linguísticas, partições fuzzy e diversas bases de regras fuzzy, cada uma com seu respectivo método de inferência. Também é possível especificar o método de defuzificação para cada variável de saída. Na ontologia fuzzy, os identificadores das bases de regras fuzzy são referenciados pelo elementoruleBaseNameda Tabela 5.4. Conforme mencionado

anteriormente, as variáveis linguísticas especificadas em FML devem estar associadas às res- pectivas propriedades concretas na ontologia fuzzy, com mesmo nome e universo de discurso.

A implementação da arquitetura de raciocínio e da abordagem de integração de FT-FIS foi realizada com base na plataforma Java. Tanto o raciocinador de conceitos fuzzy quanto o gerenciador de tipos de dados fuzzy foram desenvolvidos com o suporte da API de fuzzyDL. Vale ressaltar que ela foi utilizada, principalmente, como referência para a análise sintática da linguagem de ontologias fuzzy e para a definição dos pacotes e classes que representam os elementos da ontologia fuzzy. Assim, os serviços de inferência de fuzzyDL não foram utilizados para a implementação do algoritmo baseado em tableau fuzzy de F-ALC(G), que foi desenvolvido diretamente a partir das especificações definidas por Pan (2007), Wang e Ma (2008).

Os serviços de raciocínio disponibilizados pelo raciocinador de conceitos fuzzy para aplica- ções baseadas em ontologias fuzzy são:

5.4 FT-FIS: Fuzzy Tableau and Fuzzy Inference System 111

• Verificação de consistência da base de conhecimento: tenta construir um tableau fuzzy para a base de conhecimento da ontologia fuzzy K, acionando o raciocínio baseado em regras fuzzy quando necessário. Se for possível obter um tableau fuzzy para K, então K é consistente; caso contrário, é inconsistente;

• Verificação de consistência da base de conhecimento com defuzificação: além de tentar construir um tableau fuzzy, também retorna os valores defuzificados de cada nó de tipo de dado fuzzy processado por DCdreal caso seja possível obter um tableau fuzzy para K;

• Verificação de satisfazibilidade para uma asserção de conceito fuzzy ψ = hx : D ⊲⊳ ni: verifica a consistência de K′=K ∪ {hx : D ⊲⊳ ni};

• Verificação de satisfazibilidade para uma asserção de conceito fuzzy ψ = hx : D ⊲⊳ ni com defuzificação: além de tentar construir um tableau fuzzy para K′, também retorna os

valores defuzificados de cada nó de tipo de dado fuzzy processado por DCdreal caso seja

possível obter um tableau fuzzy para K′;

• Verificação de instâncias: verifica se uma asserção de conceito fuzzy ψ = hx : D ⊲⊳ ni é uma implicação lógica de K. Conforme descrito na Seção 3.5.2 do Capítulo 3, essa tarefa é reduzida para a verificação de consistência da base de conhecimento K′=K ∪

{hx : D ⊲⊳′ni}, onde ⊲⊳′ncorresponde a uma restrição de grau conjugada de ⊲⊳ n. Se for possível construir um tableau fuzzy para K′, ele representa um contra-exemplo, ou seja,

uma interpretação em que a asserção ψ não é verdadeira. Caso contrário, o raciocinador de conceitos fuzzy retorna que ψ é uma implicação lógica de K.

Para representar conjuntos fuzzy e realizar as operações de conjunção fuzzy e de restrição de grau, o verificador de tipos de dados fuzzy DCdreal e o SIF foram implementados com base no

FuzzyJ Toolkit (ORCHARD, 2001). Com relação ao SIF, FuzzyJ Toolkit disponibiliza métodos de inferência de Mamdani e Larsen com suporte a entradas e saídas fuzzy, além da defuzificação por centro de área, meio dos máximos e moment defuzzification. Também provê uma API Java para acionar o processo de inferência e realizar a defuzificação para um determinado conjunto fuzzy. Portanto, FuzzyJ Toolkit atende aos requisitos do SIF, no contexto da abordagem FT-FIS, descritos na Seção 5.4.3. O SIF implementado conta com um tradutor de bases de regras fuzzy especificadas em FML para os objetos correspondentes das classes de FuzzyJ Toolkit, por meio da API Java para processamento de XML (JAXP - Java API for XML Processing). No entanto, assim como em HyFOM, outras implementações de SIF podem ser utilizadas, desde que haja um tradutor de FML para a linguagem específica do SIF.

O protótipo desenvolvido segundo a abordagem FT-FIS foi utilizado em experimentos descritos no Capítulo 6, que discute os resultados obtidos em comparação com HyFOM e alguns trabalhos correlatos da literatura.

5.5 Considerações Finais

Este capítulo apresentou as duas abordagens para integração de raciocínio de ontologias fuzzye sistemas de inferência fuzzy definidas e desenvolvidas no âmbito deste projeto de dou- torado: HyFOM e FT-FIS. Primeiramente, foram identificados os requisitos de modelagem relacionados à integração e, posteriormente, como os mesmos são atendidos pelas abordagens definidas. Foram descritos detalhes dos componentes das arquiteturas e como é realizada a integração de raciocínio de ontologias fuzzy e SIF, além de aspectos associados à implementação de protótipos.

No próximo capítulo são discutidos os experimentos realizados, os resultados obtidos e a comparação com os resultados de trabalhos correlatos.