Web,ruby, Ajax ou qualquer outra coisa que me venha a cabeça (com prioridade para esta última)

27 junho, 2007

Discussão sobre normas de documentos

O primeiro argumento que vejo que faz algum sentido a favor da puralidade de normas sobre troca de documentos abertos (ODF vs OOXML):

O requisito, para uma conformidade, com uma única norma monolítica não encaixa contudo, com a natureza descentralizada da produção da WWW e com a Web Semântica. Embora organizações como a UNESCO tenham analisado cuidadosamente a problemática do multilinguismo e multiculturalismo humano (UNESCO 2005), considerando-o como valor a preservar que a comunicação com e entre todos pode e deve ocurrer com a preservação dos idiomas locais e valores culturais - a liberdade de escolha de linguagens de computadores, isto é, a codificação de dados e programas foi largamento ignorada. Flávio Soares Corrêa da Silva

Só tem um detalhe que não aprecio aquelas normas destinam-se a máquinas em primeiro lugar e a humanos num segundo lugar muito distante.

Conferência SemGrail

A Microsoft Research teve há alguns dias uma conferência sobre web semântica onde foram apresentadas algumas teses interessantes entre estas há uma, Evolving the Web Through Open Data, de Harry Halpin, investigador posgraduado da Universidade de Edinburgh, em que conclui dizendo:

O cerne da questão é que em vez de dependermos de motores de busca centralizados não estruturados, como o motor da Google, uma série de aplicações poderosas da Web podem tirar vantagem da natureza inerentemente social e natureza estruturada da web de um modo descentralizado. Qualquer Web centralizada está essencialmente danificada, e os dados abertos através de RDF são actualmente a única equipa em jogo para a descentralização à escala da Web de dados abertos. A combinação de GRDDL, RDF e microformatos proporciona um primeiro passo prático para a implementação de dados abertos como camada por cima da Web actual.

Roots

Roots (raízes) é uma fundação livre para a web, com a finalidade de retirar o trabalho repetitivo em CSS, HTML e JavaScript que quem desenvolve sítios web incorre na maior parte dos sítios. É muito detalhada e inclui vários ficheiros separados. Actualmente a documentação é escassa. Para ser usada o utilizador desta fundação deverá ter pelos menos 2 anos de experiência em HTML e pelo menos 1 ano de experiência em CSS e JavaScipt. O utilizador deverá saber mesmo criar documentos com HTML semântico sem utilização de tabelas para o arranjo do sítio e escrever notação literal de objectos em JavaScript e ainda como criar classes e protótipos.

Roots tem as seguintes características:

  • Ficheiros HTML para serem incluídos de forma a ajudar a manter e organizar o seu sítio
  • Ficheiros CSS flexíveis incluindo:
    • CSS para arranjos mais habituais
    • CSS para vários estilos tipográficos
    • CSS para diferentes paletas de cor
    • Suporte para dispositivos com ecrã, impressão, portáteis e auditivos
  • Infraestruturas de Javascript incluindo: Prototype, Dojo, MochiKit, Mootools, Rico, Scriptaculous e Yahoo! UI Library.
  • Funções utilitáriazs em JavaScript, incluindo um auxiliar Ajax, o Encapsulated Load Object, suporte para PNGs em IE 5.5 & 6, um editor Ajax em linha, um auxiliar de criação de formulários e uma correcção para o problema Eolas "clicar para activar".

25 junho, 2007

Conhecimento - Não encontrado

Como eu sou um chato (quase troll ou tendências trollianas) quando me aparecem tais seres por aqui tenho a tendência para me colocar do lado deles e tolerar o facto, por vezes isso conduz a coisas interessantes como por exemplo a do lado.

22 junho, 2007

HTML - Futuro

Parece que a comunidade que desenvolve sítios para a web está finalmente a acordar e a ver o que é que o futuro virá a ser. Começam a aparecer as primeiras críticas estruturadas quer genéricas quer específicas sobre o (X)HTML5 e o XHTML 2.0.

As discussões quanto a mim mais importantes têm a haver com o que se está a esquecer ter aprendido sobre acessibilidade e a utilização (ou praticamente a sua ausência) de elementos e sobretudo atributos necessários a uma web semântica.

