如何根据变量是否绑定来更改查询公式?
我正在调用这样的魔法属性:
WHERE {
VALUES (?subj) {
([my bound positional parameter value goes here...])
}
?subj :myMagicProperty ?result .
}
在魔法属性中,我做了一个联合:
?result a :Rule .
{
?result :someProp ?subj .
}
UNION
{
FILTER NOT EXISTS {
?result :someProp ?anyValue .
}
}
换句话说,让我得到:someProp
这个值或 :someProp
未定义的所有结果。
这是棘手的部分。如果?subj
未绑定(即,我将其设置为UNDEF
在VALUES
块中),则上述查询会变得疯狂并返回所有内容。
相反,我想检查是否?subj
未绑定。如果?subj
未绑定,:myMagicProperty
则应仅返回以下结果:
FILTER NOT EXISTS {
?result ?someProp ?anyValue .
}
我已经尝试过使用FILTER
和BOUND
功能,但我无法弄清楚如何获得正确的行为。未绑定时,如何UNION
从查询中删除其中一个子句??subj
更新
修改了第一个查询以添加VALUES
块。
添加了缺失?result a :Rule .
的语句。
更正?someProp
为:someProp
.