segunda-feira, 19 de novembro de 2012

Padrões para Web Semântica


Os padrões de projetos foram projetados pelas linguagens orientadas à objetos para fornecer  um vocabulário de projetos comuns, a ajuda de uma documentação e aprendizagem, e  o apoio à reorganização de software. Da mesma forma para a nomeação e catalogação de algoritmos e estruturas de dados por cientistas da computação, padrões de projeto são utilizados por engenheiros de software para se comunicar,
documentar e explorar alternativas de projeto usando um vocabulário de projetos comuns, ou um padrão de projetos por catálogo e também diminuir a complexidade do desenvolvimento e compreensão de software
sistemas. Além disso, os padrões de projeto oferecem soluções para problemas comuns, ajudando por exemplo um novato "agir" mais como um especialista e facilitar a engenharia reversa de sistemas existentes.
Abaixo exemplos de Padrões de Projetos para Web Semântica:

Padrão de Relações Inversion Relations
Intenção Permite definir inversas cujo alcance é restrito a determinado conceitos.
Também conhecido como relação inversa Restrita.
Motivação - Muitas vezes, a definição de inversas globais é muito genérica e rendimentos realizam excessivamente inferências gerais. Por exemplo, pode-se ter definições de ontologia que cada filme é um show em um teatro e cada jogo é dado em um teatro e em eventos com o host do teatro. Agora, o inverso local do host é mostrado e é limitada a faixa do filme e o inverso local do host é dado é restrito à série de reprodução.
A inversa global pode levar a conseqüências indesejáveis. Por esta razão este padrão permite a definição de propriedades inversas restringindo seu domínio e conceitos alcance.



segunda-feira, 5 de novembro de 2012

Serviços para a Web Semântica

O objetivo da Arquitetura da Web Semântica é fornecer uma representação do conhecimento de dados ligados de modo a permitir o processamento da máquina em uma escala global. A W3C desenvolveu uma nova geração de linguagens de marcação padrão aberto que agora estão prontos para liberar mais funcionalidades, flexibilidade e acima de tudo, a lógica da próxima geração Web, abrindo a porta para a próxima geração dos Web Services.

Atualmente os serviços da Web que usam a rede J2EE e frameworks estão se esforçando para expandir contra as limitações da arquitetura da Web existente e suas normas de propriedade. Serviços Web Semântica oferecem um grande salto no desenvolvimento, o desenvolvedor pode explorar com sucesso seu potencial  para entregar aplicações com busca semântica, e-mail coletivo e de processamento de texto colaborativo na web por exemplo.

Por que precisamos de um sistema deste tipo? Hoje em dia, é dificil  de manipular os dados disponíveis na HyperText Markup Language (HTML), basta pensar informações sobre os horários de avião, estatísticas de futebol, e informações de compra de um produto. Embora atualmente disponível em inúmeros sites, usando os dados em sua forma HTML o mesmo é problemático, mesmo se utilizado eXtensible Markup Language (XML). A Web Semântica oferece uma maneira mais fácil de publicar os dados que podem ser acessados e re-postos como necessários.

Dos serviços de Web Semântica postados aqui como, aplicações com busca semântica, e-mail coletivo e de processamento de texto colaborativo na web podemos citar a relevância de um sistema de busca de um site de compras por exemplo, ao usuário digitar o produto desejado a utilização de web semântica torna o resultado mais eficiente, pois retorna ao usuário uma busca mais eficaz a sua necessidade.




Abaixo a imagem de uma tela de uma aplicação Java que processa OWL através de um WebServices onde acrescentei uma funcionalidade de busca de filhos:


sábado, 20 de outubro de 2012

Lógica e Inferência com Protégé utilizando Pellet


Pellet é um OWL DL reasoner (raciocinador OWL DL) é open-source e baseado em Java, o Pellet atua basicamente como um raciocinador lógico, tem como objetivo, verificar a consistência de ontologias, classificar a taxonomia, verificar vínculos e responder a um subconjunto de consultas RDQL (conhecidas como consultas ABOX em  terminologia DL) é baseado nos algoritmos tableaux desenvolvido para Lógica Descritiva Expressiva. Ele suporta a expressividade completa OWL DL incluindo raciocínio sobre nominais (classes enumerados). 

Características especiais

Pellet tem uma série de características ou orientados por requisitos OWL ou questões da Web Semântica.

Análise e Reparação de Ontologias - OWL  possui dois dialetos principais, OWL DL e OWL Full, com OWL DL sendo um subconjunto de OWL Full. Todas as bases de conhecimento OWL são codificados como RDF / XML. OWL DL impõe uma série de restrições sobre grafos RDF, alguns dos quais são substanciais (por exemplo, que o conjunto de nomes de classe e individuais ser disjuntos) e outros menos (que cada item tem um rdf: tipo triplo). Garantir que um documento RDF / XML atende a todas as restrições é uma tarefa relativamente difícil para os autores, e muitos documentos OWL existentes são nominalmente OWL Full, mesmo que seus autores pretendem que eles sejam OWL DL. Pellet incorpora uma série de heurística para detectar "DLizable" OWL documentos completos "reparação" deles.

