SlideShare uma empresa Scribd logo
1 de 17
Banco Semântico e
SPARQL
Ricardo Paiva (Senior Developer @ Globo.com)
Ontologia
Banco de triplas
● Dados são representados na forma de um grafo.
● Nós representam os dados e arestas as conexões.
Dados são organizados em triplas
SPARQL
● Linguagem padrão para consultas em banco de dados
de triplas
● Simplifica consulta em grafos
SELECT ...
FROM ...
WHERE ...
ORDER BY ...
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:
Consultas básicas (2)
SELECT * WHERE { ?uri rdfs:label ?o. }
● Label de todas as entidades
SELECT ?uri, ?label
WHERE {
?uri a tech:Hardware.
?uri rdfs:label ?label.
}
● URI e Label de todas as entidades do tipo Hardware
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 “;”
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 “,”
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:
Múltiplos saltos no grafo
SELECT distinct ?uri, ?ent
FROM tech:
WHERE {
?uri tech:cita ?ent.
?ent tech:pertence_a_categoria_hardware ?cat.
}
● Selecione uri e entidades que pertençam a uma
categoria:
Filter (1)
SELECT distinct ?uri, ?status
FROM tech:
WHERE {
?uri a tech:Noticia;
base:status_de_publicacao ?status.
FILTER (?status=’P’ or ?status=’A’)
}
● Selecione matérias publicadas ou agendadas:
Filter (2)
SELECT distinct ?uri, ?status
FROM 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:
Ordenação e Limit
SELECT distinct ?uri, ?pub
FROM 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:
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
Funções de agregação(2)
SELECT count(?genero) ?genero
FROM <http://example.com>
WHERE {
?s rdf:type base:Pessoa;
base:genero ?genero.
}
GROUP BY ?genero
● group by
Obrigado!
ricardo.paiva@corp.globo.com

Mais conteúdo relacionado

Semelhante a Banco Semântico e SPARQL em 40

EXTREME LDAP - GABRIEL STEIN
EXTREME LDAP - GABRIEL STEINEXTREME LDAP - GABRIEL STEIN
EXTREME LDAP - GABRIEL STEINTchelinux
 
Postgresql como NewSQL - DevCamp 2014
Postgresql como NewSQL - DevCamp 2014Postgresql como NewSQL - DevCamp 2014
Postgresql como NewSQL - DevCamp 2014Matheus de Oliveira
 
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdfQuitriaSilva550
 
Modulo-02-Aula-02-conteudo-de-certi.pptx
Modulo-02-Aula-02-conteudo-de-certi.pptxModulo-02-Aula-02-conteudo-de-certi.pptx
Modulo-02-Aula-02-conteudo-de-certi.pptxAugustoNicolau2
 
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)Dickson S. Guedes
 
Apresentação sobre postgresl - O Básico
Apresentação sobre postgresl - O BásicoApresentação sobre postgresl - O Básico
Apresentação sobre postgresl - O BásicoIsaac Maciel
 
Java JDBC: Aplicação Java que acessa um SGDB
Java JDBC: Aplicação Java que acessa um SGDBJava JDBC: Aplicação Java que acessa um SGDB
Java JDBC: Aplicação Java que acessa um SGDBRicardo Terra
 
Funcionalidades Oracle
Funcionalidades OracleFuncionalidades Oracle
Funcionalidades Oracleharlycarreiro
 
Banco de Dados em Grafos com Neo4J
Banco de Dados em Grafos com Neo4J  Banco de Dados em Grafos com Neo4J
Banco de Dados em Grafos com Neo4J Daniel San Martin
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQlCezar Souza
 
Alinguagem SQL no mundo NOSQL
Alinguagem SQL no mundo NOSQLAlinguagem SQL no mundo NOSQL
Alinguagem SQL no mundo NOSQLpichiliani
 
Performance Sql Server
Performance Sql ServerPerformance Sql Server
Performance Sql Serverjarlei
 

Semelhante a Banco Semântico e SPARQL em 40 (20)

EXTREME LDAP - GABRIEL STEIN
EXTREME LDAP - GABRIEL STEINEXTREME LDAP - GABRIEL STEIN
EXTREME LDAP - GABRIEL STEIN
 
