给出以下SPARQL查询:
SELECT DISTINCT ?mainRestaurant ?p ?o WHERE {
?registeredRestaurant <http://testData.com/terms#RestaurantType> "Registered Restaurant" ;
<http://testData.com/terms#city> <http://testData.com/city/london> .
?normalRestaurant <http://testData.com/terms#RestaurantType> "Restaurant" ;
<http://testData.com/terms#city> <http://testData.com/city/london> .
BIND(IF(bound(?registeredRestaurant), ?registeredRestaurant, ?normalRestaurant) as ?mainRestaurant )
?mainRestaurant ?p ?o.
}
我希望,如果:
?registeredRestaurant <http://testData.com/terms#RestaurantType> "Registered Restaurant" ;
<http://testData.com/terms#city> <http://testData.com/city/london>
未返回任何内容,因此?registeredRestaurant
将不绑定任何内容,因此在我的SPARQL查询的以下部分:
BIND(IF(bound(?registeredRestaurant), ?registeredRestaurant, ?normalRestaurant) as ?mainRestaurant )
?mainRestaurant
将绑定到?normalRestaurant
,但是整个SPARQL查询只是不返回任何内容。但是,当?registeredRestaurant
确实具有关联的三元组时,则SPARQL查询将按预期返回。
我通过用bound(?registeredRestaurant)
和true
替换来确定是false
的问题,然后用{{1}填充了?mainRestaurant
}或?registeredRestaurant
。
我是否误解了?normalRestaurant
的使用?如果是这样,是否有一个功能可以满足我的要求?