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 tutorial

and 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?