Linguagem de consulta SPARQL Maria Gabriela Cardoso Agenda - Web Semântica - RDF - SPARQL - Consultas SPARQL - Conclusão - Referências Internet - Informações não estruturadas; - A proposta da Web Semântica -Dados estruturados -Seguindo ontologias RDF - Resource Description Framework; - Flexível e extensível para representar informações; - Recursos são descritos através de declarações e possuem propriedades que têm valor; RDF - Usado para representar informações pessoais, redes sociais, metadados sobre artefatos digitais, integração sobre diferentes fontes de informação; - Grande vantagem para desenvolvedores utilizarem uma linguagem de consulta para o RDF; RDF -Composto por três recursos: Sujeito, predicado e objeto; - A W3C (organização de padronização, recomenda a utilização de RDF). SPARQL - Consultas SPARQL são executadas sobre conjuntos de dados RDF (gráficos RDF); - RDF -> Triplas compostas por sujeito, predicado e objeto (São representados por URIs); - Objetos também podem ser representados por literais; - Também pode ser aplicada sobre extensões do RDF (Ex: OWL). SPARQL - URIs: <http://example.com/resource> ou prefixo:name - Literais: "string" "13.4"^^xsd:float ou "string with language"@enz SPARQL Sendo assim, as triplas são dos formatos: - URI (sujeito) URI(Predicado) URI(objeto) - prefixo:sujeito prefixo2:predicado prefixo3:objeto - prefixo:sujeito prefixo2:predicado "literal" SPARQL Esquematização de uma consulta SPARQL Declaração de prefixos PREFIX wine:<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> SPARQL Formas de consulta - SELECT ASK CONSTRUCT DESCRIBE SPARQL Definição do dataset SPARQL Definição do dataset SPARQL O padrão de consulta (WHERE) SPARQL O padrão de consulta (WHERE) Consultas - Realizadas no Protégé (Versão 4.2.0) - Fonte de dados: wine.owl http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine - Fonte de dados já importada para as consultas. Não é preciso informar o dataset no FROM. Consultas PREFIX wine:<http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine#> SELECT ?Wine ?Flavor WHERE { ?Wine wine:hasFlavor ?Flavor } Consultas Consultas PREFIX wine:<http://www.w3.org/...> SELECT ?Wine ?Flavor ?Location WHERE { ?Wine wine:hasFlavor ?Flavor; ?Wine wine:locatedIn ?Location. } Consultas Consultas PREFIX wine:<http://www.w3.org/...> SELECT ?Wine ?Flavor ?Location WHERE { ?Wine wine:hasFlavor ?Flavor; wine:locatedIn ?Location. } Consultas Consultas PREFIX wine:<http://www.w3.org/...> SELECT DISTINCT ?Sugar WHERE { ?Wine wine:hasSugar ?Sugar. } PREFIX wine:<http://www.w3.org/...> SELECT ?Sugar WHERE { ?Wine wine:hasSugar ?Sugar. } Consultas Com distinct Sem distinct Consultas PREFIX wine:<http://www.w3.org/...> ASK WHERE { ?Wine wine:locatedIn wine:NewZealandRegion. } Consultas PREFIX wine:<http://www.w3.org/...> DESCRIBE ?Wine WHERE { ?Wine wine:locatedIn wine:NewZealandRegion. } Consultas Consultas PREFIX ex: <http://www.snee.com/ns/demo#> CONSTRUCT { ?p ex:hasGrandfather ?g . } WHERE { ?p ex:hasParent ?parent; ?parent ex:hasParent ?g ; ?g ex:gender :male . } Consultas Neto Neto Neto Neto Neto Neto Neto Neto Neto Neto Avô Avô Avô Avô Avô Avô Avô Avô Avô Avô Consultas PREFIX wine:<http://www.w3.org/...> SELECT ?Wine ?Location WHERE { ?Wine wine:locatedIn ?Location. FILTER (?Location != wine:NewZealandRegion) } Consultas Consultas PREFIX wine:<http://www.w3.org/...> SELECT ?Location ?Sugar WHERE { ?Wine wine:locatedIn ?Location. OPTIONAL {?Wine wine:hasSugar ?Sugar} } Consultas Consultas PREFIX wine:<http://www.w3.org/...> SELECT ?Wine WHERE { {?Wine wine:locatedIn wine:SonomaRegion} UNION {?Wine wine:locatedIn wine:CaliforniaRegion} } Consultas Consultas PREFIX wine:<http://www.w3.org/...> SELECT ?Wine ?Location WHERE { ?Wine wine:locatedIn ?Location. FILTER (?Location = wine:SonomaRegion || ?Location = wine:CaliforniaRegion) } Consultas Consultas PREFIX wine:<http://www.w3.org/...> SELECT ?Wine ?Location WHERE { ?Wine wine:locatedIn ?Location. } ORDER BY ?Location Consultas Consultas PREFIX wine:<http://www.w3.org/...> SELECT ?Location ?Sugar WHERE { ?Wine wine:locatedIn ?Location. ?Wine wine:hasSugar ?Sugar. } GROUP BY ?Sugar ?Location Consultas Consultas PREFIX wine:<http://www.w3.org/...> SELECT ?Location (COUNT(?Location) as ?Count) WHERE { ?Wine wine:locatedIn ?Location. } GROUP BY ?Location HAVING(COUNT(?Location) > 3) Consultas Consultas PREFIX wine:<http://www.w3.org/...> SELECT ?Wine ?Sugar WHERE { ?Wine wine:hasSugar ?Sugar. } LIMIT 10 Consultas Consultas PREFIX wine:<http://www.w3.org/...> SELECT ?Wine ?Sugar WHERE { ?Wine wine:hasSugar ?Sugar. } OFFSET 5 Consultas Consultas PREFIX wine:<http://www.w3.org/...> SELECT ?Wine ?Sugar WHERE { ?Wine wine:hasSugar ?Sugar. } LIMIT 5 OFFSET 5 Consultas Conclusões - A linguagem de consulta padronizada para dados RDF com múltiplas implementações oferece aos desenvolvedores e usuários finais uma maneira de escrever e de consumir os resultados de consultas em toda esta vasta gama de informações. - A tecnologia foi desenvolvida para permitir buscas em diferentes fontes de informação, independente do formato dos resultados. - Criação de projetos em web semântica. Por exempo o DBpedia, que extrai informações de forma estruturada da Wikipedia. Conclusões - http://pt.wikipedia.org/wiki/W3C - http://en.wikipedia.org/wiki/SPARQL - http://www.w3.org/TR/2004/WD-rdf-sparqlquery-20041012/ - http://www.w3.org/2009/Talks/0615-qbe/ http://pt.wikipedia.org/wiki/Resource_Descripti on_Framework Dúvidas