SPARQL - SPARQL

SPARQL
Paradigma Linguagem de consulta
Desenvolvedor W3C
Apareceu pela primeira vez 2008 ; 13 anos atrás (2008)
Versão estável
1.1 / 21 de março de 2013 ; 8 anos atrás (2013-03-21)
Local na rede Internet www .w3 .org / TR / sparql11-query /
Implementações principais
Jena , OpenLink Virtuoso

SPARQL (pronuncia-se " brilho " / s p ɑː k ə l / , um acrônimo recursivo para Protocolo de SPARQL e RDF Query Language ) é uma linguagem de consulta RDF , isto é, a semântica linguagem de consulta para bancos de dados -Capaz para recuperar e manipular dados armazenados no formato Resource Description Framework (RDF) . Foi padronizado pelo RDF Data Access Working Group (DAWG) do World Wide Web Consortium e é reconhecido como uma das principais tecnologias da web semântica. Em 15 de janeiro de 2008, o SPARQL 1.0 foi reconhecido pelo W3C como uma recomendação oficial e o SPARQL 1.1 em março de 2013.

SPARQL permite que uma consulta consista em padrões triplos , conjunções , disjunções e padrões opcionais .

Existem implementações para várias linguagens de programação . Existem ferramentas que permitem a conexão e a construção semi-automática de uma consulta SPARQL para um terminal SPARQL, por exemplo, ViziQuer. Além disso, existem ferramentas para traduzir consultas SPARQL para outras linguagens de consulta, por exemplo, para SQL e XQuery .

Vantagens

O SPARQL permite que os usuários escrevam consultas em relação ao que pode ser vagamente chamado de dados de "valor-chave" ou, mais especificamente, dados que seguem a especificação RDF do W3C . Assim, todo o banco de dados é um conjunto de triplos "sujeito-predicado-objeto". Isso é análogo ao uso de alguns bancos de dados NoSQL do termo "valor-chave do documento", como MongoDB .

Em termos de banco de dados relacional SQL , os dados RDF também podem ser considerados uma tabela com três colunas - a coluna de assunto, a coluna de predicado e a coluna de objeto. O assunto em RDF é análogo a uma entidade em um banco de dados SQL , onde os elementos de dados (ou campos) para um determinado objeto de negócios são colocados em várias colunas, às vezes espalhados por mais de uma tabela e identificados por uma chave única . Em RDF, esses campos são, em vez disso, representados como linhas separadas de predicado / objeto compartilhando o mesmo assunto, geralmente a mesma chave exclusiva, com o predicado sendo análogo ao nome da coluna e o objeto aos dados reais. Ao contrário dos bancos de dados relacionais, a coluna de objeto é heterogênea: o tipo de dados por célula geralmente está implícito (ou especificado na ontologia ) pelo valor do predicado . Também ao contrário do SQL, o RDF pode ter várias entradas por predicado; por exemplo, pode-se ter várias entradas "filho" para uma única "pessoa" e pode retornar coleções de tais objetos, como "filhos".

Assim, SPARQL fornece um conjunto completo de operações de consulta analíticas, tais como JOIN, SORT, AGGREGATEpara dados, cujo esquema está intrinsecamente parte dos dados em vez de exigir uma definição esquema separado. No entanto, as informações do esquema (a ontologia) são frequentemente fornecidas externamente, para permitir a junção de diferentes conjuntos de dados de forma inequívoca. Além disso, o SPARQL fornece sintaxe de passagem de gráfico específica para dados que podem ser considerados um gráfico.

O exemplo a seguir demonstra uma consulta simples que alavanca a definição de ontologia foaf("amigo de um amigo").

Especificamente, a consulta a seguir retorna nomes e e-mails de cada pessoa no conjunto de dados:

PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name 
       ?email
WHERE
  {
    ?person  a          foaf:Person .
    ?person  foaf:name  ?name .
    ?person  foaf:mbox  ?email .
  }

Esta consulta reúne todos os triplos com um assunto correspondente, em que o predicado de tipo, " a", é uma pessoa ( foaf:Person) e a pessoa tem um ou mais nomes ( foaf:name) e caixas de correio ( foaf:mbox).

