DAWG测试查询two-nested-opt.rq如下所示:
PREFIX : <http://example/>
SELECT *
{
:x1 :p ?v .
OPTIONAL
{
:x3 :q ?w .
OPTIONAL { :x2 :p ?v }
}
}测试数据如下:
@prefix : <http://example/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
:x1 :p "1"^^xsd:integer .
:x2 :p "2"^^xsd:integer .
:x3 :q "3"^^xsd:integer .
:x3 :q "4"^^xsd:integer .如果我运行该查询,预期的结果只是?v=1中的一条记录(简称)。不要真正理解它,因为注释第二个可选的,结果是两个记录:
我发现提到第二个可选项的一些可能的解释是没有操作的,因为?v绑定在第二个可选的和主要的bgp之间不匹配。但别明白这是怎么解释的。不管第二个可选结果是什么,第一个可选结果不应该总是包含在解决方案中吗?
发布于 2019-07-27 13:57:09
这个测试用例是关于评估是功能性的(也称为自下而上),以及?v的早期(最内部)设置对结果的影响。在测试中,内部最大设置?v会阻塞第一个可选选项,?w =3和?w =4不是结果。
这是一般情况下,有一个外部?v (可选的左边),然后一个可选的部分,没有提到?v本身有一个可选的使用?v。
如果查询被认为是自上而下的,答案将是不同的。
评价是:
:x3 :q ?w leftjoin :x2 :p ?v
Two rows:
?w = 3; ?v = 2
?w = 4; ?v = 2
:x1 :p ?v
?v = 1现在左联接“v= 1”与"?w = 3;?v = 2“--可选的不联接,因此结果是一行,”v= 1“和no ?w绑定。
如果省略":x2 :p ?v“,则第一个
:x3 :q ?w
Two rows:
?w = 3
?w = 4两者都与?v = 1连接,给出了两行?v和?w。
https://stackoverflow.com/questions/57226339
复制相似问题