Acorda pra Web!

Tecnologia que vai mudar nossas vidas, depois do café.

GRDDL – Sugando Páginas da Internet

Saturday, May 19th, 2007

Nem me pergunte, eu não sei como se pronuncia isso! :) Só sei que é uma tecnologia útil:

O GRDDL, que significa Gleaning Resource Descriptions from Dialects of Languages (ufa!) ou Coletanto Descrições de Recursos de Dialetos de Linguagens é uma maneira legal de extrair informação organizada de uma internet organizada. Basicamente, o GRDDL funciona assim:

  • A Web atualmente é desorganizada. Semanticamente, existem muitos dialetos, ou seja, pequenos padrões internos dentro dos sites. Cada site usa seu próprio padrão pra criar os elementos HTML, por exemplo.
  • A Web Semântica traz um dialeto universal, um padrão uniforme pra descrever recursos: O RDF. Poucos sites o utilizam.
  • As ferramentas pra trabalhar com RDF não lêem os demais dialetos, que são em HTML normal.
  • Mecanismos GRDDL lêem os dialetos específicos e transformam em RDF.

Pra isso, obviamente, é necessário construir GRDDL para cada fonte que você deseja coletar. GRDDL é baseado em XSLT, uma linguagem que transforma arquivos XHTML e RDF.

O difícil mesmo é criar um exemplo pra isso. O W3C ainda está trabalhando em um documento com exemplos e explicação para iniciantes. Quem sabe eu não me animo e faço algo em português pra exemplificar :)

A origem semântica dos microformatos

Monday, May 14th, 2007

Toda coisa pode ser descrita com classes e propriedades. Alguns exemplos simples de uma classe fruta:

  • Coisa maçã-agentina com as propriedades cor:vermelha e estado:madura
  • Coisa laranja-lima com as propriedades origem:brasil e estado:madura
  • Coisa limão-thaiti com as propriedades preço-por-kilo:0,89 e estado:maduro
  • Coisa uva-itália com as propriedades destino:exportação e estado:verde

E também pode haver hierarquia nas classes:

  • Classe fruta
    • Classe fruta cítrica
      • Coisa laranja
      • Coisa limão
    • Coisa laranja
    • Coisa uva

Isso é particularmente importante na internet para que máquinas começem a processar os dados de maneira cada vez mais eficiente. E o mais legal é que quase existe um mecanismo pra isso, muito difundido: HTML.

No HTML temos várias tags que delimitam coisas, nosso conteúdo. Podemos identificar coisas usando o atributo id e classes usando o atributo class de qualquer tag. O que falta mesmo é a descrição de propriedades.

Pra suprir essa necessidade, foram criados padrões de formatação que complementam o HTML, usando o conteúdo das tags como valores para propriedades. O mais famoso deles é o conjunto de microformatos, veja o exemplo:

HTML:
<div class="section vcard" id="author-data">
por <a class="url fn" href="http://alexandre.gaigalas.net/">Alexandre Gomes Gaigalas</a>
<div class="org">zeta Internet</div>
</div>

Nesse exemplo acima, temos algo parecido com isso: Coisa autor com as propriedades fn:Alexandre Gomes Gaigalas. (fn significa first name, ou primeiro nome em português), url:http://alexandre.gaigalas.net e org:ZetaInternet. Tudo isso na classe vcard, que define cartões pessoais.

Como você pode ver, não existe exatamente um padrão uniforme para os microformatos. Cada microformato tem sua “fórmula” e deve ser criado de acordo com ela. Não existe uma maneira de tornar uniformes ids, classes e propriedades.

Por outro lado o RDFa tem um suporte muito bom a todos os aspectos nos quais os microformatos falham, o único problema é que é um módulo do XHTML.

Pois é, teremos que esperar. Enquanto isso podemos fazer algumas coisas até legais com as poucas ferramentas que temos. Um exemplo é essa área de transferência inteligente feita com eRDF e SPARQL. Pra usar o exemplo, clique em algum retângulo laranja, depois copie (Ctrl+C), clique em outro e cole (Ctrl+V). Sugiro que cole nos que estão em branco, são os mais divertidos.

