Publicação de Dados Governamentais
no Padrão Linked Data
3.1 – Fundamentos de SPARQL
Karin Breitman
José Viterbo
Edgard Marx
Percy Salas
LA C
Laboratory for Advanced Collaboration
Objetivo deste módulo
1.Apresentar conceitos básicos sobre SPARQL
2
Sumário
1. Introdução
2. Arquitetura
3. SPARQL em 3 partes
4. Consulta
5. Protocolo
6. Conclusão
3
Introdução
Triplas RDF…
Constituem realmente a primeira
camada semântica da Web
4
Introdução
SPARQL no topo...
Uma linguagem de consulta
e protocolo de acesso a
dados em RDF
5
Introdução
SPARQL significa…
SPARQL Protocol and RDF
Query Language
6
Arquitetura
7
SparQL
SPARQL em 3 partes
parte 1: linguagem de consulta
parte 2: formato dos resultados
parte 3: protocolo de acesso
8
Consulta
SELECT ...
FROM ...
WHERE { ... }
9
Consulta
Cláusula SELECT
Para identificar que valores irão
retornar
10
Consulta
Cláusula FROM
Para identificar que fontes de
dados devem ser consultadas
11
Consulta
Cláusula WHERE
Os padrões de triplas/grafos a
serem localizados na base RDF
12
Consulta
Cláusula WHERE
Uma conjunção de triplas:
{ ?x rdf:type ex:Person
?x ex:name ?name }
13
Consulta
PREFIX
Para declarar o esquema
usado na consulta
14
Consulta
Exemplo: Pessoas e seus nomes
PREFIX ex: <http://inria.fr/schema#>
SELECT ?person ?name
WHERE {
?person rdf:type ex:Person
?person ex:name ?name .
}
15
Consulta
<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#" >
<head>
<variable name="person"/>
<variable name="name"/>
</head>
<results ordered="false" distinct="false">
<result>
<binding name="person">
<uri>http://inria.fr/schema#fg</uri>
</binding>
<binding name="name">
<literal>gandon</literal>
</binding>
</result>
<result> ...
16
Consulta
FILTER
Para adicionar restrições aos
padrões de grafos.
(p.ex., numerical like X>17 )
17
Consulta
Exemplo: Pessoas com pelo menos 18 anos
PREFIX ex: <http://inria.fr/schema#>
SELECT ?person ?name
WHERE {
?person rdf:type ex:Person
?person ex:name ?name .
?person ex:age ?age .
FILTER (?age > 17)
}
18
Consulta
FILTER
Pode usar diversos
operadores, funções
(p.ex: expressões
regulares) e mesmo
extensões do usuário
19
Consulta
OPTIONAL
Para tornar uma parte do padrão
opcional
20
Consulta
Exemplo: Recuperar a idade, se disponível
PREFIX ex: <http://inria.fr/schema#>
SELECT ?person ?name ?age
WHERE {
?person rdf:type ex:Person
?person ex:name ?name .
OPTIONAL { ?person ex:age ?age }
}
21
Consulta
UNION
Para definir padrões alternativos
em uma consulta.
22
Consulta
Exemplo: Adultos implícitos e explícitos
PREFIX ex: <http://inria.fr/schema#>
SELECT ?name
WHERE {
?person ex:name ?name .
{
{ ?person rdf:type ex:Adult}
UNION
{ ?person ex:age ?age
FILTER (?age > 17) }
}
}
23
Consulta
Classificação e Formato
ORDER BY para classificar
LIMIT para o número de resultados
OFFSET antes do primeiro resultado
24
Consulta
Exemplo: Resultados 21 a 40 ordenados por nome
PREFIX ex: <http://inria.fr/schema#>
SELECT ?person ?name
WHERE {
?person rdf:type ex:Person
?person ex:name ?name .
}
ORDER BY ?name
LIMIT 20
OFFSET 20
25
Consulta
UNBOUND
Testa se uma variável está ou
não instanciada – usado para
negação por falha
26
Consulta
Exemplo: Pessoas que não são autores conhecidos
PREFIX ex: <http://inria.fr/schema#>
SELECT ?name
WHERE {
?person ex:name ?name .
OPTIONAL { ?person ex:author ?x }
FILTER ( !bound(?x))
}
27
Consulta
Negação
É traiçoeira e erros podem
ocorrer facilmente.
28
Consulta
Exemplo:
PREFIX ex: <http://inria.fr/schema#>
SELECT ?name
WHERE {
?person ex:name ?name .
?person ex:knows ?x
FILTER ( ?x != "Java" )
}
Isto encontra as pessoas que não sabem "java"?
29
Consulta
NÃO!
Também recupera todas as
pessoas que sabem Java e
alguma coisa a mais!
João ex:knows "Java"
João ex:knows "C++"
João é uma resposta...
30
Consulta
Pessoas que não se conhece saber “Java" ...
Negação de uma opção.
PREFIX ex: <http://inria.fr/schema#>
SELECT ?name
WHERE {
?person ex:name ?name .
OPTIONAL { ?person ex:knows ?x
FILTER ( ?x = "Java" ) }
FILTER ( !bound(?x) )
}
AGORA SIM!
31
Consulta
ASK
Para verificar se há pelo
menos uma resposta. O
resultado é "true" ou "false"
32
Consulta
Exemplo: Há uma pessoa com mais de 17 anos?
PREFIX ex: <http://inria.fr/schema#>
ASK
{
?person ex:age ?age
FILTER (?age > 17)
}
33
Consulta
CONSTRUCT
Retorna um grafo RDF específico
para cada resultado
34
34
Consulta
Exemplo: Resultados instâncias de adultos para
pessoas com mais de 17 anos
35
PREFIX ex: <http://inria.fr/schema#>
CONSTRUCT
{
?person rdf:type ex:Adult
}
WHERE
{
?person ex:age ?age
FILTER (?age > 17)
}
Protocolo
Protocolo SPARQL
Envia consultas e seus
resultados através da Web
36
Protocolo
Exemplo com HTTP
GET /sparql/?query=<encoded query> HTTP/1.1
Host: www.inria.fr
User-agent: my-sparql-client/0.1
37
Protocolo
Exemplo com SOAP
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soapenvelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<query-request xmlns="http://www.w3.org/2005/09/sparqlprotocol-types/#">
<query>SELECT ?x ?p ?y WHERE {?x ?p ?y}</query>
</query-request>
</soapenv:Body>
</soapenv:Envelope>
38
Conclusão
SPARQL é...
uma linguagem de consulta...
um formato para os resultados...
um protocolo de acesso ...
...
39
para RDF
Conclusão
SPARQL query language
baseado no modelo de triplas
filtros para adicionar restrições
40
?x ?p ?y
Principais Referências
 Baseado na apresentação SPARQL Básico, de Luiz A M Palazzo. Disponível em
http://ia.ucpel.tche.br/~lpalazzo/Aulas/IWS/m03/Recursos/SPARQL.ppt
 E. Prud'hommeaux e A. Seaborne (editores). SPARQL Query Language for
RDF. Online, 2008. Disponível em: http://www.w3.org/TR/rdf-sparql-query/;
 K.G. Clark, L. Feigenbaum e E. Torres (editores). SPARQL Protocol for RDF.
Online, 2008. Disponível em: http://www.w3.org/TR/2008/REC-rdf-sparqlprotocol-20080115/;
41
Download

3.1. Fundamentos de SPARQL