FILTER – excluindo resultados
Até então, vimos modificadores que operam na cláusula SELECT, ou após a WHERE. Outro modificador útil é FILTER (“filtrar”, em português), que pode aparecer dentro de WHERE. Mostraremos duas formas de filtrar informações: a função FILTER, que seleciona apenas os itens que cumpram certo requisito (excluindo os itens que não cumprem) e a FILTER NOT EXISTS (“filtrar não existentes”, em português), que é uma cláusula que exclui resultados que combinem com certo padrão.
A função FILTER
A função FILTER remove resultados com base na expressão que aparece entre os seus parênteses. Só são usados os resultados para os quais a expressão dentro dos parênteses for verdadeira.
Digamos que queremos editar a consulta dos 10 maiores sucessos de bilheterias que são parte de uma série de filmes, para que a consulta só retorne os filmes que foram lançados antes de 2000.
Na linha 8, adicionamos um padrão de seleção para armazenar o valor da propriedade P577 (data de publicação) na variável ?data. Na linha seguinte, usamos FILTER para selecionar apenas os filmes cuja data de publicação seja anterior a 01-01-2000.
Note que escrevemos a data limite “2000-01-01” entre aspas. Também adicionamos ^^xsd:dateTime logo em seguida, para indicar que aquele valor representa uma data.
Função YEAR
Outra forma de realizar essa mesma consulta é usando a função YEAR (“ano”, em português). Essa função recebe uma data (ou valor do tipo dateTime), e retorna apenas o ano da data.
FILTER NOT EXISTS
Vamos retomar a consulta de atrizes indicadas a mais de três Oscars. Mas, agora, vamos editá-la para que retorne apenas as atrizes que nunca receberam um Oscar.
Adicionaremos a cláusula FILTER NOT EXISTS, na qual especificamos os padrões que NÃO devem estar presentes nos dados. No nosso caso, a atriz não pode ter uma propriedade P166 (prêmios recebidos) com um valor que seja uma instância de (P31) Oscar (Q19020):
Em outras palavras, a consulta exclui os itens que possuam declarações que correspondam ao padrão definido dentro da cláusula FILTER NOT EXISTS.