Um gigante adormecido

Monday, May 7th, 2007

Se você ler o que eu escrevi sobre ontologias, talvez fique mais claro entender o que eu estou tentando dizer com esse artigo.Wikipedia - Um gigante adormecido?Imagine se pudessemos ensinar uma máquina tudo que a humanidade aprendeu. É um dos primeiros passos pra criação da tão sonhada (e temida) Inteligência Artificial.

A primeira etapa pra criar um sistema que ensine tudo (ou quase tudo) que os humanos conhecem à uma máquina é organizar todo esse conteúdo, e posso dizer que estamos quase lá.

A Wikipedia é um bom começo. Lá há uma enorme fonte de informações organizada por categorias, atualizada com frequência e armazenada digitalmente. Se pudessemos transformar todo conhecimento armazenado na Wikipedia em ontologias, teríamos uma base riquíssima de informações.

Um exemplo do que poderíamos fazer, seria consultar a Wikipedia como se fosse um banco de dados, através de qualquer sistema. Poderíamos por exemplo pesquisar automaticamente todos os autores franceses de livros que nasceram entre 1850 e 1950, e obter um resultado com os livros que eles publicaram, autores influenciados e tudo mais. Potencial não falta.

Já existem alguns grupos se empenhando em tornar isso uma realidade, como o banco de dados Wikipedia³, criado pelo mesmo pessoal do SystemOne, e a dbpedia.org.

A Wikipedia é gigante sim, e mesmo dormindo já tem um poder incrível. Quando ela acordar pra web semântica é revolução na certa.

Ontologia e Ontologias

Friday, May 4th, 2007

Confesso que demorei pra compreender o que são ontologias, é um conceito muito abstrato. Vou tentar explicar mais ou menos o que elas são e a importância que elas tem no futuro da Tecnologia da Informação.

Na filosofia, ontologia é o estudo da existência ou do ser (verbo). É basicamente uma maneira de compreender identidades e grupos de identidades, chamados de classes.

Na Tecnologia da Informação chamamos de ontologias as classificações de identidades, sejam elas informação ou matéria (objetos no mundo real). Podemos criar uma ontologia que descreva vídeos no YouTube e as relações entre os mesmos, assim como podemos criar uma ontologia sobre os diferentes tipos de janelas de alumínio. Importante é saber que ontologias podem descrever qualquer coisa.

As ontologias funcionam de maneira muito parecida com o nosso cérebro, relacionando identidades similares e agrupando-as em classes diferentes. Um telefone por exemplo se enquadra em diversos grupos: telefones, aparelhos eletrônicos, instrumentos de comunicação e assim por diante.

Usando as ontologias uma máquina simples pode fazer coisas que humanos fazem no dia-a-dia, como cruzar informações de sistemas diferentes e buscar informações sem que seja solicitado, através de um tipo de poder de compreensão (limitado, claro).

A linguagem que o W3C recomenda para criação de ontologias é a OWL, baseada no XML. De qualquer maneira, o uso de ontologias ainda é muito raro e quase que exclusivamente acadêmico, e não existem muitas ferramentas públicas que conseguem processar o conteúdo dessas ontologias. É mais questão de curiosidade mesmo.

Você acha que se as máquinas soubessem identificar e agrupar toda informação que nós humanos sabemos, ela se tornaria inteligente? :)

Web Semântica, de verdade mesmo

Wednesday, May 2nd, 2007

Já dei uma pequena introdução e alguns exemplos de Web Semântica aqui no blog, só que o difícil mesmo é conseguir algo pra mostrar na prática. Resolvi deixar esses exemplos pra falar um por um, especificamente.

SystemOne faz buscas pelo que você digita, automaticamente.Hoje vou falar de um dos mais surpreendentes, o System One. Ele cria um ambiente típico de web semântica em internet e intranet.

A funcionalidade básica do System One é a mesma de um wiki, dentro de uma intranet. É como se você rodasse um tipo de wikipedia dentro da sua empresa, para organizar documentos, emails, informações, fotos e tudo mais.

