Я использую SPARQL для построения запроса и хотел бы исключить определенные результаты.
Я знаю, FILTER NOT EXISTS
можно использовать для выполнения задачи. Например:
SELECT * {
?sub a ?type .
FILTER NOT EXISTS {?sub a :NotExpectedType.}
}
Но во время исследования я случайно обнаружил, что могу написать !a
. Это действительный запрос SPARQL, но результат отличается от FILTER NOT EXISTS
. Например:
SELECT * {
?sub a ?type .
?sub !a :NotExpectedType .
}
Так что же означает !a
? (Я знаю, что a
- это сокращение для rdf:type
, но это еще не помогает мне понять.)