Embora Lee Bryant possa ter razão quanto à necessidade de alimentarmos a nossa mente e não propriamente a máquina, isso não significa que não se possa tirar partido de uma máquina bem alimentada de informação e não só de meros dados.

15 junho, 2007

As 15 regras de desenvolvimento de sítios na Web da BBC

No blog do Tom Loosemore encontra-se uma entrada chamada de "Os 15 princípios da BBC [para desenvolvimento] Web" [en].

Como os acho interessantes e como estão sobre a licença Atribuição-Uso Não-Comercial-Partilha nos termos da mesma licença 2.0 Reino Unido resolvi colocar aqui uma tradução algo livre.

  1. Contruir produtos web que vão ao encontro das necessidades das audiências: antecipar as necessidades ainda não totalmente articuladas pelas audiências e então ir ao encontro dessas necessidades com produtos que estabeleção novos padrões. (Roubado da Google)
  2. Os melhores sítios fazem uma coisa bem, realmente bem: faça menos, mas execute de forma perfeita. (Novamente retirado da Google, com uma pista do Jason Fried da 37signals)
  3. Não tente fazer tudo sozinho: ligue a outros sítios de elevada qualidade. Os seus utilizadores vão agradecer-lhe. Use os conteúdos e ferramentas das outras pessoas para melhorar o seu sítio e vice-versa.
  4. Se tiver que falhar falhe rapidamente: faça apostas pequenas, faça muitas iterações, guarde os sucessos, mate as falhas, rapidamente.
  5. Trate a totalidade da web como a sua paleta criativa: não restrinja a sua criatividade ao seu próprio sítio.
  6. A web é uma conversação. Participe: adopte um tom relaxado e em conversa. Admita os seus erros.
  7. Qualquer sítio é tão bom quanto a sua pior página: Assegure-se que os processos editoriais seguem sempre as melhores práticas adoptadas.
  8. Assegure-se que todo o seu conteúdo pode ser página de chegada, para sempre (isto é a que se pode sempre ligar).
  9. Lembre-se que a sua avó nunca irá usar o "Second Life": ela poderá ligar-se à rede, mas com diferentes necessidades do que aquelas que os pioneiros têm.
  10. Maximise as rotas para o conteúdo: Desenvolva tantas agregações de conteúdos sobre pessoas, locais, temas, canais, redes e tempo que lhe sejam possíveis. Optimize o seu sítio de modo a aparecer bem colocado no Google.
  11. Design e navegação consistentes não quer dizer que um tamanho serve para todos: Os utilizadores devem sempre saber que se encontram num dos seus sítios, mesmo que estes tenham uma aparência diferente. Mais importante que isso sabem que nunca se irão perder.
  12. A acessibilidade não é um extra opcional: os sítios concebidos dessa forma funcionam melhor para todos os utilizadores.
  13. Deixe que as pessoas copiem o seu conteúdo para as paredes das suas casas virtuais: encorage os utilizadores a tirarem as gemas do seu conteúdo com elas, com ligações de volta para o seu sítio.
  14. Ligue-se a discussões na web, não as hospede: só hospedar discussões baseadas na web onde tal faça claramente sentido.
  15. A personalização não deve criar obstáculos, deve ser elegante e transparente: Não se esqueça que os dados são dos seus utilizadores. É melhor respeitar isso.

14 junho, 2007

A List Apart 239

O A List Apart nº 239 saiu dia 12 de Junho. Neste número o primeiro artigo trata de infraestruturas para web designers (em compara as suas vantagens com as infraestruturas de programação em javascript). O segundo artigo é um artigo mais filosófico e que trata da importância e indispensabilidade dos seres humanos na produção de sítios web.

08 junho, 2007

SIOC - Guia do programador

SIOC ou Comunidades On-line Semanticamente Interligadas é uma infraestrutura cuja finalidade é interligar sítios on-line de comunidades e discussões baseadas na Internet.

Produzir dados SIOC

  • Há uma lista de correio "SIOC-Dev" para programadores nos Grupos do Google;
  • O vocabulário SIOC para termos de descrição semântica de discussão está disponível e pode ser combinado com outros vocabulários como FOAF, SKOS e Dublin Core;
  • Foi disponibilizada a API de PHP para SIOC de modo a poder produzir-se dados SIOC a partir de aplicações baseadas em PHP;
  • Pode escrever um exportador SIOC e ligar o seu sistema de discussão à Web com capacidades de metadados.

