Consultas com mais de uma variável
Até então, nossas consultas basicamente tinham uma única variável, não considerando aquelas declaradas para o rótulo e/ou descrição do item. Agora vamos ver como fazer consultas com mais de uma variável.
A consulta a seguir recupera itens que fazem parte da saga de filmes Star Wars e seus respectivos diretores.
#Filmes Star Wars SELECT ?item ?itemLabel ?diretor WHERE { ?item wdt:P179 wd:Q22092344. # item faz parte da saga de filmes Star Wars ?item wdt:P57 ?diretor. # o valor da propriedade "diretor" de ?item será armazenado na variável ?diretor SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE]". } }
Explicação da consulta
Na seção SELECT, temos as variáveis ?item e ?diretor, além de ?itemLabel e ?diretorLabel, usadas para armazenar os rótulos das variáveis correspondentes.
Na seção WHERE, nas linhas 6 e 7, vemos os padrões que deverão ser correspondidos:
?item wdt:P179 wd:Q22092344.
?item wdt:P57 ?diretor.
O SPARQL procurará itens no Wikidata com declarações que correspondam aos padrões definidos na seção WHERE. Assim como nas outras consultas, a primeira linha da seção WHERE diz “Encontre itens que tenham uma declaração com a propriedade P179 (série) que tenham como valor Q22092344 (saga de filmes Star Wars).
A segunda linha diz “Agora encontre a propriedade P57 (diretor) de cada um desses itens, e a armazene na variável ?diretor”.
Como vimos anteriormente, existe um E implícito entre cada declaração na seção WHERE. Isto é, apenas padrões que correspondam a todas as declarações serão devolvidos por esta consulta.
Agora vamos rodar esta consulta:
O que precisa ser adicionado para vermos os nomes dos diretores? Adicione a informação que está faltando e rode a consulta novamente.
Ver a resposta
# Um pouco de sintaxe
Se quisermos que a consulta mostre o nome de cada diretor, mas não seu número Q, podemos omitir o ?diretor da seção SELECT, e declarar apenas ?diretorLabel. Isso implica que existirá uma variável ?diretor (que vemos na seção WHERE), mas que ela não será apresentada nos resultados da consulta.