SPARQL 中的 NOT IN 运算符

问题描述

知道为什么 NOT IN 运算符在此查询中不起作用

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")). 
}

解决方法

原因是您在 NOT IN 运算符中使用了 string literals 而不是 prefixed IRIs。只需删除所有 " 即可正常工作:

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...