FACULDADE DE TECNOLOGIA DE SÃO JOSÉ DOS CAMPOS CIRO FERNANDES MATRIGRANI SEMANTICPAD: UMA FERRAMENTA WEB DE EDIÇÃO DE CONTEÚDO PARA WEB SEMÂNTICA ADEQUADA A USUÁRIOS LEIGOS SÃO JOSÉ DOS CAMPOS 2009 CIRO FERNANDES MATRIGRANI SEMANTICPAD: UMA FERRAMENTA WEB DE EDIÇÃO DE CONTEÚDO PARA WEB SEMÂNTICA ADEQUADA A USUÁRIOS LEIGOS Trabalho de graduação apresentado à Faculdade de Tecnologia de São José dos Campos, como parte dos requisitos necessários para obtenção de título de Tecnólogo em Banco de Dados. Orientador: Msc. Giuliano Araujo Bertoti SÃO JOSÉ DOS CAMPOS 2009 CIRO FERNANDES MATRIGRANI SEMANTICPAD: UMA FERRAMENTA WEB DE EDIÇÃO DE CONTEÚDO PARA WEB SEMÂNTICA ADEQUADA A USUÁRIOS LEIGOS Trabalho de graduação apresentado à Faculdade de Tecnologia de São José dos Campos, como parte dos requisitos necessários para obtenção de título de Tecnólogo em Banco de Dados. ________________________________ MSC. ADRIANA DA SILVA JACINTO (FATEC) ________________________________ DRª. CARLA DIACUI MEDEIROS BERKENBROCK (ITA) ________________________________ MSC. GIULIANO ARAUJO BERTOTI (FATEC) __/__/__ DATA DE APROVAÇÃO AGRADECIMENTOS Agradeço a todos os professores e colaboradores da FATEC de São José dos Campos que tornaram possível a formação da primeira de muitas turmas de Tecnologia em Banco de Dados da qual faço parte. Em especial para o coordenador Fernando Masanori, meu orientador Giuliano Bertoti, a dona Lourdes do cafezinho além dos meus colegas que compuseram o cenário desta fantástica fase na minha vida. Obrigado! “O importante não é o desenho, mas o desenhar” José Matrigrani RESUMO Há uma quantidade de documentos disponibilizados na web e seu conteúdo aumenta consideravelmente todos os dias. O usuário leigo, sem conhecimento acadêmico em tecnologia da informação, se tornou o principal responsável pelo conteúdo na Web 2.0 por meio de de blogs, wikis, redes sociais e ferramentas colaborativas. Hoje, uma pesquisa por “redes” numa ferramenta de busca como o Google, por exemplo, retorna milhões de resultados, e minerar essa informação pode levar horas de pesquisa. Organizar e selecionar todo este conteúdo se tornou um desafio para cientistas da computação contemporâneos. A World Wide Web Consortium, órgão responsável pelos padrões da web, desenvolveu nos últimos anos tecnologias como o Resource Description Framework que tornarão possível a Web Semântica, uma proposta para solucionar este problema. Porém, foram desenvolvidas por pessoas com conhecimento acadêmico em tecnologia da informação, e não são de fácil utilização para os usuários leigos. Este trabalho apresenta o desenvolvimento da Semanticpad, uma ferramenta web de edição de conteúdo semântico para usuários leigos apoiada na arquitetura de gadgets da Google e acoplável em páginas, blogs, sites e aplicações na web. A Semanticpad também utiliza a interface baseada em mapas conceituais tentando agregar a simplicidade e usabilidade reconhecida neste modelo e propõe um novo modelo de colaboração para criação de conteúdo semântico na web. Palavras-Chave: Web Semântica, RDF, Web 3.0. ABSTRACT There are a lot of documents available on the web and its content increases significantly every day. The user layman without academic knowledge in information technology, became the main responsible for the content on the Web 2.0 through blogs, wikis, social networks and collaborative tools. Today, a search for "networks" in a search engine like Google, for example, returns millions of results, and to mine this information can take hours of research. Organize and select this content has become a challenge for the contemporary computer scientists. The World Wide Web Consortium, the organization responsible for web standards, has developed in last years technologies such as Resource Description Framework which will build the Semantic Web, a proposal to solve this problem. However, it was developed by people with academic knowledge in information technology, and is not easily accessible to lay users. This document presents the development of Semanticpad, a web editing tool semantic content for lay users supported by the technology of Google Gadgets, to allow be embeddable on webpages, blogs, websites and web applications. The Semanticpad interface also uses the concept maps based on trying to add simplicity and usability recognized in this model and proposes a new collaborative model for creating semantic content on the Web. Key-Words: Semantic Web, RDF, Web 3.0. LISTA DE FIGURAS Figura 1 - Pesquisa de imagens pela palavra “Vênus” ............................................................. 20 Figura 2 - Exemplo de conteúdo na web .................................................................................. 20 Figura 3 - Exemplo de como uma máquina enxerga o conteúdo ............................................. 21 Figura 4 - Camadas da web....................................................................................................... 23 Figura 5 - Requisição de página cliente/servidor ..................................................................... 25 Figura 6 - Exemplo de código HTML ...................................................................................... 25 Figura 7 - Renderização de HTML exibida pelo navegador Firefox versão 3.0.7 ................... 26 Figura 8 - Exemplo de código XHTML ................................................................................... 27 Figura 9 - Página HTML ligada em folha de estilo externa ..................................................... 28 Figura 10 - Exemplo de código CSS ........................................................................................ 28 Figura 11 - Página HTML associada com folha de estilo rederizada pelo navegador Mozilla Firefox 3.0.7 ............................................................................................................................. 28 Figura 12 - Arquitetura da Web Semântica............................................................................... 30 Figura 13 - Alguns exemplos de URI’s .................................................................................... 32 Figura 14 - Exemplo de código XML ...................................................................................... 33 Figura 15 - Exemplo de código DTD ....................................................................................... 34 Figura 16 - Exemplo de código XML Schema ......................................................................... 35 Figura 17 - Gráfico RDF somente com literais ........................................................................ 37 Figura 18 - Exemplo de gráfico RDF ....................................................................................... 38 Figura 19 - Exemplo de gráfico RDF descrevendo Frank Manola .......................................... 38 Figura 20 - Exemplo de gráfico RDF para loja de veículos ..................................................... 39 Figura 21 - Exemplo de gráfico RDF com vocabulário Dublin Core ...................................... 41 Figura 22 - Exemplo de namespace ......................................................................................... 41 Figura 23 - Exemplo de gráfico RDF ilustrando tripla............................................................. 42 Figura 24 - Gráfico RDF destacando namespace ..................................................................... 42 Figura 25 - Declaração de namespaces .................................................................................... 43 Figura 26 - Exemplo de código RDF Schema .......................................................................... 44 Figura 27 - Exemplo de código RDF/XML.............................................................................. 44 Figura 28 - Árvore de ligações entre URI’s em tripla RDF ..................................................... 45 Figura 29 - Árvore de ligações de URI’s com XML namespaces ............................................ 45 Figura 30 - Interface do Protégé-Frames .................................................................................. 49 Figura 31 - Interface do Protégé-OWL..................................................................................... 50 Figura 32 - Interface do WebPrótegé ........................................................................................ 50 Figura 33 - Interface do OntoEdit ............................................................................................ 53 Figura 34 - Interface do SemanticWorks .................................................................................. 55 Figura 35 - Exemplo de mapa conceitual ................................................................................. 61 Figura 36 - Mapa conceitual tipo aranha .................................................................................. 63 Figura 37 - Mapa conceitual tipo sistema................................................................................. 63 Figura 38 - Mapa conceitual tipo hierárquico .......................................................................... 64 Figura 39 - Interface colaborativa ............................................................................................ 71 Figura 40 - Modelo de colaboração .......................................................................................... 72 Figura 41 - Gadget inserido em páginas recipientes................................................................. 74 Figura 42 - Linha de código para inserção de um gadget ........................................................ 74 Figura 43 - Interface de gerenciamento do Google Project Hosting ........................................ 76 Figura 44 – Semanticpad em tela de edição Mapa Descritivo ................................................. 81 Figura 45 - Semanticpad em tela Gerar RDF ........................................................................... 82 Figura 46 - Semanticpad em tela Opções ................................................................................. 83 Figura 47 – Ilustração de cada tipo de elemento de uma tripla na tela Mapa Descritivo ......... 83 Figura 48 – Semanticpad em tela Mapa Descritivo inicial....................................................... 84 Figura 49 - Botões de edição de conceito ................................................................................. 84 Figura 50 - Menu de configuração de conceito ........................................................................ 85 Figura 51- Exemplo de uso de coleção “rdf:Alt” ..................................................................... 86 Figura 52 - Menu de inserção de coleções ............................................................................... 86 Figura 53 - Exemplo de uso de “rdf:Alt” pelo Semanticpad .................................................... 87 Figura 54 - Exemplo de uso de “rdf:Bag” pelo Semanticpad .................................................. 87 Figura 55 - Exemplo de uso de “rdf:Seq” pelo Semanticpad ................................................... 87 Figura 56 - Configurações de níveis de confiabilidade ............................................................ 88 Figura 57 - Principais opções disponíveis ................................................................................ 88 Figura 58 - Alguns alertas de suporte da ferramenta ................................................................ 89 LISTA DE ABREVIATURAS E SIGLAS AJAX: Asynchronous Javascript and XML API: Application Programming Interface CSS: Cascate Style Sheets DAML: DARPA Agent Makup Language DC: Dublin Core DOM: Document Object Method DTD: Data Type Definition GPL: GNU General Public License GUI: Grafic User Interface HTML: Hiper Text Makup Language IP: Internet Protocol JQueryUI: JQuery User Interface JRE: Java Runtime Environment KAON: the KArlsruhe ONtology and semantic web tool suíte MPL: Mozilla Public License OCML: Open Configuration and Management Layer OIL: Ontology Inference Layer OKBC: Open Knowledge Base Connectivity OntoEdit: Ontology Enginnering Environment OWL: Ontology Web Language PHP: Hipertext Preprocessor RDF: Resource Description Framework RDF(S): RDF Schema RDFa: Resource Description Framework in attributes RDFS: RDF Schema RSS: Really Simple Syndication SPARQL: SPARQL Protocol And RDF Query Language SWRL: Semantic Web Rule Language URI: Uniform Resource Identifier URL: Uniform Resource Location UTF-8: 8-bit Unicode Transformation Format W3C: World Wide Web Consortium WISEWIG: What You See Is What You Get XHTML: Extensible Hiper Text Makup Language XML: Extensible Makup Language XMLNS: XML Namespace XSD: XML Schema XSLT: Extensible Stylesheet Language for Transformation SUMÁRIO 1 INTRODUÇÃO ......................................................................................... 15 1.1 Objetivo ................................................................................................................ 16 1.1.1 Objetivo Geral ...................................................................................................... 16 1.1.2 Objetivo Específico .............................................................................................. 16 1.2 Metodologia .......................................................................................................... 17 1.3 Organização do Trabalho ...................................................................................... 17 2 WEB SEMÂNTICA .................................................................................. 18 2.1 O que é Web Semântica ........................................................................................ 18 2.1.1 Conteúdo para Máquinas ...................................................................................... 21 2.1.2 Agentes de Software ............................................................................................. 22 2.2 Ambiente da Web Sintática................................................................................... 23 2.2.1 URL ...................................................................................................................... 24 2.2.2 HTML ................................................................................................................... 25 2.2.3 XHTML ................................................................................................................ 26 2.2.4 CSS ....................................................................................................................... 27 2.2.5 Outras Tecnologias ............................................................................................... 29 2.2.6 Semântica na Web 2.0 ........................................................................................... 29 2.3 Ambiente da Web Semântica ................................................................................ 30 2.3.1 Camada de Estrutura ............................................................................................. 30 2.3.2 Camada de Ontologia ........................................................................................... 31 2.3.3 Camada Lógica ..................................................................................................... 31 2.3.4 URI ....................................................................................................................... 32 2.3.5 XML ..................................................................................................................... 32 2.3.5.1 DTD ...................................................................................................................... 34 2.3.5.2 XML Schema ........................................................................................................ 34 2.3.6 RDF ...................................................................................................................... 35 2.3.6.1 Notação RDF ........................................................................................................ 36 2.3.6.2 Vocabulários ......................................................................................................... 39 2.3.6.3 Vocabulário Dublin Core ...................................................................................... 40 2.3.6.4 Namespaces .......................................................................................................... 41 2.3.6.5 RDF Schema ......................................................................................................... 43 2.3.6.6 XML/RDF Sintaxe ............................................................................................... 43 2.3.7 Outras Tecnologias ............................................................................................... 46 2.4 Considerações Finais ............................................................................................ 46 3 FERRAMENTAS DE EDIÇÃO SEMÂNTICA PARA WEB .............. 47 3.1 Principais Ferramentas de Edição para Web Semântica ....................................... 47 3.1.1 Protégé .................................................................................................................. 48 3.1.1.1 Disponibilidade ..................................................................................................... 48 3.1.1.2 Suporte .................................................................................................................. 49 3.1.1.3 Recursos ................................................................................................................ 49 3.1.2 OntoEdit................................................................................................................ 51 3.1.2.1 Disponibilidade ..................................................................................................... 52 3.1.2.2 Suporte .................................................................................................................. 52 3.1.2.3 Recursos ................................................................................................................ 52 3.1.3 SemanticWorks ..................................................................................................... 53 3.1.3.1 Disponibilidade ..................................................................................................... 54 3.1.3.2 Suporte .................................................................................................................. 54 3.1.3.3 Recursos ................................................................................................................ 54 3.2 Outras Ferramentas de Edição Semântica ............................................................ 55 3.2.1 WebODE ............................................................................................................... 56 3.2.2 OntoEditor ............................................................................................................ 56 3.2.3 RDFedt .................................................................................................................. 56 3.2.4 WebOnto ............................................................................................................... 56 3.2.5 KAON ................................................................................................................... 57 3.2.6 IkkeWiki ............................................................................................................... 57 3.2.7 OntoWiki .............................................................................................................. 58 3.3 Considerações Finais ............................................................................................ 58 4 SEMANTICPAD: UMA FERRAMENTA DE EDIÇÃO WEB SEMÂNTICA PARA LEIGOS ................................................................................. 59 4.1 Modelagem ........................................................................................................... 59 4.1.1 Modelo de Interface Gráfica ................................................................................. 59 4.1.1.1 Mapas Conceituais ................................................................................................ 60 4.1.1.1.1 Escrita de Mapas Conceituais ............................................................................... 60 4.1.1.1.2 Leitura de Mapas Conceituais .............................................................................. 62 4.1.1.1.3 Tipos de Mapas Conceituais ................................................................................. 62 4.1.1.1.4 Interface Baseada em Mapas Conceituais ............................................................ 64 4.1.2 Modelo de Colaboração ........................................................................................ 65 4.1.2.1 Colaboração na Web 2.0 ....................................................................................... 65 4.1.2.2 Colaboração na Representação de Conhecimento ................................................ 66 4.1.2.3 Colaboração em Mapas Conceituais ..................................................................... 66 4.1.2.4 Modelo em Níveis de Confiabilidade ................................................................... 67 4.1.2.4.1 Declaração Fraca e Forte ...................................................................................... 67 4.1.2.4.2 Descrição Aberta e Fechada.................................................................................. 68 4.1.2.4.3 Mapas Conceituais Individuais e Colaborativos................................................... 69 4.1.2.4.4 Ligação entre Mapas e Incremento de Vocabulários ............................................ 70 4.1.2.4.5 Interface Colaborativa .......................................................................................... 70 4.1.3 Modelo de Aplicação Web .................................................................................... 72 4.1.3.1 Gadgets ................................................................................................................. 73 4.1.3.1.1 Características dos Gadgets .................................................................................. 73 4.1.3.1.2 Recursos do Google Gadgets................................................................................ 75 4.1.3.1.3 API Gadgets.......................................................................................................... 76 4.1.3.1.4 OpenSocial. ........................................................................................................... 77 4.1.3.2 Outras Bibliotecas e Recursos .............................................................................. 78 4.1.3.2.1 JQuery ................................................................................................................... 78 4.1.3.2.2 JQueryUI............................................................................................................... 79 4.1.3.2.3 JSDraw2D ............................................................................................................. 79 4.1.4 Visão Geral da Modelagem da Ferramenta .......................................................... 80 4.2 Protótipo ............................................................................................................... 80 4.2.1 Principais Telas da Ferramenta ............................................................................. 80 4.2.2 Interface de Edição de Mapas Conceituais ........................................................... 83 4.2.3 Interface de Edição de Coleções RDF .................................................................. 85 4.2.4 Interface de Colaboração de Mapas Conceituais .................................................. 87 4.2.5 Outras Opções Disponíveis................................................................................... 88 4.2.6 Suporte e Documentação ...................................................................................... 89 4.2.6.1 Teclas de Atalho .................................................................................................... 89 4.3 Considerações Finais ............................................................................................ 90 5 CONCLUSÃO ........................................................................................... 91 5.1 Contribuições e Conclusões .................................................................................. 91 5.2 Publicação ............................................................................................................. 93 5.3 Trabalhos Futuros ................................................................................................. 94 REFERÊNCIAS BIBLIOGRÁFICAS ............................................................................... 95 15 1 INTRODUÇÃO Uma considerável quantidade de documentos e páginas está disponibilizada na Internet e cientistas procuram por novas formas de minerar todo esse conhecimento humano (MARKOFF, 2008). Em 2001 a World Wide Web Consortium (W3C, 2009) renovou seu esforço para a produção de tecnologias como o Resource Description Framework (RDF), que possibilitarão a chamada Web Semântica (HENDLER, 2006), ou seja, uma web que pode ser compreendida tanto por humanos quanto por máquinas. A Web Semântica proverá acesso refinado às fontes de informação e permitirá a criação de produtos que possam minerar essas fontes baseando-se nas necessidades dos usuários (FENSEL,1998). A Web Semântica é uma proposta para solucionar as deficiências e organizar as informações na web (BERTOLINI, 2009). Para que isto seja possível é necessário que os produtores de conteúdo disponibilizem seus dados de forma que possa ser lido por máquinas. Estas tecnologias foram desenvolvidas por pessoas com experiência em lógica e inteligência artificial, para desenvolvedores tradicionais isto não é muito fácil de entender (W3SCHOOLS, 2009). Segundo DEITEL, 2008, é improvável que desenvolvedores codifiquem todo o conteúdo da web com estas tecnologias porque é tedioso e complexo. Isso provavelmente ocorrerá de forma gradual por meio de editores. Para que a internet tenha seu conteúdo legível por máquinas é necessário que usuários produzam seu conteúdo de forma semântica, o usuário comum é o maior produtor de conteúdo na web 2.0 (O’REILLY, 2005), mas a grande maioria desses usuários não possui conhecimento sobre as tecnologias da Web Semântica ou como utilizá-las. São biólogos, médicos, sociólogos e empresas que disponibilizam informações que só podem ser descritas por pessoas da sua área ou elas próprias. Não seria exatamente adequado que houvesse um profissional especializado para descrever informação de outrem. Os editores disponíveis como Protégé, SemanticWorks ou OntoEdit são voltados para profissionais de TI, de qualquer forma um conteúdo descrito com RDF dificilmente será mais simples de produzir do que uma informação em linguagem natural. Uma ferramenta simples de edição semântica focada no usuário comum se faz útil para contribuir com a proposta de uma web que possa atingir seus plenos potenciais. 16 1.1 Objetivo A seguir serão expostos os objetivos gerais e os objetivos específicos deste trabalho. 1.1.1 Objetivo Geral Desenvolver uma ferramenta web de edição de RDF, com objetivo de alcançar simplicidade, focando os usuários pouco familiarizados com tecnologia da informação. 1.1.2 Objetivo Específico A seguir serão apresentados os objetivos específicos deste trabalho: a) desenvolver uma ferramenta simples para edição de código RDF; b) modelar um editor semântico para ser disponibilizado como componente reutilizável em páginas da web; c) disponibilizar uma ferramenta com foco no usuário leigo em TI para que possa ser utilizada nas primeiras fases da engenharia de ontologias; d) desenvolver uma interface que permita a colaboração e aproveite os benefícios da inteligência coletiva; e) desenvolver uma ferramenta simples e intuitiva para facilitar a usabilidade e aprendizado sem necessidade de suporte; f) tornar a ferramenta disponível e acessível para qualquer produtor de conteúdo na web. 17 1.2 Metodologia A seguir será apresentada a metodologia adotada para o desenvolvimento deste trabalho: a) estudar a realidade das tecnologias da Web Semântica, suas aplicações e padrões; b) coletar informações das principais ferramentas de edição utilizadas atualmente para edição de conteúdo semântico para web; c) pesquisar sobre possíveis pontos a serem desenvolvidos nos editores existentes; d) pesquisar e aplicar os modelos mais adequados de desenvolvimento de aplicações web; e) utilizar tecnologias e bibliotecas atuais para implementação ágil e adequada do editor. 1.3 Organização do Trabalho A seguir serão apresentados os demais capítulos deste trabalho: a) o Capítulo 2 apresenta um resumo sobre a Web Semântica, suas principais tecnologias e diferenças da web de hoje; b) o Capítulo 3 apresenta as principais ferramentas de edição de conteúdo semântico disponíveis para a comunidade; c) o Capítulo 4 apresenta a modelagem e protótipo da ferramenta web de edição de conteúdo semântico para usuários leigos; d) o Capítulo 5 apresenta a conclusão deste trabalho de graduação. 18 2 WEB SEMÂNTICA Este capítulo apresenta a Web Semântica, bem como sua proposta e aplicação baseando-se na literatura existente. As próximas seções deste capítulo apresentam as diferenças entre a Web Sintática e a Web Semântica, bem como as suas principais tecnologias e arquiteturas. O Capítulo está organizado como segue: a Seção 2.1 apresenta o cenário que motivou a Web Semântica. A Seção 2.2 apresenta o ambiente da Web Sintática e suas principais tecnologias, enquanto a Seção 2.3 apresenta o ambiente da Web Semântica, suas principais tecnologias e diferenças da Web Sintática. 2.1 O que é Web Semântica Esta seção apresenta uma visão geral do cenário que motivou o desenvolvimento da Web Semântica, sua justificativa e aplicação como proposta para web do futuro. Órgãos responsáveis pela regulamentação da web, como a Word Wide Web Consortium (W3C), preocupam-se com o seu futuro. As constantes e drásticas transformações que a web vem sofrendo nos últimos deram uma nova definição à web de Web 2.0 (O’REILLY, 2005). Uma das principais características desse novo conceito de internet é a participação do usuário como atraente recurso estratégico. O usuário passou a ser o centro da web perdendo a posição de consumidor de conteúdo e ganhando uma posição de produtor de conteúdo. Todos os dias, grande quantidade de conteúdo é inserida na web por todo tipo de usuário, e toda essa informação nem sempre tem garantia de confiabilidade o que gera um crescente acúmulo de lixo virtual. Uma pesquisa por Redes de Computadores poderia trazer várias informações sobre “redes” (redes de pesca ou redes de dormir) ou sobre “computadores” (lojas de computadores) quando na verdade essa pesquisa procura por um assunto que não corresponde a estes temas. Poder-se-ia definir a pesquisa melhor colocando entre aspas concatenando o 19 termo “redes de computadores” para que a busca retornasse apenas páginas com o conjunto completo dessas palavras-chave em seu conteúdo. Mas ainda assim permitiria o retorno de uma reportagem sobre a “precariedade das redes de computadores na África”, ou seja, informações que seriam irrelevantes para o foco da pesquisa. Hoje, uma busca mais refinada na internet pode levar horas de navegação (MARKOFF, 2008). Com o tempo a situação tende a se agravar fazendo com que buscas demandem muito mais tempo e esforço. Segundo BERNERS-LEE, 2001, os motores de busca não podem fazer uma busca mais refinada porque não são capazes de entender as informações como os seres humanos, isso porque a web é produzida para humanos e não para que máquinas possam entender seu conteúdo. Uma máquina num ambiente descrito para seres humanos, como a web de hoje, pode fazer uma busca por uma palavra ou conjunto de caracteres, como o nome de um quadro, mas não pode nos trazer informações adicionais sobre este determinado quadro, como sua época literária, de onde veio, o que o inspirou, informações do autor... Isto porque não é capaz de reconhecer ligações entre a palavra pesquisada e seus atributos (BREITMAN, 2005). Ainda se este quadro tivesse um nome de uma coisa comum, como “Vênus”, essa ferramenta de busca em um ambiente não descrito semanticamente não seria capaz de entender a diferença entre o quadro e o astro. A Figura 1 apresenta um exemplo de busca de imagens pela palavra “Vênus”. 20 Figura 1 - Pesquisa de imagens pela palavra “Vênus” Apenas com buscas por palavras-chaves, a criação de resultados mais inteligentes e sofisticados é complicada sem que as máquinas entendam a informação tal qual os humanos entendem. Quando um ser humano observa uma página da web, como a página abaixo, ele pode deduzir simplesmente pela exibição do conteúdo e do significado das palavras, ainda que sem nenhuma descrição adicional, que se trata de uma receita culinária. A Figura 2 mostra um exemplo de página da web contendo uma receita culinária. Figura 2 - Exemplo de conteúdo na web Um ser humano pode perceber que bolo de cenoura é um subtipo de bolo que é composto pelos ingredientes da lista, e que os parágrafos abaixo são o modo de preparo e que 21 irão utilizar os ingredientes da lista para produzir o bolo de cenoura, etc. Mesmo sem nenhum enunciado adicional, um ser humano pode fazer inferências sobre a informação acima por meio da sua exibição. Toda esta semântica agregada permite ao ser humano fazer uma quantidade de inferências lógicas sobre este conteúdo que vão muito além do seu significado sintático, mais isso porque cada conceito presente também reúne semântica antecedente de outras fontes. Em um ambiente sintático, como a web atual, uma máquina enxerga essa informação mais ou menos como na Figura 3 (BREITMAN, 2005). Figura 3 - Exemplo de como uma máquina enxerga o conteúdo Para que uma máquina possa fazer inferências sobre o conteúdo da web assim como um ser humano é necessário que as informações estejam disponíveis num formato que possa ser lido por máquinas (BERNERS-LEE, 2001), que agreguem semântica e aproveitem a semântica antecedente de outras fontes. 2.1.1 Conteúdo para Máquinas Gerenciado pela W3C, o grupo SEMANTIC WEB ACTIVIT, 2001, está desenvolvendo um novo conjunto de linguagens nos últimos anos. Essas novas tecnologias permitirão que as pessoas tornem suas informações legíveis para máquinas. Segundo BERNERS-LEE, 2001, e HENDLER, 2009, a web é um espaço informativo concebido não apenas com o objetivo de prover comunicação entre humanos, mas também para que máquinas fossem capazes de participar e ajudar os usuários a se comunicarem. 22 Colocar semântica no conteúdo da web aumentará a possibilidade de computadores do futuro fazerem tarefas e buscas sofisticadas que hoje seriam complicadas (BERNERS-LEE, 2001). Será uma web capaz de responder perguntas complexas e sutis (DEITEL, 2008). Para atingir os plenos potenciais da web, é necessário que máquinas sejam capazes não apenas de varrer o conteúdo da internet para fazer buscas, mas entender o conteúdo para manipulá-lo. Nomes de filmes, trabalhos artísticos e pessoas possuem atributos e relações muito difíceis de serem captados de forma automatizada sem uma descrição desta informação. Ao longo do tempo, essas tecnologias e linguagens desenvolvidas pela W3C que compõe o cenário da Web Semântica, estarão gradativamente formando uma web interligada por informações e não por páginas (MARKOFF. 2008), o que facilitará essa captação, interconexão de conceitos e informações sobre os conceitos. A web permite que vejamos nossos dados bancários, agendas, calendários ou nossas fotos, mas não nossas fotos no calendário com a data que foram tiradas, ou os dados bancários na agenda. Isto porque essas páginas e serviços na web não estão conectados por seu conteúdo (WEB SEMANTIC ACTIVIT, 2009). A web semântica proverá tecnologias que permitirão progressivamente ligar conceitos em um conhecimento universal e unificado (BERNERS-LEE, 2001). Estamos longe dos plenos potenciais dos sistemas inteligentes na web e, quando chegarmos a esse ponto, chamaremos a internet de Web 3.0 (O’REILLY, 2006). 2.1.2 Agentes de Software Grandes companhias como GOOGLE, 2009, e IBM, 2009, tem aderido a esta proposta de web com significado (MARKOFF, 2008). O mercado se interessa por agentes capazes de fazer buscas mais precisas e inteligentes. O ambiente da web não possibilita o desenvolvimento de agentes de software que sejam capazes de fazer inferências sobre a informação (BREITMAN, 2009), porque eles não podem fazer inferências lógicas sofisticadas em ambientes sintáticos. A Web Semântica não visa criar software e agentes com inteligência artificial que possam fazer tarefas elaboradas, mas sim tornar a web um ambiente para que esses agentes possam existir e atuar no futuro (BERNERS-LEE, 2001). 23 Iniciativas como DBPEDIA, 2009, grupos de trabalho da W3C e DUBLIN CORE ACTIVITIT, 2009, estão estudando e ampliando as alternativas para tornar possível este ambiente onde estes agentes possam atuar (HENDLER, 2006). Segundo MARKOFF, 2008, a Web Semântica permitirá a criação de softwares que atendam a uma busca como: “Estou procurando um lugar confortável para as férias, tenho um orçamento de 3000 dólares e um filho de 11 anos”, que retornasse um pacote completo de férias planejado tão meticulosamente como se tivesse sido feito por um agente humano em uma agência de turismo. As próximas seções apresentaram respectivamente a Web Sintática de hoje e a Web Semântica do futuro, elucidando suas características e diferenças arquiteturais, conceituais e tecnológicas. 2.2 Ambiente da Web Sintática Esta seção apresenta uma visão geral sobre a arquitetura e tecnologias da Web Sintática para destacar suas diferenças com a proposta da Web Semântica. As próximas subseções detalharão a arquitetura e principais tecnologias da web de hoje. A web tem uma arquitetura em camadas. Isto a torna flexível de forma que diferentes partes podem ser alteradas independentemente contanto que o meio de comunicação entre elas esteja inalterado (HARA-NETO, 2009). As principais camadas são a de dados responsável pelo armazenamento da informação, a camada de negócio que manipula os dados e a camada de apresentação que exibe os dados para o usuário (WIKIPÉDIA, 2009). A Figura 4 apresenta um esquema que ilustra as principais camadas da web: Figura 4 - Camadas da web Nas próximas subseções será apresentado um resumo das principais tecnologias atuantes na web contemporânea. 24 2.2.1 URL A camada de apresentação (máquinas clientes) geralmente se comunica com a camada de negócio (servidores) com uma requisição a um Uniform Resource Location (URL) que representa um endereço na web. Todos URLs representam um endereço de Internet Protocol (IP) de uma máquina (roteador) na internet. Segue abaixo alguns URLs seguidos dos respectivos endereços IPs que representam na web (WIKIPÉDIA, 2009). a) endereço URL (www.w3.org), endereço IP correspondente: 128.30.52.38; b) endereço URL (www.google.com), endereço IP correspondente: IP correspondente: 74.125.93.147; c) endereço URL (www.fatecsjc.edu.br), endereço 208.70.188.17. Um URL é um identificador de local, ou seja, um endereço de rede na internet. Um URL como “http://www.exemplo.com.br/diretório1/diretório2/recurso.html” apresenta as seguintes partes (ICMC USP, 2009): a) o protocolo de acesso (http://); b) o endereço IP da máquina pelo domínio (www.exemplo.com.br); c) o caminho de diretórios até o recurso (\diretorio1\ditretorio2\); d) o recurso a ser obtido (\recurso.html). Após uma requisição ser enviada a um servidor, este responde com uma página (ou outro recurso). Outras requisições podem ser feitas para o servidor contendo dados de um formulário, dados inseridos na própria URL ou por objetos de requisição assíncrona (TABLELESS, 2009). Estes dados podem ser processados no servidor gerando novas respostas. Após a interação os dados podem ser armazenados na camada de persistência (DEITEL, 2008). A web desenvolve-se por meio da arquitetura Cliente/Servidor, onde o servidor é qualquer recurso de hardware e software da rede que administra e oferece serviços, tais como: hospedagem de websites, bancos de dados, serviços de e-mails, dentre outros (AZAMBUJA, 2007). 25 2.2.2 HTML Máquinas clientes solicitam recursos dos servidores. A resposta geralmente é uma página de código Hiper Text Makup Language (HTML) mesclada com o conteúdo como um documento, isto ocorre quando é digitado um endereço no navegador (DEITEL, 2008). O código HTML define o a marcação do conteúdo para indicarmos formatações, inserir imagens e ligações de hipertexto. Os Navegadores identificam essas marcações em HTML e apresentam a página como foi especificada na marcação (ICMC USP, 2009). A Figura 5 apresenta um esquema de uma requisição de página na arquitetura Cliente/Servidor: Figura 5 - Requisição de página cliente/servidor A sintaxe HTML é baseada em tags que marcam o conteúdo e descrevem para o interpretador de cada navegador como o documento será renderizado. Tags podem ser abertas e fechadas definindo um escopo onde o conteúdo dentro deste é exibido com um formato ou regra pré-definido no interpretador. A exibição descrita pela tag ainda pode sofrer modificações descritas por seus atributos (W3C XHTML2 WORKING GROUP, 2009). A Figura 6 mostra um exemplo de código HTML: Figura 6 - Exemplo de código HTML 26 No exemplo de código HTML, a tag “<table> ... </table>” indica para o interpretador do navegador que o conteúdo dentro desse escopo deverá ser exibido dentro de uma tabela, as tags “<tr>....</tr>” (table row) e “<td>...</td>” (table dimension) indicam as linhas e células de cada linha da tabela respectivamente. O atributo “border=1” define a espessura da borda da tabela. O conteúdo é enviado para o navegador dentro de tags HTML que definem a regra de exibição para o usuário mostado na Figura 7. Figura 7 - Renderização de HTML exibida pelo navegador Firefox versão 3.0.7 2.2.3 XHTML Segundo o XHTML2 WORKING GROUP, 2009, atualmente a maior parte das páginas da web é feita em HTML, uma pequena parcela da internet utiliza Extensible Hiper Text Makup Language (XHTML)(DEITEL, 2008). O XHTML foi projetado como uma iniciativa de evitar os problemas sintáticos do HTML, XHTML é o sucessor do HTML; este é baseado em Extensible Makup Language (XML) e projetado para trabalhar com aplicações e agentes baseados em XML. É uma recomendação da W3C e séries de especificações são desenvolvidas e reformuladas para a linguagem todo ano (XHTML2 WORKING GROUP, 2009). O XHTML é sempre associado a um documento Data Type Definition (DTD) de validação por ser feito em XML, esse documento define as especificações das tags do XHTML. Assim como no XML, o XHTML não permite erros sintáticos que comumente são tolerados pelos navegadores nos códigos HTML, e é, desde a sua concepção, projetado para ser renderizado em qualquer dispositivo. Uma página XHTML pode ser validada em 3 DTD’s diferentes disponibilizados na W3C, cada um com sua finalidade e nível de rigor. A Figura 8 mostra um exemplo documento XHTML válido associado com o DTD do tipo Strict, o mais rigoroso em temos de especificação de sintaxe. 27 Figura 8 - Exemplo de código XHTML As linhas anteriores a tag “<html>” garantem a consistência da informação associando o documento ao DTD, daí para baixo é uma página HTML normal seguindo os padrões exigidos. Isto garante maior confiabilidade na exibição da página ou com sua iteração com outras tecnologias, mas o foco não é descrever a informação, apenas exibir o conteúdo. 2.2.4 CSS Para tornar mais rica a exibição do conteúdo são usadas outras tecnologias em conjunto com o HTML como as Cascate Style Sheets (CSS), arquivos que permitem estilizar de forma mais específica e com muito mais recursos de exibição aplicados à marcação (TABLELESS, 2009). O CSS é uma tecnologia que pode ser associada a páginas para definir o layout e formatação do conteúdo, permite a aplicação de cores, bordas, planos de fundo e sons. A folha de estilo em cascata pode ser aplicada diretamente na página HTML armazenada no código dentro da tag “<style>...</style>” ou ligadas de forma externa pela tag “<link>”. Abaixo um exemplo de aplicação de folha de estilo associada a uma página HTML de forma externa. A Figura 9 mostra uma página HTML comum associada a uma folha de estilos CSS por meio da tag “<link>”: 28 Figura 9 - Página HTML ligada em folha de estilo externa A Figura 10 mostra um exemplo de código CSS que poderia ser associado a página HTML especificando tamanho, tipo e cores das margens e das bordas de cada elemento: Figura 10 - Exemplo de código CSS A Figura 11 mostra como será a renderização da página da Figura 9 ao aplicarse a folha de estilos acima: Figura 11 - Página HTML associada com folha de estilo rederizada pelo navegador Mozilla Firefox 3.0.7 29 2.2.5 Outras Tecnologias O comportamento da página pode ser escrito em uma linguagem script como Javascript dentro da tag “<script>...</script>” ou incluso em arquivo externo. Isto permite adicionar comportamentos ou funções adicionais a página que são executados nos navegadores (DEITEL, 2008). Existem recursos de exibição mais ricos que permitem animações, interação e comportamentos mais dinâmicos. Também existem linguagens ativas no servidor que possibilitam que páginas adquiram regras de negócio, contudo, nenhuma dessas tecnologias tem compromisso com a descrição dessa informação para máquinas (BERNERS-LEE, 2001). 2.2.6 Semântica na Web 2.0 A maior parte da web é composta por documentos em HTML ou XHTML ligados por hiperlinks (WIKIPÉDIA, 2009). As empresas usam mineração de dados para extrair o significado de páginas. O XHTML ou HTML, associado com folhas de estilo, especificam a marcação e a exibição como cores e layout, mas não especificam o significado de seu conteúdo para as máquinas (DEITEL, 2008). Isso torna difícil a mineração e uso dessas informações (MARKOFF, 2008). Tanto o HTML quanto o XHTML não guardam nenhuma informação semântica sobre a informação que é nele inserido, somente como ela deve ser exibida ao usuário, é uma web feita para humanos entender seu conteúdo, não para máquinas (DEITEL, 2008) (BERNERS-LEE, 2006) (HENDLER, 2006). Descrever a semântica da informação é muito mais complexo do que etiquetá-la entre tags, para tornar um documento machine readable são necessárias tecnologias especializadas em descrição semântica que veremos na próxima seção. 30 2.3 Ambiente da Web Semântica Esta seção detalha na arquitetura básica da Web Semântica e apresenta suas principais tecnologias. A arquitetura da Web Semântica é comumente ilustrada por uma figura chamada “Bolo de Noiva” (BERNERS-LEE, 2008). Ela apresenta as camadas adicionais que a Web Semântica conterá e ilustra as principais tecnologias atuantes em cada uma. Pode ser reconhecida em três níveis sendo esses: estrutural, ontologia e lógica (WIKIPÉDIA, 2009) além de dois níveis verticais que garantem a segurança. A Figura 12 ilustra a arquitetura da Web Semântica. Lógica Ontologia Estrutura Figura 12 - Arquitetura da Web Semântica 2.3.1 Camada de Estrutura A Camada de Estrutura abrange os dois primeiros níveis com as tecnologias de Uniform Resource Identifier (URI), Unicode, XML e namespaces. Elas definem os aspectos sintáticos mais simples da web estrutural (JACINTO, 2006). Essa camada é o alicerce da Web 31 Semântica. Segundo a W3C WEB SEMANTIC ACTIVIT, 2009, esta camada tem por finalidade de: a) padronizar o uso de caracteres; b) definir significado sintático; c) definir localização dos recursos. 2.3.2 Camada de Ontologia A Camada de Ontologia abrange os dois níveis com as tecnologias de Modelo e Sintaxe RDF, RDF Schema e Ontologias. Com o tempo surgiram outras linguagens como a Ontology Web Language (OWL) com maiores recursos de descrição semântica. Esta camada tem as seguintes finalidades (W3C, 2009): a) descrever os recursos com meta-informação; b) ter uma melhor e mais detalhada classificação e caracterização das relações entre os recursos; c) garantir interoperabilidade e reuso de conceitos e termos; d) para os casos mais complexos, definir as relações lógicas entre os recursos. 2.3.3 Camada Lógica A Camada de Lógica abrange os últimos níveis chamados de Regras, Lógica, Prova e Confiança. É neste nível que é validada e especificada a meta-informação das camadas inferiores para que se atinja a confiabilidade (W3C, 2009). Este nível tem a finalidade de: a) definir as regras entre os recursos e suas relações; b) extrair e vincular fontes de dados para garantir o seu intercâmbio com os dados provenientes de outras fontes; c) consultar informações descritas por meio dessas relações; d) revelar contradições; e) descobrir novas relações. 32 Nas próximas seções serão apresentadas as principais tecnologias da Web Semântica. 2.3.4 URI Um Uniform Resource Indentifier (URI) identifica um recurso na web, seja este abstrato ou físico (W3C, 2009). Um URI pode identificar de forma única qualquer coisa na internet. O URI é uma extensão do URL sendo que todo URL também é um URI (MANOLA, 2004). A Figura 13 mostra alguns exemplos de URI que apontam para recursos: Figura 13 - Alguns exemplos de URI’s No primeiro exemplo temos uma identificação de um recurso de caixa de email, no segundo um livro e no terceiro exemplo, a idade de uma pessoa. Por meio dos URI’s podemos identificar qualquer coisa na web como um recurso e, a partir disso, começar a descrevê-la. O URI é a base para o RDF e desde já soluciona o problema de ambigüidade como pesquisar por um nome comum já que a identificação do recurso passa a ser único na internet (BERNERS-LEE, 2004). Logo, é conveniente utilizar URI’s para identificar recursos na web. No modelo do RDF quanto mais utilizar-se URI’s do que informações literais (caracteres em linguagem natural, por exemplo) mais adequado será para termos uma web ligada por informações (MANOLA, 2004). Nas próximas seções será apresentado o XML e o RDF, e como estes fazem uso das URI’s para sanar alguns dos problemas semânticos da web. 2.3.5 XML Extensible Makup Language (XML)(W3C, 2009) é uma linguagem de marcação recomendada pela W3C que tem uma finalidade diferente do HTML. Trata-se se uma linguagem que representa informação em forma de árvores estruturando o conteúdo, são linguagens com finalidades diferentes (BRAY, 2008). O HTML é projetado para exibição da 33 informação enquanto o XML é projetado para seu armazenamento e transporte (W3SCHOOLS, 2009). Diferente do HTML, o XML não possui tags pré-definidas, qualquer usuário pode definir suas próprias tags como lhe convenha para estruturar sua informação. A Figura 14 mostra um exemplo de arquivo XML: Figura 14 - Exemplo de código XML O XML tem a finalidade de prover comunicação padronizada entre máquinas especificando uma estrutura comum para a comunicação. Para isto, usa um documento que padroniza a informação como um DTD ou XML Schema. Na web as máquinas trocam informações entre si em XML e a exibem para o usuário em HTML (W3SCHOOLS, 2009) O XML é usado como base para criação de vários outros padrões como o XHTML e o RDF. No entanto o XML por si só também não tem compromisso com a semântica da informação. Inserir semântica no conteúdo é mais complexo do que envolvê-los em tags. O XML serve de base para as linguagens de descrição semântica, mas ele próprio é apenas sintático (BERNERS-LEE, 2004) e pertence à camada estrutural da Web Semântica. 34 2.3.5.1 DTD Um documento XML pode ser validado por um documento Data Type Definition (DTD), por meio dos DTD’s pode se criar padrões para o transporte e armazenamento da informação entre dispositivos diferentes, solucionando o problema de incompatibilidade dos dados. Dados marcados em XML são arquivos de textos simples legíveis por quaisquer dispositivos (W3SCHOOLS, 2009) Para o documento XML mostrador anteriormente, poderia ser criado um DTD como o apresentado na Figura 15 para padronizar o transporte de informação sobre receitas culinárias. Figura 15 - Exemplo de código DTD O DTD acima descreve os elementos válidos para o documento XML, a tag “<receita>” na linha dois deve receber os elementos filhos “<modo_de_preparo>” e “<ingredientes>”, o elemento “<ingredientes>” deve receber o elemento “<ingrediente>” e o “<modo_de_preparo>” pode ou não receber o elemento “<passo>” e pode receber conteúdo de texto (#PCDATA). Um documento DTD pode ser utilizado para criar um padrão de comunicação entre máquinas, por isso o XML não permite erros de sintaxe segundo as especificações da linguagem ou do documento de definição. 2.3.5.2 XML Schema Assim como o DTD, um XML Schema pode ser usado para validar um documento XML, mas esse possui mais recursos como cardinalidade, suporte a criação de tipos, namespaces além de ser escrito em XML (W3C SCHOOLS, 2009). A Figura 16 mostra um exemplo de um documento XML Schema com a mesma finalidade do DTD da Figura 15: 35 Figura 16 - Exemplo de código XML Schema 2.3.6 RDF A Web Sintática é destinada ao usuário humano sendo que o usuário máquina não pode dispor das informações contidas nela tal qual um ser humano, porque para uma máquina, essas informações não possuem um significado (BREITMAN, 2006). No contexto da Web Semântica essas informações são chamadas de recursos. Um recurso é qualquer informação que possa ser descrita com suas propriedades e suas relações com outros recursos. Segundo (MANOLA, 2004) um recurso é qualquer informação na web que possa ser identificada e reutilizada. Para descrever esses recursos são utilizadas tecnologias como o Resourse Description Framework (RDF). Podemos definir o RDF como um ambiente de descrição de recurso que tem suas características e padrões. A seguir, o RDF e suas particularidades serão mostrados com mais detalhes. 36 2.3.6.1 Notação RDF O RDF é um ambiente simples que possibilita a descrição de meta-informação sobre recursos da web. As descrições são formadas por uma série de declarações que são chamadas de triplas. Uma tripla está presente em qualquer declaração descritiva (BERNERSLEE, 2001). Triplas são compostas de três elementos: um sujeito, um predicado e um objeto (MANOLA, 2004) como serão descritos a seguir: a) sujeito: É o recurso que a declaração descreve; b) predicado: Uma propriedade do recurso que a declaração descreve; c) objeto: O valor da propriedade do recurso que a declaração descreve, podendo este também ser outro recurso. Um exemplo de declaração como: “RDF Primer foi criado em 10 de fevereiro de 2004”, pode ser expressa pela seguinte tripla: (a) “RDF Primer”, (b) “data de criação”, (c) “10 de Fevereiro de 2004”, sendo: a) sujeito: RDF Primer; b) predicado: data de criação; c) objeto: 10 de Fevereiro de 2004. Assim qualquer informação sobre qualquer recurso na web pode ser expressa por triplas, como na tripla “Frank Manola” “autor” “RDF Primer”. O recurso RDF Primer surge agora como um objeto da declaração, porém para uma máquina não existe nenhuma relação entre o sujeito “RDF Primer” da primeira declaração com o objeto “RDF Primer” da segunda declaração que garanta que sejam referentes ao mesmo conceito; trata-se apenas um conjunto de caracteres iguais sem garantia que sejam a mesma coisa para uma máquina (BREITMAN, 2006). Da mesma forma “redes” (num contexto de pescaria) ou “redes” (num contexto de computadores) possuem o mesmo conjunto de caracteres, mas não agregam semântica que explicite que sejam conceitos diferentes. Isto ocorre porque estamos trabalhando com literais. Literais são valores que podem ser utilizados em triplas RDF, mas que só representam o significado léxico da informação como em linguagem natural (W3SCHOOLS, 2009). Em gráficos RDF, literais são exibidas dentro de retângulos, a Figura 17 mostra as triplas acima expressas por um gráfico RDF somente com literais: 37 Figura 17 - Gráfico RDF somente com literais Como visto, literais não bastam para identificar um recurso como sendo único e permitir sua reutilização, assim, na especificação da notação RDF, literais só podem ser utilizadas como objetos, mas nunca como sujeito ou predicado (W3SCHOOLS, 2004). O RDF usa URI’s para identificar sujeitos e predicados nas triplas de forma que cada recurso pode ser referenciado como sendo único e suas diferenças possam ser descritas. A solução adequada no exemplo anterior é centralizar o recurso “RDF Primer” por meio de uma identificação única de recurso como: “http://www.w3.org/TR/2004/REC-rdfprimer-20040210”. O conceito “RDF Primer” identificado por um URI aponta para o mesmo recurso, logo uma máquina entende que estão sendo feitas declarações sobre um mesmo recurso “RDF Primer”. A primeira tripla acima pode ser escrita da seguinte forma (MANOLA, 2004): a) <http://www.w3.org/TR/2004/REC-rdf-primer-20040210>; b) data de criação; c) 10 Fevereiro 2004. Logo a segunda tripla receberia o mesmo URI para identificar o recurso “RDF Primer” indicando que se trata de uma relação sobre a mesma informação: a) “Frank Manola” b) “autor” c) <http://www.w3.org/TR/2004/REC-rdf-primer-20040210> Na notação RDF referências para URI’s são apresentadas dentro dos sinais de menor e maior como uma tag. As triplas acima representam um gráfico como o apresentado pela Figura 18. URI’s são apresentadas com elipses em gráficos RDF. O gráfico da Figura 18 mostra duas triplas, uma que referência “RDF Primer” como objeto, e outro como sujeito. O termo “Frank Manola” é um sujeito neste exemplo, logo este também não pode ser uma literal. Segundo BERNERS-LEE, 2001, é sempre melhor que sujeitos e predicados sejam sempre identificados por URI’s para permitir a identificação e reuso da informação. 38 Figura 18 - Exemplo de gráfico RDF Informações adicionais sobre os recursos “RDF Primer” e “Frank Manola” poderiam ser declaradas em outras triplas que ligariam várias informações sobre estes recursos. A Figura 19 mostra o conceito “Frank Manola” representado por um URI agregando mais informações: Figura 19 - Exemplo de gráfico RDF descrevendo Frank Manola Um conjunto de triplas consistente forma uma ontologia. No contexto da Web Semântica, uma ontologia caracteriza um conjunto de conceitos dentro de um domínio de conhecimento e os relacionamentos entre estes (WIKIPÉDIA, 2009). Ao longo do tempo, estas ontologias irão gradativamente formar uma web interligada por conceitos e não por páginas (MARKOFF, 2008). As tecnologias da Web Semântica permitirão progressivamente ligar conceitos em um conhecimento universal e unificado (BERNERS-LEE, 2001) (HENDLER, 2006). Predicados em RDF (como “data de criação” e “autor”) também não podem ser expressos por literais, os predicados também ligam as relações em conceitos de relação centralizados (KLYNE, 2004) e seus conceitos podem ser sujeitos e objetos de outras 39 declarações. Conjuntos de conceitos reutilizáveis são chamados de vocabulários. Conheceremos a definição de vocabulários na seção a seguir: 2.3.6.2 Vocabulários No exemplo acima não temos literais como sujeito, porém nota-se que os predicados não estão identificados de forma única. URI’s também são aplicados para identificar predicados. Termos utilizados em descrições RDF agrupados em um namespace que são chamados de vocabulários. Uma loja de veículos que esteja descrevendo semanticamente seus produtos poderia definir um vocabulário que descreve as propriedades dos veículos como o vocabulário a seguir: a) conceito “modelo”: “http://www.lojaveiculos1.com/prod/terms/modelo”; b) conceito “ano”: “http://www.lojaveiculos1.com/prod/terms/ano”; c) conceito “cor”: “http://.www.lojaveiculos1.com/prod/terms/cor”. Este vocabulário poderia ser reutilizado por uma segunda loja para descrever seus veículos e assim teríamos um vocabulário com termos únicos que interligariam a semântica de veículos como no exemplo da Figura 20: Figura 20 - Exemplo de gráfico RDF para loja de veículos Não foi necessário que a Loja de Veículos 2 (www.lojaveiculos2.com) criasse seu próprio vocabulário, mas esta reaproveitou o significado já descrito nos termos do vocabulário da Loja Veículos 1 (www.lojaveiculos1.com). Da mesma forma a Loja Veículos 2 reutilizou o URI “www.lojaveiculos1.com/automoveis/tipos/fusca” disponibilizado pela 40 Loja Veículos 1 para descrever um “modelo” (www.lojaveiculos1.com/prod/terms/modelo) de fusca. Isso é uma utilização de recurso, assim diferentes vocabulários vão sendo interligados formando descrições comuns de recursos. Ambas as lojas utilizaram um vocabulário que já poderia ter coleções de triplas interligadas com outros termos ou outros vocabulários de outras fontes. Segundo MANOLA, 2004, isto é a segunda finalidade do URI, reuso de informação. 2.3.6.3 Vocabulário Dublin Core Vocabulários comuns possibilitam o reuso da informação, alguns vocabulários como o DUBLIN CORE, 2009, já são recomendações. O Dublin Core é um vocabulário com quinze termos gerais utilizados para a descrição de recursos na internet (DUBLIN CORE, 2009), abaixo serão listados os termos desse vocabulário: a) contribuidor (Contributor): Uma entidade responsável pela criação do recurso; b) cobertura (Coverage): Uma extensão ou escopo do conteúdo do recurso; c) criador (Creator): Uma entidade principal responsável pela elaboração do conteúdo do recurso; d) formato (Format): A manifestação física ou digital do recurso; e) data (Date): A data de um evento no ciclo de vida do recurso; f) descrição (Description): Uma descrição do conteúdo do recurso; g) identificador (Identifier): Uma referência inequívoca para o recurso dentro de um determinado contexto; h) língua (Language): A língua em que foi produzido o conteúdo do recurso; i) editora (Publisher): Uma entidade responsável por tornar o recurso disponível; j) relação (Relation): Uma referência a um recurso relacionado; k) direitos (Rights): Informações sobre os direitos adquiridos sobre o recurso; l) fonte (Source): Uma referência a um recurso a partir do qual o presente recurso é derivado; m) assunto (Subject): Um tópico do conteúdo do recurso; n) título (Title): Um nome dado ao recurso; o) tipo (Type): A natureza ou gênero do conteúdo do recurso. 41 A Figura 21 mostra as triplas da Figura 17 adequadamente descritas segundo a notação RDF e recomendações da W3C utilizando o vocabulário Dublin Core: Figura 21 - Exemplo de gráfico RDF com vocabulário Dublin Core Um namespace como o Dublin Core pode ser referenciado por um qname. O Vocabulário Dublin Core é comumente referenciado pelo prefixo “dc”. A definição de namespace e prefixo será apresentada na próxima seção. 2.3.6.4 Namespaces Um namespace é um container abstrato que reúne um conjunto de recursos (WIKIPÉDIA, 2009). Um grupo de recursos disponíveis em um URI é chamado de namespace. A Figura 22 mostra um exemplo de namespace: Figura 22 - Exemplo de namespace Por meio do atributo “xmlns” (XML namespace) pode se reduzir os namespaces em prefixos também chamados de qnames facilitando a referência escrita para os 42 URI’s, ou seja, reaproveitar endereços de termos e recursos que sejam comuns em pequenas inscrições no código (MANOLA, 2004) como no exemplo mostrado na Figura 23: Figura 23 - Exemplo de gráfico RDF ilustrando tripla O predicado da tripla acima faz referência ao vocabulário Dublin Core na propriedade date (http://purl.org/dc/elements/1.1/date) e pode ser escrito pela tripla: a) sujeito: <http://www.w3.org/TR/2004/REC-rdf-primer-20040210> b) predicado: <http://purl.org/dc/elements/1.1/date> c) objeto: “10 Fevereiro 2004” Se fosse utilizada a propriedade “xmlns” aplicando o namespace do vocabulário Dublin Core (http://purl.org/dc/elements/1.1/), ele pode ser resumido a um QName como “dc”, desta forma o gráfico ficaria como mostrado na Figura 24: Figura 24 - Gráfico RDF destacando namespace E a tripla poderia ser escrita da seguinte forma: a) sujeito: <http://www.w3.org/TR/2004/REC-rdf-primer-20040210> b) predicado: dc:date c) objeto: “10 Fevereiro 2004” Existem prefixos que são muito utilizados em documentos XML/RDF, e são tidos como padrões pela comunidade, os mais comuns são: a) prefixo “rdf” referenciando “http://www.w3.org/1999/02/22-rdf-syntax-ns#”: define um documento RDF e as propriedades do namespace do RDF; 43 b) prefixo “rdfs” referenciando “http://www.w3.org/2000/01/rdf-schema#”: define o namespace do RDF Schema; c) prefixo “dc” referenciando “http://purl.org/dc/elements/1.1/”: define o namespace para o vocabulário Dublin Core; d) prefixo “xsd” referenciando “http://www.w3.org/2001/XMLSchema#”: define o namespace XML Schema. A Figura 25 mostra um exemplo de declaração de namespaces num documento RDF: Figura 25 - Declaração de namespaces Os vocabulários são geralmente descritos por um RDF Schema. Na próxima seção será apresentada a definição de RDF Schema. 2.3.6.5 RDF Schema O RDF Schema pode descrever recursos e vocabulários com classes e propriedades de forma semelhante ao conceito de Orientação a Objetos (W3SCHOLS, 2009). Ele foi originalmente desenvolvido pelo (RDF SCHEMA WORKING GROUP, 2000) da W3C (BRICKLEY, 2004), e tem por finalidade descrever vocabulários (MANOLA, 2004). A Figura 26 mostra um exemplo de RDF Schema descrevendo um vocabulário válido para descrição de receitas culinárias. 2.3.6.6 XML/RDF Sintaxe Tanto o RDF quanto o RDF Schema são definidos em XML (FENSEL, 2009) (DEITEL, 2008). Esta sintaxe é chamada de RDF/XML (BECKETT, 2004). 44 Figura 26 - Exemplo de código RDF Schema A tripla a seguir pode ser representada por um documento XML/RDF: a) sujeito: <http://www.w3.org/TR/2004/REC-rdf-primer-20040210> b) predicado: dc:date c) objeto: “10 Fevereiro 2004” A Figura 27 apresenta um exemplo de documento XML/RDF para a declaração acima: Figura 27 - Exemplo de código RDF/XML 45 O atributo “xmlns” faz as ligações ou arcos. A linha “xmlns:rdf=http://www.w3.org/1999/02/22-rdf-syntax-ns#” define o trecho de código da Figura 27 como um gráfico XML/RDF válido, pois as tags “<rdf:RDF>...</rdf:RDF>” definem o escopo associado com o namespace do RDF. A linha logo abaixo desta faz a ligação com o vocabulário do namespace do Dublin Core. O documento provê a ligação dos seguintes URI’s formando uma árvore como apresentada na Figura 28: Figura 28 - Árvore de ligações entre URI’s em tripla RDF As três últimas são respectivamente o sujeito, predicado e objeto. A Figura 29 mostra como poderia ser a mesma árvore com os qnames definidos no escopo da tag “<rdf:RDF>” Figura 29 - Árvore de ligações de URI’s com XML namespaces Logo, com exceção das três últimas, as três primeiras URI’s que são o cabeçalho de uma descrição RDF válida (MANOLA, 2004). Cada documento RDF/XML pode fazer uma série de declarações sobre um recurso. Um conjunto de triplas RDF consistente forma uma ontologia (BRICKLEY 2004). 46 2.3.7 Outras Tecnologias a) OWL: O Web Ontology Language se tornou recomendação da W3C em 2004. Surgiu da fusão entre outras duas linguagens de descrição semântica, Ontology Inference Layer (OIL) + DARPA Agent Makup Language (DAML) (WIKIPÉDIA, 2009). OWL é uma extensão do RDF Schema agregando mais recursos de descrição com maior quantidade de vocabulários possibilitando maior interpretação por máquinas (W3C SCHOOLS, 2009). Possui três níveis sendo do mais simples para o mais completo, OWL Lite, OWL DL e OWL Full respectivamente (MCGUINNESS, 2004). b) SWRL: O Semantic Web Rule Language (SWRL) surgiu da combinação das linguagens OWL e Rules Makup Language (HORROCKS, 2004). É uma extensão do OWL que permite a inserção de regras sobre o conteúdo descrito; c) SPARQL: Trata-se de uma linguagem estruturada para consulta a ontologias (PRUD'HOMMEAUX, 2008). 2.4 Considerações Finais Este capítulo expôs as diferenças entre a Web Sintática e a Web Semântica bem como uma visão geral de suas principais tecnologias. No Capítulo 3 será mostrado algumas das mais utilizadas ferramentas edição de conteúdo semântico e ontologias. No próximo capítulo são apresentadas algumas ferramentas de edição de conteúdo semântico utilizadas atualmente pela comunidade desenvolvedora. 47 3 FERRAMENTAS DE EDIÇÃO SEMÂNTICA PARA WEB Este capítulo apresenta as principais ferramentas utilizadas para produção, edição e manipulação de semântica para web. Foram selecionadas algumas das ferramentas utilizadas pela comunidade desenvolvedora de ontologias com base nas publicações e trabalhos desenvolvidos. A as subseções da Seção 3.1 apresentam respectivamente as ferramentas Protégé, OntoEdit e SemanticWorks. A última seção deste capítulo descreve resumidamente algumas outras ferramentas disponíveis à comunidade. 3.1 Principais Ferramentas de Edição para Web Semântica As subseções a seguir apresentam algumas ferramentas de edição de conteúdo semântico disponíveis para a comunidade desenvolvedora. Três das principais ferramentas foram analisadas pelos seguintes critérios: a) disponibilidade: analisa a disponibilidade da ferramenta considerando versão estável, beta ou protótipo, os direitos vigentes sobre a utilização da ferramenta e quais as plataformas e tecnologias necessárias para sua instalação. b) suporte: considera o tipo de suporte que as entidades disponibilizam para a comunidade, a documentação da ferramenta, a facilidade de encontrar suporte e informações na internet, FAQ, fóruns, tutoriais, cursos e publicações. c) recursos: considera a interface nos requisitos de usabilidade, verifica a existência de recursos para desenvolvimentos nos vários padrões e linguagens, analisa a existência de recursos para desenvolvimento colaborativo. As demais ferramentas apresentadas contam com uma breve descrição. Esperase com este estudo adquirir parâmetros que contribuam com a construção da ferramenta que se propõe este trabalho. 48 3.1.1 Protégé Protégé é uma das mais difundidas ferramentas de edição semântica entre os desenvolvedores, foi desenvolvida pela Universidade de Stanford com colaboração da Universidade de Manchester (WIKIPÉDIA, 2009). Várias comunidades de desenvolvedores trabalham para o aperfeiçoamento dessa ferramenta (JACINTO, 2006). Entre as entidades que fazem parte da comunidade de desenvolvimento e aperfeiçoamento da ferramenta estão PROTÉGÉ-STANFORD, 2009: a) Defense Advanced Research Projects Agency; b) eBay Inc.; c) National Cancer Institute; d) National Institute of Standards and Technology; e) National Institutes of Health's National Centers for Biomedical Computing; f) National Library of Medicine; g) National Science Foundation. O site oficial também divulga congressos e conferências sobre a ferramenta. Nas subseções a seguir serão apresentadas as principais características da ferramenta Protégé. 3.1.1.1 Disponibilidade Protégé é um editor de ontologias livre, de código fonte aberto sobre a licença MPL (Mozilla Public License) (PROTÉGÉ-STANFORD, 2009). Pode ser encontrado em vários páginas para download gratuito em todas suas versões ou após um cadastro no site oficial da ferramenta. Protégé também tem uma versão on-line chamada WebProtégé, porém oferece menos recursos do que em sua versão para instalação. Protégé é de plataforma independente, fácil instalação não carecendo de configuração alguma e foi desenvolvido principalmente em Java tendo a Java Runtime Environment (JRE) como pré-requisito. 49 3.1.1.2 Suporte Protégé possui uma vasta documentação disponível tanto no site oficial quanto na ferramenta, Ela possui uma comunidade ativa, sites, FAQ,blogs e fóruns. O site oficial e disponibiliza alguns cursos rápidos e gratuitos com duração de 2 a 4 dias. 3.1.1.3 Recursos Protégé é uma plataforma que suporta dois níveis de modelagem, ProtégéFrames e Protégé-OWL. Protégé-Frames permite que usuários possam povoar ontologias, possui uma interface baseada em figuras para facilitar a ambientação do usuário não familiarizado com a arquitetura técnica das ontologias. As descrições são armazenadas em um conjunto de classes organizadas hierarquicamente em conformidade com o OKBC (Open Knowledge Base Connectivity) (PROTÉGÉ-STANFORD, 2009). A Figura 30 exibe a interface de Protégé-Frames: Figura 30 - Interface do Protégé-Frames Protégé-OWL permite que ontologias sejam criadas de forma mais técnica. Fornece recursos para edição de classes, propriedades, instâncias e lógica (PROTÉGÉSTANFORD, 2009). Neste modelo, de todas as ferramentas analisadas, Protégé é a que dá 50 maior suporte as linguagens e padrões desde o RDF, RDF Schema, RDF(S), OWL Lite, OWL DL, OWL Full, OIL, DAML, DAML+OIL e até Turtle. A Figura 31 mostra a interface de Protégé-OWL (PROTÉGÉ-STANFORD, 2009). Figura 31 - Interface do Protégé-OWL Protégé também possui uma versão na web chamada WebProtégé. WebProtégé suporta a criação de ontologias colaborativamente no ambiente da web. A Figura 32 apresenta a interface do WebProtégé. Figura 32 - Interface do WebPrótegé 51 Segundo o FAQ de (PROTÉGÉ-STANFORD, 2009) as características que diferem Protégé de outras ferramentas são: a) facilidade: na versão Protégé-Frames é intuitivo para facilitar a produção de ontologias para os usuários; b) Escalabilidade: possui uma arquitetura que não deteriora o desempenho ainda que trabalhando milhares frames com uma comunidade que já conta com cerca de 150,000 frames; c) extensibilidade: Aceita plug-ins de ampliação; d) documentação: possui uma extensa documentação e cursos gratuitos. Protégé-OWL possui um modo gráfico para visualização das triplas baseado em mapas conceituais e permite a geração do código ou edição do mesmo em modo textual diretamente em XML. 3.1.2 OntoEdit OntoEdit é um ambiente de engenharia de ontologias criado pela empresa alemã ONTOPRISE, 2009. É uma parte do projeto ON-TO-KNOWLEDGE, 2009, que visa tornar disponíveis ontologias para empresas melhorarem sua gestão de conhecimento. A Seguir serão apresentadas as principais características da ferramenta de edição semântica para web OntoEdit. Trata-se de um consórcio composto pelas entidades abaixo (ANGELE, 2001): a) Vrije Universiteit Amsterdam VUA; b) Institute AIFB / University of Karlsruhe; c) Schweizerische Lebensversicherungs- und Rentenanstalt/Swiss Life; d) British Telecommunications plc; e) CognIT a.s.; f) EnerSearch AB; g) AIdministrator Nederland BV. 52 Este projeto conta com diversas outras ferramentas utilizadas pela comunidade desenvolvedora de ontologias. OntoEdit é um ambiente extensível a plug-ins e add-ons e, constantemente, possui novos recursos incrementais (SURE, 2002). 3.1.2.1 Disponibilidade OntoEdit (Ontology Enginnering Environment) é disponibilizado em três versões: freeware, standard e professional (SURE, 2003), todas com suporte a diversas linguagens. Funciona principalmente na plataforma Windows. OntoEdit tem como requisito mínimo a JRE1.2.2 instalada, mas os autores recomendam a JRE1.3 (SURE, 2003), pode ser encontrado para download em vários sites em suas três versões. 3.1.2.2 Suporte A ajuda da ferramenta inclui informações sobre a versão, contato e guia do usuário. O guia do usuário é simples e completo contendo figuras de exemplo (SURE, 2002). Na web a empresa não disponibiliza muita informação, tutoriais, FAQ ou fóruns sobre a ferramenta, mas existe uma documentação oficial completa sobre a ferramenta disponibilizada em ON-TO-KNOWLEDGE, 2009. Além disso, existem vários artigos publicados contendo OntoEdit como foco sob diversos aspectos. Dentre estes, MAEDCHE, 2000, STAABET, 2000, e HANDSCHUH, 2001, são autores de algumas publicações (SURE, 2002). 3.1.2.3 Recursos OntoEdit possibilita a inspeção, navegação, codificação e edição de ontologias. A interface possibilita a manipulação em modo gráfico ou textual. A configuração da 53 ferramenta pode ser customizada (SURE, 2003). Segundo (JACINTO, 2006) OntoEdit tem algumas funcionalidades como: a) hierarquia de conceitos; b) ontologia multi-lingual; c) modelo de representação baseado em frames; d) trabalho colaborativo; e) herança múltipla. Implementado em Java, OntoEdit foi principalmente elaborado para ser um agregador de add-on, snap-ins e plug-ins sendo um ambiente incremental e em constante ampliação de recursos por meio da modularização (SURE, 2002). OntoEdit também permite a produção colaborativa de ontologias (SURE, 1999). A Figura 33 apresenta a interface de OntoEdit. Figura 33 - Interface do OntoEdit 3.1.3 SemanticWorks SemanticWorks é um editor de RDF e OWL para Web Semântica, é uma ferramenta atual, sua primeira versão foi lançada em 2006 e hoje encontra-se na versão 2009 (ALTOVA, 2009). Trata-se de uma ferramenta proprietária produzida pela Altova, uma empresa de desenvolvimento de software fundada em 1992 (WIKIPÉDIA, 2009). 54 Abaixo serão apresentadas as principais características da ferramenta de edição semântica para web SemanticWorks. 3.1.3.1 Disponibilidade SemanticWorks é uma ferramenta proprietária, porém é disponibilizada em versão de teste por trinta dias. Pode ser encontrada para download em vários sites ou em (ALTOVA, 2009). SemanticWorks possui versões para MacOS X ,Linux RedHat 8.0 e Windows NT 4.0 ou superior (ALTOVA, 2009). 3.1.3.2 Suporte O site oficial da ferramenta oferece cursos, FAQ, fóruns e suporte para outras ferramentas desenvolvidas pela empresa, no entanto SemanticWorks é uma das ferramentas que possuem menos documentação e suporte pelo site. Contudo, a documentação disponível no help da ferramenta é bastante abrangente e fácil de utilizar. 3.1.3.3 Recursos SemanticWorks não oferece suporte a muitas linguagens e padrões sendo mais focada em RDF, RDF Schema e OWL em suas três versões, OWL-Lite, OWL-DL e OWLFull (ALTOVA, 2009). SemanticWorks tem uma interface limpa, ferramentas e pallets que são usadas em modo OWL Full não aparecem no modo de edição de RDF, a interface esconde ou exibe o recurso dependendo do nível de semântica ou linguagem que o usuário pretende utilizar . A interface gráfica de SemanticWorks é semelhante aos programas comuns a desenvolvedores, como DreamWeaver, facilitando a rápida ambientação. As triplas RDF 55 podem ser visualizadas tanto em modo texto, em código XML, como em modo gráfico seguindo um modelo semelhante á mapas conceituais, podendo ser editadas graficamente. Existe também um tipo de validador que previne eventuais erros e exibe avisos. A ferramenta aceita plug-ins e extensões (ALTOVA, 2009). A Figura 34 apresenta a tela principal do SemanticWorks. Figura 34 - Interface do SemanticWorks 3.2 Outras Ferramentas de Edição Semântica Nesta seção serão apresentados os resumos descritivos de outras ferramentas de edição semântica. 56 3.2.1 WebODE Ambiente para produção de ontologias semelhante à Protégé. É um ambiente de trabalho integrado que facilita o desenvolvimento e raciocínio sobre ontologias e exporta arquivos em diversos formatos (JACINTO, 2006). 3.2.2 OntoEditor OntoEditor é uma ferramenta web para edição de ontologias, tem uma interface simples baseada no paradigma de navegação na web e permite a criação de ontologias a partir de arquivos de texto tabulados representando a estrutura das ontologias (YOUN, 2006). 3.2.3 RDFedt Desenvolvido por Jan Winker, RDFedt é uma ferramenta que tem semelhanças com a proposta deste trabalho por ter um foco na produção simples e rápida de triplas RDF além permitir a edição de RSS 1.0. RDFedt possui um modo gráfico que exibe estruturas em forma de árvore, possui um recurso que possibilita transformar texto identado em códigos RDF. Suporta formatação em Extensible Style sheet Language for Transformation (XSLT) e geração automática de RDF baseada em lista HTML (YOUN, 2006). 3.2.4 WebOnto Desenvolvido pelo intituto Knowledge Media Institute da Open University na Inglaterra. Suporta a criação e navegação colaborativa em Open Configuration and 57 Management Layer (OCML). É de utilização simples e suporta ontologias em larga escala. Entre as principais funcionalidades estão (YOUN, 2006): a) gerenciamento WISEWIG (What You See Is What You Get); b) geração de formulários para edição de instâncias baseados nas definições das classes; c) inspeção dos elementos em árvore; d) depuração de consistência; e) suporte a edição colaborativa. 3.2.5 KAON KAON (the KArlsruhe ONtology and semantic web tool suíte) é uma suíte de ferramentas para Web Semântica baseada na arquitetura multi-camadas de (BERNERS-LEE, 2001. É uma ferramenta para edição de DAML+OIL e Frame-Logic, mas prevê atualização para OWL (JACINTO, 2006). Foi desenvolvida pelo centro de pesquisa AIFB da universidade alemã de Karlsruhe. Possui dois níveis de inteface sendo OiModeler para edição de DAML+OIL e KAON PORTAL para edição de Frame-Logic (YOUN, 2006). 3.2.6 IkkeWiki Desenvolvido pelo Salzburg Research Forschungsgesellschaft, teve sua versão estável publicada em 2008 (SCHAFFERT, 2008). É um ambiente colaborativo semelhante a Wikipédia para geração de ontologias na web (WIKIPÉDIA, 2009). 58 3.2.7 OntoWiki OntoWiki é uma plataforma de colaboração para Web Semântica desenvolvida em Hipertext Preprocessor (PHP) pela Universität Leipzig e tem uma grande comunidade atuante, é de código aberto e funciona na web, permite visualização em mapas conceituais (WIKIPÉDIA, 2009). A ferramenta pode ser acessada em versão demo e está disponível para download na página do projeto hospedada no Google Project Hosting (ONTOWIKI, 2009). 3.3 Considerações Finais Entre as limitações encontradas nas ferramentas analisadas destacam-se as correntes em interoperabilidade e colaboração, todavia novas ferramentas podem ser desenvolvidas suportando mais recursos e propondo soluções às limitações das principais ferramentas (YOUN, 2006). Tradicionalmente as descrições para Web Semântica são desenvolvidas por dois profissionais: sendo um de TI, e outro, especialista na área de conhecimento que a ontologia será desenvolvida (YOUN, 2006). Seria adequado que ontologias fossem enriquecidas pelo desenvolvimento colaborativo, pelo menos em suas primeiras fases de desenvolvimento (BRAUN, 2007). Este capítulo apresentou três das principais ferramentas de edição de conteúdo semântico para web destacando suas principais características e possíveis pontos a serem desenvolvidos. No próximo capítulo é apresentado o desenvolvimento da ferramenta de edição semântica Semanticpad, proposta desse trabalho. 59 4 SEMANTICPAD: UMA FERRAMENTA DE EDIÇÃO WEB SEMÂNTICA PARA LEIGOS Este capítulo apresenta o processo de modelagem e desenvolvimento do protótipo da ferramenta de edição semântica a qual se propõe este trabalho, a partir de agora denominada Semanticpad. O capítulo está organizado como segue: a Seção 4.1 apresenta a modelagem da ferramenta considerando modelo da interface gráfica, modelo de colaboração e modelo de aplicação web, a Seção 4.2 apresenta o protótipo da ferramenta Semanticpad. 4.1 Modelagem As subseções a seguir apresentam os modelos utilizados para o desenvolvimento do Semanticpad. A primeira subseção aborda a interface gráfica baseada no modelo de mapas conceituais, a segunda subseção apresenta a modelagem da ferramenta com foco na colaboração, e a terceira, a modelagem da aplicação web seguindo a arquitetura web de gadgets e principais bibliotecas adotadas. 4.1.1 Modelo de Interface Gráfica A proposta para o desenvolvimento do Semanticpad é fazer uma ferramenta que atenda aos seguintes requisitos não funcionais: a) simplicidade: deve ser simples de um modo geral, carecendo de pouca ou nenhuma documentação; b) usabilidade: deve possibilitar fácil ambientação e utilização dedutiva, principalmente para usuários não profissionais de TI; c) agilidade: deve permitir a rápida produção, edição e manipulação de RDF. 60 Para atender estes requisitos, foram pesquisados modelos que facilitem às pessoas descreverem seus conhecimentos. A seguir será destacado o modelo de representação de conhecimento baseado em mapas conceituais (NOVAK, 2006). 4.1.1.1 Mapas Conceituais O conceito de mapa conceitual foi desenvolvido por NOVAK,2006, foi inspirado na teoria de aprendizagem significativa de (AUSUBEL, 1968). Trata-se de um eficaz modelo para estruturar o conhecimento (TAVARES, 2007) Segundo NOVAK, 2006, o mapa conceitual é uma ferramenta que representa o conhecimento de modo gráfico. Mapas conceituais também são chamados de redes semânticas e representam relações entre conceitos de forma espacial e visual (AMORETTI, 2000). Um mapa conceitual é um gráfico cujos vértices representam conceitos, e as arestas que fazem a ligação, representam as relações entre eles (AMORETTI, 2000). Estas redes semânticas basicamente ilustram as relações (arestas) entre as palavras (vértices) que usamos para representar conceitos (MOREIRA, 2009). A Figura 35 apresenta um exemplo de mapa conceitual que ilustra a modelagem do Semanticpad. Um mapa conceitual é uma representação visual de um conhecimento, um conjunto de conceitos ligados por uma série de proposições que podem ser usado para partilhar significados (TAVARES, 2007). Nas subseções a seguir veremos os benefícios deste modelo na escrita e leitura de representações de conhecimento. 4.1.1.1.1 Escrita de Mapas Conceituais Os conceitos na mente humana são formados por conjuntos de características comuns pertencentes a um objeto ou entidade (TAVARES, 2007). Nos mapas conceituais, os conceitos são equivalentes aos recursos na notação RDF. Trata-se de uma informação que pode ser editada e reutilizada em outras declarações. 61 Figura 35 - Exemplo de mapa conceitual As informações da mente humana partem de níveis mais abstratos para os mais específicos. É mais fácil para seres humanos descreverem particularidades de conceitos baseando-se em modelos pré-existentes em níveis mais abstratos. Assim, os seres humanos organizam a informação de forma hierárquica (AUSUBEL, 1968). Uma cadeira pode agregar vários atributos que a diferencie de outras cadeiras, mas sempre agregara um conjunto de propriedades comuns a todas as cadeiras, que a define como pertencente a um conceito mais abstrato de cadeira (TAVARES, 2007). Este conjunto de propriedades distingue o objeto como pertencente a uma classe que se destaca dentre outras (AMORETTI, 2000). Ao construir um mapa conceitual, são pessoa organizados de forma hierárquica conceitos já conhecidos. Os mapas conceituais são organizados iniciando em um conceito central e se estendendo progressivamente em níveis mais específicos (NOVAK, 2006). O indivíduo categoriza os conceitos de forma espontânea, ilustrando graficamente a estrutura hierárquica da informação existente em sua mente, o que garante uma liberdade e facilidade da escrita e adaptação ao modelo. Segundo AMORETTI, 2000, não existe mapa conceitual certo ou errado, tamanho padrão ou número fixo de relações existentes. 62 4.1.1.1.2 Leitura de Mapas Conceituais A memória humana assimila mais facilmente a informação representada em mapa conceitual porque ele simula aspectos comuns da cognição humana. É uma representação aberta e flexível de conhecimento, pois a descrição dos conceitos pode ser acrescida cada vez mais com novas relações e propriedades (AMORETTI, 2000). Da mesma forma, os mapas conceituais facilitam a compreensão das informações ilustradas de forma mais efetiva que os textos, permitindo que sejam feitas inferências mais complexas sobre a informação (VEKIRI, 2002). Isso porque a apresentação gráfica de informações complexas é menos exigente no processo cognitivo de que informações textuais e verbais (TAVARES, 2007). O conhecimento apresentado de forma visual requer menos transformações cognitivas, não sofrendo as limitações da memória de curto prazo como um texto (VEKIRI, 2002). 4.1.1.1.3 Tipos de Mapas Conceituais Abaixo serão apresentadas algumas possibilidades de representação de conhecimento baseadas em mapas conceituais ilustrando conceitos sobre o Semanticpad: a) mapa conceitual tipo aranha: O conceito principal é colocado no centro e as relações vão se propagando para as extremidades. A Figura 36 mostra um exemplo de mapa conceitual tipo aranha (TAVARES, 2007); 63 Figura 36 - Mapa conceitual tipo aranha b) mapa conceitual tipo sistema: Baseia-se no modelo de um fluxograma com entrada e saída. A Figura 37 exibe um exemplo de mapa conceitual tipo sistema; Figura 37 - Mapa conceitual tipo sistema c) mapa conceitual hierárquico: Os conceitos vão sendo depositados dos mais generalizados para os mais específicos, A Figura 38 mostra um exemplo de mapa conceitual tipo hierárquico. 64 Figura 38 - Mapa conceitual tipo hierárquico 4.1.1.1.4 Interface Baseada em Mapas Conceituais A interface gráfica da ferramenta de edição semântica será baseada no modelo de mapas conceituais. O editor deve possibilitar de forma simples, com ações do mouse, a produção de mapas conceituais utilizando recursos de arrastar e soltar. Abaixo serão apresentados alguns tópicos que, apoiados nas seções anteriores, demonstram este modelo como adequado para atender os requisitos não funcionais apontados para interface gráfica: a) facilidade e agilidade de produção e edição; b) facilidade e agilidade de compreensão; c) fácil adaptação ao uso do modelo; d) trata-se de um modelo livre para edição que não restringe implementação do desenvolvedor a padrões e modelos pré-definidos; e) compatível com os modelos formais de representação RDF; f) adequado para a produção incremental de representação de conhecimento (AUSUBEL, 1968); g) adequado para a interação colaborativa à distância (AMORETTI, 2000). A interface foi produzida de forma que possibilite a fácil produção e edição de mapas conceituais. A aplicação será responsável por transcrever os mapas em códigos RDF/XML. Desta forma, usuários não familiarizados com tecnologias e linguagens como 65 XML ou RDF estarão aptos a fazer as descrições de suas informações em triplas válidas para aplicações Web Semânticas. Foi apresentado o modelo adotado na interface gráfica. A próxima subseção ilustrará o modelo de colaboração proposto para a ferramenta. 4.1.2 Modelo de Colaboração O Semanticpad permite descrições incrementais de conhecimento baseadas em colaboração. As descrições RDF/XML poderão ser armazenadas e enriquecidas por outros usuários de maneira colaborativa. Para isto, será proposto um modelo em níveis de colaboração sobre a interface baseada em mapas conceituais. As subseções a seguir mostrarão mais detalhes deste modelo. 4.1.2.1 Colaboração na Web 2.0 A Web 2.0 vê o usuário como o centro da web. A ascensão de empresas que utilizam o usuário como fonte de conteúdo e colaboração nos últimos anos, evidenciou o recurso de colaboração como vantagem estratégica. A participação do usuário ganhou mais relevância competitiva (O’REILLY, 2005). Colaboração, inteligência coletiva, interação e interatividade se tornaram palavras de ordem na Web 2.0 (O’REILLY, 2005). Segundo PIAGET, 2002, e VYGOTSKY, 1978, a colaboração traz mais beneficio, com a interação interpessoal do que no contexto de concorrência. Resultados como WIKIPÉDIA, 2009, FLICKR, 2009, DELICIOUS, 2009, TWITTER, 2009, e as redes sociais como ORKUT, 2009, MYSPACE, 2009, ou FACEBOOK, 2009, são exemplos de grandes instituições que se apoiaram na colaboração de usuários da internet para atingir resultados surpreendentes. No contexto da Web Semântica a colaboração já tem sido vista como atraente recurso na descrição de conhecimentos como será mostrado na próxima seção. 66 4.1.2.2 Colaboração na Representação de Conhecimento Ferramentas de edição semântica, como Protégé e OntoEdit, são comumente utilizadas para produção de ontologias em desktop, não aproveitando os recursos de colaboração de outros usuários. A maior parte das ontologias é produzida individualmente e não é submetida ao enriquecimento comunitário (BRAUN, 2007). Um importante princípio da aprendizagem significativa (AUSUBEL, 1968) é que a representação de conhecimento também deve explorar similaridades e discrepância entre idéias, e isto só pode ocorrer de forma relevante com interação entre indivíduos. Segundo BRAUN, 2007, sistemas colaborativos consideram aspectos indispensáveis as fases iniciais da produção de uma ontologia, principalmente quando é gerada a partir de comunidades que se relacionam com os conceitos descritos nesta ontologia. Algumas ferramentas como MediaWiki, OntoWiki e IkeWiki já utilizam do recurso de colaboração para produção de ontologias (BRAUN, 2007). Mapas conceituais ilustram de forma autônoma um conhecimento, mas não restringem a colaboração. Na próxima subseção serão apresentadas as vantagens de mapas conceituais colaborativos. 4.1.2.3 Colaboração em Mapas Conceituais Dois especialistas em determinado assunto provavelmente ilustrariam seus conceitos de forma diferenciada (TAVARES, 2007). Mesmo conceitos semelhantes apresentam diferenças quando representados em mapas conceituais, tornando as particularidades da informação mais perceptíveis (AMORETTI, 2000). Mapas conceituais colaborativos podem resolver alguns problemas da descrição de conhecimento (AUSUBEL, 1980): a) mais de um vértice representando o mesmo conceito; b) um único vértice representando mais de um conceito; c) diferentes características de conceitos aparentemente semelhantes. Segundo TAVARES, 2007, existem características específicas na maneira que cada um constrói um conceito. A autonomia de um mapa conceitual deve ser respeitada para 67 que não haja conflitos nas descrições de um determinado conceito criado por um autor. Porém para possibilitar a colaboração, a ferramenta precisa de mecanismos que permitam a inferência de terceiros sobre os mapas conceituais. Nas próximas subseções serão apresentados os recursos colaborativos previstos para a produção do protótipo para garantir a autonomia e colaboração. 4.1.2.4 Modelo em Níveis de Confiabilidade Este trabalho propõe um mecanismo baseado em níveis de confiabilidade. Nesse modelo o autor define o que pode ser alterado ou extensível colaborativamente dependendo do quanto confia em suas declarações e descrições. Um mapa conceitual pode ser colaborativo ou individual, e cada conceito pode ser aberto ou fechado em sua descrição e forte ou fraco em cada declaração. Para facilitar o entendimento, faz-se adequado definir declaração e descrição no contexto deste modelo: a) declaração: uma declaração é entendida como uma tripa, uma afirmação descritiva contendo um sujeito, um predicado e um objeto; b) descrição: conjunto de declarações ligadas a um conceito, o número de afirmações que fornecem uma descrição mais ou menos detalhada sobre determinado conceito. 4.1.2.4.1 Declaração Fraca e Forte Mapas conceituais gerados de forma colaborativa permitem a descrição de informações, não apenas compartilhadas, mas que são alteradas pelas inferências baseadas nas informações de outros indivíduos, gerando uma descrição de conhecimento coletivo. É um recurso especialmente adequado para interação à distância (AMORETTI, 2000). A ferramenta garantirá a autonomia dos mapas conceituais permitindo que conceitos definidos pelo autor não sejam apagados ou reescritos por usuários, porém um autor ao produzir a representação de conhecimento pode eventualmente se ver em dúvida sobre 68 determinada declaração. Para isso a ferramenta proverá um recurso de confiabilidade na declaração podendo definir uma declaração forte ou fraca: a) declaração forte: uma declaração forte consiste num conceito que não pode ser apagado ou reescrito por terceiros em mapas conceituais compartilhados. Apenas o autor pode re-nomear ou apagar o conceito definido como forte. O autor ao definir um conceito como forte assume que tem certeza que a declaração é verdadeira e não precisará de opiniões externas sobre a sua declaração. b) declaração fraca: Uma declaração fraca pode ser editada ou apagada por terceiros que compartilham o mapa conceitual. O autor ao definir um conceito como fraco assume que a declaração é duvidosa ou não é precisa. Declarações feitas colaborativamente em conceitos abertos serão sempre fracas, e apenas o autor do mapa conceitual pode definir um conceito como forte e inalterável. 4.1.2.4.2 Descrição Aberta e Fechada Mapas conceituais podem ser produzidos colaborativamente. Segundo AMORETTI, 2000, a autonomia e colaboração durante a produção de mapas conceituais não se anulam, a autonomia enriquece o mapa conceitual feito por um grupo, pois integra conhecimentos de todos. Uma característica colaborativa prevista para o Semanticpad é permitir que outros usuários ampliem a rede semântica de outrem por meio de extensões dos mapas conceituais. Um conceito pode ser descrito ligando suas propriedades a outros conceitos ou literais. O autor do mapa pode definir se o conceito já está devidamente descrito ou se sua descrição pode ser enriquecida por outro usuário. Para isto, a colaboração descritiva é definida em cada conceito, e o autor decide se a descrição deste conceito é aberta ou fechada para outras declarações. a) descrição fechada: um conceito definido como fechado não é extensível a outras declarações, apenas o autor do mapa pode fazer outras ligações a partir deste conceito. Nesse contexto, o autor assume que o conceito já foi suficientemente descrito naquele mapa conceitual, contudo, qualquer um que 69 compartilhe o documento poderá descrever um conceito fechado em outro documento de sua própria autoria, e a ligação das descrições de ambos os documentos serão sugeridas para o autor do primeiro mapa. b) descrição aberta: quando o autor define um conceito como aberto, ele assume que o conceito em questão não foi descrito o suficiente, e aceita a descrição de outros usuários para esse conceito. Outros usuários que compartilhem o documento podem fazer outras ligações para descrever melhor esse conceito, contudo qualquer declaração feita colaborativamente, automaticamente será definida como conceito fraco. 4.1.2.4.3 Mapas Conceituais Individuais e Colaborativos A definição dos conceitos e suas relações num mapa conceitual dependem muito da pessoa que o descreve, pois a formulação dos conceitos é fortemente influenciada pelo que o autor já conhece (AUSUBEL, 1986). Assim, é adequado que o usuário tenha a opção de definir seu mapa como individual ou colaborativo para garantir a autonomia das idéias as quais se baseia a descrição. a) mapa conceitual individual: não permite a inferência de terceiros sobre seu conteúdo, todos os conceitos serão fechados e fortes; contudo, isso não significa que seu conteúdo seja privado ou exclusivo, pois estará disponível para leitura. Como a proposta da ferramenta é facilitar a produção semântica de conteúdo gerando triplas RDF/XML disponíveis para toda a comunidade, os mapas conceituais individuais podem ser compartilhados para leitura e seu código fonte em RDF/XML pode ser disponibilizado para qualquer um; a única característica de individual é que mapas conceituais individuais não poderão ser editados colaborativamente. b) mapa conceitual colaborativo: permite a atuação de terceiros na produção do conteúdo. Qualquer usuário com qual o mapa esteja compartilhado poderá alterar suas declarações ou descrições. No entanto um mapa conceitual colaborativo pode ser parcialmente alterável, isto ocorre porque a colaboração é definida a nível de conceito. Um usuário poderá disponibilizar a edição colaborativa em um conceito e não permitir a edição colaborativa em outro. 70 Um mapa conceitual que disponibilize a edição ou extensão de um único conceito já pode ser considerado colaborativo. 4.1.2.4.4 Ligação entre Mapas e Incremento de Vocabulários Predicados poderão ser definidos como fracos ou fortes e abertos ou fechados da mesma forma que os conceitos. A ferramenta contará com uma opção para adicionar novos vocabulários ao mapa conceitual. Vocabulários e termos externos sempre terão preferência sobre os termos criados pelo autor, a ferramenta sempre recomendará a substituição de conceitos próprios por conceitos provenientes de vocabulários externos. Conceitos que possuam um qname “base”, o padrão das ferramentas para conceitos criados pelo autor do mapa, estarão disponíveis para assumir outros qnames que apontem para namespaces com o mesmo conceito já descrito em outros vocabulários externos. Isso visa contribuir com a ligação das bases semânticas prevista por BERNERSLEE, 2001, como resultado que gradualmente permitirá uma web descrita em sua maior parte com um conhecimento unificado. 4.1.2.4.5 Interface Colaborativa A interface da ferramenta deverá ilustrar de maneira visual os níveis de colaboração. A Figura 39 mostra um exemplo da aparência de um mapa conceitual com os recursos visuais ilustrando os níveis de colaboração. 71 Figura 39 - Interface colaborativa São propostas as seguintes representações gráficas para os conceitos: a) Conceito Fechado: conceitos fechados apresentarão uma borda sólida e contínua para demonstrar a completude da descrição; b) Conceito Aberto: conceitos abertos apresentarão uma borda pontilhada para demonstrar que podem ser extensíveis; c) Conceito Forte: conceitos fortes deverão ser azuis para demonstrar que estão bem definidos; d) Conceito Fraco: conceitos fracos deverão ser vermelhos destacando que a declaração pode estar incorreta ou imprecisa. Assim como nos padrões RDF os quadrados representarão as literais e as elipses representarão os recursos (conceitos) no mapa conceitual. Literais nunca poderão ser definidas como abertas porque extensões de literais não são permitidas pelos padrões da notação RDF, porém essas literais podem ser definidas como literais fracas, como visto na Figura 39 acima, significando que poderão ser reeditadas. A Figura 40 mostra um resumo do modelo colaborativo em mapa conceitual: 72 Figura 40 - Modelo de colaboração Foi apresentado o modelo de colaboração, a próxima subseção apresentará o modelo da aplicação. 4.1.3 Modelo de Aplicação Web Esta seção apresenta o modelo de aplicação web para o desenvolvimento da ferramenta de edição de RDF. Nas próximas subseções serão apresentadas as principais características do modelo de aplicação utilizado no desenvolvimento do protótipo. 73 4.1.3.1 Gadgets A proposta da modelagem da ferramenta Semanticpad visa prover um serviço de edição de RDF reutilizável em qualquer lugar da web sem necessidade de modificação. Uma forma simples e adequada de atender este requisito é disponibilizá-la como um gadget (ou widget) que pode ser reutilizados em qualquer aplicação, página na web ou em outros gadgets (GOOGLE-CODES, 2009). Gadgets (ou widgets) geralmente são aplicações simples que atendem a necessidades específicas e bem definidas como apresentação de notícias, música, agenda, álbum de fotos, jogos, bloco de notas, calculadora (MICROSOFT, 2009), mas também podem ser aplicativos complexos interagindo com vários outros gadgets e utilizando recursos bem mais elaborados (GOOGLE-CODES, 2009). Gadgets da Google (www.google.com) na web são aplicações geralmente baseadas em XML, HTML, CSS e Javascript, são independentes de plataforma ou aplicação (WIKIPÉDIA, 2009). Por meio de tags e bibliotecas, funcionam em lugares diferentes com extensões da Application Programming Interface (API) principal dos gadgets (GOOGLEGADGETS, 2009). 4.1.3.1.1 Características dos Gadgets Gadgets são mini-aplicações que podem ser desenvolvidas por amadores ou por profissionais, são implementadas em uma Application Programming Interface (API) como a Gadgets do Google e são armazenados num repositório de gadgets. Gadgets podem ser inseridos, a partir do repositório, em qualquer lugar da web, geralmente por meio de iframes (janelas) individuais dentro de outra página chamada de página recipiente (GOOGLECODE, 2009). Qualquer site ou aplicativo que execute gadgets é chamado de recipiente (GOOGLE-GADGETS, 2009), podem ser sites comerciais, aplicações web, blogs ou perfis em redes sociais. Um recipiente pode definir o layout que o gadget será exibido em sua página e também outras funcionalidades (GOOGLE-CODES, 2009). 74 Além de páginas, gadgets podem ser inseridos em vários outros locais como barras laterais na área de trabalho, desktops on-line como o iGoogle ou Dashboard do Mac (GOOGLE-DESKTOP, 2009). A Figura 41 mostra um exemplo de gadget inserido em dois contextos: Figura 41 - Gadget inserido em páginas recipientes Para inserir um gadget em uma página na web, a página recipiente deve apenas recortar uma linha de código fonte que chama o gadget do repositório para sua página no local onde este deverá aparecer. Esta linha de código é fornecida automaticamente pelo provedor de gadgets. A Figura 42 mostra um exemplo de linha de código que insere um gadget: Figura 42 - Linha de código para inserção de um gadget Segundo o GOOGLE-GADGETS, 2009, não existem gadgets privados, todos os gadgets são de domínio público, seja para uso ou reaproveitamento de código fonte. A 75 visibilidade pública do código fonte dos gadgets permite que a lógica seja reaproveitada para a produção de outros gadgets similares. Gadgets podem ser personalizáveis e também permitem sistemas de alimentação de conteúdo como Really Simple Syndication (RSS). Gadgets também podem ser compartilhados e editados de forma colaborativa (GOOGLE-GADGETS, 2009). Os gadgets usam codificação UTF-8 e possuem um sistema que facilita a internacionalização, adaptação a idiomas e configurações locais (GOOGLE-CODE, 2009). O Google Gadget (http://www.google.com/webmasters/gadgets/) fornece uma API e diversos outros recursos gratuitos para a produção de gadgets. Boa parte desses recursos dará suporte ao desenvolvimento do protótipo. Alguns desses recursos são apresentados na próxima seção. 4.1.3.1.2 Recursos do Google Gadgets O Google Gadgets disponibiliza recursos para que qualquer desenvolvedor possa criar e disponibilizar seus gadgets. Esses gadgets podem ser publicados no diretório de gadgets do Google (http://www.google.com/ig/directory?synd=open) e passa a estar disponível para toda comunidade web. O Google Gadgets também fornece uma API que provê uma série de recursos e um editor simples para o desenvolvimento de gadgets (GOOGLE-GADGETS, 2009). O Google Code (http://code.google.com/intl/en/) também oferece um repositório no Google Project Hosting (http://code.google.com/intl/en/projecthosting/) que fornece um domínio e uma hospedagem gratuita para projetos, ainda oferece uma interface de gerenciamento com recursos de controle de versão pelo TurtoiseSVN (GOOGLE-CODE, 2009). A Figura 43 ilustra a interface de gerenciamento do desenvolvimento da Semanticpad fornecida pelo Google Project Hosting: 76 Figura 43 - Interface de gerenciamento do Google Project Hosting Os gadgets do Google podem ser testados na página do (IGOOGLE, 2009), um desktop on-line disponibilizado gratuitamente, ou no (GOOGLE-DESKTOP, 2009), uma barra lateral instalada na área de trabalho que agrega e gerencia gadgets off-line (GOOGLEGADGETS, 2009). Qualquer pessoa pode adicionar um gadget disponibilizado no diretório de gadgets do Google em seu iGoogle, Google-Desktop ou em qualquer outro lugar da web (GOOGLE-GADGETS, 2009). Estes gadgets são suportados pela API Gadgets desenvolvida pela Google. Esta API é responsável por responder as requisições de gadgets e prover suporte a várias outras funcionalidades que veremos com mais detalhes na próxima seção. 4.1.3.1.3 API Gadgets A API Gadgets do Google oferece vários recursos para fornecer suporte aos gadgets. Abaixo estão listados alguns dos recursos fornecidos pela API Gadgets (GOOGLECODE, 2009): a) permite que gadgets obtenham recursos de outras URL’s, deixando-os extensíveis a diversas outras tecnologias como Flash ou Silverlight; b) fácil implementação de suporte para vários idiomas e localidades; c) conjunto amplo de APIs sociais (no caso do OpenSocial); 77 d) permite que os gadgets sejam redimensionáveis em altura tanto em nível de recipiente como em nível de usuário; e) permite uma biblioteca de componentes de interface com várias funcionalidades como navegação por guias; f) configuração dos gadgets por preferências dos usuários; g) internacionalização de gadgets por meio de mapeamento de mensagens em qualquer idioma; h) permite que um gadget seja exibido de forma diferente dependendo do contexto e localidade no qual ele é renderizado por meio de Seções de conteúdo múltiplo. A maior parte destes recursos listados será utilizada no desenvolvimento do protótipo para garantir sua disponibilidade da ferramenta. A API de gadgets do Google será o principal suporte ao Semanticpad. 4.1.3.1.4 OpenSocial. O OpenSocial é uma iniciativa para desenvolver aplicativos que tem principalmente a atuação em redes sociais. Foi implementado com a tecnologia de gadgets. Tem características especiais para interações nas redes sociais e atualização de RSS (GOOGLE-CODE, 2009). A proposta do OpenSocial é que as atividades sejam executadas no perfil do usuário em uma rede social, e tem a vantagem de possibilitar recursos de interação com os demais usuários da rede (WIKIPÉDIA, 2009). OpenSocial é um conjunto de API’s mantida por vários sites que permitem que qualquer desenvolvedor crie gadgets para rodar em redes sociais. Dentre as redes que fornecem suporte as API’s do OpenSocial estão: HI5, 2009, MYSPACE, 2009, ORKUT, 2009, NETLOG, 2009, SONICO, 2009, FRIENDSTER, 2009, NING, 2009 e YAHOO, 2009, entre outras (JQUERYUI, 2009). 78 4.1.3.2 Outras Bibliotecas e Recursos Abaixo serão apresentadas as principais bibliotecas utilizadas na implementação do Semanticpad. 4.1.3.2.1 JQuery A principal linguagem de implementação de gadgets é o Javascript. JQuery é um framework que facilita e enriquece o desenvolvimento para web em tecnologias baseadas em Javascript e Asynchronous Javascript and XML (AJAX) (JQUERY, 2009), JQuery é uma biblioteca Javascript que habilita uma série de recursos para efeitos visuais e animações, possui configurações para interagir com as API’s de gadgets (JQUERYUI, 2009). JQuery é uma biblioteca Javascript desenvolvida por RESIG, 2006, é disponibilizado pela licença GNU General Public License (GPL) de software livre (SAMMY-SILVA, 2008). O Principal Foco do JQuery é diminuir e simplificar o desenvolvimento com Javascript (RESIG, 2006) Dentre as melhorias que o JQuery se propõe em relação ao desenvolvimento Javascript estão (WIKIPÉDIA, 2009): a) resolução da incompatibilidade entre os navegadores; b) redução de código; c) reusabilidade do código por meio de plug-ins; d) facilitar implementação com AJAX e DOM; e) implementação segura de recursos de CSS. JQuery facilita e agiliza o desenvolvimento além de prover novos recursos de apresentação. JQuery foi a principal biblioteca utilizada no desenvolvimento do protótipo do Semanticpad. 79 4.1.3.2.2 JQueryUI JQuery User Interface (JQueryUI) é um complemento da biblioteca JQuery especialmente adequado para produção de Grafic User Interface (GUI) para aplicações web. Foi especialmente implementado para resolver o problema de incompatibilidade entre navegadores (JQUERY, 2009). JQueryUI oferece uma galeria de temas e componentes, widgets ou gadgets, aplicáveis à interface; possui recursos especiais que adicionam a biblioteca JQuery comportamentos como arrastar e soltar, selecionar, entre outros; também possui um framework CSS com várias possibilidades de formatação adicionais. JQueryUI é especialmente adequado para a produção de gadgets e widgets (JQUERYUI, 2009). JQueryUI é suportado pelos seguintes navegadores (JQUERYUI, 2009): a) Internet Explorer 6.0 ou superior; b) Mozilla FireFox 2 ou superior; c) Safari 3.1 ou superior; d) Opera 9.0 ou superior; e) Google Chrome 1.0 ou superior. JQueryUI foi utilizado para a produção da interface gráfica da ferramenta porque oferece recursos que facilitarão a interação do usuário com a interface na produção dos mapas conceituais. 4.1.3.2.3 JSDraw2D A JSDRAW2D, 2009, é uma biblioteca gratuita de desenho gráfico em Javascript. Ela foi aplicada nas funcionalidades gráficas e visuais da tela de edição de mapas conceituais da ferramenta Semanticpad. A biblioteca JSDRAW2D, 2009, possui vários recursos de manipulação de imagens vetoriais que implementaram vários requisitos na interface gráfica da ferramenta Semanticpad. 80 4.1.4 Visão Geral da Modelagem da Ferramenta Esta seção apresentou os modelos adotados para implementação do Semanticpad considerando modelo de interface baseado em mapas conceituais; modelo de colaboração baseado em Níveis de Confiabilidade e modelo de aplicação baseado na arquitetura de gadgets fornecida pela API de Gadgets do Google. A seção a seguir mostrará o protótipo da Semanticpad desenvolvido neste trabalho. 4.2 Protótipo A seguir serão apresentados as principais telas, funções e recursos da ferramenta Semanticpad. 4.2.1 Principais Telas da Ferramenta A interface do Semanticpad conta com três abas superiores que alternam entre as três principais telas que a ferramenta contém, estas telas são Mapa Descritivo, Gerar RDF e Opções. Segue abaixo a descrição de cada tela. a) tela Mapa Descritivo: exibe um painel para a edição dos mapas conceituais. É a tela onde o usuário passará a maior parte do tempo enquanto usa a ferramenta. Essa tela utiliza recursos gráficos e visuais para prover um ambiente de edição de mapas conceituais com simplicidade principalmente para o usuário leigo. A Figura 44 exibe a tela de edição de mapa descritivo do Semanticpad: 81 Figura 44 – Semanticpad em tela de edição Mapa Descritivo b) tela Gerar RDF: tem uma funcionalidade especifica e bem definida, mostrar o código RDF/XML gerado a partir do mapa conceitual. A ferramenta transcreve os mapas conceituais em tempo real e este pode ser visualizado a qualquer momento em que o usuário clique na guia. Esta tela também disponibiliza edição diretamente em modo texto caso o usuário prefira fazer alguns ajustes no código gerado. A Figura 45 mostra a tela com um mapa RDF/XML transcrito pela ferramenta: 82 Figura 45 - Semanticpad em tela Gerar RDF c) tela Opções: exibe algumas configurações disponíveis como converter o mapa inteiro para determinado nível de confiabilidade; nela também é possível adicionar, editar ou remover novos vocabulários e relacioná-los com seus respectivos qnames, da mesma forma permite a manipulação de XML Entities. Por padrão todo conceito gerado pelo usuário esta relacionado a um URI padrão apontado pelo qname “base”. A Figura 46 exibe a tela Opções: 83 Figura 46 - Semanticpad em tela Opções 4.2.2 Interface de Edição de Mapas Conceituais A interface de edição de mapas conceituais, exibida pela tela Mapa Descritivo, é a principal tela da ferramenta. É por meio dessa tela que os usuários descreverão qualquer tipo de informação. Conceitos, predicados e literais são expressos segundo suas formas. A Figura 47 mostra como cada elemento é ilustrado. Figura 47 – Ilustração de cada tipo de elemento de uma tripla na tela Mapa Descritivo 84 A tela inicial já apresenta dois conceitos iniciais e um predicado com um valor padrão, a partir do momento que o usuário digite algo em qualquer um destes conceitos, ele já passa a pertencer ao namespace “base” e sua descrição já pode ser vista na tela Gerar RDF. A Figura 48 exibe o mapa inicial pronto para edição: Figura 48 – Semanticpad em tela Mapa Descritivo inicial A partir desta declaração inicial, novos conceitos podem ser criados, excluídos e relacionados a partir dos conceitos iniciais para que o mapa comece a adquirir significado. Tais funções são disponibilizadas por pequenos botões que aparecem apenas quando o usuário passa o mouse por um conceito passível de edição, exclusão ou configuração segundo a configuração colaborativa. A Figura 49 ilustra o menu de opções de edição para um conceito: (a) (b) (c) (d) Figura 49 - Botões de edição de conceito O menu de opções possui quatro botões que podem ou não aparecer dependendo da configuração colaborativa do conceito, abaixo serão descritos as funcionalidades de cada um dos quatro botões: a) Botão Adicionar (+): estende um novo conceito e predicado a partir do conceito clicado; b) Botão Remover (-): exclui o conceito clicado; c) Botão Menu (>): exibe a configuração de propriedades mais técnicas do conceito como: exibir como atributo XML, como blank-node ou como literal. Também exibe uma opção para alterar ligação que cria uma relação com o próximo conceito clicado sendo o segundo definido como novo conceito pai do primeiro. Esta alteração só pode ser feita entre predicados e sujeitos, caso tente-se mudar uma ligação de um sujeito para um sujeito ou de um predicado 85 para um predicado, uma mensagem de erro é exibida. Além disso, esse menu também mostra as configurações colaborativas do conceito, essas configurações serão descritas mais a frente na Subseção 4.2.4. A Figura 50 mostra o menu em cascata exibido pelo Botão Menu. d) Botão Conjunto (e): exibe opções para definir coleções RDF de uma forma mais simples para um usuário leigo. Será explicado com mais detalhes na próxima subseção. Figura 50 - Menu de configuração de conceito 4.2.3 Interface de Edição de Coleções RDF Sem que o usuários conheça as coleções “rdf:Alt” (para coleções com uma alternativa), “rdf:Seq” (para coleções com seqüência definida) e “rdf:Bag” (para coleções sem seqüência definida) previstas na linguagem RDF, ele pode precisar do recurso de coleções. É proposto um modelo que simplifica o uso das coleções em uma linguagem dedutível e adequada para um usuário leigo em RDF. O exemplo da Figura 51 apresenta uma situação que justificaria o uso de uma coleção do tipo “rdf:Alt”: 86 Figura 51- Exemplo de uso de coleção “rdf:Alt” O gosto do bolo pode ser somente “doce” ou “salgado”, logo é adequado que o atributo “rdf:Alt” seja utilizado. Porém um usuário leigo pode não absorver esta sintaxe com facilidade. Assim, cada conceito possui um Botão de Conjunto que faz uma ligação a uma coleção. A Figura 52 apresenta o menu de inserção de coleções disponíveis pelo Botão de Conjunto. Figura 52 - Menu de inserção de coleções A opção “ou...” representa o atributo “rdf:Alt” pois expressa um termo de alternatividade. Da mesma forma a opção “e...” está associada ao atributo “rdf:Bag” por sugerir uma coleção sem que necessariamente seja ordenada e, por fim, a opção “próximo...” representa o atributo “rdf:Seq” por sugerir uma seqüência ordenada. As Figuras 53,54 e 55 mostram respectivamente exemplos de uso das coleções “rdf:Alt”, “rdf: Bag” e “rdf: Seq”. 87 Figura 53 - Exemplo de uso de “rdf:Alt” pelo Semanticpad Figura 54 - Exemplo de uso de “rdf:Bag” pelo Semanticpad Figura 55 - Exemplo de uso de “rdf:Seq” pelo Semanticpad 4.2.4 Interface de Colaboração de Mapas Conceituais Qualquer conceito dentro de um mapa conceitual pode ser configurado em níveis colaborativos de confiabilidade ao clicar no Botão Menu. Esse botão exibe um menu em cascata que permite a configuração de um conceito como aberto ou fechado, fraco ou forte. A edição destas propriedades muda a aparência do conceito para que visualmente sejam percebidos os que podem ser editados colaborativamente ou não. Quando um desses é forte, os botões de edição e exclusão não ficam disponíveis em acessos de terceiros; quando é fechado, o botão de extensão e de conjunto do mapa torna-se indisponível 88 para outros usuários. A Figura 56 mostra como são restringidas as opções segundo os níveis de confiabilidade de cada conceito. Todos botões disponíveis Somente botões de extensão Somente botões de edição Nenhum botão disponível Figura 56 - Configurações de níveis de confiabilidade Desta forma apenas os conceitos permitidos pelo autor poderão se estendidos e editados colaborativamente sem que seja necessária qualquer mensagem de alerta sobre permissão de acesso. 4.2.5 Outras Opções Disponíveis Na tela de Opções existem quatro opções que convertem todos os conceitos do mapa para determinado nível de confiabilidade, serve como um atalho para que o usuário não tenha que se definir um por um. Também nesta tela existem recursos para manipulação de vocabulários e entidades, a Figura 57 mostra as principais opções: Opções de conversão de nível de confiabilidade Adicionar novo vocabulário/entidade qnames Excluir vocabulário/entidade Figura 57 - Principais opções disponíveis 89 4.2.6 Suporte e Documentação A ferramenta é produzida para ser simples e objetiva de forma que não seja necessária consulta a um tutorial para seu uso, assim não existe algum help em algum setor separado, mas o suporte está inserido ao longo de toda aplicação com mensagens de aviso. Abaixo alguns exemplos de alertas que visam facilitar o uso da ferramenta. A Figura 58 mostra algumas mensagens e alertas de suporte. Figura 58 - Alguns alertas de suporte da ferramenta 4.2.6.1 Teclas de Atalho As opções e funções do Semanticpad podem ser acessadas por teclas de atalho, esse recurso aprimora o requisito de agilidade na edição dos mapas conceituais. Abaixo segue uma lista das principais teclas de atalhos da ferramenta: a) seta para direita (botão adicionar): criar novo elemento filho; apontar para filhos; b) seta para baixo: criar novo elemento irmão; apontar para irmão (baixo); c) seta para esquerda: apontar para pai; d) seta para cima: apontar para irmão (cima); e) Shift+Del (botão remover): excluir elemento; 90 f) Page Up (botão selecionar novo pai): ativar seleção de novo pai; g) Page Down: definir novo pai; h) Ctrl+Shift+S: converter para conceito forte; i) Ctrl+Alt+S: converter todos os conceitos para conceitos fortes; j) Ctrl+Shift+W: converter para conceito fraco; k) Ctrl+Alt+W: converter todos os conceitos para conceitos fracos; l) Ctrl+Shift+O: converter para conceito aberto; m) Ctrl+Alt+O: converter todos os conceitos para conceitos abertos; n) Ctrl+Shift+C: converter para conceito fechado; o) Ctrl+Alt+C: converter todos os conceitos para conceitos fechado; p) Ctrl+S: salvar mapa; q) Ctrl+O: abrir mapa; r) Ctrl+N: novo mapa. 4.3 Considerações Finais Este capítulo apresentou o processo de modelagem e desenvolvimento do protótipo da ferramenta de edição semântica Semanticpad, bem como as principais tecnologias utilizadas, suas principais telas e recursos. No próximo capítulo serão apresentadas as conclusões e contribuições obtidas com este trabalho de graduação. 91 5 CONCLUSÃO Este capítulo tem por objetivo descrever as principais contribuições, conclusões e experiências adquiridas ao longo deste trabalho, e esboçar os trabalhos futuros que podem se estender deste projeto. Este capítulo está organizado como segue: na Seção 5.1 são apresentadas as principais contribuições e conclusões, a Seção 5.2 apresenta o artigo publicado em periódico durante o desenvolvimento deste trabalho e, por fim, a Seção 5.3 apresenta os trabalhos futuros. 5.1 Contribuições e Conclusões Abaixo serão apresentadas as principais contribuições deste trabalho de graduação. a) o Semanticpad soma como uma alternativa possivelmente simples para edição de código RDF para Web Semântica; b) pode ser utilizado para as primeiras fases da Engenharia de Ontologias como agregador de semântica de usuários leigos; c) um componente que pode ser inserido em páginas, blogs ou para outras aplicações web, até mesmo em perfis de rede sociais no modelo OpenSocial; d) beneficia-se da arquitetura web para geração de conteúdo semântico acessível a toda a comunidade em um modelo comparável a um wiki semântico; e) permite fácil adaptação e uso sem necessidade de suporte ou tutoriais devido à interface intuitiva baseada em mapas conceituais; f) trata-se de um editor livre e acessível a toda a comunidade disponível gratuitamente no repositório de gadgets do Google. A seguir são apresentadas as conclusões obtidas a partir das contribuições: a) apesar de contarmos com muitos editores de código RDF na atualidade, o Semanticpad atende a uma categoria carente neste meio, uma categoria de ferramentas rápidas e práticas como um “notepad semântico”. Não é necessária a instalação ou tutorial para o uso da ferramenta. 92 b) tendo uma interface de rápida adaptação para um usuário leigo, o Semanticpad se faz adequado para fases iniciais da Engenharia de Ontologias. Mapas criados por especialistas em determinados domínios de conhecimento, porém leigos em TI, podem ser revisados e adequados aproveitando a semântica adquirida em suas descrições; c) a disponibilidade do Semanticpad como um gadget tornou a ferramenta acoplável em qualquer página, blog ou até outras ferramentas na web. O requisito de geração de conteúdo semântico pode ser atendido em aplicações mais elaboradas sem a necessidade da geração de um novo editor. Serve como um componente para aplicações web reutilizável; d) é uma ferramenta que aproveita dos benefícios da inteligência coletiva disponível na web e usufrui destes como motor de ligação e unificação de conhecimentos. Várias triplas RDF podem ser geradas e disponibilizadas para a comunidade desenvolvedora ao longo do tempo. Semânticas geradas a partir do Semanticpad podem ser aproveitas ou enriquecidas em outros editores pois produz arquivos com total compatibilidade por serem texto XML puros; e) é possivelmente uma ferramenta intuitiva e explicativa que, por si só, serve de um tutorial. Não carece de documentação extra e é adequado para ingressantes no estudo de ontologias; f) a comunidade web desenvolvedora não só tem acesso a mais uma ferramenta de edição semântica completamente livre, como a um módulo que pode compor partes de ferramentas web mais elaboradas que careçam de um editor básico para descrição de conteúdo semanticamente. A seguir são apresentadas experiências obtidas durante o desenvolvimento deste trabalho: a) trabalhar com Web Semântica pode ser visto como um dos estudos que estão no limiar da tecnologia, porque remete ao futuro. É um conhecimento com projeção e aspectos admirados por cientistas visionários. A experiência de trabalhar com Web Semântica elucida o poder da web e lança o autor para alternativas que aproveitam o potencial da web como recurso. Web Semântica, como toda ciência em sua infância, se faz um cenário próspero e carente de soluções, especialmente bom para ingressantes no mundo acadêmico de tecnologia. 93 b) reuso é um termo nativo do estudo de Orientação a Objetos, e se faz bem presente na web de hoje e do futuro pelos benefícios dos conceitos de baixo acoplamento, compartilhamento e interação dos sistemas. API’s, serviços web, bibliotecas, frameworks, gadgets e widgets são exemplos que o desenvolvimento caminha para um novo paradigma de abstração e reuso culminando num talento coletivo e incremental que tem projeção para um futuro melhor em compartilhamento de tecnologia. A confiança apostada na inteligência coletiva e no trabalho já implementado pela comunidade se mostrou recurso seguro, favorável, adiantando horas de implementação e possibilitando resultados muito além das perspectivas. A experiência do reuso vai além de usar algo pronto, é um talento inerente a um desenvolvedor típico da web plataforma que reúne pesquisa, testes, adaptação e estudo que deveras valem a pena. Este trabalho além de prazeroso contribuiu para formação profissional, acadêmica e pessoal dos envolvidos, e é preferível que seja para outros que utilizem deste documento para o desenvolvimento de trabalhos futuros. 5.2 Publicação Este trabalho foi publicado no periódico “Boletim Técnico da FATEC-SP” (ISSN 1518-9082) e apresentado no Simpósio de Iniciação Científica e Tecnológica (SICT, 2009) com o título: “SEMANTICPAD: UMA FERRAMENTA DE EDIÇÃO WEB SEMÂNTICA PARA LEIGOS”. 94 5.3 Trabalhos Futuros Abaixo estão listados algumas previsões de futuros: a) executar estudos de caso para validação do modelo de interface colaborativa proposto, bem como a interface intuitiva baseada em mapas conceituais; b) produção de nova versão com maior suporte a número de conceitos e ligações, maior segurança e robustez e mecanismos de busca de conceitos existentes em vocabulários já definidos. Abaixo estão listadas novas ferramentas baseadas no modelo do Semanticpad que podem ser cogitadas como trabalhos futuros e correlatos: c) ServicePad: ferramenta web para edição de serviços web semânticos; d) SemanticSocial: ferramenta web para edição de RDF especialmente elaborada para utilização em redes sociais na arquitetura OpenSocial; e) SemanticTag: ferramenta web para edição de RDFa (XHTML semântico) especialmente elaborada para aplicação em blogs; f) SemanticSchema: ferramenta web de edição e criação de vocabulários em RDF Schema; g) SemanticLite: gadget de edição de OWL Lite; 95 REFERÊNCIAS BIBLIOGRÁFICAS ALTOVA, 2009. Disponível em: < http://www.altova.com/semanticworks.html> Acesso em: 15 de Abril de 2009. AMORETTI, M. S. M.; TAROUCO, L. R. Mapas Conceituais: Modelagem Colaborativa do Conhecimento. Informática na Educação: Teoria & Prática. v.3, n.1, set. 2000. Disponível em: <http://www.api.adm.br/GRS/referencias/mapasconceituaismodelagemcolaborativa.pdf>. Acesso em: 23 de Abril de 2009. ANGELE, J.; SURE, Y. Whitepaper: Evaluation of Ontology-based Tools. 2001. Disponível em: <http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.3.2828&rep=rep1&type=pdf> Acesso em: 15 de Abril de 2009. AUSUBEL, D. P.; Educational psychology: A cognitive view. New York: Holt, Rinehart and Winston, 1968. AZAMBUJA, R. X.; ROCHA, T. R. Caracterizando a Semântica Web. Santa Maria, 2007. Disponível em: <http://www.ulbra.br/santamaria/eventos/jornada/2007/arquivos/Sis1192660917.pdf/>. Acesso em: 14 de Março de 2009. BELTRÃO, F. B. Produção de edição Colaborativa na Internet. Universidade Federal de Pernambuco, 2007. Disponível em: <http://www.almanaquedacomunicacao.com.br/files/others/intercomProdu%C3%A7%C3%A 3o%20e%20edi%C3%A7%C3%A3o.pdf>. Acesso em: 28 de Março de 2009. BENTLEY, R.; et al. Supporting Collaborative Information Sharing with the World Wide Web: The BSCW Shared Workspace System. 1995. Disponível em: <http://www.w3.org/Conferences/WWW4/Papers/151/>. Acesso em: 23 de Abril de 2009. BERNES-LEE, T.; HENDLER, J.; LASSILA, O. The Semantic Web: a new form of web content that is meaningful to computers will unleash a revolution of new possibilities. Scientific American, New York, 2001. Disponível em: <http://www.scientificamerican.com/article.cfm?id=the-semantic-web>. Acesso em: 13 de Janeiro de 2009. BERTOLINI, R. M. V. Web Semântica: Novo Desafio para os Profissionais da Informação. Campinas, 2002. Disponível em: <http://www.sibi.ufrj.br/snbu/snbu2002/oralpdf/124.a.pdf/>. Acesso em: 14 de Março de 2009. 96 BRAUN, S.; SCHMIDT, A.; WALTER, A. Ontology Maturing: a Collaborative Web 2.0 Approach to Ontology Engineering. Karlsruhe, 2007. Disponível em: <http://www2007.org/workshops/paper_14.pdf >. Acesso em: 22 de Abril de 2009. BRAY, T. et al. Extensible Markup Language (XML) 1.0 (Fifth Edition). Massachusetts, 2008, Disponível em: <http://www.w3.org/TR/REC-xml/>. Acesso em 15 de Abril de 2009. BREITMAN, K. Web Semântica: A Internet do Futuro, 1, Rio de Janeiro: Selo-LTC, 2005. 240p., 24cm, ISBN: 9788521614661. BRICKLEY, D. RDF Vocabulary Description Language 1.0: RDF Schema. Massachusetts, 2004, Disponível em: < http://www.w3.org/TR/rdf-schema/ >. Acesso em 15 de Abril de 2009. DBPEDIA, 2009. Disponível em: < wiki.dbpedia.org/About> Acesso em: 10 de Abril de 2009. DEITEL, H. M. AJAX, Rich Internet Applications, and Web Development for Programmers. New Jersey: Prentice Hall, 2008. 991p. ISBN: 0131587382, 9780131587380. DELICIOUS, 2009. Disponível em: < http://delicious.com/> Acesso em: 13 de Julho de 2009. DUBLIN CORE METADATA INITIATIVE, 2009. Disponível em: < http://dublincore.org/ >. Acesso em: Acesso em: Acesso em 01 de Maio de 2009. FALKENBACH, G. A. M.; AMORETTI, M. S. M.; TAROUCO, L. R. Aprendizagem de Algoritmos:Uso da Estratégia Ascendente de Resolução de Problemas. Universidade Federal do Rio Grande do Sul. 2003. Disponível em: <http://www.tise.cl/archivos/tise2003/papers/aprendizagem_de_algoritmos.pdf > Acesso em: 23 de Abril de 2009. FACEBOOK, 2009. Disponível em: <http://www.facebook.com/> Acesso em: 13 de Julho de 2009. FENSEL, D. The Semantic Web and its Languages. Amsterdam: IEEE, 2000. Disponível em: < http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.22.5473>. Acesso em: Acesso em: Acesso em 02 de Março de 2009. FLICKR, 2009. Disponível em: < http://www.flickr.com/> Acesso em: 13 de Julho de 2009. FRIENDSTER, 2009. Disponível em: <www.friendster.com/> Acesso em: 13 de Julho de 97 2009. GILLET, D.; NGOC, A. V. N.; REKIK, Y. Collaborative web-based experimentation in flexible engineering education. Switzerland: IEEE, 2005. ISSN: 0018-9359. Disponível em: <http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?a>. Acesso em: 27 de Abril de 2009. GOOGLE GADGETS, 2009. Disponível em: <http://www.google.com/ig/directory?synd=open> Acesso em: 10 de Julho de 2009. GOOGLE CODE, 2009. Disponível em: < http://code.google.com/intl/pt-BR/>. Acesso em: 10 de Julho de 2009. GOOGLE DESKTOP, 2009. Disponível em: < http://desktop.google.com/>. Acesso em: 16 de Julho de 2009. HARA NETO, K. Desenvolvimento de Sistema Web utilizando arquitetura em Três Camadas e Applets. Centro Federal de Educação Tecnológica do Paraná, 2009. Disponível em: <http://inf.unisul.br/~ines/workcomp/cd/pdfs/2905.pdf>. Acesso em 03 de Maio de 2009. HENDLER, J. Web 3.0: Chicken Farms on the Semantic Web. Local :IEEE. 2008. ISSN:0018-9162. Disponível em: <http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=4445616>. Acesso em: 05 de Abril de 2009. HI5, 2009. Disponível em: <http://hi5.com/> Acesso em: 13 de Julho de 2009. IBM, 2009. Disponível em: < http://www.ibm.com/br/pt/> Acesso em: 10 de Abril de 2009. IGOOGLE, 2009. Disponível em: < http://www.google.com.br/ig?hl=pt-br&source=iglk> Acesso em: 11 de Julho de 2009. JACINTO, A. S. Uma Arquitetura para Sistemas Tutores Inteligentes Apoiada por Sistemas de Web Semântica. 2006. 174f. Dissertação (Mestrado em Engenharia Eletrônica e Computação) – Instituto Tecnológico de Aeronáutica, São José dos Campos, 2006. JQUERY. 2009. Disponível em: < http://jquery.com/>. Acesso em: 16 de Julho de 2009. JQUERYUI. 2009. Disponível em: < http://jqueryui.com/>. Acesso em: 19 de Julho de 2009. JSDRAW2D. 2009. Disponível em: < http://draw2d.org/draw2d/>. Acesso em: 27 de Julho de 2009. 98 KECMANOVIC, D. C.; WEBB, C. Towards a Communicative Model Of Collaborative Web-Mediated Learning. Universidade de Western Sydney, Hawkesbury, 2009. Disponível em: < http://www.ascilite.org.au/conferences/brisbane99/papers/cecezkecmanovicwebb.pdf >. Acesso em: 23 de Abril de 2009. KLYNE, G.; CARROLL, J. J. Resource Description Framework (RDF): Concepts and Abstract Syntax. Massachusetts, 2004. Disponível em: < http://www.w3.org/TR/rdfconcepts/>. Acesso em: 17 de Abril de 2009. MANOLA, F.; MILLER, E. RDF Primer. Massachusetts, 2004, Disponível em: <http://www.w3.org/TR/2004/REC-rdf-primer-20040210/>. Acesso em 01 de Março de 2009. MARKOFF, J. Entrepreneurs See a Web Guided by Common Sense. The New York Times, New York, 23 nov. 2006. MCGUINNESS, D. L.; HARMELEN, F. V. OWL Web Ontology Language Overview, 2004. Disponível em: < http://www.w3.org/TR/owl-features/>. Acesso em: 22 de Abril de 2009. MICROSOFT, 2009. Disponível em: <http://gallery.live.com/devcenter.aspx>. Acesso em: 11 de Julho de 2009. MOREIRA, M. A. Mapas Conceituais e Aprendizagem Significativa. Instituto de Física – UFRGS, Porto Alegre, 1998. Disponível em: < http://www2.iq.usp.br/docente/famaxim/disciplina/integrada/mapasport-Moreira.pdf>. Acesso em: 23 de Abril de 2009. MYSPACE, 2009. Disponível em: <http://www.myspace.com/> Acesso em: 13 de Julho de 2009. NETLOG, 2009. Disponível em: <www.netlog.com/> Acesso em: 13 de Julho de 2009. NING, 2009. Disponível em: <www.ning.com/> Acesso em: 13 de Julho de 2009. NOVAK, J. D. The Theory Underlying Concept Maps and How to Construct Them. IHMC, Flórida, 2006. Disponível em: <http://cmap.ihmc.us/Publications/ResearchPapers/TheoryCmaps/TheoryUnderlyingConcept Maps.htm >. Acesso em: 22 de Abril de 2009. ON-TO-KNOWLEDGE, 2009. Disponível em: <http://www.few.vu.nl/~ontoknow/>. Acesso em: 13 de Abril de 2009. 99 O'REILLY, T. Web 2.0 and Cloud Computing. California, 2008. Disponível em: < http://radar.oreilly.com/2008/10/web-20-and-cloud-computing.html> Acesso em: 24 de Abril de 2009. O'REILLY, T. What Is Web 2.0: Design Patterns and Business Models for the Next Generation of Software. Sebastopol: O'Reilly, 2005. Disponível em: < http://oreilly.com/web2/archive/what-is-web-20.html>. Acesso em: 12 de Maio de 2009. ORKUT, 2009. Disponível em: <www.orkut.com> Acesso em: 13 de Julho de 2009. PAOLUCCI, M.; et al. Semantic Matching of Web Services Capabilities. Carnegie Mellon University, Pittsburgh, 2002. ISSN 1611-3349. Disponível em: < http://www.springerlink.com/content/9lwn9fkclngm6trl/>. Acesso em: 24 de Abril de 2009. PIAGET, J.; Epistemologia Genética Martins Fontes, São Paulo, 2002. PROTÉGÉ TEAM, 2009. Disponível em: < http://protege.stanford.edu/>. Acesso em: 13 de Abril de 2009. PRUD'HOMMEAUX, T.; SEABORNE, A. SPARQL Query Language for RDF. 2008. Disponível em: < http://www.w3.org/TR/rdf-sparql-query/>. Acesso em: 11 de Abril de 2009. SICT, 2009. Disponível em: <http://sict.fatecsp.br/> Acesso em: 20 de Setembro de 2009. SONICO, 2009. Disponível em: <www.sonico.com> Acesso em: 13 de Julho de 2009. SURE, Y. et al. OntoEdit: Collaborative Ontology Development for the Semantic Web. Universidade de Karlsruhe, 2002. Disponível em: <http://www.springerlink.com/content/drux1nwev5ghr695/> Acesso em: 13 de Abril de 2009. SURE, Y.; Studer, R. On-To-Knowledge Methodology - Expanded Version. Universidade de Karlsruhe, 1999. Disponível em: <http://www.york-sure.de/publications/OTK-D17_v10.pdf>. Acesso em: 13 de Abril de 2009. TABLELESS, 2009. Disponível em: < http://www.tableless.com.br/>. Acesso em: Acesso em: Acesso em 12 de Abril de 2009. TAVARES, R. Animações Interativas e Mapas Conceituais. Universidade Federal da Paraíba (UFPB), Rio de Janeiro, 2005. Disponível em: <http://rived.mec.gov.br/atividades/fisica/EXTERNOS/ufpb_energia/Textos/AIMCSimposio. pdf>. Acesso em: 27 de Abril de 2009. 100 TAVARES, R. Construindo Mapas Conceituais. Universidade Federal da Paraíba (UFPB), João Pessoa, 2007. ISSN 1806-5821. Disponível em: <http://www.cienciasecognicao.org/pdf/v12/m347187.pdf >. Acesso em: 23 de Abril de 2009. TWITTER, 2009. Disponível em: <http://twitter.com/> Acesso em: 13 de Julho de 2009. UNDERGOOGLE. Disponível em: < http://www.undergoogle.com/blog/>. Acesso em: 28 de Março de 2009. URIS, URLs, and URNs: Clarifications and Recommendations. 1.0: Report from the joint W3C/IETF URI Planning Interest Group. 2001. Disponível em: < http://www.w3.org/TR/uriclarification/ >. Acesso em: 11 de Abril de 2009. VYGOTSKY, L., COLE, M.; Mind in society: The development of higher , psychological processes. Cambridge: Harvard University Press, 1978. W3C SEMANTIC WEB ACTIVITY, 2009. Disponível em: <http://www.w3.org/2001/sw/>. Acesso em: 15 de Julho de 2009. W3SCHOOLS, 2009. Disponível em: < http://www.w3schools.com/rdf/default.asp >. Acesso em: 13 de Julho de 2009. W3SCHOOLS, 2009. Disponível em: < http://www.w3schools.com/rdf/rdf_schema.asp>. Acesso em: 14 de Julho de 2009. W3SCHOOLS, 2009. Disponível em: < http://www.w3schools.com/schema/default.asp >. Acesso em: 14 de Julho de 2009. W3SCHOOLS, 2009. Disponível em: < http://www.w3schools.com/xml/default.asp >. Acesso em: 15 de Julho de 2009. W3SCHOOLS, 2009. Disponível em: <http://www.w3schools.com/rdf/rdf_owl.asp>. Acesso em: 14 de Julho de 2009. W3SCHOOLS, 2009. Disponível em: <http://www.w3schools.com/xml/xml_namespaces.asp>. Acesso em: 13 de Julho de 2009. WEBONDEMAND. Disponível em: < http://www.webondemand.net/home.asp>. Acesso em: 28 de Março de 2009. WIKIPÉDIA, 2009. Disponível em: < http://en.WIKIPÉDIA.org/wiki/Html >. Acesso em: 12 101 de Maio de 2009. WIKIPÉDIA, 2009. Disponível em: < http://en.WIKIPÉDIA.org/wiki/URI>. Acesso em: 19 de Março de 2009. WIKIPÉDIA, 2009. Disponível em: < http://en.WIKIPÉDIA.org/wiki/Url >. Acesso em: 11 de Abril de 2009. WIKIPÉDIA, 2009. Disponível em: < http://en.WIKIPÉDIA.org/wiki/XML_Namespaces >. Acesso em: 14 de Março de 2009. WIKIPÉDIA, 2009. Disponível em: <http://en.WIKIPÉDIA.org/wiki/Prot%C3%A9g%C3%A9_(software)>. Acesso em: 13 de Abril de 2009. WIKIPÉDIA, 2009. Disponível em: <http://pt.WIKIPÉDIA.org/wiki/Desktop_online >. Acesso em: 128 de Março de 2009. WIKIPÉDIA. Disponível em: < http://en.WIKIPÉDIA.org/wiki/Software_release_life_cycle#Beta>. Acesso em: 28 de Março de 2009. XHTML2 WORKING GROUP HOME PAGE, 2009. Disponível em: <http://www.w3.org/MarkUp/>. Acesso em: 21 de Maio de 2009. YAHOO, 2009. Disponível em: <www.yahoo.com/> Acesso em: 13 de Julho de 2009. YOUN, S.; et al. Survey about Ontology Development Tools for Ontology-based Knowledge Management. University of Southern California, 2009. Disponível em: < http://www-scf.usc.edu/~csci586/projects/ontology-survey.doc>. Acesso em: 24 de Abril de 2009. YOUN, S.; MCLOAD D. Ontology Development Tools for Ontology-based Knowledge Management. University of Southern California, Los Angeles, 2006. Disponível em: < http://sirlab.usc.edu/publications/Survey%20of%20Ontology%20Development%20Tools%20for%20 Knowledge%20Management.pdf> Acesso em: 24 de Abril de 2009