为什么这个变量永远不会有价值

Ani*_*vid 1 rdf semantic-web owl ontology sparql

我正在检查如果实例具有特定谓词的值,则将该值绑定到特定变量,否则,将该变量绑定到整数类型的值1.这是我的代码

select ?boosted where {
    :r1 a ?x
  optional
  {
    ?item rs:boostedBy ?boostedOptional
      bind (if(bound(?boostedOptional), ?boostedOptional, "1"^^xsd:integer) as ?boosted)
  }
}
Run Code Online (Sandbox Code Playgroud)

提升的价值总是空的,请看

在此输入图像描述

告诉我为什么?

注意

我认为你不需要数据来测试我的代码无法正常工作的原因,因为对我来说这听起来像是使用绑定的一般错误.但是,如果你想要数据,我会给你数据.

笔记2

从第一个位置开始没有rs:boostedBy谓词,所以我希望始终保持默认值,在这种情况下,它是1的整数类型.

sco*_*ger 5

IF必须在可选的图形模式之外:

SELECT ?boosted WHERE {
    :r1 a ?x
    OPTIONAL{ ?item rs:boostedBy ?boostedOptional . }
    BIND (IF(bound(?boostedOptional), ?boostedOptional, "1"^^xsd:integer) as ?boosted)
}
Run Code Online (Sandbox Code Playgroud)

其次,我没有看到rs:boostedBy属性和{:r1 a?x}三重模式之间的关系.即你想看看主题是否有一个boosttedBy属性?在这种情况下:r1和?项应该是相同的,即两者应该是:r1或两者都应该是?item,如果我在这里理解你的意图.