Используйте COUNT внутри функции CONSTRUCT в 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
}
Заранее спасибо!
1 ответ
Решение
Только GroupGraphPattern
разрешено, т. е. вы должны использовать SELECT
запрос в WHERE
пункт:
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:
и т. д.) для вашей доменной онтологии!