假设我有一个包含4个三元组一个RDF基:4store中奇怪的SPARQL模式匹配?
"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引擎& DB)的答案是这样的:
"John" "sushi"
"John" "Mary"
"Frank" "sushi"
"John" "olives"
有人能解释这种现象给我吗?
如果这确实是它应该如何在SPARQL中工作,那么获得我需要的是什么方式?
没有使用过sparql,这对我来说似乎非常随意。 “约翰讨厌橄榄”有什么特别的地方让你觉得它应该被拒绝? – Blindy
你会发现,如果s =“John”并且p =“hates”,那么在数据库中就不存在满足查询第一部分的三元组。我期望这部分**定义**我感兴趣的领域。我想找出约翰如果喜欢寿司可能喜欢的其他东西,或者如果他讨厌寿司,他可能会讨厌什么其他的东西。但我得到的是一种混合 - 弗兰克讨厌寿司,因此我注定要被告知约翰讨厌什么。 –
有多奇怪。再次,我不能帮你,我只是好奇:) – Blindy