Web Semântica, por onde começar?

Algumas das perguntas mais comuns que me fazem são:

Li sobre o conceito achei bem legal, como faço pra usar? Por onde começar? Renan, semântica é complicado mesmo? Sou de produto, como aprendo algo não muito técnico sobre o tema?

Sempre respondo com alguns livros e algumas apresentações sobre o tema, como sempre passava algo bem parecido para as pessoas decidi compilar o que eu mais recomendo em um post. Vale um lembrete a maioria dos livros, artigos e slides recomendados estão em inglês.

Esse post não visa mostrar o mais avançado sobre o tema.

Para começar

Ouvi falar sobre o tema mas, o que é isso?

Recomendo que assista ao TED Talk com o Tim Berners-Lee, ele explica bem os conceitos e o por que do uso da web semântica.

Vídeo em inglês, versão legendada:

Tenho uma apresentação introdutória sobre o tema, que foi apresentado na UFRJ, aproveitando uma ótima apresentação feita pelo @fcarolo. Essa apresentação mostra uma visão geral do uso, dos problemas que a falta de uso gera e mostra um pouco do case que da globo.com.

Link: Introdução a web semântica e o case da globo.com

Recomendo, o A Semantic Web Primer como livro introdutório ao tema, ele mostra bem os conceitos inicias com uma linguagens mais fácil, mas evolui sobre o tema não sendo uma leitura cansativa. Não encontrei ele a venda no Brasil, link para a Amazon.

A semantic web primer


Para quem já conhece mais sobre o tema

Nesse ponto começa a se separar as coisas, acredito que nesse ponto temos uma divisão clara que são desenvolvedores e área de produto, vou buscar atender aos dois pontos, mesmo conhecendo muito mais sobre o primeiro grupo.

Desenvolvedores:

Na minha visão o melhor livro que aborda o tema para desenvolvedores é o Semantic Web Programming, nele temos uma boa introdução, bons conceitos e exemplos de uso de Ontologias e Banco de Dados de Triplas (graph db), esse livro começa de forma introdutória e termina em um nível avançado mostrando Rules em Sparql e alguns conceitos avançados de Ontologia, link para a Amazon.

Caso queria aprender SPARQL, eu recomendo que primeiro leia a apresentação da Cambridge Semantics, foi com ela que eu aprendi o que sei, ela é muito boa mostra com exemplos práticos e tem exercícios:

SPARQL by Example: www.cambridgesemantics.com/pt/semantic-university/sparql-by-example

Para quem deseja ir além e aprender mais sobre os conceitos por trás dos banco de dados de triplas, e como funciona o sparql por dentro e como otimizar queries, recomendo o Learning SPARQL, link para Amazon.

Sobre ontologia há uma gama de livros, o livro que acho mais de didático e coerente com o que pode ser feito no momento com Web Semântica é o Web Semantic for the Working Ontologist, esse livro em alguns pontos para o final se torna uma leitura densa e cansativa, mas recomendo fortemente pois ele é muito esclarecedor e tira vários mitos sobre o tema, link para Amazon.

Produto:

Li poucos livros sobre o tema, na verdade recomendo apenas um, espero comentários com boas dicas de livros voltado para o público:

Recomendo o Pull: The Power of the Semantic Web to Transform Your Business, link para Amazon.

O autor David Siegel, fez uma ótima apresentação sobre os temas abordados no livro:

Espero que com essas dicas vocês tirem as suas dúvidas e melhorem os seus produtos.

Caso tenham alguma dúvida ou alguma outras recomendações, podem comentar ou me enviar emails.

Obrigado.

SPARQL – Parte III – Inserindo e apagando triplas (Insert e delete de triplas)

Amigos,

Fechando as queries básicas sobre SPARQL, faltou mencionar o INSERT e DELETE de triplas.
Os exemplos abaixo não poderão ser feito em um endpoint externo como a DBPedia (pelo menos não deveria ser possível), pois para tal é necessário a permissão de UPDATE no usuário.

INSERT, como inserir triplas no Virtuoso ?

O insert no virtuoso é simples, basta informar o grafo e a tripla a ser inserida.
Pode ser adicionada mais de uma tripla por query de insert.

INSERT data INTO <grafo> {
<sujeitoDaTripla> <predicadoDaTripl> <objetoDaTripla> .
}

DELETE, como apagar triplas no Virtuoso ?

O delete no virtuoso, lembra muito o conceito das consultas,
ele deleta o resultado das consultas, isso possibilita um delete mais avançado.
Você não precisa explicitar toda a tripla a ser deletada, você pode passar uma variável.

Apagando uma única tripla:

