如果绑定SPARQL BIND不能按预期方式工作

时间:2019-07-12 11:07:13

标签: sparql

给出以下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的使用?如果是这样,是否有一个功能可以满足我的要求?

0 个答案:

没有答案