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

Referências

  1. «SPARQL Query Language for RDF». www.w3.org. Consultado em 14 de julho de 2019 
  2. «Wikidata:SPARQL query service - Wikidata». www.wikidata.org. Consultado em 16 de novembro de 2021 

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
  • v
  • d
  • e
Contexto
World Wide Web · Internet · Hipertexto · Banco de dados · Rede semântica · Ontologia
Sub-tópicos
Linked data · Data Web · Hiperdado · URI dereferenciável · Sistema baseado em regras · Espaço de dados
Aplicações
Wiki semântico · Publicação semântica · Busca semântica · Publicidade semântica · Motor de regra · Casamento semântico · Mapeador semântico · Análise de semântica · Arquitetura semântica orientada a serviços
Tópicos relacionados
Normas
Sintaxe e tecnologias de suporte : RDF (Notação 3 · Turtle · N-Triples) · SPARQL · URI · HTTP · XML

Esquemas, ontologias e regras : RDFS · OWL · Rule Interchange Format · Semantic Web Rule Language · SHACL

Anotação semântica : RDFa · eRDF · GRDDL · Microformato

Vocabulários comuns : FOAF · SIOC · Dublin Core · SKOS
Controle de autoridade
  • Wd: Q54871
  • FAST: 1920692
  • GND: 7693644-2
  • LCCN: sh2014100282