Banco semântico e SPARQL

17
Banco Semântico e SPARQL Ricardo Paiva (Senior Developer @ Globo.com)

Transcript of Banco semântico e SPARQL

Page 1: Banco semântico e SPARQL

Banco Semântico e SPARQLRicardo Paiva (Senior Developer @ Globo.com)

Page 2: Banco semântico e SPARQL

Ontologia

Page 3: Banco semântico e SPARQL

Banco de triplas● Dados são representados na forma de um grafo.● Nós representam os dados e arestas as conexões.

Page 4: Banco semântico e SPARQL

Dados são organizados em triplas

Page 5: Banco semântico e SPARQL

SPARQL● Linguagem padrão para consultas em banco de dados

de triplas● Simplifica consulta em grafos

SELECT ...FROM ...WHERE ...ORDER BY ...

Page 6: Banco semântico e SPARQL

Consultas básicas (1)

SELECT *WHERE { <http://example.com/tech/Hardware/42707> ?p ?o.}

● Todos atributos associados a uma URI:

SELECT *WHERE {?s ?p owl:Class}

● Todos tipos de uma determinada classe:

Page 7: Banco semântico e SPARQL

Consultas básicas (2)

SELECT * WHERE { ?uri rdfs:label ?o. }

● Label de todas as entidades

SELECT ?uri, ?labelWHERE { ?uri a tech:Hardware. ?uri rdfs:label ?label.}

● URI e Label de todas as entidades do tipo Hardware

Page 8: Banco semântico e SPARQL

Conectores (1)

SELECT * WHERE { ?uri base:status_de_publicacao ‘P’. }

● Ao terminar uma tripla use “.”

SELECT * WHERE { ?uri a tech:Noticia; base:permalink ?permalink; base:status_de_publicacao ‘P’. }

● Para repetir o sujeito, use “;”

Page 9: Banco semântico e SPARQL

Conectores (2)

SELECT distinct ?uri WHERE { ?uri tech:cita <http://example.com/tech/Fabricante/44218>, <http://example.com/tech/Software/89535>.}

● Para repetir o sujeito e o predicado, use “,”

Page 10: Banco semântico e SPARQL

From

SELECT distinct ?uri FROM tech:WHERE { ?uri tech:cita <http://example.com/tech/Fabricante/44218>, <http://example.com/tech/Software/89535>.}

● SEMPRE informe o grafo para minimizar o espaço de busca:

Page 11: Banco semântico e SPARQL

Múltiplos saltos no grafo

SELECT distinct ?uri, ?entFROM tech:WHERE { ?uri tech:cita ?ent. ?ent tech:pertence_a_categoria_hardware ?cat.}

● Selecione uri e entidades que pertençam a uma categoria:

Page 12: Banco semântico e SPARQL

Filter (1)

SELECT distinct ?uri, ?statusFROM tech:WHERE { ?uri a tech:Noticia; base:status_de_publicacao ?status. FILTER (?status=’P’ or ?status=’A’)}

● Selecione matérias publicadas ou agendadas:

Page 13: Banco semântico e SPARQL

Filter (2)

SELECT distinct ?uri, ?statusFROM tech:WHERE { ?uri a tech:Noticia; base:data_da_primeira_publicacao ?pub. FILTER (?pub >= ‘2015-01-01’ˆˆxsd:date)}

● Selecione matérias publicadas depois de uma data:

Page 14: Banco semântico e SPARQL

Ordenação e Limit

SELECT distinct ?uri, ?pubFROM tech:WHERE { ?uri a tech:Noticia; base:data_da_primeira_publicacao ?pub.}ORDER BY DESC(?pub)LIMIT 20

● Ordenação por data de publicação:

Page 15: Banco semântico e SPARQL

Funções de agregação(1)

SELECT count(distinct ?uri)FROM tech:WHERE { ?uri a ?tipo; base:status_de_publicacao ‘P’. ?tipo rdfs:subClassOf base:Materia.}

● count

Page 16: Banco semântico e SPARQL

Funções de agregação(2)

SELECT count(?genero) ?generoFROM <http://example.com>WHERE { ?s rdf:type base:Pessoa; base:genero ?genero.}GROUP BY ?genero

● group by