Web Semântica e bancos de dados NoSQL

6,043 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,043
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
60
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Web Semântica e bancos de dados NoSQL

  1. 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. 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. 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. 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. 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. 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. 7. Web Semântica e Bancos de Dados NoSQL O que é a Web Semântica?Web 1.0 Web 2.0 Web 3.0Web Sintática; Web Social; Web Semântica; 7
  8. 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. 9. Web Semântica e Bancos de Dados NoSQLO que é a Web Semântica?“Eu tenho um sonho para a Web [em que oscomputadores] irão tornar-se capazes de analisartodos os dados na rede – o conteúdo, links etransações entre pessoas e computadores. A WebSemântica, que tornará isto possível, ainda nãosurgiu, mas quando isso acontecer, o dia a dia dosmecanismos de comércio, a burocracia e as nossasvidas diárias serão manipulados por máquinasfalando com outras máquinas.” Tim Berners-Lee em 1999 9
  10. 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. 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. 12. Web Semântica e Bancos de Dados NoSQLComo 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. 13. Web Semântica e Bancos de Dados NoSQLComo 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. 14. Web Semântica e Bancos de Dados NoSQLComo 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. 15. Web Semântica e Bancos de Dados NoSQLComo 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. 16. Web Semântica e Bancos de Dados NoSQLComo 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. 17. Web Semântica e Bancos de Dados NoSQLComo 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. 18. Web Semântica e Bancos de Dados NoSQLDesenhar é sempre bom... Sujeito Predicado Objeto 18
  19. 19. Web Semântica e Bancos de Dados NoSQLDesenhar é sempre bom... Coisa Comestível SubClassOf Fruta TypeOf TypeOf Suco de Laranja Laranja2 IngredientOf 19
  20. 20. Web Semântica e Bancos de Dados NoSQL Desenhar é sempre bom... Cor Coisa Comestível IsA SubClassOf Fruta TypeOfLaranja1 TypeOf Suco de Laranja Laranja2 IngredientOf ColorOf 20
  21. 21. Web Semântica e Bancos de Dados NoSQLComo 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. 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. 23. Web Semântica e Bancos de Dados NoSQLComo 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. 24. Web Semântica e Bancos de Dados NoSQL Quem já está usando? 24
  25. 25. Web Semântica e Bancos de Dados NoSQL Quem já está usando? 25
  26. 26. Web Semântica e Bancos de Dados NoSQL Quem já está usando?• The Wall Street Journal 26
  27. 27. Web Semântica e Bancos de Dados NoSQL Quem já está usando? 27
  28. 28. Web Semântica e Bancos de Dados NoSQL Quem já está usando? 28
  29. 29. Web Semântica e Bancos de Dados NoSQL Quem já está usando? 29
  30. 30. Web Semântica e Bancos de Dados NoSQL Quem já está usando? 30
  31. 31. Web Semântica e Bancos de Dados NoSQL Quem já está usando? 31
  32. 32. Web Semântica e Bancos de Dados NoSQL Quem já está usando? 32
  33. 33. Web Semântica e Bancos de Dados NoSQLBancos 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. 34. Web Semântica e Bancos de Dados NoSQLBancos 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. 35. Web Semântica e Bancos de Dados NoSQLBancos 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
  36. 36. Web Semântica e Bancos de Dados NoSQL Neo4j 36
  37. 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
  38. 38. Web Semântica e Bancos de Dados NoSQL Neo4j 38
  39. 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. 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 40
  41. 41. Web Semântica e Bancos de Dados NoSQL Neo4j • Exemplo:// Importando uma estrutura em RDFconnection.add(getResource("sneeair.rdf"), null, RDFFormat.RDFXML, newResource[]{});// 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 41 voos com duração de 1 hora e 35 minutos.
  42. 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());} 42
  43. 43. Web Semântica e Bancos de Dados NoSQL Referências• Web 3.0: The Semântic Web – por Hatem Mahmoud• Theres 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. 44. Web Semântica e Bancos de Dados NoSQL FIM Perguntas? Otávio Calaça Xavier otaviocx@gmail.com @otaviocx Obrigado! 44

×