Я бы хотел протестировать онтологию OWL. Поскольку он большой, я хотел бы автоматически создавать именованных лиц как членов каждого класса, по одному на класс, с именем класса, с добавлением «1». Насколько я знаю, в обновлении SPARQL нет итерационного механизма. Но могут быть и другие способы его достижения. Любые идеи были бы хорошы.Создание тестовых лиц для всех классов онтологии
0
A
ответ
2
Не должно быть так сложно:
SELECT ?cls ?ind {
?cls a owl:Class .
BIND(IRI(CONCAT(STR(?cls), "1")) AS ?ind)
}
Этот запрос генерирует индивидуальный для каждого класса. Вы можете поместить этот запрос SELECT в часть WHERE запроса обновления SPARQL (untested):
INSERT {
?ind a ?cls .
} WHERE {
?cls a <http://www.w3.org/2002/07/owl#Class>
BIND(iri(concat(str(?cls), "1")) AS ?ind)
}
«Итерация» находится в соответствии с SPARQL. Способ думать об этом заключается в том, что двигатель создает набор результатов, содержащий каждое соответствие в предложении 'WHERE'. Затем он выполняет условие 'SELECT' /' CONSTRUCT'/'DELETE' /' INSERT'/... для каждого совпадения. Следовательно, SPARQL является скорее декларативным языком, и попытка думать об этом в процедурных терминах не соответствует парадигме. – scotthenninger