在SPARQL中的CONSTRUCT函数内使用COUNT

Gra*_*eer 1 rdf owl sparql triplestore topbraid-composer

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

CONSTRUCT {
?machine rdfs:numberOfIssues ?n .
}

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

先感谢您!

AKS*_*KSW 6

GroupGraphPattern允许,即你必须SELECTWHERE子句中使用子查询:

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
    }
  } 
Run Code Online (Sandbox Code Playgroud)

请注意,你应该从来没有用户内置的命名空间/前缀(如owl:,rdfs:,rdf:,xsd:等),为您的领域本体!