繁体   English   中英

为什么过滤器在这种情况下不起作用?

[英]Why filter doesn't work in this context?

这是查询和结果:

在此处输入图片说明

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

但是,如果删除宽卡并仅选择用户?user ,则bo:ania不会出现

在此处输入图片说明

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

?specificUser通过VALUES语句绑定到bo:ania ?user是由其他三元模式定义的完全不同的绑定。 您的FILTER说要过滤掉?user = bo:ania ,并且看来这样做正确,因为在任何结果中都没有看到?user绑定到bo:ania

顺便说一句,除非您要检查多个值,否则在这种情况下无需使用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)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM