PROTÓTIPO DE FERRAMENTA DE CONSULTA DE INFORMAÇÕES BASEADAS EM ONTOLOGIAS PETER ANTONY RAUSCH JOYCE MARTINS ROTEIRO Introdução Objetivos Fundamentação Teórica Especificação Implementação Operacionalidade Resultados e discussão Conclusão Extensões INTRODUÇÃO Internet X Linguagem Natural Web Semântica Metadados Ontologia Descrição Linguagens Resource e representação de uma área de conhecimento W3C: Description Framework (RDF) Web Ontology Language (OWL) Simple Protocol And Rdf Query Language (SPARQL) OBJETIVOS Ferramenta para extrair informações de base de dados baseada em ontologias: Definir uma base de dados de domínio específico baseado em ontologias, fazendo uso das linguagens RDF e OWL, adotadas como padrão pela W3C Processar consultas em língua portuguesa, convertendo em consultas na linguagem SPARQL Gerar como resultado links para informações obtidas como respostas às consultas FUNDAMENTAÇÃO TEÓRICA LINGUAGENS DE DESCRIÇÃO E CONSULTA PARA WEB SEMÂNTICA PROCESSAMENTO DE LINGUAGEM NATURAL TRABALHOS CORRELATOS RDF – Resource Description Language Padrão de uso do XML Grafo dirigido Nós = recursos RECURSO: sobre o que se deseja falar OBJETO: valor dado para a propriedade Aresta = propriedade PROPRIEDADE: relaciona RECURSO x OBJETO Recurso = endereço web RDF – Resource Description Language 1. <?xml version="1.0"?> 2. <rdf:RDF 3. xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 4. xmlns:f="http://www.meudominio.com.br/vocabulario/#"> 5. 6. 7. 8. 9. 10. 11. <rdf:RDF> <rdf:Description about:"http://www.exemplo.com.br"> <f:criou> Peter </f:criou> </rdf:Description> </rdf:RDF> RDFs – RDF-Schema Definição de vocabulários Orientação a objetos 1. [...] 2. <rdfs:Class rdf:ID="animal"/> 3. <rdfs:Class rdf:ID="cavalo"> 4. <rdfs:subClassOf rdf:resource="#animal"/> 5. </rdfs:Class> 6. [...] OWL – Web Ontology Language Ontologias Explicitação de fatos sobre determinado domínio Namespaces Cabeçalhos Classes Indivíduos Propriedades Restrições OWL – Web Ontology Language 1. <?xml version="1.0"?> 2. <rdf:RDF 3. [...] 4. <owl:Ontology rdf:about="#animais"> 5. 6. <owl:Class rdf:ID="carnivoro"> <owl:Restriction> 7. <owl:onProperty rdf:resource="comer"/> 8. <owl:someValuesFrom rdf:resource="animal"/> 9. </owl:Restriction> 10. </owl:Class> 11. <owl:Class rdf:ID="leao"> 12. 13. <rdfs:subClassOf rdf:type="carnivoro"/> </owl:Class> 14. </owl:Ontology> 15. </rdf:RDF> SPARQL – Simple Protocol And Rdf Query Language RDF | RDFS | OWL Consultar Inserir Excluir Alterar SPARQL – Simple Protocol And Rdf Query Language 1. PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 2. PREFIX an: <http://www.exemplo.com.br/animais#> 3. 4. SELECT ?a ?e 5. WHERE 6. { 7. ?a rdf:Class an:animal; 8. an:carnivoro ?e. 9. } 1. ASK 2. WHERE 3. { 4. ?a rdf:Class an:animal; 5. an:carnivoro ?e. 6. } PROCESSAMENTO DE LINGUAGEM NATURAL Análise morfológica Identifica Análise sintática Estrutura palavras do texto Análise semântica Significado Análise pragmática Contexto TRABALHOS CORRELATOS Jena (APACHE SOFTWARE FOUNDATION, 2011) Framework Java Geração automática de ontologias (BRAVO, 2010) Semantic Lattes (COSTA; YAMATE, 2009) Domínio: Currículos acadêmicos ESPECIFICAÇÃO REQUISITOS PERGUNTAS SUPORTADAS DIAGRAMA DE CASOS DE USO DIAGRAMA DE CLASSES PRINCIPAIS REQUISITOS Requisitos Funcionais permitir cadastrar ontologias no formato OWL; disponibilizar uma interface para entrada de consultas em SPARQL; disponibilizar uma interface para entrada de consultas em língua portuguesa; disponibilizar o resultado de consultas em língua portuguesa; Requisitos Não-Funcionais ter uma base de dados baseada em ontologias; ser implementada em C# e ASP.NET, utilizando o ambiente de desenvolvimento Microsoft Visual Studio 2010; PERGUNTAS SUPORTADAS Pergunta Exemplo Quais RECURSOS cadastrados? Quais vulnerabilidades cadastradas? O RECURSO é um OBJETO? O atacante externo é uma ameaça? O RECURSO PROPRIEDADE OBJETO? A vulnerabilidade é explorada pelo concorrente? Quais OBJETO PROPRIEDADE RECURSO? Quais vulnerabilidades estão contidas no software ERP? Que OBJETO RECURSO PROPRIEDADE? Que vulnerabilidade o concorrente explora? O que PROPRIEDADE RECURSO? O que está localizado no servidor de arquivos? Em que OBJETO PROPRIEDADE RECURSO? Em que posição joga o Messi? Como PROPRIEDADE RECURSO? Como é explorada a vulnerabilidade? Quem PROPRIEDADE RECURSO? Quem mitiga uma vulnerabilidade física? Onde PROPRIEDADE RECURSO? Onde está localizada a folha de pagamento? DIAGRAMA DE CASOS DE USO uc Primary Use Cases Cadastros e Manutenção UC03 - Manter Ontologia «extend» UC04 - Recuperar Arquiv o OWL Busca UC06 - Buscar com Linguagem SPARQL UC01 - Cadastrar Ontologia «include» Usuário UC07 - Buscar com Linguagem Natural UC02 - Cadastrar Substantiv o UC05 - Manter Substantiv o DIAGRAMA DE CLASSES DIAGRAMA DE CLASSES DIAGRAMA DE CLASSES IMPLEMENTAÇÃO TÉCNICAS E FERRAMENTAS ONTOLOGIAS GRAMÁTICA ESTUDO DE CASO TÉCNICAS E FERRAMENTAS C# ASP.NET MVC Entity Framework Razor dotNetRDF JavaScript JQUERY HTML5 GALS NeOn Toolkit Visual Studio 2010 SQL Server SQL Managment Studio ONTOLOGIAS Gestão de Segurança da Informação Ativo de informação Vulnerabilidade Vulnerabilidade Lógica Vulnerabilidade Física Controle Ambiente Físico Software Hardware Controle Lógico Controle Físico Ameaça Malware Atacante Interno Atacante Externo Alimentos Bebida Suco Futebol Ingrediente Prato Doce Salgado País Posição Time Campeonato Copa Liga Jogador Continente GRAMÁTICA 1. 2. <frase> ::= <sujeito> <negacao> <verbo> <objeto> pontuacao | <sujeito_> <ligacao> <objeto_> <negacao> <verbo___> pontuacao 3. 4. 5. <sujeito> ::= <pre_sujeito> <nucleo> <pos_sujeito> | adverbio #5 6. 7. <pre_sujeito> ::= | pronome #1 <pre_sujeito_> | artigo 8. <pre_sujeito_> ::= | artigo 9. <nucleo> ::= substantivo #2 10. <pos_sujeito> ::= 11. | preposicao #3 <nucleo> <pos_sujeito> 12. | artigo_preposicionado #4 <nucleo> <pos_sujeito> 13. | artigo <nucleo> <pos_sujeito> 14. | <nucleo> <pos_sujeito> ESTUDO DE CASO Quais ingredientes contém a batata recheada? ESTUDO DE CASO Quais ingredientes contém a batata recheada? 1 VERBO X PROPRIEDADE owl:InverseOf 2 SUJEITO X RECURSO SUPERIORES rdf:type rdfs:subClassOf 3 OBJETO X RECURSO INFERIORES 4 OBJETOS X PROPRIEDADES 5 (RECURSOS PASSO 4) !(RECURSOS 2) CÓDIGO SPARQL 1. SELECT ?ehDoTipo 2. WHERE { { 3. recurso a ?ehDoTipo 4. 5. } 6. FILTER(!isBlank(?ehDoTipo) 7. } 1. SELECT ?filho 2. WHERE { 3. ?filho rdfs:subClassOf recurso. 4. FILTER(!isBlank(?filho) 5. } OPERACIONALIDADE OPERACIONALIDADE DA IMPLEMENTAÇÃO OPERACIONALIDADE OPERACIONALIDADE RESULTADOS E DISCUSSÃO Funcionalidade OnTo Busca Semantic Lattes Plataforma Web Web Domínios de ontologia suportados Diversos Específico Reconhecimento de linguagem natural Sim, as perguntas podem ser elaboradas conforme a gramática especificada Não, as perguntas são fixas (no protótipo) Possibilidade de realizar consultas em linguagem natural Sim, as perguntas são traduzidas para consultas SPARQL durante a execução Sim, mas como as perguntas são fixas, as consultas SPARQL também são Possibilidade de realizar consultas em SPARQL Sim Não Capacidade de agregar conhecimento à ontologia existente Não Sim CONCLUSÃO Dificuldade em formalizar linguagem natural Limitou Gramática Criação de ontologias Singular Propriedades = verbos Ontologias de domínios distintos GALS Entity Framework dotNetRDF EXTENSÕES Aperfeiçoar a gramática, não restringindo o tipo das perguntas elaboradas Utilizar técnicas de Inteligência Artificial (IA) no reconhecimento das perguntas Permitir a agregação de conhecimento em linguagem SPARQL e em linguagem natural Implementar cadastros de verbos e de sinônimos para substantivos e verbos para melhorar exatidão das consultas Permitir que as consultas em linguagem natural sejam realizadas sem a necessidade de escolha de ontologia APRESENTAÇÃO DO APLICATIVO