我对sparql的某些特定行为感到困惑。
让我们假设一些格式为n-triples的测试数据如下:
<s1> <t> <t1> .
<s1> <t> <t2> .
<s1> <p> <o> .
<s2> <p> <o> .
我想要归还的是具有 t 属性的 所有三元组。例如,我希望返回此测试数据:
<s1> <t> <t1> .
<s1> <t> <t2> .
<s1> <p> <o> .
但不是 s2 的三元组,因为它没有在任何地方定义属性 t 。
现在,发出如下查询:
select * where { ?s ?p ?o . ?s <t> [] }
返回
| s1 | p | o |
| s1 | t | t1 |
| s1 | t | t2 |
| s1 | p | o |
| s1 | t | t1 |
| s1 | t | t2 |
为什么会产生重复项,如何避免这种情况?