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