SystemOne reune email, notícias, internet e arquivos em uma única plataforma.O que torna o System One diferente é a maneira que você cria as páginas dentro do wiki. Ele possui um editor de texto próprio bem simples, com uma função interessante: conforme você digita, ele traz na parte inferior resultados relacionados com o texto que você está digitando. As buscas são feitas na internet, nas próprias páginas do System One, nos seus emails particulares, no seus feeds prediletos e nos seus arquivos pessoais.

Cada usuário associa sua conta de email, seu arquivo OPML contendo os feeds prediletos e seus arquivos pessoais de maneira sigilosa. Dessa forma, somente os seus feeds, emails e arquivos são pesquisados quando você está digitando, além de toda a internet, claro.

Isso se encaixa praticamente de uma maneira idêntica a aquela que eu descrevi no meu post com exemplos de Web Semântica, só que ao invés de ser um editor para blogs, é um editor para wikis.

A melhor maneira de mostrar como ele funciona, é vendo o pequeno screencast sobre (em inglês), vale a pena.

Cuidado com o XML!

Sunday, April 29th, 2007

O XML é aquele tipo de linguagem que pode ser usada pra tudo. Ele descreve, transporta e armazena dados quaisquer, em qualquer formato. Mas nem sempre devemos usar ele em sua maneira pura. Vou explicar:

Imagine que o XML é o nosso alfabeto (de a a z), com o nosso alfabeto podemos escrever em diversas línguas, como o inglês, português, espanhol, galego, latim e tantas outras. As letras por si só não tem significado algum, o que tem significado são as definições que cada linguagem possui. No XML também é assim, o XML em si não é nada além de uma ferramenta muito boa para construir linguagens (assim como um alfabeto).

O surgimento do XML aconteceu justamente por isso: era necessário estabelecer um “alfabeto” para descrever vários tipos de dados diferentes. Existiam muitas linguagens específicas para cada aplicação, mas elas não conversavam entre si por não usarem a mesma base (o mesmo “alfabeto”).

Tendo um mesmo “alfabeto”, o próximo problema é fazer com que as “línguas” funcionem. Não podemos por exemplo criar duas ou três linguagens pra definir equações químicas, deve haver apenas uma linguagem pra isso.

Se você usa o XML para si mesmo, por exemplo para montar uma galeria de fotos em Flash, você não estará compartilhando esse documento XML com ninguém, será apenas uma interação interna da aplicação, portanto não se faz necessário o uso de uma linguagem universal porque sua aplicação não conversará com ninguém.

Isso é bem comum, no dia-a-dia estamos sempre criando novas pequenas línguas quando trabalhamos com XML. O importante é sempre ter cuidado de usar uma linguagem mundialmente “falada” se quisermos que nossa aplicação converse com outras por aí.

Pesquisar se já existe algum tipo de linguagem XML para o que você quer é algo que pode poupar seu tempo. Criar novas linguagens em XML no começo pode até ser divertido, mas depois acaba se tornando um porre.

Na Web Semântica, existem uma porção de linguagens XML para diversos fins, eis algumas delas:

RDF/XML
Descreve metainformação no formato XML. É uma das linguagens pelas quais o RDF pode se manifestar.
RDF-S
Baseada no RDF, serve para criação de vocabulários específicos de metainformação.
OWL
Significa “coruja” em inglês, é a linguagem para criação de ontologias, também baseada em RDF.
SKOS
Linguagem para criação de tesauros (dicionários de sinônimos e palavras similares)

Por enquanto eu só falei do RDF mesmo, mas pretendo falar sobre RDF-S, OWL e SKOS em breve.

Como você usa o XML do dia-a-dia? Tem algum exemplo?

Web Semântica pra quem viveu na primeira web

Thursday, April 19th, 2007

Duas verdades:

  • (Quase) Todo mundo sabe o que é Web 2.0
  • Ninguém sabe direito como será a Web Semântica

