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