Microformats - Descrevendo dados na era da Web 2.0 – Parte 01
Pense na quantidade de informação que existe hoje circulando na web. Pense nos seus e-mails, nos comentários em blogs, nos artigos, nas fotos, versões de arquivos, textos e etc.
Para indexar essa informação e deixá-la disponível aos usuários, as máquinas de busca desenvolveram algoritmos cuja sua principal função é verificar a relevância do conteúdo de um documento e para cada busca realizada criar rankings, indicando a página mais relevante ao usuário.
Uma das características desse algoritmo de ranking é relacionar a meta informação com a própria informação. Sendo assim, quando você digita uma palavra no Google, ele vai retornar uma lista das páginas mais relevantes à palavra que você digitou. Básico não é?
Contudo, as tags do HTML/XHTML são um pouco limitadas para descrever a informação e principalmente a meta-informação que nós inserimos na web através documentos. Microformats tenta suprir esta lacuna estendendo para um outro nível as possibilidades de descrever esta informação.
Um exemplo disso seria fazer uma busca em um repositório de fotografias. Não existe algoritmo algum que consiga olhar para uma imagem e descrever pra você do que se trata a foto. Nenhum mecanismo de indexação ou sistema de busca no mundo poderá dizer ao "ler" uma foto sua se você está sorrindo ou chorando naquela foto.
Imagine agora um banco de imagens com milhões de fotos. Como é possível fazer uma busca por "família" e "sorriso" e ele te retornar com eficiência imagens relacionadas com estas duas palavras ao mesmo tempo? A resposta é meta-informação.
Há várias formas de trabalhar com meta-informação que permite com que um banco de dados tenha informação suficiente para te retornar um registro de alguma busca de forma precisa e eficiente,. Sabemos também que quando maior for um sistema, seja ele desktop ou uma aplicação web, quanto mais informação ele tiver armazenado, que se relaciona com outras informações, mais complexas essas relações devem ser.
Portanto, quando se deseja desenvolver um portal na web, muitas vezes o seu cliente espera que quando fizer uma busca detalhada, por exemplo, com o nome do produto que ele vende, o mínimo que se deve esperar é que a busca retorne entre as opções o portal que vc desenvolveu. Com isso, a necessidade de meta-informação eficiente que auxilie a obter esses resultados se torna mais real. Microformats tenta supri parte deste problema.
Microformats (www.microformats.org) é uma série de especificações que tem como foco principal relacionar a informação ou os dados com os humanos em primeiro lugar e em segundo com as máquinas, ou seja, é uma maneira de se pensar sobre dados e como eles podem ser descritos.
Esta série de especificações constitui um "dicionário" de conteúdo semântico para (X)HTML que utiliza como base os web standards e é escrita para descrever a informação de forma mais simples possível. Ou seja, não se trata de uma nova tecnologia, e sim um conceito de desenvolvimento.
Web standards se refere às recomendações da W3C, o órgão internacional responsável pela padronização das linguagens utilizadas na web. E escrever um código semanticamente correto nada mais é do que escrever um código de XHTML que esteja escrito à risca conforme as recomendações da W3C. Bom, mas o que significa descrever informação em XHTML? A função destas especificações é enriquecer a informação inserida em páginas web com meta informação.
A palavra "Meta" é de origem grega que significa "além de" (beyond) e é usada geralmente como prefixo em palavras que indicam conceitos que explicam ou falam de outros conceitos, como por exemplo a palavra metafísica ou metajurídico.
Mas microformats se refere a descrever trechos de conteúdos específicos de um site, como datas de eventos, informações de contato, descrição de links etc, coisas que estão além do escopo das meta tags. Ou seja, tratando "Pequenos formatos" (micro + format) de dados (informação) válidos no código do seu XHTML é possível enriquecer a maneira com que nós lidamos com a informação e a maneira com que as máquinas armazenam, indexam e organizam toda essa meta-informação. A função dessas especificações é fornecer o máximo de meta-informação sobre o conteúdo que você insere, ou seja, descrevendo os seus próprios dados. Microformats não se refere a um novo conjunto de tags, e sim uma forma diferente de utilizar as tags já existentes.
Para aplicar Microformats é preciso aprender antes de mais nada a utilizar um código semanticamente correto, ou seja, de acordo com os padrões especificados pela W3C. A primeira descrição de dados começa usando as tags de XHTML certas com o objetivo pelo qual elas foram criadas. No portal Revolução Etc, alguns artigos sobre como definir isso, e qual a melhor maneira de exibir dados tabulares, listas, headings etc podem ser encontrados. Com um código bem formatado, com tags sendo usadas corretamente, está lançado o ambiente perfeito para você aplicar microformats em trechos específico de códigos para resolver questões específicas.
Uma característica que as especificações Microformats possuem, é o conceito de modularidade. Microformats não é uma linguagem nova, são formatos de descrição de dados que podem ser aplicados em trechos específicos do seu código, sem precisar refazer nada. Se você tem um site e o seu código é semanticamente correto, basta você implementar e tratar estes trechos específicos sem precisar de alterações estruturais. O manifesto Microformat é o seguinte:
Reutilizar blocos de código quanto necessário utilizados dentro dos padrões web.
Praticamente em tudo que você for ler sobre Microformats, uma coisa que deve estar bem clara na sua mente é o conceito de modularidade.
Pense que uma página escrita em XHTML é feita de diversas partes e de diversos trechos distintos de código. Temos links, parágrafos, listagens, tabelas (sim, por que não?), abreviações, endereços, títulos e subtítulos e por aí vai.
Compare isso com várias peças de Lego encaixadas uma nas outras. Imagine que você pode arrancar ou colocar outras peças sem descaracterizar o restante ou ter que fazer tudo do zero. Isso é modularidade.
Se um trecho está errado, jogue o trecho fora e coloque outro no lugar. Simples assim. Microformats te fornece várias peças, que são cada uma das especificações diferentes que podem ser colocadas sem que você precise refazer algo desde o início.
Se você entendeu todo este conceito até aqui, é mais fácil entender como usar na prática. Como uma série de especificações, esta também possui padrões a serem seguidos. Os Microformats já possuem algumas especificações estabelecidas e alguns drafts que ainda não foram completamente estabelecidos. Antes de usar alguma coisa você precisar definir o seu problema para depois pensar em uma solução.
Abaixo segue uma lista das principais especificações Microformats com uma descrição simples. É impossível tratar todas as especificações neste artigo, somente como introdução. Abaixo já seguem os exemplos de hCalendar, rel-license e XOXO que considerei como principais:
hCalendar – para datas e eventos
hCard – Informações tipo as de cartões de visita
rel-license - Informações sobre licença
rel-nofllow - Impede que mecanismos de buscas sigam o endereço indicado em um hyperlink
XFN - XHTML Friends Network – Para rede de relacionamentos como os blogrolls
XOXO – Estrutura semântica para listagens.
Estas especificações oferecem aos autores padrões suficientes para descreverem suas informações de forma mais consistente possível. Elas são aplicadas combinando tags e nome de classes para descrever a informação. Veja o exemplo da aplicação do hCalendar na Listagem 1.
Listagem 1. Exemplo usando o hCalendar
Este exemplo pode ser renderizado da seguinte maneira:
October 5- 7,at the Argent Hotel, San Francisco, CA
Se for a primeira vez que você está vendo isso, talvez sua reação seja a mesma que eu tive: espanto. Através de nome de classes padronizadas, é possível ampliar a descrição daquilo que está sendo inserido combinando tags semanticamente corretas com classes. A aplicação de microformats gira basicamente em torno disso: criar relações descritivas entre conteúdo e meta informação inserida de forma que combine tags semanticamente corretas, classes e atributos de HTML. Mas não se trata de usar nome de classes do jeito que quiser. Cada especificação Microformat possui um padrão a ser seguido. Ou seja, para cada caso há uma solução diferente. É a definição concreta do problema que te guia para tentar encontrar a solução em uma das especificações existentes.
Veja um exemplo mais simples para descrever uma licença utilizando a especificação rel-license apenas aplicando o atributo "rel" no link:
<a href=http://creativecommons.org/licenses/by/2.0/ rel="license">cc by 2.0</a>
Listagem 2. Exemplo usando o rel-license
O atributo "rel" deve ser usado para indicar a relação que o site que insere o link tem com o site referenciado. Para isso foi criada uma série de profiles ( http://gmpg.org/xfn/11 ) distintos que representam diferentes tipos de relação que o seu site pode ter com os sites que você linka. Ou seja, nesta solução específica, não se colocou nome de classe nenhuma. O atributo "rel" é a solução.