Classe V: Educação à distância com Videoconferência no Moodle
Web Semântica e bancos de dados NoSQL
1. Web Semântica
e bancos de dados
NoSQL
Otávio Calaça Xavier
otaviocx@gmail.com
Goiânia, 01 de Dezembro de 2012
2. Grupo de Desenvolvedores
PHP de Goiás
www.gophp.org.br
Criado em dezembro de 2007;
Lista de Discussão:
− Mais de 650 membros.
Projetos:
− Encontros mensais;
− Softwares Livres em PHP;
− Networking.
Eventos:
• FLISOL, FGSL, Latinoware, Conisli, CONSOFT, PHP
Conference Brasil, FISL …
Precisamos de Colaboradores!!!
3. Web Semântica e Bancos de Dados NoSQL
Roteiro
• O que é a Web Semântica?
– Web 1.0 e Web 2.0
– O Problema
– A Solução (Web 3.0)
• Como garantir Semântica na Web?
– Estrutura, Identificação e Definição
– O RDF, Ontologias e SPARQL
– RDFa e Micro formatos
• Quem já está usando?
• Bancos de Dados Orientados a Grafos
– Neo4J
– Relação com a Web Semântica
3
4. Web Semântica e Bancos de Dados NoSQL
O que é a Web Semântica?
• Web 1.0
– Documentos ligados por Hyperlinks pela
Internet;
– Sites pessoais, institucionais e
informativos;
– Preocupação com o conteúdo e as
referências, não com a interface.
4
5. Web Semântica e Bancos de Dados NoSQL
O que é a Web Semântica?
• Web 2.0
– O Ajax virou tendência;
– Conteúdo em multimídia;
– Compartilhamento de fotos e vídeos;
– Redes Sociais;
– Wikis;
– Colaborativismo e interatividade.
5
6. Web Semântica e Bancos de Dados NoSQL
O que é a Web Semântica?
• O problema:
– A Web é baseada no HTML;
– O HTML define a estrutura, ou sintaxe, do
conteúdo;
– Mas e a semântica?
6
7. Web Semântica e Bancos de Dados NoSQL
O que é a Web Semântica?
Web 1.0 Web 2.0 Web 3.0
Web Sintática; Web Social; Web Semântica;
7
8. Web Semântica e Bancos de Dados NoSQL
O que é a Web Semântica?
• A Web 3.0
– Se os computadores conseguirem
interpretar o significado do conteúdo,
serão capazes de “entender” a informação;
informação = dados contextualizados
– Buscas mais eficazes e inteligentes;
– O resultado passa a ser a informação e
não um suposto local para encontrá-la
8
9. Web Semântica e Bancos de Dados NoSQL
O que é a Web Semântica?
“Eu tenho um sonho para a Web [em que os
computadores] irão tornar-se capazes de analisar
todos os dados na rede – o conteúdo, links e
transações entre pessoas e computadores. A 'Web
Semântica', que tornará isto possível, ainda não
surgiu, mas quando isso acontecer, o dia a dia dos
mecanismos de comércio, a burocracia e as nossas
vidas diárias serão manipulados por máquinas
falando com outras máquinas.”
Tim Berners-Lee em 1999
9
10. Web Semântica e Bancos de Dados NoSQL
Como garantir semântica na
Web?
• De cima para baixo:
– Análise da informação;
– Processamento de linguagem natural;
– Alta complexidade e possíveis falhas;
10
11. Web Semântica e Bancos de Dados NoSQL
Como garantir semântica na
Web?
• De baixo para cima:
– Encapsular semântica no conteúdo da
Web;
– Descrevendo cada coisa;
– Relacionando coisas;
– Descrevendo relacionamentos.
11
12. Web Semântica e Bancos de Dados NoSQL
Como interpretar o significado
dos dados?
• Identificação (URIs)
• Definição (Ontologias em OWL)
• Estrutura (RDF e RDFS ou Microformatos)
• Consultas (SPARQL)
• Interpretação (Agentes de Software)
12
13. Web Semântica e Bancos de Dados NoSQL
Como interpretar o significado dos
dados?
• Identificação
– Cada coisa, recurso ou conceito deve ter um
identificador único
• São usadas URIs
• Exemplo:
– Laranja1: http://www.exemplo.com/cor/laranja
– Laranja2: http://www.exemplo.com/fruta/laranja
• Padrões:
– ISBN: Livros
– ISMN: Musicas
– CPF: Pessoas Brasileiras
13
14. Web Semântica e Bancos de Dados NoSQL
Como interpretar o significado dos
dados?
• Definição
– Ontologias
• Define e descreve coisas, conceitos,
recursos, propriedades e relacionamentos;
• Exemplo:
– Laranja1 é uma Cor
– Laranja2 é um tipo de Fruta
– Fruta é uma Coisa Comestível
– Uma Cor nunca poderá ser uma Coisa
Comestível
14
15. Web Semântica e Bancos de Dados NoSQL
Como interpretar o significado dos
dados?
• Definição
– Ontologias
• Exemplo:
– Propriedades de Coisa Comestível:
» Sazonal – Sim/Não
» Calorias – # (número)
» Ingredientes (opcional) – outra Coisa
Comestível
15
16. Web Semântica e Bancos de Dados NoSQL
Como interpretar o significado dos
dados?
• Definição
– OWL: Ontology Web Language
<rdf:RDF xmlns:owl =http://www.w3.org/2002/07/owl#"
xmlns:rdf ="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:xsd ="http://www.w3.org/2001/XMLSchema#">
<owl:Ontology rdf:about="">
<rdfs:comment>An example OWL ontology</rdfs:comment>
<owl:priorVersion
rdf:resource="http://www.mydomain.org/uni-ns-old"/>
<owl:imports
rdf:resource="http://www.mydomain.org/persons"/>
<rdfs:label>University Ontology</rdfs:label>
</owl:Ontology> 16
17. Web Semântica e Bancos de Dados NoSQL
Como interpretar o significado dos
dados?
• Estrutura
– RDF: Resource Description Framework;
• Padrão W3C para descrever recursos Web;
• Identifica coisas através de URIs;
• Várias implementações;
• Triples: Formadas por 3 elementos:
sujeito+predicado+objeto
17
18. Web Semântica e Bancos de Dados NoSQL
Desenhar é sempre bom...
Sujeito
Predicado
Objeto
18
19. Web Semântica e Bancos de Dados NoSQL
Desenhar é sempre bom...
Coisa Comestível
SubClassOf
Fruta TypeOf
TypeOf Suco de Laranja
Laranja2 IngredientOf
19
20. Web Semântica e Bancos de Dados NoSQL
Desenhar é sempre bom...
Cor Coisa Comestível
IsA SubClassOf
Fruta TypeOf
Laranja1
TypeOf Suco de Laranja
Laranja2 IngredientOf
ColorOf
20
21. Web Semântica e Bancos de Dados NoSQL
Como Interpretar o significado dos
dados?
Estrutura:
@prefix : <http://www.exemplo.com/ontologias#>.
@prefix f: <http://www.exemplo.com/ontologias/frutos#>.
@prefix c: <http://www.exemplo.com/ontologias/cores#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
:SucoDeLaranja :hasIngredient f:laranja.
f:laranja rdf:type :Fruto.
f:laranja :hasColor c:laranja.
f:laranjaTerra rdf:type f:laranja.
Triplas RDF
21
22. Web Semântica e Bancos de Dados NoSQL
Implementando semântica na
WEB
• RDFa: RDF nos atributos das tags XHTML;
<div xmlns:dc="http://purl.org/dc/elements/1.1/"
about="http://www.example.com/books/wikinomics">
<span property="dc:title">Wikinomics</span>
<span property="dc:creator">Don Tapscott</span>
<span property="dc:date">2006-10-01</span>
</div>
• Aplicação de Ontologias
– FOAF: Friend of a Friend;
– SIOC: Semantically-Interlinked Online Communities.
22
23. Web Semântica e Bancos de Dados NoSQL
Como interpretar o significado dos
dados?
• Consulta
– SPARQL: Simple Protocol and RDF Query
Language
PREFIX abc: <http://example.com/exampleOntology#>
SELECT ?capital ?country
WHERE {
?x abc:cityname ?capital ;
abc:isCapitalOf ?y .
?y abc:countryname ?country ;
abc:isInContinent abc:Africa .
}
23
24. Web Semântica e Bancos de Dados NoSQL
Quem já está usando?
24
25. Web Semântica e Bancos de Dados NoSQL
Quem já está usando?
25
26. Web Semântica e Bancos de Dados NoSQL
Quem já está usando?
• The Wall Street Journal
26
27. Web Semântica e Bancos de Dados NoSQL
Quem já está usando?
27
28. Web Semântica e Bancos de Dados NoSQL
Quem já está usando?
28
29. Web Semântica e Bancos de Dados NoSQL
Quem já está usando?
29
30. Web Semântica e Bancos de Dados NoSQL
Quem já está usando?
30
31. Web Semântica e Bancos de Dados NoSQL
Quem já está usando?
31
32. Web Semântica e Bancos de Dados NoSQL
Quem já está usando?
32
33. Web Semântica e Bancos de Dados NoSQL
Bancos de Dados Orientados a Grafos
• Um grafo contem nós
e arestas
(relacionamentos);
• Cada nó e cada
aresta pode conter
propriedades;
• Um nó de um grafo
pode representar uma
aresta em outro.
33
34. Web Semântica e Bancos de Dados NoSQL
Bancos de Dados Orientados a Grafos
• As consultas são
realizadas através de
Traversals
(Passagens);
• Cada Traversal
expressa um
algorítimo que
identifica um caminho
para navegação em
um grafo.
34
35. Web Semântica e Bancos de Dados NoSQL
Bancos de Dados Orientados a Grafos
• Índices podem fazer
mapeamentos de
arestas e nós a partir
de determinada
propriedade;
• Tornam consultas por
propriedades mais
fáceis.
35
37. Web Semântica e Bancos de Dados NoSQL
Neo4j
• Banco de Dados Orientado a Grafos;
• Desenvolvido em Java;
• Possui uma API REST;
• Possui mais semântica nos
relacionamentos que um banco de dados
relacional;
• Escalável.
37
39. Web Semântica e Bancos de Dados NoSQL
Neo4j
• Consegue representar toda a semântica
da Web 3.0;
• Triplas RDF podem ser facilmente
colocadas em forma de grafos e
persistidas no Neo4J;
• É possível realizar consultas SPARQL.
39
40. Web Semântica e Bancos de Dados NoSQL
Neo4j
• Exemplo:
// Cria um db orientado a grafos
graphDb = new EmbeddedGraphDatabase("var/flights");
indexService = new LuceneIndexService(graphDb);
// Cria um store de triplas RDF
rdfStore = new VerboseQuadStore(graphDb, indexService);
// Cria um objeto para interface SAIL (Storage and Inference Layer)
sail = new GraphDatabaseSail(graphDb, rdfStore);
sail.initialize();
// Pega a conexão do repositorio SAIL
connection = new SailRepository(sail).getConnection();
SAIL é como o JDBC de bancos de dados que usam RDF
40
41. Web Semântica e Bancos de Dados NoSQL
Neo4j
• Exemplo:
// Importando uma estrutura em RDF
connection.add(getResource("sneeair.rdf"), null, RDFFormat.RDFXML, new
Resource[]{});
// Construção de uma consulta
TupleQuery durationquery =
connection.prepareTupleQuery(QueryLanguage.SPARQL,
"PREFIX io: <http://www.daml.org/2001/06/itinerary/itinerary-ont#> " +
"PREFIX fl: <http://www.snee.com/ns/flights#> " +
"SELECT ?number ?departure ?destination " +
"WHERE { " +
"?flight io:flight ?number . " +
"?flight fl:flightFromCityName ?departure . " +
"?flight fl:flightToCityName ?destination . " +
"?flight io:duration "1:35" . " +
"}");
Número do voo, partida e cidade de destino de todos os 41
voos com duração de 1 hora e 35 minutos.
42. Web Semântica e Bancos de Dados NoSQL
Neo4j
• Exemplo:
// Executa a consulta e imprime os valores resultantes
TupleQueryResult result = durationquery.evaluate();
while (result.hasNext()) {
BindingSet binding = result.next();
System.out.println(binding.getBinding("number").getValue() + " " +
binding.getBinding("departure").getValue() + " " +
binding.getBinding("destination").getValue());
}
42
43. Web Semântica e Bancos de Dados NoSQL
Referências
• Web 3.0: The Semântic Web
– por Hatem Mahmoud
• There's no Semantic Web without content and data
– por Rachel Lovinger
• The SPARQL Specification
– http://www.w3.org/TR/rdf-sparql-query/
• Ontology Languages
– por F. Corno e L. Farinetti
• Neo4j Documentation
– http://docs.neo4j.org 43
44. Web Semântica e Bancos de Dados NoSQL
FIM
Perguntas?
Otávio Calaça Xavier
otaviocx@gmail.com
@otaviocx
Obrigado!
44