如何在SPARQL中过滤可选值,而保留结果,其中可选值不存在?例如,在以下数据中有三本书,第三本没有价格:
:book1 a :Book ; :hasPrice 10.
:book2 a :Book ; :hasPrice 20.
:book3 a :Book.
如何选择价格低于15或根本没有价格的书籍?
答案 0 :(得分:4)
select ?book ?price where {
?book a :Book .
optional { ?book :hasPrice ?price }
filter ( !bound(?price) || ?price < 15 )
}
------------------
| book | price |
==================
| :book3 | |
| :book1 | 10 |
------------------