В чем разница между DISTINCT
и REDUCED
в SPARQL?
SPARQL DISTINCT против REDUCED
Ответ 1
REDUCED похож на "лучшее усилие" DISTINCT. В то время как DISTINCT не гарантирует дублирования результатов, REDUCED может устранить некоторые, все или никакие дубликаты.
Какой смысл? Хорошо DISTINCT может быть дорогим; REDUCED может выполнять прямую работу по дублированию (например, удалять сразу повторяющиеся результаты) без необходимости запоминать каждую строку. Во многих приложениях это достаточно хорошо.
Сказав, что я никогда не использовал REDUCE, я никогда не видел, чтобы кто-то использовал REDUCED, и никогда не видел REDUCED, упомянутого в разговоре или учебнике.
Ответ 2
В моем сознании (и в моей собственной реализации SPARQL) REDUCED эффективно является необязательным ограничением DISTINCT, которое применяется только в том случае, если движок считает это необходимым, т.е. механизм запроса будет решать, удалять или не удалять повторяющиеся результаты на основе запроса
В моей собственной реализации я удаляю только дубликаты, когда REDUCED был использован, если OFFSET/LIMIT также используется