Search code examples
sparql

NOT IN operator in SPARQL


Any idea why NOT IN operator is not working in this query

SELECT  ?p0 ?o0 
WHERE { 
<http://dbpedia.org/resource/Berlin>  ?p0 ?o0 . 
FILTER (?p0 NOT IN("rdfs:label", "dbo:abstract", "dbo:wikiPageWikiLink", "dbp:image", "dbp:wikiPageUsesTemplate", "rdfs:comment", "rdfs:label", "rdfs:seeAlso", "owl:sameAs", "dbo:wikiPageExternalLink", "dbo:wikiPageID", "dbo:wikiPageLength", "dbo:wikiPageRevisionID", "dbp:image")). 
}

Solution

  • The reason is that you use string literals instead of prefixed IRIs inside the NOT IN operator. Just remove all " and it will work well:

    SELECT  ?p0 ?o0 
    WHERE { 
      <http://dbpedia.org/resource/Berlin>  ?p0 ?o0 . 
      FILTER (?p0 NOT IN(rdfs:label, dbo:abstract, dbo:wikiPageWikiLink, dbp:image, dbp:wikiPageUsesTemplate, rdfs:comment, rdfs:label, rdfs:seeAlso, owl:sameAs, dbo:wikiPageExternalLink, dbo:wikiPageID, dbo:wikiPageLength, dbo:wikiPageRevisionID, dbp:image)).
    }
    

    Try out