Was ist der Unterschied zwischen DISTINCT
y REDUCED
in SPARQL?
Antworten
Zu viele Anzeigen?REDUCED ist wie ein 'best effort' DISTINCT. Während DISTINCT garantiert keine doppelten Ergebnisse, REDUCED kann einige, alle oder keine doppelten Ergebnisse eliminieren.
Was ist der Grund dafür? Nun, DISTINCT kann teuer sein; REDUCED kann die einfache Deduplizierungsarbeit erledigen (z. B. sofort wiederholte Ergebnisse entfernen), ohne sich jede Zeile merken zu müssen. In vielen Anwendungen ist das gut genug.
Allerdings habe ich REDUCE noch nie benutzt, ich habe noch nie jemanden REDUCED benutzen sehen und ich habe auch noch nie gesehen, dass REDUCED in einem Vortrag oder Tutorial erwähnt wurde.
Meiner Meinung nach (und in meiner eigenen SPARQL-Implementierung) ist REDUCED eine optionale DISTINCT-Beschränkung, die nur dann angewendet wird, wenn die Engine es für notwendig hält, d.h. die Abfrage-Engine entscheidet anhand der Abfrage, ob doppelte Ergebnisse eliminiert werden sollen oder nicht
In meiner eigenen Implementierung beseitige ich Duplikate nur dann, wenn REDUCED verwendet wurde und OFFSET/LIMIT ebenfalls verwendet wurde