SPARQL-添加{}不会给出答案

SPARQL-添加{}不会给出答案,sparql,Sparql,我有一个SPARQL查询,它给出了一个答案(带有合适的前缀);它包含一个伪{},我添加它是为了准备联合 FROM <http://gerastree.at/t3> where { ?tok a nlp:Token . { ?tok nlp:pos ?cats . filter (strstarts(str(?cats),"V")) .} } limit 10 来自 在哪里{ ?tok a nlp:令牌。 {?

我有一个SPARQL查询,它给出了一个答案(带有合适的前缀);它包含一个伪
{
},我添加它是为了准备联合

FROM <http://gerastree.at/t3>    
where  {
        ?tok a nlp:Token . 
        { ?tok nlp:pos ?cats .
          filter   (strstarts(str(?cats),"V")) .}

}   limit 10
来自
在哪里{
?tok a nlp:令牌。
{?tok nlp:pos?cats。
过滤器(strstarts(str(?cats),“V”)。}
}限制10
如果发生更改,括号如下所示:

FROM <http://gerastree.at/t3>    # nt files Partial
where  {
        ?tok a nlp:Token . 
        ?tok nlp:pos ?cats .
        { filter   (strstarts(str(?cats),"V")) .}

}   limit 10
FROM#nt文件部分
在哪里{
?tok a nlp:令牌。
?tok nlp:位置?猫。
{过滤器(strstarts(str(?cats),“V”)。}
}限制10

答案是空的。括号内似乎没有?cats的绑定

没错。在第二个查询中,其计算结果为
join(bgp(triple-tok-rdf:type-nlp:Token)(triple-tok-nlp:pos-cats))(filter(strstarts(str-cats)“V”)(table unit))
,也就是说,空表上有一个过滤器可以更好地理解它,请记住,SPARQL计算是自下而上完成的,使用内部的
{}
括号构建子组。筛选器变量不在范围内。缺少信息:
bgp
的含义是什么我假设评估是从上到下逐行进行的;子组是否首先求值,即
?tok a nlp::Token:
最后完成?
bgp
->否,求值是自下而上的,子组(和子查询)将首先求值。对于其他两种三重模式,评估顺序并不重要。两个三重模式和子组(计算为空映射)之间的最后将有一个联接-这就是联接将为空且查询不会返回任何内容的原因。非常感谢您的澄清。