Se formos pensar no que a Web 2.0 é hoje em relação à Web tradicional, veremos que não mudou muita coisa:

  • Folksonomia (uso de tags) ao invés de outros métodos de classificação (pastas, árvores)
  • Grande interação social (Redes sociais, favoritos sociais, tudo social)
  • Serviços se comunicando (APIs como a do Google Maps, Flickr, etc…)

Fora o aspecto da folksonomia, a interação social e a interoperabilidade de serviços é apenas um estado de sinergia da primeira web, do começo.

Sempre foi possível criar uma lista de amigos no meu blog ou site e linkar para todos eles, mas isso nunca foi muito prático porque nem todo mundo é desenvolvedor de sites.

HPG - Um marco na internet brasileira.Outra coisa que sempre esteve presente foi a integração de serviços, só que nunca de uma maneira tão completa. Era normal há alguns anos atrás páginas no HPG com serviços de contador online, formulários de contato e outros widgets do arco da velha. O pioneiro Geocities foi o primeiro protótipo de MySpace do mundo, editado à mão!

Baseado na experiência do passado, podemos traçar uma idéia do futuro:

  • A próxima geração de novidades será uma sinergia da geração atual
  • Coisas que fazemos na mão, serão feitas automaticamente
  • Uma ou outra coisa surgirá de novo, mas nada muito diferente do habitual

A grande sinergia que eu imagino será entre os serviços. Atualmente temos que programar para conseguir incluir dados de uma aplicação como o Google Maps ou qualquer outra, ou mesmo informações por aí na web soltas em microformatos, arquivos RSS e tantas outras fontes. Esse ato de programar é semelhante ao ato de linkar amigos que fazíamos no passado e hoje é feito automaticamente pelas redes sociais.

No futuro você poderá arrastar dias de um calendário qualquer pra um mapa qualquer e ver os eventos relacionados naquele local, sem ter que programar toda a integração entre o calendário e a aplicação de mapas. E tudo será assim, automático.

Não sei até que ponto veremos dados sendo cruzados com tanta facilidade pelas máquinas automaticamente, como nos exemplos que citei aqui no blog, o que sei é que cada vez menos teremos que programar máquinas através de códigos.

É normal um programador sentir revolta quando vê tudo automático (e não foi ele quem programou). Eu mesmo penso frequentemente “e pra onde vai minha liberdade de programar do jeito que eu quero?”.

Aqui tem outra visão do futuro da internet. Qual seria mais provável? Será que existe ainda uma outra opção?

Web Semântica Nascendo – Projeto SemSol recebe patrocínio

Tuesday, April 17th, 2007

SemSolO SemSol é um simples framework para construção de aplicações semânticas, algumas características dele são:

  • Banco de dados armazena diretamente RDF, através de uma biblioteca desenvolvida pelo Benjamin Nowack
  • Os dados são formatados através de uma síntaxe parecida com a de um wiki, que inclusive é extensível (você poderá criar módulos pra ela)
  • Produz código nos padrões da web e indo adiante, produz código em Microformatos e eRDF.
  • Suporte nativo a AJAX.
  • Constrói formulários automaticamente e já embute os sistemas de dados RDF.

Ainda não existe versão pública do sistema, que será gratuito e tem previsão pra lançamento esse ano. Eu particularmente não vejo a hora de botar as mãos nele, já que não acho nenhum framework que preste.

O Anúncio do patrocínio traz algumas notícias:

  • Semsol.com virará uma prestadora de serviços, de “Semantic Solutions” (Soluções Semânticas).
  • O projeto do framework será movido para Semsol.org e provavelmente receberá um nome como “SemSol Suite”.
  • O coração do SemSol, a biblioteca ARC, será totalmente reescrita para a biblioteca ARC2.

Atualmente, 90% das aplicações Web2.0 não são complacentes aos padrões da web, o que é um grande empecílio para a difusão da Web Semântica. Eu considero o surgimento dessa iniciativa, embora bem silencioso, bastante importante porque é uma das primeiras iniciativas da Web Semântica feita com um bom propósito de difundir tecnologia e não somente ganhar dinheiro.

O que é Metainformação?

Saturday, April 14th, 2007