O autor desta consulta optou por fazer referência ao assunto usando o nome da variável " ?person" para clareza legível. Uma vez que o primeiro elemento do triplo é sempre o sujeito, o autor poderia facilmente ter usado qualquer nome de variável, como " ?subj" ou " ?x". Qualquer que seja o nome escolhido, ele deve ser o mesmo em cada linha da consulta para significar que o mecanismo de consulta deve juntar triplos com o mesmo assunto.

O resultado da união é um conjunto de linhas - ?person, ?name, ?email. Essa consulta retorna o ?namee ?emailporque ?persongeralmente é um URI complexo, em vez de uma string amigável. Observe que qualquer um ?personpode ter várias caixas de correio, portanto, no conjunto retornado, uma ?namelinha pode aparecer várias vezes, uma para cada caixa de correio.

Essa consulta pode ser distribuída para vários terminais SPARQL (serviços que aceitam consultas SPARQL e retornam resultados), computada e os resultados reunidos, um procedimento conhecido como consulta federada .

Seja de forma federada ou localmente, as definições triplas adicionais na consulta podem permitir junções a diferentes tipos de assunto, como automóveis, para permitir consultas simples, por exemplo, para retornar uma lista de nomes e e-mails para pessoas que dirigem automóveis com um alto eficiência do combustível.

Formulários de consulta

No caso de consultas que leem dados do banco de dados, a linguagem SPARQL especifica quatro variações de consulta diferentes para propósitos diferentes.

SELECT consulta
Usado para extrair valores brutos de um terminal SPARQL, os resultados são retornados em formato de tabela.
CONSTRUCT consulta
Usado para extrair informações do terminal SPARQL e transformar os resultados em RDF válido.
ASK consulta
Usado para fornecer um resultado Verdadeiro / Falso simples para uma consulta em um ponto de extremidade SPARQL.
DESCRIBE consulta
Usado para extrair um gráfico RDF do terminal SPARQL, cujo conteúdo é deixado para o terminal decidir, com base no que o mantenedor considera informações úteis.

Cada um desses formulários de consulta leva um WHEREbloco para restringir a consulta, embora, no caso da DESCRIBEconsulta, o WHEREseja opcional.

SPARQL 1.1 especifica um idioma para atualizar o banco de dados com vários novos formulários de consulta.

Exemplo

Outro exemplo de consulta SPARQL que modela a pergunta "Quais são as capitais de todos os países da África?":

PREFIX ex: <http://example.com/exampleOntology#>
SELECT ?capital
       ?country
WHERE
  {
    ?x  ex:cityname       ?capital   ;
        ex:isCapitalOf    ?y         .
    ?y  ex:countryname    ?country   ;
        ex:isInContinent  ex:Africa  .
  }

As variáveis ​​são indicadas por um prefixo ?ou $. Ligações para ?capitale ?countryserão devolvidas. Quando um triplo termina com um ponto e vírgula, o sujeito desse triplo implicitamente completará o par seguinte em um triplo inteiro. Então, por exemplo, ex:isCapitalOf ?yé abreviação de ?x ex:isCapitalOf ?y.

O processador de consulta SPARQL procurará conjuntos de triplos que correspondam a esses quatro padrões triplos, vinculando as variáveis ​​na consulta às partes correspondentes de cada triplo. Importante notar aqui é a "orientação de propriedade" (as correspondências de classe podem ser conduzidas apenas por meio de atributos ou propriedades de classe - consulte a digitação em pato )

Para tornar as consultas concisas, o SPARQL permite a definição de prefixos e URIs de base de maneira semelhante ao Turtle . Nesta consulta, o prefixo " ex" significa “http://example.com/exampleOntology#”.

Extensões

GeoSPARQL define funções de filtro para consultas de sistema de informação geográfica (GIS) usando padrões OGC bem compreendidos ( GML , WKT , etc.).

SPARUL é outra extensão do SPARQL. Ele permite que o armazenamento RDF seja atualizado com esta linguagem de consulta declarativa, adicionando os métodos INSERTe DELETE.

Implementações

Código aberto, implementações de referência de SPARQL

Consulte Lista de implementações SPARQL para uma cobertura mais abrangente, incluindo triplestore , APIs e outros armazenamentos que implementaram o padrão SPARQL.

Veja também

Referências

links externos