Download - Web Semântica e bancos de dados NoSQL
Web Semânticae bancos de dados
NoSQL
Goiânia, 01 de Dezembro de 2012
Otávio Calaça Xavier
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!!!
Grupo de Desenvolvedores PHP de Goiás
www.gophp.org.br
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
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.
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.
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?
7
Web Semântica e Bancos de Dados NoSQL
O que é a Web Semântica?Web 1.0
Web Sintática;
Web 2.0
Web Social;
Web 3.0
Web Semântica;
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
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
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;
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.
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)
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
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
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
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>
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
18
Web Semântica e Bancos de Dados NoSQL
Desenhar é sempre bom...
Sujeito
Objeto
Predicado
19
Web Semântica e Bancos de Dados NoSQL
Desenhar é sempre bom...
Laranja2
Coisa Comestível
Fruta
SubClassOf
TypeOf Suco de Laranja
TypeOf
IngredientOf
20
Web Semântica e Bancos de Dados NoSQL
Desenhar é sempre bom...
Laranja2
Coisa Comestível
Fruta
SubClassOf
TypeOf Suco de Laranja
TypeOf
IngredientOf
Laranja1
Cor
IsA
ColorOf
21
Web Semântica e Bancos de Dados NoSQL
Como Interpretar o significado dos dados?
@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.
Estrutura:
Triplas RDF
22
Web Semântica e Bancos de Dados NoSQL
Implementando semântica na WEB
• RDFa: RDF nos atributos das tags XHTML;
• Aplicação de Ontologias– FOAF: Friend of a Friend;– SIOC: Semantically-Interlinked Online Communities.
<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>
23
Web Semântica e Bancos de Dados NoSQL
Como interpretar o significado dos dados?
• Consulta– SPARQL: Simple Protocol and RDF Query
LanguagePREFIX abc: <http://example.com/exampleOntology#>SELECT ?capital ?countryWHERE {
?x abc:cityname ?capital ; abc:isCapitalOf ?y .?y abc:countryname ?country ; abc:isInContinent abc:Africa .
}
24
Web Semântica e Bancos de Dados NoSQL
Quem já está usando?
25
Web Semântica e Bancos de Dados NoSQL
Quem já está usando?
26
Web Semântica e Bancos de Dados NoSQL
Quem já está usando?• The Wall Street Journal
27
Web Semântica e Bancos de Dados NoSQL
Quem já está usando?
28
Web Semântica e Bancos de Dados NoSQL
Quem já está usando?
29
Web Semântica e Bancos de Dados NoSQL
Quem já está usando?
30
Web Semântica e Bancos de Dados NoSQL
Quem já está usando?
31
Web Semântica e Bancos de Dados NoSQL
Quem já está usando?
32
Web Semântica e Bancos de Dados NoSQL
Quem já está usando?
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.
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.
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.
36
Web Semântica e Bancos de Dados NoSQL
Neo4j
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.
38
Web Semântica e Bancos de Dados NoSQL
Neo4j
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.
40
Web Semântica e Bancos de Dados NoSQL
Neo4j• Exemplo:// Cria um db orientado a grafosgraphDb = new EmbeddedGraphDatabase("var/flights");indexService = new LuceneIndexService(graphDb);// Cria um store de triplas RDFrdfStore = 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 SAILconnection = new SailRepository(sail).getConnection();
SAIL é como o JDBC de bancos de dados que usam RDF
41
Web Semântica e Bancos de Dados NoSQL
Neo4j• Exemplo:
// Importando uma estrutura em RDFconnection.add(getResource("sneeair.rdf"), null, RDFFormat.RDFXML, new Resource[]{});// Construção de uma consultaTupleQuery 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 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 resultantesTupleQueryResult 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());}
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
44
Web Semântica e Bancos de Dados NoSQL
FIM
Perguntas?
Obrigado!
Otávio Calaça Xavier
@otaviocx