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

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 eBancos 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 eBancos 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 eBancos 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 eBancos 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 eBancos 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 eBancos 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 eBancos 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 eBancos 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 eBancos 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 eBancos 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 eBancos 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 eBancos 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 eBancos 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 eBancos 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 eBancos 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 eBancos de Dados NoSQL Desenhar é sempre bom... Sujeito Predicado Objeto 18
  • 19.
    Web Semântica eBancos de Dados NoSQL Desenhar é sempre bom... Coisa Comestível SubClassOf Fruta TypeOf TypeOf Suco de Laranja Laranja2 IngredientOf 19
  • 20.
    Web Semântica eBancos 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 eBancos 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 eBancos 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 eBancos 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 eBancos de Dados NoSQL Quem já está usando? 24
  • 25.
    Web Semântica eBancos de Dados NoSQL Quem já está usando? 25
  • 26.
    Web Semântica eBancos de Dados NoSQL Quem já está usando? • The Wall Street Journal 26
  • 27.
    Web Semântica eBancos de Dados NoSQL Quem já está usando? 27
  • 28.
    Web Semântica eBancos de Dados NoSQL Quem já está usando? 28
  • 29.
    Web Semântica eBancos de Dados NoSQL Quem já está usando? 29
  • 30.
    Web Semântica eBancos de Dados NoSQL Quem já está usando? 30
  • 31.
    Web Semântica eBancos de Dados NoSQL Quem já está usando? 31
  • 32.
    Web Semântica eBancos de Dados NoSQL Quem já está usando? 32
  • 33.
    Web Semântica eBancos 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 eBancos 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 eBancos 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 eBancos de Dados NoSQL Neo4j 36
  • 37.
    Web Semântica eBancos 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 eBancos de Dados NoSQL Neo4j 38
  • 39.
    Web Semântica eBancos 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 eBancos 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 eBancos 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 eBancos 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 eBancos 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 eBancos de Dados NoSQL FIM Perguntas? Otávio Calaça Xavier otaviocx@gmail.com @otaviocx Obrigado! 44