Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SPARQL:布尔查询的逆结果_Sparql_Rdf_Allegrograph - Fatal编程技术网

SPARQL:布尔查询的逆结果

SPARQL:布尔查询的逆结果,sparql,rdf,allegrograph,Sparql,Rdf,Allegrograph,如果RDF数据库中存在一组三元组,我试图让SPARQL返回“false”。我可以用ASK查询返回'true' ASK WHERE { ?subjID rdf:type pref:Person. } 如上所述,我尝试在WHERE中添加NOT EXISTS{},但这会导致错误 ASK WHERE { NOT EXISTS { ?subjID rdf:type pref:Person. } } 我链接的文档没有描述这一点,但您必须将过滤器放在不存在的前面 ASK WHERE { FILTER NO

如果RDF数据库中存在一组三元组,我试图让SPARQL返回“false”。我可以用ASK查询返回'true'

ASK WHERE { ?subjID rdf:type pref:Person. }
如上所述,我尝试在WHERE中添加NOT EXISTS{},但这会导致错误

ASK WHERE { NOT EXISTS { ?subjID rdf:type pref:Person. } }

我链接的文档没有描述这一点,但您必须将过滤器放在不存在的前面

ASK WHERE { FILTER NOT EXISTS { ?subjID rdf:type pref:Person. } }

你提到的文件是一份旧草案。要调查的“正确”来源始终是官方文件,也就是说,在您的情况下,我认为您的解决方案不起作用。我的意思是,它在什么上应用过滤器?在计算
exists
过滤器期间,没有解决方案映射。您可以检查
ASK{FILTER存在的位置{?subkid rdf:type pref:aclassthattowentexist.}
作为一个反例,对于不在数据集中的任意类,它总是返回
true
。首先,应该是一个通用的
?s?p?o
三重模式,然后:
询问哪里不存在{subcid?p?o过滤器{subcid rdf:type pref:Person.}
@AKSW在过滤器前面不需要人工语句模式-一个简单的单例
{/code>就足够了(在这种情况下,解析sparql的工具不会通过default@ASKW答案中的查询是完全正确的。
WHERE
子句是一个有效的BGP(一组空绑定的单一解决方案),带有一个应该在其上计算的
过滤器。我建议显式使用空BGP
{}
作为一种可能的解决方法。来自答案的查询在Wikidata服务上正常工作,因此很可能是dbpedia sparql服务的错误。
询问{FILTER不存在的地方{?subpid rdf:type pref:Person.}
是一个合理的查询。
不存在
匹配可能包含变量的给定模式。
过滤器
测试空模式(一行,无变量)的结果,如果它通过过滤器,
询问
为真。对于不匹配的
?subpid rdf:type pref:Person
和“否”,过滤器为“是”如果有任何匹配的三元组。