SPARQL
SPARQL é um acrónimo recursivo do inglês SPARQL Protocol and RDF Query Language. Trata-se de uma linguagem padronizada para a consulta de grafos RDF, padrão pelo RDF Data Access Working Group (DAWG) do World Wide Web Consortium (W3C). É uma tecnologia básica no desenvolvimento da web semântica que se constituiu como recomendação oficial do W3C a 15 de janeiro de 2008, sendo actualizada à versão 1.1 em 2013.[1]
Ao igual que sucede com SQL, é necessário distinguir entre o linguagem de consulta e o motor para o armazenamento e recuperação dos dados. Por este motivo, existem múltiplas implementações de SPARQL, geralmente unidos a meios de desenvolvimento e plataforma tecnológicas.
Num princípio SPARQL unicamente incorpora funções para a recuperação de parágrafos RDF. No entanto, algumas propostas também incluem operações para a manutenção (criação, modificação e apagar) de dados.
Exemplo 1
Por exemplo, se queremos obter uma listagem de nomes de livros podemos executar a seguinte consulta:
PREFIX dc: <http://purl.org/dc/elements/1.1/> SELECT ?title WHERE { <http://exemplo.org/livros> dc:title ?title }
Experimente!
PREFIX dc: <http://purl.org/dc/elements/1.1/> SELECT ?title WHERE { <http://exemplo.org/livros> dc:title ?title }
Exemplo 2
SPARQL permite o acesso a informação disponível no site através de diversas plataformas como é o caso de DBpedia que tem o acesso a toda a informação da Wikipedia em espanhol.
No exemplo de abaixo podemos ver como levar a cabo uma consulta que nos mostre uma listagem de músicos espanhois junto com seu nome, sua data de nascimento e de falecimento.
PREFIX dcterms: <http://purl.org/dc/terms/> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX dbp: <http://dbpedia.org/ontology/> SELECT ?musico ?nombreMusico ?fechaNacimiento ?fechaFallecimiento WHERE { ?musico dcterms:subject <http://dbpedia.org/resource/Category:Spanish_musicians>; rdfs:label ?nombreMusico ; dbp:birthDate ?fechaNacimiento ; dbp:deathDate ?fechaFallecimiento . FILTER (LANG(?nombreMusico) = "es") }
Exemplo 3
No exemplo2 temos visto o uso de FILTER que nos permite eliminar resultados da nossa busca. FILTER admite tipos de dados de tipo Bool, Int, Float, dataTime, etc. e frequentemente usa operadores do tipo >, <, >=, <=, =, !=, ||, &&:
PREFIX ex: <http://example.org#> SELECT ?nom ?ed WHERE{ ?x ex:nome ?nom . ?x ex:idade ?ed FILTER (?ed<40 || ?ed >18) }
Conversão e criação de tipos de dados
- str(arg)
- conversão a uma cadeia de caracteres. Por exemplo as url que utilizemos devem ser convertidas a uma cadeia de caracteres para poder ser tratadas como tais.
- lang(arg)
- devolve-nos o idioma do argumento que se lhe passa ("en", "es", "fr", etc.).
- datatype(arg)
- tipo de dados (integer, float, etc.).
- uri(arg), iri(arg) conversão do argumento num dado tipo URI/IRI
- bnode(arg)
- nó anónimo
- strdt (literal, tipo)
- gera literal com um tipo de dados.
strdt("1234", "xsd:integer")="1234"^^<xsd:integer>
- strlang(literal, tipo)
- gera literal com um idioma dado.
strlang("Universidade", "es")="Universidade"@"es"
Funções de verificação de tipos de dado
- isNumeric(arg) = true se é um número.
- isBlank(arg)= true se é um nó anónimo.
- isLiteral(arg) = true se é um literal.
- isIRI(arg) = true se é uma IRI.
Funções condicionais
- bound(arg) = true se tem um valor.
- exists(padrão) = true se cumpre um padrão.
- not exists(padrão) = true se não se cumpre o padrão.
- if(cond, expr1, expr2) = se cumpre-se a condição devolve expr1, se não, devolve expr2.
- coalesce (expresion1, expresion2, ...) = devolve a primeira expressão que se avalia sem erro.
Modificadores das consultas
- ORDER BY
- Ordena-os sobre a base de algum critério.
- DISTINCT
- Soluções únicas.
- REDUCED
- Elimina alguns, todos ou nenhum duplicado.
- LIMIT
- Restrição do número de resultados.
- OFFSET
- Controle do ponto de início das soluções na sequência global de soluções.
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT DISTINCT?name WHERE f ?x foaf:name ?name.g ORDER BY ?name LIMIT 3 OFFSET 1
Interfaces públicas SPARQL
DBpedia
Usando DBpedia podemos criar metadatos RDF e URIs. DBpedia transforma em RDF tripletas (Sujeito, Predicado, Objeto) que têm sido introduzidas na Wikipédia. A criação de uma página na Wikipédia provoca, por tanto, a criação de informação RDF em DBpedia. Isto é, quando se cria um conteúdo na Wikipédia do tipo starcraft cria-se a sua vez uma entrada. Através da interface pública Virtuoso SPARQL Query Editor podemos levar a cabo consultas no banco de dados da DBpedia. As consultas SPARQL serão traduzidas a SQL de forma transparente ao usuário. [http://virtuoso.openlinksw.com/dataspace/doc/dav/wiki/Main/VOSODSSparqlSamples Exemplos de consultas.
Wikidata
A base de dados em grafo Wikidata disponibiliza seu conteúdo para buscas usando a linguagem SPARQL através do Wikidata Query Service. [2]
Ver também
- RDF
- Web semântica
- OWL
- Wikidata
Referências
Ligações externas
- Grupo de trabalho do W3C para o acesso a dados (DAWG) (em inglês)
- Linguagem de consulta RDF (em inglês)
- Linguagens de recuperação: SeRQL e SPARQL
- Wikidata Query Service