Este documento apresenta os principais conceitos de bancos semânticos e da linguagem SPARQL para consultas em grafos de dados. Explica como os dados são organizados em triplas de sujeito, predicado e objeto e como a linguagem SPARQL permite consultas simples e complexas utilizando cláusulas como SELECT, WHERE, ORDER BY e FILTER.
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