Создание отдельных тестов для всех классов онтологии

#sparql #owl

#sparql #owl

Вопрос:

Я хотел бы протестировать онтологию OWL. Поскольку он большой, я хотел бы автоматически создавать именованных пользователей в качестве членов каждого класса, по одному на класс, с именем класса, к которому добавляется «1». Насколько я знаю, в обновлении SPARQL нет механизма итерации. Но могут быть и другие способы достижения этой цели. Любые идеи будут оценены.

Комментарии:

1. «Итерация» заключается в сопоставлении SPARQL. Способ думать об этом заключается в том, что движок создает результирующий набор, содержащий каждое совпадение в WHERE предложении. Затем он выполняет SELECT / CONSTRUCT / DELETE / INSERT / … предложение для каждого соответствия. Следовательно, SPARQL — это скорее декларативный язык, и попытка представить его в процедурных терминах не соответствует парадигме.

Ответ №1:

Не должно быть так сложно:

 SELECT ?cls ?ind {
  ?cls a owl:Class .
  BIND(IRI(CONCAT(STR(?cls), "1")) AS ?ind)
}
  

Этот запрос генерирует индивидуума для каждого класса. Вы можете поместить этот запрос SELECT в WHERE часть запроса обновления SPARQL (непроверенный):

 INSERT {
  ?ind a ?cls .
} WHERE { 
   ?cls a <http://www.w3.org/2002/07/owl#Class>
    BIND(iri(concat(str(?cls), "1")) AS ?ind)
}