我有一個SPARQL構造,工作原理是這樣的:條件在SPARQL綁定/ CONSTRUCT
CONSTRUCT {
?uri rdfs:label ?label;
foo:has-value ?v.
}
WHERE {
?uri
rdfs:label ?label;
foo:has-flag ?f.
BIND (IF (?f = 0, "Value for Zero", IF (?f = 1, "Value for One", '')) AS ?v)
}
,當?f
既不是0也不是1(但仍具有一定的價值),我不想的問題是has-value
聲明。通過上面的語法,我得到了?uri has-value ''
。如果我可以爲?v
指定某種「null」,或者避免綁定,但它會起作用,但在規範中我找不到任何類似的內容。
任何解決方案?
編輯:solution by Scott適用於常見的基於圖形的查詢。我來自的案例涉及使用VALUES,is more complicated,到目前爲止我還找不到解決方案。
對不起,沒有。這個函數總共跳過了?uri(s),而在這種情況下,我想僅省略has-value三元組(並保留rdfs:label或其他)。嘗試與可選,但不工作。 – zakmck
好吧,它暴露了SPARQL'IF'中的一個明顯缺陷。如果SPRQL只允許'then'表達式,即不需要'else',那麼在原始查詢中它將是一個簡單的刪除操作。所有這些嘗試都只是爲了解決這個問題。 – scotthenninger
是的,可選是我提出問題的方法。問題是我來自它的變體,涉及VALUES構造,似乎沒有解決方案:http://jena.markmail.org/search/#query:%20list%3Aorg.apache。 incubator.jena-dev + page:1 + mid:q3fp3ve3dgolc2cz + state:results – zakmck