Informação são dados, são fotos, são datas, comentários, títulos, vídeos. Na informática, quase tudo gira em torno da informação.

Um livro por exemplo, é uma fonte de informação. Se eu escrever uma resenha sobre um livro, essa resenha também será uma nova informação, ligada diretamente à primeira. Metainformação é uma informação que pode descrever outra informação.

Outros exemplos:

  • Nome do autor de um livro.
  • Nota dada por um crítico a um filme.
  • Localização geográfica do autor de um blog.
  • Data de realização de um evento.
  • Quantidade de arquivos em um disco rígido.

Todos esses exemplos são informações também, afinal toda metainformação também é uma informação. Inclusive é possível escrever metainformação sobre metainformação e no RDF se chama reificação. Alguns exemplos de reificação:

  • Nome do crítico que deu uma determinada nota a um filme.
  • Data da última verificação de arquivos em um disco rígido.
  • Nome do autor de uma resenha sobre um determinado livro.

Trabalhamos com metainformação no dia-a-dia sem perceber, porque somos naturalmente cognitivos e cruzamos dados muito facilmente. Máquinas não fazem isso, não entendem Inglês, Português e tampouco Francês.

A Web Semântica é acima de tudo uma web feita de metainformação livre, é um objetivo a ser alcançado: padronizar a forma com a qual criamos, compartilhamos e lemos metainformação.

No futuro, quando a Web Semântica for um realidade, as máquinas poderão cruzar dados da maneira como fazemos intuitivamente. Ela mostrará somente os restaurantes com comidas que você gosta na busca, sua rádio no carro tocará somente os estilos que você ouve e as reuniões serão sempre marcadas automaticamente pelo computador da empresa, que sabe a agenda dos funcionários.

Bancos de Dados – Como funciona o Google?

Saturday, April 14th, 2007

Acho que todo desenvolvedor de sistemas já se perguntou como o Google trabalha com essa quantidade imensa de dados, que tipo de sistema eles usam e que tecnologias alienígenas funcionam por trás do Google File System.

O Google usa um sistema de bancos de dados um pouco diferente do convencional. Enquanto nós programadores na terra usamos bancos orientados por linhas, o Google File System usa bancos orientados por colunas¹.

Vou utilizar um exemplo de dados para mostrar depois como cada tipo de banco de dados trabalha com os mesmos:

id nome endereço telefone
1 José Av. Paulista, 1020 3333-4444
2 João Av. Brigadeiro Faria Lima 3333-5555

Um sistema de bancos de dados orientado por linhas gravaria no arquivo os dados nessa ordem:

[1],[José],[Av. Paulista, 1020],[3333-4444];[2],[João],[Av. Brigadeiro Faria Lima],[3333-5555]

Enquanto um sistema orientado por colunas armazenaria os dados na seguinte ordem:

[1],[2];[José],[João];[Av. Paulista, 1020],[Av. Brigadeiro Faria Lima];[3333-4444],[3333-5555]

Isso significa que os sistemas orientados por colunas como o Google, armazenam as colunas umas próximas as outras ao invés de armazenar a linha inteira. Como o Google possui bancos com muitas colunas, o arquivo ficaria fragmentado demais se fosse como no exemplo 1, orientado por linhas.

No exemplo 1 fica fácil recuperar os dados de um cliente em específico, retornar todos os dados sobre apenas uma linha.

No exemplo 2 a abordagem é diferente, fica fácil retornar informações como todos os telefones de clientes ou todos os nomes de clietes.

Com isso o Google pode recuperar informações e metainformações sobre vários sites em uma única consulta mais rapidamente, ao invés de recuperar toda informação sobre somente um único site.

É claro que por cima desse fabuloso sistema de bancos de dados, existem vários algoritmos trabalhando para manter o grande Google funcionando, mas já dá pra ter uma idéia e matar um pouco da curiosidade sobre o gigante das buscas. Nesse exemplo eu usei dados crus, mas na realidade o Google usa pedaços de 64MB de dados pra compor os “blocos” do banco de dados.

Mais em: