【发布时间】:2017-10-13 01:50:18
【问题描述】:
我有一个基于 Apache Jena 的本体,其中有两个命名图:
m_p
p1 pred1 mp1
p2 pred1 mp1
p3 pred1 mp2
p4 pred1 mp2
p5 pred1 mp3
p6 pred1 mp3
和m_p_s
mp1 pred2 w:frnd
mp1 pred2 w:fdlfkdl
mp2 pred2 w:kdsjflk
mp2 pred2 w:jflksdlkj
mp3 pred2 w:frnd
mp3 pred2 w:fjksldjfls
我想得到 m_p 中的所有三元组,哪些对象是 m_p_s 中的谓词,而m_p_s 中谓词的对象是 w:frnd
换句话说,我想进行返回(结果为)p1、p2、p5 和 p6 的查询strong> 来自 m_p 并且不返回 p3 和 p4。
我正在尝试使用嵌套查询来执行此操作,但它不起作用:例如
SELECT $subj $pred $pr
FROM NAMED named_graph:m_p
WHERE
{
SELECT $pr
WHERE
{
GRAPH named_graph:m_p_s { $pr $pred0 w:frnd }
}
}
返回空结果。我尝试了不同的方法,但我得到了错误或空结果或 m_p 中的所有内容。
出于性能原因,我不想使用 UNION 或 FILTER。
你知道我该怎么做吗?
问候, 斯蒂芬
【问题讨论】:
-
注意:我跳过了前缀声明以缩短帖子的可读性。例如。 'named_graph' 是带有 URI ao.com/namedGraph> 的前缀
-
您的外部查询没有选择任何三元组模式。
$subj和$pred的绑定从哪里来?因此,子SELECT之前不应该有?subj ?pred ?pr吗? IE。SELECT ?subj ?pred ?pr FROM NAMED named_graph:m_p WHERE { ?subj ?pred ?pr { SELECT ?pr WHERE { GRAPH named_graph:m_p_s { ?pr ?pred0 w:frnd } } } }我回来后会在 2 小时内测试它,也许图表还缺少一些东西 -
请不要缩短查询 - 确保可以剪切和粘贴,以便读者准确了解您使用的内容。
标签: nested sparql jena named-graphs