### Apagando tripla, informando: sujeito, predicado e objeto.
delete from <grafo> {
<sujeitoDaTripla> <predicadoDaTripl> <objetoDaTripla> .
}
where {
<sujeitoDaTripla> <predicadoDaTripl> <objetoDaTripla> .
}

Apagando múltiplas triplas dado um indivíduo:

### Apagando todas as triplas dado o sujeito.
delete from <grafo> {
<sujeitoDaTripla> ?p ?o .
}
where {
<sujeitoDaTripla2> ?p ?o .
}

Como definir ao usuário permissão de insert e delete (UPDATE) no ambiente local

Para os dois modos o virtuoso deverá esta inicializado.

Passo-a-passo utilizando o Conductor, interface administrativa do Virtuoso:

Endereço do Conductor (por default): http://localhost:8890/conductor/
Usuário administrador e senha (por default): DBA/DBA

Acesse o Conductor >
Acesse o System Admin >
Selecione a opção User Accounts >
(Selecione qual usuário deseja alterar a permissão, lembrando que o usuário do endpoint e do request HTTP, por default é SPARQL) > Edit >
Em Account Roles selecione SPARQL_UPDATE e clique no “>>” >
Save.

Passo-a-passo utilizando o iSQL do Virtuoso

Ps.: Paths padrões da instalação no Mac OS X Snow Leonard
Path do iSQL: /usr/local/virtuoso-opensource/bin
Inicialize o iSQL: ./isql

Execute o comando:

GRANT SPARQL_UPDATE TO "XXXXX";

### Substitua o XXXXX pelo nome do usuário por exemplo SPARQL.

Encerro nesse post as consultas básicas utilizando SPARQL. Nos próximos post irei falar um pouco mais sobre Ontologias (RDF/OWL).

Abraços.

Boa noite.

Renan Oliveira

Como melhorar meu resultado de busca usando RDFa ?

Anotação semântica

“Esquema específico para geração e uso de metadados, possibilitando novos métodos de acesso a informação”

Kyriakov, 2003

Nós vivemos procurando formas de melhorar nosso SEO (Search Engine Optimization) para que isso reverta em visitas aos nossos sites,  já algum tempo conheço o RDFa (RDF annotations) que é  uma proposta da W3c para organizar e melhorar o que está escrito em XHTML (Combinando as tags de marcação HTML com regras da XML), deste tempo para cá Google, Yahoo! (leia Search Monkey) aproveitam dessa melhor organização e de novos dados inseridos no XHTML para melhorar a apresentação dos resultados de Busca e melhorando assim o seu ranking já que tal informação está mais clara e objetiva e bem organizada.

Como o google usa o RDFa nos resultados de busca ?

O Google utiliza como padrão para Rich Snippets: RDFa e Microformats.

O Rich Snippets são aqueles resultados diferenciados com Reviews (stars), Events e etc.

Tanto o RDFa quanto o Microformats para o google não faz diferença, ainda. Eu particularmente prefiro o RDFa pois é mantido pelo pessoal da W3 Semantic Web Group.

Exemplos de uso em filmes (IMDb):

O próprio Google da dicas de como usa, segue os links:

Como marcar conteúdo usando RDFa:
http://www.google.com/support/webmasters/bin/answer.py?hl=br&answer=146898

Introducing Rich Snippets: http://googlewebmastercentral.blogspot.com/2009/05/introducing-rich-snippets.html

E agora, o Yahoo! usa o RDFa nos resultados de busca ?

Originalmente, a mesma anotação em RDFa será apresentada de forma parecida tanto no Google, quanto no Yahoo! sendo que no Yahoo a aplicação é um pouco mais vasta como pode ser vista nos links abaixo.

O Yahoo! (Search Monkey) participa de um excelente projeto para organizar os dados com Web Semântica (RDFa), o Projeto Commom Tag.

Exemplos de uso em Eventos:

Excelente explicação de como o Yahoo! captura e utiliza os dados em RDFa, além um ótimo tutorial:

http://developer.search.yahoo.com/start

E como usar essa anotações no Meu Blog? Use o  Zemanta

tumblr_likassvLLQ1qz5svjo1_500

 

O Projeto Zemanta começou como um Plugin para o Firefox e com o passar do tempo se tornou um Plugin para Blogs e hoje já é recomendado inclusive pelo WordPress, veja o post.

O Zemanta, funciona com um plugin que sugere notícias relacionadas, links , fotos e tags para organizar o seu conteúdo.  Nessas tags que moram a grande sacada do Zemanta, ele escreve essas informação em RDFa.

