Sparql 为什么这个变量永远没有值

Sparql 为什么这个变量永远没有值,sparql,rdf,semantic-web,owl,ontology,Sparql,Rdf,Semantic Web,Owl,Ontology,我正在检查,如果一个实例有一个特定谓词的值,则将该值绑定到一个特定变量,否则,将该变量绑定到integer类型的值1。这是我的密码 select ?boosted where { :r1 a ?x optional { ?item rs:boostedBy ?boostedOptional bind (if(bound(?boostedOptional), ?boostedOptional, "1"^^xsd:integer) as ?boosted) }

我正在检查,如果一个实例有一个特定谓词的值,则将该值绑定到一个特定变量,否则,将该变量绑定到integer类型的值1。这是我的密码

select ?boosted where {
    :r1 a ?x
  optional
  {
    ?item rs:boostedBy ?boostedOptional
      bind (if(bound(?boostedOptional), ?boostedOptional, "1"^^xsd:integer) as ?boosted)
  }
}
?的值总是空的,请看

为什么


我认为您不需要数据来测试为什么我的代码不工作,因为对我来说,使用边界似乎是一个普遍的错误。然而,如果你想要数据,我给你数据

注2
从一开始就没有rs:boostedBy谓词,因此我希望始终使用默认值,在本例中为1,类型为integer。

IF需要位于可选图形模式之外:

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

其次,我没有看到rs:boostedBy属性和{:r1a?x}三重模式之间的关系。也就是说,你是否在尝试查看对象是否具有boostedBy属性?在这种情况下:r1和?项应该是相同的,即如果我理解您的意图,两者都应该是:r1或两者都应该是?项。

if需要在可选图形模式之外:

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

其次,我没有看到rs:boostedBy属性和{:r1a?x}三重模式之间的关系。也就是说,你是否在尝试查看对象是否具有boostedBy属性?在这种情况下:r1和?item应该是相同的,也就是说,如果我理解您的意图,两者都应该是:r1或两者都应该是?item。

“我认为您不需要数据来测试我的代码为什么不能工作,因为对我来说,使用绑定听起来像是一个普遍的错误。”在这种情况下,这可能是正确的,但是,确保你提供一个好主意仍然是一个好主意。如果您认为数据无关紧要,那么您应该确保您提供的示例查询实际上可以在没有任何数据的情况下执行(并且仍然可以演示问题)。“我认为您不需要数据来测试我的代码为什么不起作用,因为对我来说,使用边界听起来像是一个普遍的错误。”在这种情况下可能是这样的,但是,确保你提供一个好主意仍然是一个好主意。如果您认为数据无关紧要,那么您应该确保您提供的示例查询实际上可以在没有任何数据的情况下执行(并且仍然演示问题)。