Valores ausentes e a cláusula OPTIONAL
Como vimos anteriormente, quando há mais de um padrão a ser reconhecido na cláusula WHERE, há uma relação E implícita entre as declarações, de tal modo que a consulta só devolverá padrões que correspondam a todas as declarações. Por exemplo, no último exercício, nós tivemos três padrões a serem correspondidos:
#Filmes Star Wars SELECT ?item ?itemLabel ?diretor ?diretorLabel ?custo 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 ?item wdt:P2130 ?custo. # o valor da propriedade "custo" de ?item será armazenado na variável ?custo SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE]". } }
As declarações nas linhas 6, 7 e 8 tem uma relação E entre elas. Logo, um item só será considerado um resultado válido se ele tiver todas as três propriedades: P179 (série) com o valor Q22092344 (saga de filmes Star Wars), E P57 (diretor), E P2130 (custo). Se um item não corresponder a um desses requisitos (por exemplo, se o item não tiver uma propriedade sobre seu custo), ele será ignorado pela consulta.
O SPARQL é uma linguagem de consulta de reconhecimento de padrões (“pattern-matching”, em inglês). Consultas SPARQL só retornarão dados quando o padrão definido na seção WHERE for completamente reconhecido nos itens que você está consultando. Muitos conjuntos de dados têm informações faltantes, por isso é importante ter em mente que um item só será um resultado de uma consulta se ele tiver dados válidos em cada trecho da declaração feita no WHERE. Ou seja, o SPARQL não vai retornar um item que não tenha alguma propriedade ou valor declarado na cláusula WHERE.
A palavra-chave OPTIONAL (“opcional”, em português) dentro da seção WHERE determina padrões opcionais que você quer de encontrar nos dados. OPTIONAL permite procurar por dados que talvez não estejam lá.
Rode a consulta novamente, desta vez usando um padrão opcional.