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
<https://www.wikidata.org/wiki/Wikidata:SPARQL_tutorial>
and the wiki page SPARQL query service
<https://www.wikidata.org/wiki/Wikidata:SPARQL_query_service/queries#Excluding_subsets>
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?
Thad
https://www.linkedin.com/in/thadguidry/