Я хочу запросить все тройки с определенным предикатом p. Запрос должен возвращать только тройки (s, p, o), где другое направление (o, p, s) не существует. Как я могу сделать такой запрос?
Это довольно просто:
SELECT ?s ?p ?o { ?s ?p ?o MINUS { ?o ?p ?s } }
FILTER NOT EXISTS вместо MINUS также будет работать.Замените ?p в запросе нужным предикатом или используйте что-то вроде FILTER (?p=ex:myPredicate), если вы хотите ?p в результате.
FILTER NOT EXISTS
MINUS
?p
FILTER (?p=ex:myPredicate)