Vinculação em Web Semântica, vinculação é um ponto chave e o Pellet possui suporte a vinculação para satisfazer melhor as necessidades de seus usuários.

Raciocina Multi-Ontologias usando E-Connections - Uma E-Connection é uma linguagem de representação do conhecimento definida como uma combinação de outros formalismos lógicos. E-Connection são usadas como uma linguagem para definir e instanciar combinações de ontologias OWL-DL como uma forma de KBs combinando, ao invés de lógicas. Esta abordagem fornece uma alternativa para importações owl, pois sempre trará todas as axiomas da ontologia importada, permitindo a identificação das sub-partes de uma ontologia, proporcionando um quadro bem fundado e lógica de raciocínio com ontologias múltiplas. 

segunda-feira, 8 de outubro de 2012

Ontologias

Introdução

As Ontologias tem como objetivo a estruturação organizada de informações sobre algo, causando uma reflexão semântica de situações do mundo real.

Onde são utilizadas?
Em inteligência artificial, web semântica, engenharia de software e arquitetura da informação e outras áreas de informática.

Ontologias geralmente descrevem, Indivíduos - que são os objetos básicos; Classes - que são conjuntos, coleções ou tipos de objetos; Atributos - que são propriedades, características ou parâmetros que os objetos podem ter e compartilhar ou Relacionamentos - que são as formas como os objetos podem se relacionar com outros objetos.

OntoNegli - Uma ontologia no domínio das doenças negligenciadas
Domínio que a ontologia cobrirá: abrangerá o domínio das doenças negligenciadas; 
Definição do uso da ontologia: será utilizada por médicos ou profissionais da área da saúde para o compartilhamento do conhecimento estruturado na ontologia; 
Profissional que ficará responsável pela  manutenção  da ontologia: deverá ser um profissional que esteja devidamente capacitado. 

Na criação da OntoNegli, os termos tidos como os mais importantes foram: paciente, doença negligenciada, dengue, tuberculose, esquistossomose, leishmaniose, hanseníase, malária, doença de Chagas, sintomas, tratamento, agente etiológico, vetor, reservatório, período de transmissibilidade, imunidade, período de incubação, região, nome, bairro, município, estado, fase de doença, foco, modo de transmissão, período de transmissão, diagnóstico diferencial, exame, dentre  outros. A importância dos termos foi considerada mediante o domínio a ser representado e as necessidades apontadas pelo especialista. 

Classes e Hierarquia de Classes Uma vez estabelecidos os termos mais importantes, o próximo passo foi transfomá-los em classes. Esta etapa foi realizada basicamente em 2 passos: inicialmente foram definidas as classes de maior abrangência e, em seguida, suas subclasses. No entanto, não foi possível seguir um roteiro rígido nesta definição, pois houve casos que após definir uma classe, necessitou-se criar uma superclasse para a classe já existente. A definição de classes e subclasses é uma etapa que sofre alterações e exige correções constantes no decorrer da modelagem. Demanda conhecimento da ferramenta e do domínio de conhecimento. A aquisição do conhecimento foi intensa até a definição das classes e, apesar de reduzir o volume de aquisição, ainda assim, foi persistente durante todo o restante do desenvolvimento da OntoNegli. 

Uschold e Gruninger (1996) definiram enfoques  no desenvolvimento de hierarquia, sendo eles o processo  top-down, o  bottom-up  e um processo de desenvolvimento formado pela combinação entre os dois  anteriores. Uma vez que o domínio da ontologia é doenças negligenciadas e o foco principal é as doenças, os conceitos que receberam maior importância foram concretizados em classes e subsequentemente em subclasses. Para exemplificar, tem-se a doença dengue que é uma especialização da classe doença e que possui a subclasse febre hemorrágica dengue (FHD) e dengue clássico (DC). A Figura abaixo ilustra a classe e a subclasse da doença dengue. Por meio da enfermidade dengue, pode-se ilustrar que a ontologia criada utilizou os dois processos de desenvolvimento, o  top-down  e  botton-up. Ao criar a classe dengue, houve a necessidade de criar suas subclasses, as quais receberam o nome de FHD e DC. Esta ação caracterizou o processo  top-down,  pois primeiro foi criada a superclasse Dengue e, posteriormente, foram criadas as subclasses filhas (FHD e DC). Ao criar a nova classe de doença Tuberculose, observou-se que novas classes de doenças deveriam ser adicionadas e que essas necessitariam de uma classe mais genérica, a qual posteriormente foi criada e denominada de Doença, caracterizando, assim, o processo  botton-up. A Figura abaixo ilustra o exemplo dado. 


   Classe e Subclasses da Doença Dengue (top-down) 


 Classe Doença e Subclasses mais Especializadas de Doenças (botton-up)



