Sparql 过滤器不存在,产生混乱的结果

Sparql 过滤器不存在,产生混乱的结果,sparql,Sparql,我在sparql中尝试了以下查询: Select distinct (count(?jel) AS ?jelCount ) Where { ?jel a skos:Concept . ?jel skos:prefLabel ?label . Filter not Exists { ?jel skos:narrower ?narrower . ?jel skos:notation ?notation . } } 然而,它并没有给我

我在sparql中尝试了以下查询:

Select distinct (count(?jel) AS ?jelCount )

Where {

  ?jel a skos:Concept .
  ?jel skos:prefLabel ?label .


  Filter not Exists {
    ?jel skos:narrower ?narrower .
    ?jel skos:notation ?notation .
  }             
}
然而,它并没有给我想要的答案,它实际上什么都没有过滤

但是如果我写:

Select distinct (count(?jel) AS ?jelCount )

Where {

  ?jel a skos:Concept .
  ?jel skos:prefLabel ?label .


Filter not Exists {
    ?jel skos:narrower ?narrower .
  }

  Filter not Exists {
    ?jel skos:notation ?notation .
  }

}
然后我得到了我想要的答案


我无法解释为什么?有人能告诉我这一点吗?

在SPARQL中,每个模式的整体(由
{}
表示)必须匹配才能产生效果

因此,您的第一个查询要求项目中不存在
skos:slowner
skos:notation
三元组的项,因为它们处于相同的
过滤器不存在的模式中。假设数据中的某个项目没有同时存在这两个三元组的项目,因此不会过滤掉任何内容

但是,在第二次查询中,您要求的项目中,
skos:slower
skos:notation
项不存在(因为每个项都在一个单独的
过滤器中,不存在
模式)。由于您的数据中有些项目有这些三元组,因此有些内容会被过滤掉。

微妙但“合乎逻辑”,完全“合乎逻辑”:!谢谢