Usar Dados SIOC

  • Pode encontrar-se uma série de origens de dados SIOC na página de wiki SIOC "Enabled Sites", ou descarregando a lista de exportação a partir de PingtheSemanticWeb.com.
  • A SIOC e a linguagem de inquérito SPARQL desacoplam os consumidores de dados de discussão de detalhes particulares de um motor de blogue ou CMS;
  • Foram desenvolvidos um crawler e um navegador e está disponível código em open source a partir do repositório SIOC.
  • ;
  • Outras aplicações que usam dados SIOC são SemRadar, OpenLink Data Spaces e TalkDigger;
  • Pode criar os seus próprios navegadores SIOC ou outras aplicações a partir dos recursos acima mencionados.

Nota: ver originais em

SIOC - Guia de Utilizador final

Original em:http://sioc-project.org/

SIOC ou Comunidades On-line Semanticamente Interligadas é uma infraestrutura cuja finalidade é interligar sítios on-line de comunidades e discussões baseadas na Internet.

O que é que posso fazer?

  • Carregar um plugin exportador para o seu sítios de blogues - há plugins para WordPress, Drupal, DotClear, b2evolution e outros...
  • Adiconar um botão SIOC ao seu sítio!
  • Instalar o extra Semantic Radar ao Mozilla Firefox de modo a que voçê (e um serviço de ping) seja notificado se estiver em presença de dados SIOC;
  • Junte-se à comunidade e diga-nos como deseja usar a SIOC.

O que é que obtemos?

  • Mais visibilidade dos nossos sítios através de serviços que fazem uso de dados SIOC (crawlers, navegadores, aplicações de visualização);
  • Métodos melhorados para utilização de tagging e metadados semânticos;
  • Mais conhecimento sobre a estrutura de um sítio assim como dos seus conteúdos;
  • Mais ligações entre sítios que discutam tópicos complementares via esta "SIOC-o-esfera";
  • Respostas relevantes a perguntas em vez de resultados potencialmente correctos a partir de palavras chave, isto é "encontrar todas em entradas feitas por John e entradas feitas por alguém que as tenha comentado ou tenha ligado ao blogue do John (find me all blog posts by John and posts by anybody else who has commented on or linked to John's blog)"

SIOC - Sumário para Executivos

Comunidades on-line interligadas semanticamente (do inglês SIOC) é uma infraestrutura que tem por finalidade interligar sítios comunitários on-line e discussões baseadas na Internet. Actualmente as comunidades on-line são maioritariamente como ilhas, possuindo informção valiosa mas não muito bem ligada. A SIOC permite-nos interligar estes sítios, e permite-nos a extração de informação mais rica a partir de vários serviços de discussão.

http://sioc-project.org

Breviário SIOC

  • O cerne da SIOC é a ontologia. É um vocabulário que contem os conceitos necessários à expressão de informação contida em sítios comunitários on-line.
  • Então os sítios on-line comunitários fornecem informação sobre a sua estrutura e conteúdos ao mundo exterior. Esta informação é legível por máquina e estruturada usando a ontologia SIOC.
  • Visto a informação já estar presente nestes sítios, tudo o que é necessário é instalar um extra exportador SIOC como plug-in ou extensão.
  • Esta informação pode ser usada por ferramentas que compreendam dados SIOC para sugestão de informação relacionada a partir de outros sítios comunitários.

Usos actuais e futuros da SIOC

  • Criação de conversações distribuídas usando blogues, forúns e listas de correio;
  • Usar como formato melhorado de exportação/importação, com acesso seja ao conteúdo completo seja a sumários;
  • Permitir a publicação e subscrição de canais descentralizados de discussão e de comunidades descentralizadas.

05 junho, 2007

Método para determinação de OS em Ruby

Quando se quer saber em que plataforma estamos a correr uma aplicação ruby então podemos fazer algo do género:

def platforma
  $RUBY_PLATFORM ||=
    case RUBY_PLATFORM.downcase
      when /linux|bsd|solaris|hpux|darwin/
        :unix
      when /mswin32|mingw32|bccwin32/
        :windows
      when /cygwin/
        :cygwin
      when /java/
        :java
      else
        :outra
    end
end

p platforma

04 junho, 2007

Introdução à RDF

Isto é uma tradução do trabalho do Joshua

Introdução à RDF

Introdução breve à Resource Description Framework (RDF)

RDF é um método de expressão de conhecimento num mundo descentralizado e é uma das fundações da Web Semântica, na qual aplicações de computador utilizam informação distribuida e estruturada espalhada na Web. Só para informação prévia RDF não é estritamente um formato XML, e não é só metadados, tem pouco a haver com RSS e é menos complicado do que imagina.

Panorâmica

RDF é um método geral de decompor qualquer tipo de conhecimento em partes, com algumas regras sobre semântica ou significado dessas partes. O importante é ter um método tão simples que pode exprimir qualquer facto e contudo tão estruturado que uma aplicação de computador pode fazer coisas úteis com ele. Eis um pouco de RDF:

@prefix : <http://www.exemplo.org/> .
:joao    uma           :Pessoa .
:joao    :temMae     :susana .
:joao    :temPai       :ricardo .
:ricardo :temIrmao   :luis .

Se sabe XML, eis uma breve comparação. Tal como a RDF, XML também foi desenhada para ser simples e com utilização universal. A XML pode ser abstraída para além da notação de sinais de menor e maior que em algo mais abstracto, uma estrutura em árvore designada por DOM. De modo análogo RDF não é só o como se escreve. Trata-se de representação de informação em rede e em grafos. Pode escrever RDF em XML e muitas pessoas fazem-no. Nesse caso é similar a isto:

&tl;rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns:ns="http://www.exemplo.org/#">
  &tl;ns:Pessoa rdf:about="http://www.exemplo.org/#joao">
    &tl;ns:temMae rdf:resource="http://www.exemplo.org/#susana" />
    &tl;ns:temPai>
      &tl;rdf:Description rdf:about="http://www.exemplo.org/#ricardo">
        &tl;ns:temIrmao rdf:resource="http://www.exemplo.org/#luis" />
      &tl;/rdf:Description>
    &tl;/ns:temPai>
  &tl;/ns:Pessoa>
&tl;/rdf:RDF>

Mas no caso de não usar XML, eu não o uso, o primeiro formato designado por N3 é tão bom como a representação em XML.

O que distingue a RDF da XML é que a RDF foi concebida para representar conhecimento num mundo distribuido. Isto significa que a RDF está particularmente preocupada com significado. Tudo o que é mencionado em RDF significa algo, seja uma referência para algo de concreto no mundo, seja um conceito abstracto ou seja um facto. Normas concebidas sobre a RDF descrevem inferências lógicas entre factos e como pesquisar por factos em grandes bases de dados de conhecimentos em RDF.

O que torna a RDF adequada ao conhecimento distribuido é que as aplicações RDF podem unir ficheiros colocados por pessoas diferentes na Internet e aprenderem facilmente a partir deles coisas novas que nenhum documento por si só afirme. Fá-lo de duas maneiras, primeiro associando os documentos através do vocabulário comum usado e em segundo lugar permitindo a qualquer documento usar qualquer vocabulário. Esta flexibilidade é única para a RDF.

Tenha em conta este segundo documento de RDF:

@prefix : <http://www.exemplo.org/> .
:ricardo :temIrma :rebeca
{ ?a :temPai ?b . ?b :temIrma ?c . } => { ?a :temTia ?c } .

Este documento RDF define o que significa ser tia, em termos de duas outras relações. Pode imaginar uma aplicação que coloque este documento em conjunto com o primeiro documento RDF para determinar que :rebeca é tia de :joao. O que faz isto funcionar é os nomes das entidades serem globais. Assim quando :joao e :temPai são usados num documento, as aplicações podem presumir que têm o mesmo significado noutro documento RDF com o mesmo @prefix.

