Предположим, у меня есть база RDF, содержащая 4 тройки:
"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"
потому что для каждой из первых трех тройок существует удовлетворительная пара (? S,? P) значений, которая делает объединенный шаблон равным TRUE.
Но на самом деле (я использую локальный 4store engine & DB) ответ такой:
"John" "sushi"
"John" "Mary"
"Frank" "sushi"
"John" "olives"
Может кто-нибудь объяснить мне это поведение?
И если это действительно так, как должно работать в SPARQL, то как мне получить то, что мне нужно?