Na ferramenta Protégé, uma nova ontologia contém uma classe chamada  owl:Thing. 
As classes OWL são interpretadas como conjuntos de indivíduos (ou conjunto de objetos). A classe owl:Thing é a classe que  representa o conjunto que contém todos os indivíduos, uma vez que todas as classes são subclasses de owl:Thing  (Horridge  et al., 2005). A Figura abaixo, gerada com recursos da ferramenta Protégé,  apresenta a classe  owl:Thing  com as demais classes e subclasses da OntoNegli. Ainda nesta figura são apresentadas todas as classes de doenças presentes na ontologia. Embora a ontologia tenha o foco em doenças negligenciadas, foi necessário criar classes e instanciar objetos de doenças não negligenciadas para que fosse possível realizar o levantamento de diagnóstico diferencial e, assim, identificar quais  são as outras doenças que possuem os mesmos sintomas, possibilitando assim novas investigações ou descarte de suspeita para alguma enfermidade. A OntoNegli não cobriu  todas as doenças que são apresentadas na Figura abaixo, pois este trabalho está limitado ao domínio de doenças negligenciadas. 

Completa Hierarquia de Classes da OntoNegli 

A partir da classe  owl:Thing, as demais classes foram criadas, representando os principais conceitos do domínio das doenças negligenciadas. A seguir são descritas as principais classes da OntoNegli: 

  • Agente_etiológico: Representa o agente causador de uma doença; 
  • Bairro: Representa o bairro de cada município;  
  • Doença: É a superclasse para todas as doenças. Esta classe possui um maior número de propriedades e atributos. Possui especializações e diversos atributos. Ela é considerada uma classe fundamental para a ontologia.
  • Estado: Representa o estado, que é formado por municípios. Esta classe é necessária para que seja possível distinguir municípios homônimos e também representa parte que compõe uma região; 
  • Exame:  Representa os exames a serem realizados para o correto diagnóstico da doença; 
  •  Manifestacoes_clinicas: Representa as manifestações clínicas que um paciente pode apresentar. Essas manifestações podem mostrar o quadro que o paciente se encontra em uma determinada fase da doença. Com esta sugestão tem-se uma resposta com maior precisão; 
  • Municipio: Representa os municípios de cada estado:
  • Regiao:  Representa a composição de alguns estados, formando uma determinada região geográfica, por exemplo a região Sul, composta pelos estado do Paraná, Santa Catarina e Rio Grande do Sul;   
  • Reservatorio:  A definição corrente de reservatório abrange qualquer ser humano, animal, artrópode, planta ou matéria inanimada onde vive e se multiplica um agente infeccioso do qual depende para sua sobrevivência, reproduzindo-se de maneira que possa ser transmitido a um hospedeiro suscetível; 
  • Sintoma: Representa os sintomas detectados pelo profissional da saúde ou informados pelo paciente. Por meio desta classe que é possível suspeitar qual a enfermidade do paciente. 
  • Transmissibilidade:  Esta é a superclasse das classes Modo_de_transmissao e Periodo_de_Transmissibilidade; 
  • Modo_de_transmissao: Representa os modos como uma doença pode ser transmitida; 
  • Periodo_de_Transmissibilidade: Representa o período em que uma doença pode ser transmitida; 
  • Classe Vetor: são seres que servem de intermediário para a transmissão de doenças como, por exemplo, o aedes aegipty é o mosquito vetor da dengue, pois é preciso esse inseto para a propagação da doença nos seres humanos. 
  • As subclasses de doença, nomeadas como: Amebíase,  Ancilostomose,  Calazar, Cirrose,  Dermatite,  Escarlatina,  Esplenomegalia,  Estrongiloidiase,  Febre_Amarela, Febre_Tifoide,  Giardiase,  Gripe,  Hepatite,  Influenza,  Leptospirose,  Leucemia,  Linfoma¸ Mononucleose, Rubéola, Salmonelose, Sarampo, Sífilis e Toxoplasmose, estão presentes na ontologia para o diagnóstico diferencial da propriedade temDiagnosticoDiferencialDe.





Referências:

segunda-feira, 24 de setembro de 2012

Altova SemanticWorks - Editor OWL

OWL foi uma linguagem projetada para o processamento de informações, ao invés de simplesmente realizar uma organização visual de seu conteúdo é utilizada para definir e instanciar ontologias na web que podem incluir descrição, propriedade e relacionamentos de classes.

