Предположим, у меня есть граф, содержащий учеников трех разных классов.
Пример графика:
<http://some/graph#John_Doe> rdf:type <http://some/graph/ontology#Student>
<http://some/graph#John_Doe> <http://some/graph#hasGrade> <http://some/graph#Grade_3>
<http://some/graph#Grade_3> rdf:type <http://some/graph/ontology#Grade>
Я хочу создать атрибут для каждого экземпляра класса Grade с именем gradeStrength для хранения количества учащихся в этом классе. оценка.
В приведенном выше примере это будет выглядеть так:
<http://some/graph#Grade_3> <http://some/graph#gradeStrength> 1^^xsd:integer
В настоящее время я делаю это, используя два отдельных запроса следующим образом:
- Запустите запрос SELECT + GROUP BY на графике, чтобы получить количество баллов для каждой оценки.
- Переберите строки результатов 1., чтобы создать строку троек.
- Запустите запрос обновления INSERT DATA на графе
Как этого добиться, используя один запрос SPARQL/Update с конструкциями INSERT и GROUP BY? Я попытался написать такой запрос, и он не работает в Blazegraph.
INSERT {?grade <http://some/graph#gradeStrength> ?gradeStrength} WHERE { { SELECT ?grade (COUNT(?student) AS ?gradeStrength) { ?student <http://some/graph#hasGrade> ?grade} GROUP BY ?grade } }
- (действительно не проверено) - person UninformedUser   schedule 12.07.2020