假设我有一个包含4个三元组的RDF基础:
"John" "loves" "sushi"
"John" "loves" "Mary"
"Frank" "hates" "sushi"
"John" "hates" "olives"
让我们说我认为“寿司”这么奇怪,我想知道人们究竟能做些什么,甚至更多还有什么他们可以将相同的动作应用于=)
所以我写了一个对我来说合乎逻辑的SPARQL查询:
SELECT ?s ?o WHERE
{
?s ?p "sushi".
?s ?p ?o
}
自然希望得到以下结果
"John" "sushi"
"John" "Mary"
"Frank" "sushi"
因为对于前3个三元组中的每一个都存在令人满意的一对(?s,?p)值,这使得连接模式评估为TRUE。
但实际上(我使用本地4store引擎和数据库)答案是这样的:
"John" "sushi"
"John" "Mary"
"Frank" "sushi"
"John" "olives"
有人可以向我解释这种行为吗?
如果这真的是它在SPARQL中应该如何工作,那么获得我需要的方法是什么?
答案 0 :(得分:1)
作为一个自我承认的SPARQL坚果,我认为你期待的答案是正确的。
我建议使用他们的支持邮件列表与4store人联系 - http://groups.google.com/group/4store-support?pli=1
请注意,这可能不是4store中的直接错误,而是底层rasqal查询库中的错误,但我不太了解4store告诉你这种或那种方式。