Nesse post e nos futuros pretendo continuar usando o Zemanta para anotar os meus conteúdos, falo isso pois a Semantic Web continua crescendo de forma exponencial e poderá surgir um melhor “anotador” , por agora estou muito satisfeito com o uso do mesmo. Você pode ver aqui quais informações o Zemanta nos sugere, Exemplos de Uso.

Existem projetos, bem interessantes, que utilizam o RDFa como padrão:
Facebook – http://rdfa.info/2010/04/22/facebook-adopts-rdfa/
Best Buy – http://www.readwriteweb.com/archives/how_best_buy_is_using_the_semantic_web.php
Newsweek… Drupal….O’relly..

Caso queira saber mais informações, recomendo esses links:

http://www.slideshare.net/lzomatos/anotao-semntica-de-contedo-web-utilizando-microformatos-e-rdfa (PT-Br)

http://www.w3.org/TR/xhtml-rdfa-primer/ (Inglês)

http://www.alistapart.com/articles/introduction-to-rdfa/ (Inglês)

http://ilrt.org/discovery/2001/04/annotations/ (Inglês)

RDFa Basics

Afinal, o que é Web Semântica ?

Pessoal,

Esse é o meu primeiro post,  acho justo me apresentar sou Renan Oliveira, Analista de Sistemas/Developer no time de Busca & Semântica da globo.com, mais informações sobre mim vocês podem ver no sobre. Vou focar o blog na área de tecnologia e principalmente no que mais estudo, ferramentas de Busca e Web Semântica na sua amplitude (ontologia, sparql…).

Vamos ao que interessa. Para responder a pergunta do Post, vou seguir um caminho das pedras.

Qual a proposta da Web Semântica?

É estender os princípios da web dos documentos para os dados. Os dados podem ser acessados usando a arquitetura Web (URI, por ex.), e estar relacionados uns com os outros da mesma forma que os documentos já são. Isso também significa criar uma plataforma comum que permita o compartilhamento e a reutilização dos dados por meio das fronteiras das aplicações, empresas e comunidades, podendo ser processados automaticamente tanto por ferramentas quanto manualmente, também revelando novos relacionamentos possíveis entre porções de dados. Fonte: http://www.w3.org/2001/sw/SW-FAQ#swgoals

Segundo Berners-Lee et alii (2001), a web semântica será uma extensão porém apresentará estrutura que possibilitará a compreensão e o gerenciamento dos conteúdos armazenados na web independente da forma em que estes se apresentem, seja texto, som, imagem e gráficos à partir da valoração semântica desses conteúdos, e através de agentes que serão programas coletores de conteúdo advindos de fontes diversas capazes de processar as informações e permutar resultados com outros programas da web atual.

Isso é, o dados começa a um significado real e não apenas uma abstração compreendida pelo computador.

Se eu quiser fazer uma busca

“Roberto Carlos no maracanã acerta a trave”

na web ela irá ler os dados da frase de forma separada, sem ter um significado associado a ele,  ele não conseguirá saber se foi o cantor Roberto Carlos, se foi em jogo de futebol ou em show no estádio do maracanã, como podemos resolver isso.

Anotando na hora da criação de um conteúdo que ele se Referencia ao jogador Roberto Carlos, ao Estádio do Maracanã e que acertar a trave foi durante um jogo de futebol.

Quem utiliza?

Isso parece ser muito bom, mas que verdadeiramente usa isso, é tão novo que ninguém usa?

Para citar dois, gigantes, veículos de comunicação que utilizam:

BBC – Talvez seja quem use com maior capacidade na área de conteúdo, no link da bbc você encontra todos os posts sobre o desenvolvimento da WS na bbc, para resumir eles utilizam a Linked Open Data, que  será um tópico no futuro do blog, para construir páginas de entretenimento (musica e programas) aproveitando os dados como descrição, discografia, etc.  imagine o quanto de trabalho foi economizado e quanto esse dado ganhou relevância após o uso já que essa informação foi pega de uma fonte segura.

New York Times – Eles publicaram mais de 10.000 publicações na Linked Open Data, disponibilizando um histórico de matérias anotadas semanticamente para futuras consultas, ainda disponibilizaram uma API e agregaram conhecimento a DBPEDIA, que também será um tópico no futuro.

O tópico é extenso propus apenas começar a conversa, com o passar do tempo irei mostrado novidades da área, tecnologias que utilizamos, ontologias, consultas SPARQL, Virtuoso OpenLink e há muito à descobrir.

Links interessantes:

http://semanticweb.org/wiki/Main_Page

http://www.w3.org/2001/sw/SW-FAQ

http://www.semanticweb.com/

Abraços, Renan Oliveira.