Então porque usar RDF? Eis casos de utilização como descritos por Richard Cyganiak na lista de correio da Web Semântica do W3C:

  • Deseja integrar dados de origens diferentes sem programação à medida;
  • Deseja providenciar dados para reutilização por outras entidades;
  • Deseja descentralizar os dados de modo a que nenhuma parte seja "dona" de todos os dados;
  • Deseja fazer algo interessante com grandes quantidades de dados (navegar, inquirir, fazer corresponder, inserir e extrair...), e assim desenvolve (ou reutiliza) uma ferramenta genérica que permite que se instale sobre um modelo de dados RDF (com a vantagem de não ficar preso a uma tecnologia de armazenamento/representação de dados tal como um dialecto de base de dados).

Definição de RDF

RDF pode ser definido com três regras simples:

  1. Um facto é expresso como um tripleto na forma de (Assunto, Predicado, Objecto). Como numa frase em linguagem natural.
  2. Assunto, predicado e objectos são nomes de entidades quer concretas quer abstractas no mundo real. Nomes são 1) globais e referem-se à mesma entidade em qualquer documento RDF em que apareçam ou 2) locais e a entidade a que se referem não pode ser referida directamente fora do documento RDF.
  3. Os objectos podem ser valores textuais, designados por valores literais.

Já viu factos. Cada linha abaixo era um facto:

:joao    a           :Pessoa .
:joao    :temMae  :susana .
  ...

Os nomes podem ter dois tipos, nomes glonais, os quais têm o mesmo significado em qualquer lado, são sempre Uniform Resource Identifiers (URI). As URI podem ter a mesma sintaxe ou formato dos endereços de um sítio na web, assim irá ver ficheiros RDF que contém URI semelhantes a http://www.w3.org/1999/02/22-rdf-syntax-ns#tipo, onde a URI é um nome global de alguma entidade. O facto de parecer um endereço web é incidental. Pode ou não haver um sítio web nesse endereço e tal não é importante. Há outros tipos de uri para além do tipo http. As URN são um subtipo de URI usadas para coisas como a identificação de livros pelo seu ISBN, isto é urn:isbn:0143934650. As TAG são um tipo de URI de utilização genérica. Elas são semelhantes a tag:govtrack.us,2005:congress/senators/first. As URI são usadas como nomes globais porque dão um modo de repartir o espaço de todos os nomes possíveis em unidades que têm proprietários óbvios. Uma URI começada por http://www.rdfabout.net/ é implicitamente controlada por Joshua Tauberer.

É importante e é necessário repetir: independentemente da forma as URI que vê em documentos RDF são meramente nomes algo verbosos para entidades nada mais. Esqueça que tenham algo a haver com a web.

Visto as URI poderem ser extensas, em várias notações RDF é normalmente possível abreviar as mesmas usando o conceito de espaços de nomeação da XML. É aí que entram os dois pontos em: :joao, :temMae, e outras entidades no exemplo. Os dois ponto indicam o nome na sua forma abreviada. No casos os nomes seriam http://www.exemplo.org/#joao, http://www.exemplo.org/#temMae.

Quando escritas as URI são normalmente envolvidas em sinais de menor e maior que para as distinguir das formas abreviadas usando espaços de nomeação.

Os valores literais permitem que texto possa ser incluido em RDF. Isto é particularmente usado quando a RDF é usada para metadados:

&tl;http://www.rdfabout.net/> a :Website .
&tl;http://www.rdfabout.net/> dc:title "rdf:about" .
&tl;http://www.rdfabout.net/> dc:description "A website about
 Resource Description Framework." .

E isto é basicamente RDF.

RDF como Grafo

Há dois modos complementares de vermos a informação RDF. O primeiro é um conjunto de afirmações como acima. Cada afirmação representa um facto. O segundo modo é como grafo.

Um grafo é basicamente uma rede. Os grafos consistem nos nodos ligados por arestas. Na internet, por exemplo, os nodos são os computadores e as arestas são os fios que os ligam. Em RDF os nós são os nomes (não as entidades de facto) e as arestas as afirmações. Eis um exemplo:

Cada seta ou aresta é uma afirmação RDF. O nome do início da seta é o assunto da afirmação, o nome no final da seta é o objecto da afirmação e o nome nas legendas da seta é o predicado. RDF como grafo exprime exactamente a mesma informação de RDF escrita como tripletos, mas o grafo torna mais fácil a nós humanos para ver a estrutura nos dados.

Exemplo rápido

Assim como é que a RDF é útil? É a tecnologia para a tarefa em mãos quando quer criar uma rede a partir de informação distribuida.

