您好,我有一个关于 sparql 查询的简单问题。
花括号对 where 子句有影响吗?
例如:
之间有区别吗

{
  ?s1 ab:wasBornIn "Berlin".
  ?s1 ?p1 ?o1
}
{
  ?s2 ab:someProperty "SomeLiteral".
  ?s2 ?p2 ?o2
}


{
  ?s1 ab:wasBornIn "Berlin".
  ?s1 ?p1 ?o1.
  ?s2 ab:someProperty "SomeLiteral".
  ?s2 ?p2 ?o2.
}

提前致谢

最佳答案

在很多情况下,没有区别

在您提供的示例中,没有区别。这实际上在规范中被调用:



但可能有过滤器

但是,可以看到差异的地方是过滤器:



我认为这意味着

{ ?s ?p ?o1 }
{ ?s ?q ?o2
  filter( !isIri(?o1) )
}

不同于
{
  ?s ?p ?o1 .
  ?s ?q ?o2 .
  filter( !isIri(?o1) )
}

空白节点标签

它可能发挥作用的另一个地方是空白节点标签:



例如,sparql.org 上的验证器将报告以下语法错误:
select * where {
  { _:s ?p ?o }
  { _:s ?p ?o }
}

关于rdf - sparql - 使用花括号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28699799/

10-13 01:12