如何根據變量是否被綁定來更改查詢公式?SPIN函數中的條件子查詢(SPARQL)
我調用魔法屬性是這樣的:
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
未被綁定(即,我在VALUES
塊中將其設置爲UNDEF
),則上述查詢將變爲無效並返回所有內容。
相反,我想檢查?subj
是否被解除綁定。如果?subj
不作承諾,應該:myMagicProperty
僅返回結果如下:
FILTER NOT EXISTS {
?result ?someProp ?anyValue .
}
我已經嘗試使用FILTER
和BOUND
功能,但我無法弄清楚如何得到正確的行爲。 ?subj
未綁定時,如何從我的查詢中刪除UNION
條款之一?
更新
修訂第一個查詢添加VALUES
塊。
添加缺少?result a :Rule .
聲明。
更正?someProp
至:someProp
。
拉爾夫, 我更新的問題,我的魔法屬性定義添加一個任期從示例代碼丟失。這樣做的目的是,「給予一定的價值?SUBJ,所有規則的資源,找到具有rule.someProp == SUBJ OR rule.someProp == NULL(沒有定義的屬性)規則。如果輸入值?SUBJ爲空,返回只有rule.someProp == null的規則。「 – RMorrisey
我試圖用類似「FILTER(綁定(?屬性))」,但我發現是什麼?屬性,都會因爲在同一塊它下面的語句的約束,所以也沒有篩選出結果的方式我希望他們。 – RMorrisey