SPARQL CONSTRUCT:隐式主题/对象会影响结果吗?

时间:2017-04-19 13:48:46

标签: sparql semantic-web virtuoso linked-data

我有一个SPARQL CONSTRUCT,如:

CONSTRUCT
{
  ?address
    schema:addressLocality ?city;
    schema:addressCountry ?country;
    schema:streetAddress ?addressLine;
    schema:postalCode ?zip;
    schema:addressRegion ?region.
}
WHERE
{
  ?address
    schema:addressLocality ?city;
    schema:addressCountry ?country. 

  OPTIONAL { ?address schema:streetAddress ?addressLine }
  OPTIONAL { ?address schema:postalCode ?zip }
  OPTIONAL { ?address schema:addressRegion ?region }
}

我这样得到的三元组少于CONSTRUCT明确列出所有三元模式的情况,而没有省略可选的变量主题(即可能是无界的):

CONSTRUCT
{
  ?address
    schema:addressLocality ?city;
    schema:addressCountry ?country.

  ?address schema:streetAddress ?addressLine.
  ?address schema:postalCode ?zip.
  ?address schema:addressRegion ?region.
}
...

我假设这两种形式不能影响结果,但现在我正在收集,而隐含的主题语法实际上意味着“我希望所有的图形都植根于这个主题,或者根本不需要它” 。是这样的吗?这种行为是由SPARQL指定的,还是它在某些引擎中实现的方式(我在Virtuoso之上)?

1 个答案:

答案 0 :(得分:0)

不是最终答案,但至少到目前为止我学到了什么。正如上面的评论所说,SPARQL应该从任何一种形式返回相同的内容。

我怀疑这个问题是由Virtuoso doesn't trigger an error when the query execution times out这个事实引起的,它会默默地返回它在截止日期之前所取得的结果。但我也不确定,因为我没有在响应中看到任何特殊的HTTP标头,正如他们在我提到的链接中所建议的那样。