为什么过滤器在此上下文中不起作用?

时间:2016-04-19 16:25:45

标签: sparql rdf semantic-web owl ontology

这是查询和结果:

enter image description here

如您所见,我正在过滤掉bo:ania的用户,为什么它们仍会出现?

但是,如果我删除广角卡并仅选择用户?userbo:ania就不会出现

enter image description here

我没有提供最小数据示例,因为这是关于过滤器和通配符如何工作的问题,而不是从数据集中提取某些数据的问题。但是,如果您需要最低限度的数据,我非常乐意提供这些数据。

1 个答案:

答案 0 :(得分:5)

您的?specificUser声明将{p> bo:ania绑定到VALUES?user是由其他三重模式定义的完全不同的绑定。您的FILTER表示过滤掉?user = bo:ania的结果,并且看起来正确地执行了此操作,看到?user未在任何结果中绑定bo:ania。< / p>

顺便说一句,除非你想检查多个值,否则在这种情况下不需要使用VALUES。如果它只是一个值,那么以下内容将起作用,并且您不会想知道为什么绑定到bo:ania包含在结果集中:

SELECT *
WHERE {
  ?user a rs:user .
  ?user rs:hasRated ?rating .
  ?rating rs:hasRatingDate ?ratngDate .
  FILTER (?ratingDates >= (now() -"P10000F"^^xsd:duration) )
  FILTER (?user != bo:ania)
}