【问题标题】:Use COUNT inside a CONSTRUCT function in SPARQL [duplicate]在 SPARQL 的 CONSTRUCT 函数中使用 COUNT [重复]
【发布时间】:2017-08-27 12:00:28
【问题描述】:

我正在尝试编写一个 SPIN 规则,它将计算传入引用的数量并将此数字设置为属性值。例如,计算特定机器上发生的问题的数量。因此,我需要计算rdfs:occuredOn 类型的传入引用的数量(域:问题,范围:机器)。

CONSTRUCT {
?machine rdfs:numberOfIssues ?n .
}

WHERE {
?machine a ex:Machine .
?issue a ex:Issue .
?issue ?r ?machine .
(COUNT(?r) AS ?n) //Error
}       

提前谢谢你!

【问题讨论】:

  • 我不明白你为什么要为自己的实体使用 rdfs 和 owl 前缀。
  • 我其实不知道,我认为它会更容易阅读..
  • 我建议将示例中的 rdfs:owl: 前缀更改为 ex:

标签: sparql rdf owl triplestore topbraid-composer


【解决方案1】:

只允许GroupGraphPattern,即,您必须在WHERE 子句中使用子SELECT 查询:

CONSTRUCT 
  { 
    ?machine rdfs:numberOfIssues ?n .
  }
WHERE
  { { SELECT  ?machine (COUNT(?r) AS ?n)
      WHERE
        { ?machine  a  owl:Machine .
          ?issue    a  owl:Issue ;
                    ?r        ?machine
        }
      GROUP BY ?machine
    }
  } 

请注意,您应该切勿为您的域使用内置命名空间/前缀(例如 owl:rdfs:rdf:xsd: 等)本体!

【讨论】:

  • 感谢您的帮助和建议!
猜你喜欢
  • 2016-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多