O Altova SemanticWorks é um editor de arquivos RDF/OWL e tem como diferencial a possibilidade de visualmente criar a ontologia observando sua estrutura em diagramas como mostra a imagem abaixo:




O mesmo também suporta OWL Lite, OWL DL e OWL Full, possui chegagem de sintaxe de acordo com as especificações RDF/XML, me pareceu uma ferramenta completa para o desenvolvido de uma Web Semântica, entretanto é disponibilizado somente uma versão trial de 30 dias o que limita o tempo de desenvolvimento caso o usuário não compre o software, o software também só disponibiliza um código de acesso para registro Trial para emails corporativos, abaixo a imagem mostra o email que recebi dizendo isso:



O Software também poderia ser melhorado se tivesse opcões de versionamento e edição colaborativa de ontologia.

segunda-feira, 10 de setembro de 2012

Resource Description Framework - RDF



RDF é um Framework utilizado para descrever recursos web como por exemplo, titulo, autor, data de modificação, conteúdo e informações sobre direitos autorais de uma página Web. O RDF tem uma semântica formal e tem como objetivo o uso de um vocabulário URI-based, uma sintaxe XML-based e o suporte de uso de XML. Os arquivos RDF têm três componentes básicos que o tornam altamente escalável; recurso, propriedade e indicação.
RDF descreve recursos com classes, propriedades e valores e também precisa definir classes de aplicações especificas e propriedades que podem ser definidas utilizando extensões de RDF, um tipo de extensão é RDF Schema abaixo um exemplo:

No exemplo acima “DOOIII” é uma subclasse de “aula”
Podemos abreviar a sintaxe acima usando rdfs:Class ao invés de rdf:Description e retirar rdf:type information tendo dessa forma uma estrutura mais compacta:



Para descrever grupos são utilizados Containers RDF através dos seguintes elementos:
<rdf:Bag> - este elemento é usado para descrever uma lista de valores que não precisam estar em uma ordem especifica e pode conter valores duplicados;
 <rdf:Seq> - este elemento é usado para descrever uma lista ordenada como letras em ordem alfabética por exemplo e também pode conter valores duplicados;
<rdf:Alt> - este elemento é usado para descrever uma lista de valores alternativos.
Os valores que estão dentro do conteiners são chamados de membros não de “lista de valores”, o que não quer dizer que outros membros podem ser adicionados, por isso são utilizadas coleções RDF para descrever grupos que podem adicionar membros específicos e são descritas pelo seguinte atributo: rdf:parseType="Collection". Abaixo um exemplo retirado do site da W3C:
Para promover uma declaração para que esta possa ser usada por outras declarações deve se Reificar um RDF. Para isto acontecer deverá ser definido uma URIref da seguinte forma:

rdf:statement - tipo da declaração;
rdf:subject  - sujeito da declaração;
rdf:predicate - predicado da declaração;
rdf:object  - objeto da declaração;

Abaixo um esquema em XML que foi transformado para RDF:



 Nota-se que o código em RDF ficou mais formalizado e dessa forma se consegue uma melhor utilização do mesmo pois o código em RDF pode ser lido por diversas aplicações.

RDFPic
É uma ferramenta que cria arquivos RDF a partir de dados informados pelo usuário com o objetivo de fornecer uma descrição de imagens em formato JPEG, abaixo está uma screenshot da aplicação e o código do arquivo gerado:





Extensible markup language - XML

XML é uma linguagem de marcação recomendada pela W3C, é amplamente utilizada na estruturação hierárquica  de diversos tipos de dados, por ser amplamente difundida encontramos vários exemplos de utilização dessa linguagem na internet, abaixo selecionei alguns e criei outros:

Exemplo de um Curriculo Vitae em XML:


















fonte:http://pt.wikipedia.org/wiki/XML


Abaixo um exemplo dos dados de um disco e uma receita de pão em XML:










fonte:http://www.tecmundo.com.br/programacao/1762-o-que-e-xml-.htm




Exemplo de um carro:
 De uma música:
 De uma pessoa:
 De um filme:




Abaixo a criação que representa a estrutura de dados de um Professor, aluno e curso seguinto a sugestão de modelagem do link: http://ia.ucpel.tche.br/~lpalazzo/Aulas/IWS/UNIV2009b.htm

Um Professor:
 Um Aluno:
 Um Curso:




Exemplos de ferramentas para XML:

 SAX - É uma API para XML, usada para acessar documentos XML e é muito utilizado por servlets que precisam enviar e receber documentos XML porque é o mecanismo mais rápido, pois utiliza pouca memoria comparado a outros mecanismos com a mesma função.

DOM - É uma estrutura de árvores padrão, onde cada nó contem um dos componentes de uma estrutura XML . Os dois tipos mais comuns de nós são textos e elementos. Utilizando as funções do DOM nos permite a criação, remoção e edição de nodos e mudar sua hierarquia