%META:TOPICPARENT{name="VirtTipsAndTricksGuide"}%
---+ How Do I use MINUS in a SPARQL query?
Virtuoso supports the MINUS
function of SPARQL 1.1, as shown below --
SQL> SPARQL
SELECT COUNT(*)
WHERE
{
{ ?s ?p "Novosibirsk" } MINUS { ?s ?p "???????????" }
}
callret-0
INTEGER
313
No. of rows in result: 1
[[http://lod.openlinksw.com/sparql?default-graph-uri=&query=SELECT+COUNT%28*%29+%0D%0AWHERE+%0D%0A++%7B+%0D%0A++++%7B+%3Fs+%3Fp+%22Novosibirsk%22+%7D+MINUS+%7B+%3Fs+%3Fp+%22%D0%9D%D0%BE%D0%B2%D0%BE%D1%81%D0%B8%D0%B1%D0%B8%D1%80%D1%81%D0%BA%22+%7D%0D%0A++%7D&should-sponge=&format=text%2Fhtml&CXML_redir_for_subjs=121&CXML_redir_for_hrefs=&timeout=15000&debug=on][View the results]] of the query execution on the [[http://lod.openlinksw.com][LOD]] instance.
This query is equivalent to the following query, also conforming to SPARQL 1.1 --
SQL> SPARQL
SELECT COUNT(*)
WHERE
{
?s ?p "Novosibirsk" FILTER NOT EXISTS { ?s ?p "???????????" }
}
callret-0
INTEGER
313
No. of rows in result: 1
[[http://lod.openlinksw.com/sparql?default-graph-uri=&query=SELECT+COUNT%28*%29+%0D%0AWHERE+%0D%0A++%7B%0D%0A++++%3Fs+%3Fp+%22Novosibirsk%22++FILTER+NOT+EXISTS+%7B+%3Fs+%3Fp+%22%D0%9D%D0%BE%D0%B2%D0%BE%D1%81%D0%B8%D0%B1%D0%B8%D1%80%D1%81%D0%BA%22+%7D+%0D%0A++%7D&should-sponge=&format=text%2Fhtml&CXML_redir_for_subjs=121&CXML_redir_for_hrefs=&timeout=15000&debug=on][View the results]] of the query execution on the [[http://lod.openlinksw.com][LOD]] instance.
---++Related
* [[VirtTipsAndTricksGuide][Virtuoso Tips and Tricks Collection]]
* [[http://docs.openlinksw.com/virtuoso/rdfsparql.html][Virtuoso Documentation]]