Eis um cenário onde a informação distribuida faz sentido: uma base de dados de produtos de vários fornecedores e críticas a esses produtos a partir de vários críticos. Nenhum fornecedor irá querer a responsabilidade de manutenção de uma base de dados central para este projecto, em especial podendo conter informação sobre produtos concorrentes e críticas muito negativas. Também nenhum crítico terá recursos para manter tal base de dados actualizada.

RDF é particularmente adequada para este projecto. Cada fornecedor e crítico poderá publicar um ficheiro em RDF no seu próprio sítio web. Os fornecedores irão escolher as URI dos seus produtos, e os críticos irão usar essas URI quando façam as suas críticas. Os fornecedores não necessitam de concordar com um esquema comum de nomeação de produtos e os críticos não estão presos a um formato de dados controlado por um fornecedor. A RDF permite que fornecedores e críticos concordem com aquilo que necessitem de concordam ser forçar ninguém a usar determinado vocabulário.

Eis os ficheiros RDF que publicam:

  
Fornecedor 1:
Fornecedor1:produtoX dc:title "Cool-O-Matic" .
Fornecedor1:produtoX prvp:preco "50.75" .
Fornecedor1:produtoX Fornecedor1:refno "TTK583" .
Fornecedor1:produtoY dc:title "Fluffertron" .
Fornecedor1:produtoY prvp:preco "26.50" .
Fornecedor1:produtoY Fornecedor1:refno "AAL132" .

Fornecedor 2:
Fornecedor2:produto1  dc:title "Fechador de Latas" .
Fornecedor2:produto2  dc:title "Espalhador de pó" .

Critico 1:
Fornecedor1:produtoX dc:description "Este produto é bom!" .

Critico 2:
Fornecedor2:produto2  dc:description  "Quem necessita de algo para espalhar o pó? 
                                  Algo que apanhe o pó seria melhor
                                  e gostaria que indicassem o preço." .
Fornecedor2:produto2  critica:classificacao   critica: Excelente .

É uma questão em aberto como é que uma aplicação irá recuperar estes ficheiros, mas foi deixar isso de lado. Uma vez a aplicação tendo estes ficheiros, tem informação suficiente para relacionar produtos às críticas aos preços e mesmo a informação específica do fornecedor como Fornecedor1:refno. O que deve tomar deste exemplo é a ausência de contrangimentos da RDF, continuando esta a permitir às aplicações a capacidade de relacionamento imediato da informação em conjunto.

Os fornecedores e críticos não têm que concordam com muito para fazer isto funcionar. Têm que concordar em usar RDF, mas não têm que concordam com formato específico de dados ou mesmo URI específicas. Crucialmente não têm que enumerar tudo o que cada fornecedor deseja incluir sobre os seus produtos e não podem bloquear os críticos na colocação de informação relacionada.

Outro modo de ver isto é de um ponto de vista de interoperabilidade. O formato do Fornecedor 1 é inteiramente interoperável com qualquer formato dos restantes intervenientes embora o Fornecedor 1 tenha um formato que não seja comum com mais ninguém. Quando alguém aparece e deseja ser interoperável com a informação do Fornecedor 1 não necessita de um novo formato mas sim de escolher o assunto, predicado e objecto correctos.

Conclusão

Se julgava a RDF complicada espero ter-lhe mostrado que tal não é necessáriamente o caso. A RDF é fácil de escrever, flexível e sem constrangimentos. É fácil modelar conhecimento e misturar origens de conhecimento distribuídas.

03 junho, 2007

Hackety hack

Hackety hack é um projecto de Why the lucky stiff para se poder aprender a programar (já agora em ruby). Na primeira lição vamos descobrindo como programar. Como interagir com o utilizador (para lhe pedir algo e para lhe indicar algo). O sumário da lição é apresentado no seu final.

Na primeira lição aprende-se o seguinte:

  • Comandos fazem coisas tal como os cães fazem coisas;
  • Variáveis guardamcoisas;
  • Cria-se uma variável com um sinal de igual. É assim que a Ruby sabe -- através desse sinal de igual!
  • Os comandos pertencem à coisa do lado esquerdo do ponto;
  • Os comandos comem coisas entre parêntesis como se fossem biscoitos;