Very nice David!1. Does the MINUS actually utilize ElasticSearch indexes or just Blazegraph?
I'd like to help the community by writing up a bit better documentation on our SPARQL pages that talks about FILTER() versus MINUS() if no one has this info floating around?The only footnote I saw was:
"MINUS
lets you select results that don’t fit some graph pattern.FILTER NOT EXISTS
is mostly equivalent (see the SPARQL spec for an example where they differ), but – at least on WDQS – usually slower by quite a bit."at the bottom of the SPARQL tutorialand the wiki page SPARQL query service has:
Excluding subsets
SPARQL has three different idioms for excluding subsets:
OPTIONAL { ... ?x ... } FILTER(!bound(?x))
,FILTER NOT EXISTS { ... }
MINUS { ... }
Currently, in almost all circumstances, Blazegraph resolves all of these to the same query plan.
2. Is that still a true statement that those 3 above use the same query plan currently?