过滤可选数据?

TWd*_*ado 0 rdf sparql

如何过滤 SPARQL中的可选值,同时保留不存在可选值的结果?例如,在下面的数据中有三本书,第三本书没有价格:

:book1 a :Book ; :hasPrice 10.
:book2 a :Book ; :hasPrice 20.
:book3 a :Book.
Run Code Online (Sandbox Code Playgroud)

如何选择价格低于 15 或根本没有价格的书籍?

Jos*_*lor 5

select ?book ?price where { 
  ?book a :Book .
  optional { ?book :hasPrice ?price }
  filter ( !bound(?price) || ?price < 15 )
}
Run Code Online (Sandbox Code Playgroud)
------------------
| book   | price |
==================
| :book3 |       |
| :book1 | 10    |
------------------
Run Code Online (Sandbox Code Playgroud)