SlideShare uma empresa Scribd logo
1 de 44
Baixar para ler offline
Web Semântica
                e bancos de dados
                        NoSQL


 Otávio Calaça Xavier
 otaviocx@gmail.com
                        Goiânia, 01 de Dezembro de 2012
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!!!
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Web Semântica e Bancos de Dados NoSQL



Desenhar é sempre bom...

   Sujeito

                 Predicado

                                 Objeto




                                          18
Web Semântica e Bancos de Dados NoSQL



Desenhar é sempre bom...
                             Coisa Comestível


                     SubClassOf

          Fruta                           TypeOf


            TypeOf                         Suco de Laranja


                  Laranja2          IngredientOf


                                                             19
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
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
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
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
Web Semântica e Bancos de Dados NoSQL


 Quem já está usando?




                                        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?
• The Wall Street Journal




                                            26
Web Semântica e Bancos de Dados NoSQL


 Quem já está usando?




                                        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


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
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
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
Web Semântica e Bancos de Dados NoSQL

              Neo4j




                                        36
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
Web Semântica e Bancos de Dados NoSQL


              Neo4j




                                        38
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
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
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.
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
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
Web Semântica e Bancos de Dados NoSQL


               FIM

         Perguntas?
         Otávio Calaça Xavier
         otaviocx@gmail.com
              @otaviocx



          Obrigado!
                                        44

Mais conteúdo relacionado

Destaque

Web Semântica, a terceira geração da Web
Web Semântica, a terceira geração da WebWeb Semântica, a terceira geração da Web
Web Semântica, a terceira geração da Web
Otávio Calaça Xavier
 
Object Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simplesObject Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simples
Otávio Calaça Xavier
 
Alto desempenho e escalabilidade em aplicações web utilizando banco de dados ...
Alto desempenho e escalabilidade em aplicações web utilizando banco de dados ...Alto desempenho e escalabilidade em aplicações web utilizando banco de dados ...
Alto desempenho e escalabilidade em aplicações web utilizando banco de dados ...
Vagner Santana
 

Destaque (20)

Abstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP DoctrineAbstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP Doctrine
 
Introdução aos Dados abertos - Open Data
Introdução aos Dados abertos - Open DataIntrodução aos Dados abertos - Open Data
Introdução aos Dados abertos - Open Data
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine Orm
 
Web Semântica, a terceira geração da Web
Web Semântica, a terceira geração da WebWeb Semântica, a terceira geração da Web
Web Semântica, a terceira geração da Web
 
Deep learning: a ficção em IA tem se tornado realizade
Deep learning: a ficção em IA tem se tornado realizadeDeep learning: a ficção em IA tem se tornado realizade
Deep learning: a ficção em IA tem se tornado realizade
 
Web Semântica, a terceira geração da Web
Web Semântica, a terceira geração da WebWeb Semântica, a terceira geração da Web
Web Semântica, a terceira geração da Web
 
Fuzzy RDF in the Semantic Web: Deduction and Induction
Fuzzy RDF in the Semantic Web: Deduction and InductionFuzzy RDF in the Semantic Web: Deduction and Induction
Fuzzy RDF in the Semantic Web: Deduction and Induction
 
Arquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega ContinuaArquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega Continua
 
Object Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simplesObject Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simples
 
Padrões de Projeto Web e o MVC
Padrões de Projeto Web e o MVCPadrões de Projeto Web e o MVC
Padrões de Projeto Web e o MVC
 
Neo4j - Rede de relacionamentos baseada em grafos
Neo4j - Rede de relacionamentos baseada em grafosNeo4j - Rede de relacionamentos baseada em grafos
Neo4j - Rede de relacionamentos baseada em grafos
 
Redes Neurais com PHP
Redes Neurais com PHPRedes Neurais com PHP
Redes Neurais com PHP
 
Introdução ao Framework CakePHP
Introdução ao Framework CakePHPIntrodução ao Framework CakePHP
Introdução ao Framework CakePHP
 
DevOps: princípios e práticas para a Entrega Contínua
DevOps: princípios e práticas para a Entrega ContínuaDevOps: princípios e práticas para a Entrega Contínua
DevOps: princípios e práticas para a Entrega Contínua
 
