44
Web Semântica e bancos de dados NoSQL Goiânia, 01 de Dezembro de 2012 Otávio Calaça Xavier [email protected]

Web Semântica e bancos de dados NoSQL

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: 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

[email protected]

Page 2: Web Semântica e bancos de dados NoSQL

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

Page 3: Web Semântica e bancos de dados NoSQL

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

Page 4: Web Semântica e bancos de dados NoSQL

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.

Page 5: Web Semântica e bancos de dados NoSQL

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.

Page 6: Web Semântica e bancos de dados NoSQL

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?

Page 7: Web Semântica e bancos de dados NoSQL

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;

Page 8: Web Semântica e bancos de dados NoSQL

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

Page 9: Web Semântica e bancos de dados NoSQL

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

Page 10: Web Semântica e bancos de dados NoSQL

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;

Page 11: Web Semântica e bancos de dados NoSQL

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.

Page 12: Web Semântica e bancos de dados NoSQL

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)

Page 13: Web Semântica e bancos de dados NoSQL

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

Page 14: Web Semântica e bancos de dados NoSQL

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

Page 15: Web Semântica e bancos de dados NoSQL

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

Page 16: Web Semântica e bancos de dados NoSQL

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>

Page 17: Web Semântica e bancos de dados NoSQL

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

Page 18: Web Semântica e bancos de dados NoSQL

18

Web Semântica e Bancos de Dados NoSQL

Desenhar é sempre bom...

Sujeito

Objeto

Predicado

Page 19: Web Semântica e bancos de dados NoSQL

19

Web Semântica e Bancos de Dados NoSQL

Desenhar é sempre bom...

Laranja2

Coisa Comestível

Fruta

SubClassOf

TypeOf Suco de Laranja

TypeOf

IngredientOf

Page 20: Web Semântica e bancos de dados NoSQL

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

Page 21: Web Semântica e bancos de dados NoSQL

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

Page 22: Web Semântica e bancos de dados NoSQL

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>

Page 23: Web Semântica e bancos de dados NoSQL

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 .

}

Page 24: Web Semântica e bancos de dados NoSQL

24

Web Semântica e Bancos de Dados NoSQL

Quem já está usando?

Page 25: Web Semântica e bancos de dados NoSQL

25

Web Semântica e Bancos de Dados NoSQL

Quem já está usando?

Page 26: Web Semântica e bancos de dados NoSQL

26

Web Semântica e Bancos de Dados NoSQL

Quem já está usando?• The Wall Street Journal

Page 27: Web Semântica e bancos de dados NoSQL

27

Web Semântica e Bancos de Dados NoSQL

Quem já está usando?

Page 28: Web Semântica e bancos de dados NoSQL

28

Web Semântica e Bancos de Dados NoSQL

Quem já está usando?

Page 29: Web Semântica e bancos de dados NoSQL

29

Web Semântica e Bancos de Dados NoSQL

Quem já está usando?

Page 30: Web Semântica e bancos de dados NoSQL

30

Web Semântica e Bancos de Dados NoSQL

Quem já está usando?

Page 31: Web Semântica e bancos de dados NoSQL

31

Web Semântica e Bancos de Dados NoSQL

Quem já está usando?

Page 32: Web Semântica e bancos de dados NoSQL

32

Web Semântica e Bancos de Dados NoSQL

Quem já está usando?

Page 33: Web Semântica e bancos de dados NoSQL

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.

Page 34: Web Semântica e bancos de dados NoSQL

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.

Page 35: Web Semântica e bancos de dados NoSQL

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.

Page 36: Web Semântica e bancos de dados NoSQL

36

Web Semântica e Bancos de Dados NoSQL

Neo4j

Page 37: Web Semântica e bancos de dados NoSQL

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.

Page 38: Web Semântica e bancos de dados NoSQL

38

Web Semântica e Bancos de Dados NoSQL

Neo4j

Page 39: Web Semântica e bancos de dados NoSQL

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.

Page 40: Web Semântica e bancos de dados NoSQL

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

Page 41: Web Semântica e bancos de dados NoSQL

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.

Page 42: Web Semântica e bancos de dados NoSQL

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());}

Page 43: Web Semântica e bancos de dados NoSQL

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

Page 44: Web Semântica e bancos de dados NoSQL

44

Web Semântica e Bancos de Dados NoSQL

FIM

Perguntas?

Obrigado!

Otávio Calaça Xavier

[email protected]

@otaviocx