在 SPARQL 的 CONSTRUCT 函数中使用 COUNT
Use COUNT inside a CONSTRUCT function in SPARQL
我正在尝试编写一个 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
}
提前致谢!
只允许 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
}
}
请注意,您应该从不用户内置namespaces/prefixes(例如owl:
、rdfs:
、rdf:
, xsd:
, 等等)为您的域 ontology!
我正在尝试编写一个 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
}
提前致谢!
只允许 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
}
}
请注意,您应该从不用户内置namespaces/prefixes(例如owl:
、rdfs:
、rdf:
, xsd:
, 等等)为您的域 ontology!