Adote OpenJDK
Adote OpenJDKAdote OpenJDK
Adote OpenJDK
 
GWT revista espirito
GWT revista espiritoGWT revista espirito
GWT revista espirito
 
Alto desempenho e escalabilidade em aplicações web utilizando banco de dados ...
Alto desempenho e escalabilidade em aplicações web utilizando banco de dados ...Alto desempenho e escalabilidade em aplicações web utilizando banco de dados ...
Alto desempenho e escalabilidade em aplicações web utilizando banco de dados ...
 
Fundamentos de Java
Fundamentos de Java Fundamentos de Java
Fundamentos de Java
 
Conhecendo Java
Conhecendo JavaConhecendo Java
Conhecendo Java
 
Introdução à Google Maps API
Introdução à Google Maps APIIntrodução à Google Maps API
Introdução à Google Maps API
 

Semelhante a Web Semântica e bancos de dados NoSQL

Estudo de técnicas de persistência e acesso concorrente a ontologias
Estudo de técnicas de persistência e acesso concorrente a ontologiasEstudo de técnicas de persistência e acesso concorrente a ontologias
Estudo de técnicas de persistência e acesso concorrente a ontologias
Helio Henrique L. C. Monte-Alto
 
Bancos de dados NoSQL - Redis e MongoDB
Bancos de dados NoSQL - Redis e MongoDBBancos de dados NoSQL - Redis e MongoDB
Bancos de dados NoSQL - Redis e MongoDB
Paulo Bischof
 
Cobo, Cristiane Brandão. Especialização Banco de Dados
Cobo, Cristiane Brandão. Especialização Banco de DadosCobo, Cristiane Brandão. Especialização Banco de Dados
Cobo, Cristiane Brandão. Especialização Banco de Dados
cris.finholdt
 

Semelhante a Web Semântica e bancos de dados NoSQL (20)

NoSQL - Soluções alternativas para bancos de dados
NoSQL - Soluções alternativas para bancos de dadosNoSQL - Soluções alternativas para bancos de dados
NoSQL - Soluções alternativas para bancos de dados
 
Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01Palestra Ruby on Rails SETA 2008/01
Palestra Ruby on Rails SETA 2008/01
 
MongoDB e OpenShift - JUDCon2014
MongoDB e OpenShift - JUDCon2014MongoDB e OpenShift - JUDCon2014
MongoDB e OpenShift - JUDCon2014
 
Estudo de técnicas de persistência e acesso concorrente a ontologias
Estudo de técnicas de persistência e acesso concorrente a ontologiasEstudo de técnicas de persistência e acesso concorrente a ontologias
Estudo de técnicas de persistência e acesso concorrente a ontologias
 
Linked Data Tutorial - Conferencia W3C Brasil 2011
Linked Data Tutorial - Conferencia W3C Brasil 2011Linked Data Tutorial - Conferencia W3C Brasil 2011
Linked Data Tutorial - Conferencia W3C Brasil 2011
 
Introdução ao MongoDB (NoSQL)
Introdução ao MongoDB (NoSQL)Introdução ao MongoDB (NoSQL)
Introdução ao MongoDB (NoSQL)
 
Apresentação
ApresentaçãoApresentação
Apresentação
 
Web Semântica: uma introdução
Web Semântica: uma introdução Web Semântica: uma introdução
Web Semântica: uma introdução
 
Road Show TI SENAC - Web Semântica - Pessoas e Máquinas Pensando Juntas - SEN...
Road Show TI SENAC - Web Semântica - Pessoas e Máquinas Pensando Juntas - SEN...Road Show TI SENAC - Web Semântica - Pessoas e Máquinas Pensando Juntas - SEN...
Road Show TI SENAC - Web Semântica - Pessoas e Máquinas Pensando Juntas - SEN...
 
Aula introdutória da disciplina de webdesign
Aula introdutória da disciplina de webdesignAula introdutória da disciplina de webdesign
Aula introdutória da disciplina de webdesign
 
Eduardo Nicola Zágari
Eduardo Nicola ZágariEduardo Nicola Zágari
Eduardo Nicola Zágari
 
Arquitetura de banco de dados
Arquitetura de banco de dadosArquitetura de banco de dados
Arquitetura de banco de dados
 