Linguagem SQL
Linguagem SQLLinguagem SQL
Linguagem SQL
 
Postgresql como NewSQL - DevCamp 2014
Postgresql como NewSQL - DevCamp 2014Postgresql como NewSQL - DevCamp 2014
Postgresql como NewSQL - DevCamp 2014
 
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
 
Aprendendo R
Aprendendo RAprendendo R
Aprendendo R
 
Modulo-02-Aula-02-conteudo-de-certi.pptx
Modulo-02-Aula-02-conteudo-de-certi.pptxModulo-02-Aula-02-conteudo-de-certi.pptx
Modulo-02-Aula-02-conteudo-de-certi.pptx
 
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
 
Apresentação sobre postgresl - O Básico
Apresentação sobre postgresl - O BásicoApresentação sobre postgresl - O Básico
Apresentação sobre postgresl - O Básico
 
Agbd aula4 sql_ddl
Agbd aula4 sql_ddlAgbd aula4 sql_ddl
Agbd aula4 sql_ddl
 
Java JDBC: Aplicação Java que acessa um SGDB
Java JDBC: Aplicação Java que acessa um SGDBJava JDBC: Aplicação Java que acessa um SGDB
Java JDBC: Aplicação Java que acessa um SGDB
 
JavaCC
JavaCCJavaCC
JavaCC
 
Funcionalidades Oracle
Funcionalidades OracleFuncionalidades Oracle
Funcionalidades Oracle
 
Banco de Dados em Grafos com Neo4J
Banco de Dados em Grafos com Neo4J  Banco de Dados em Grafos com Neo4J
Banco de Dados em Grafos com Neo4J
 
Apostila Oracle
Apostila OracleApostila Oracle
Apostila Oracle
 
Bd sql (1)
Bd sql (1)Bd sql (1)
Bd sql (1)
 
LINQ
LINQLINQ
LINQ
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQl
 
SQL Oracle
SQL OracleSQL Oracle
SQL Oracle
 
Alinguagem SQL no mundo NOSQL
Alinguagem SQL no mundo NOSQLAlinguagem SQL no mundo NOSQL
Alinguagem SQL no mundo NOSQL
 
Performance Sql Server
Performance Sql ServerPerformance Sql Server
Performance Sql Server
 

Banco Semântico e SPARQL em 40

  • 1. Banco Semântico e SPARQL Ricardo Paiva (Senior Developer @ Globo.com)
  • 3. Banco de triplas ● Dados são representados na forma de um grafo. ● Nós representam os dados e arestas as conexões.
  • 5. SPARQL ● Linguagem padrão para consultas em banco de dados de triplas ● Simplifica consulta em grafos SELECT ... FROM ... WHERE ... ORDER BY ...
  • 6. 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:
  • 7. Consultas básicas (2) SELECT * WHERE { ?uri rdfs:label ?o. } ● Label de todas as entidades SELECT ?uri, ?label WHERE { ?uri a tech:Hardware. ?uri rdfs:label ?label. } ● URI e Label de todas as entidades do tipo Hardware
  • 8. 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 “;”
  • 9. 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 “,”
  • 10. 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:
  • 11. Múltiplos saltos no grafo SELECT distinct ?uri, ?ent FROM tech: WHERE { ?uri tech:cita ?ent. ?ent tech:pertence_a_categoria_hardware ?cat. } ● Selecione uri e entidades que pertençam a uma categoria:
  • 12. Filter (1) SELECT distinct ?uri, ?status FROM tech: WHERE { ?uri a tech:Noticia; base:status_de_publicacao ?status. FILTER (?status=’P’ or ?status=’A’) } ● Selecione matérias publicadas ou agendadas:
  • 13. Filter (2) SELECT distinct ?uri, ?status FROM 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:
  • 14. Ordenação e Limit SELECT distinct ?uri, ?pub FROM 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:
  • 15. 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
  • 16. Funções de agregação(2) SELECT count(?genero) ?genero FROM <http://example.com> WHERE { ?s rdf:type base:Pessoa; base:genero ?genero. } GROUP BY ?genero ● group by