Bancos de dados NoSQL na AWS
Bancos de dados NoSQL na AWSBancos de dados NoSQL na AWS
Bancos de dados NoSQL na AWS
 
BANCO DE DADOS.pptx
BANCO DE DADOS.pptxBANCO DE DADOS.pptx
BANCO DE DADOS.pptx
 
Apresentação: CRIAÇÃO E CONSUMO DE DADOS NOS PADRÕES DA WEB SEMÂNTICA, UTILIZ...
Apresentação: CRIAÇÃO E CONSUMO DE DADOS NOS PADRÕES DA WEB SEMÂNTICA, UTILIZ...Apresentação: CRIAÇÃO E CONSUMO DE DADOS NOS PADRÕES DA WEB SEMÂNTICA, UTILIZ...
Apresentação: CRIAÇÃO E CONSUMO DE DADOS NOS PADRÕES DA WEB SEMÂNTICA, UTILIZ...
 
Alinguagem SQL no mundo NOSQL
Alinguagem SQL no mundo NOSQLAlinguagem SQL no mundo NOSQL
Alinguagem SQL no mundo NOSQL
 
Bancos de dados NoSQL - Redis e MongoDB
Bancos de dados NoSQL - Redis e MongoDBBancos de dados NoSQL - Redis e MongoDB
Bancos de dados NoSQL - Redis e MongoDB
 
#1 Introdução ao MongoDB
#1   Introdução ao MongoDB#1   Introdução ao MongoDB
#1 Introdução ao MongoDB
 
Cobo, Cristiane Brandão. Especialização Banco de Dados
Cobo, Cristiane Brandão. Especialização Banco de DadosCobo, Cristiane Brandão. Especialização Banco de Dados
Cobo, Cristiane Brandão. Especialização Banco de Dados
 
NoSQL, MongoDB e MEAN
NoSQL, MongoDB e MEANNoSQL, MongoDB e MEAN
NoSQL, MongoDB e MEAN
 

Mais de Otávio Calaça Xavier

Implementing Semantic Queries in Online Social Networks
Implementing Semantic Queries in Online Social NetworksImplementing Semantic Queries in Online Social Networks
Implementing Semantic Queries in Online Social Networks
Otávio Calaça Xavier
 

Mais de Otávio Calaça Xavier (8)

Internet das coisas (IoT) com Raspberry, Python e Node.js
Internet das coisas (IoT) com Raspberry, Python e Node.jsInternet das coisas (IoT) com Raspberry, Python e Node.js
Internet das coisas (IoT) com Raspberry, Python e Node.js
 
Implementing Semantic Queries in Online Social Networks
Implementing Semantic Queries in Online Social NetworksImplementing Semantic Queries in Online Social Networks
Implementing Semantic Queries in Online Social Networks
 
Lógica Fuzzy aplicada à Sistemas de Apoio a Decisão
Lógica Fuzzy aplicada à  Sistemas de Apoio a DecisãoLógica Fuzzy aplicada à  Sistemas de Apoio a Decisão
Lógica Fuzzy aplicada à Sistemas de Apoio a Decisão
 
PHP: Atualidade e Tendências
PHP: Atualidade e TendênciasPHP: Atualidade e Tendências
PHP: Atualidade e Tendências
 
Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Desenvolvimento em três camadas com PHP 5, MVC e AJAXDesenvolvimento em três camadas com PHP 5, MVC e AJAX
Desenvolvimento em três camadas com PHP 5, MVC e AJAX
 
Introdução ao PHP Orientado a Objetos com Ajax
Introdução ao PHP Orientado a Objetos com AjaxIntrodução ao PHP Orientado a Objetos com Ajax
Introdução ao PHP Orientado a Objetos com Ajax
 
Introdução às Redes Neurais com PHP
Introdução às Redes Neurais com PHPIntrodução às Redes Neurais com PHP
Introdução às Redes Neurais com PHP
 
Classe V: Educação à distância com Videoconferência no Moodle
Classe V: Educação à distância com Videoconferência no MoodleClasse V: Educação à distância com Videoconferência no Moodle
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
  • 36. Web Semântica e Bancos de Dados NoSQL Neo4j 36
  • 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. Web Semântica e Bancos de Dados NoSQL Neo4j 38
  • 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