Сами стандарты SPARQL не поддерживают транзакции.Однако Virtuoso и многие другие базы данных RDF поддерживают API-интерфейсы Eclipse RDF4J , которые имеют полную поддержку транзакций (раскрытие: я в команде разработчиков RDF4J).Пример использования транзакций RDF4J в Java может выглядеть примерно так:
Repository rep = ... ; // the Repository object is your database
// open a connection to the database
try(RepositoryConnection conn = rep.getConnection) {
conn.begin(); // start a new transaction
...
// do a query
boolean success = conn.prepareBooleanQuery("ASK ...").evaluate();
if (!success) {
conn.rollback();
}
else {
// add some data
conn.add(...);
conn.commit();
}
}
Для получения дополнительной информации о том, как транзакции работают с RDF4J, см. Документацию .
Если вы не работаете в Java, вы также можете работать с транзакциями через RDF4J REST API , который является расширением протокола SPARQL.
Какв сторону: вышесказанное просто для того, чтобы ответить на часть вашего вопроса «как мне совершать транзакции».Могут быть и другие, более эффективные механизмы, чем выполнение запроса ASK для типа проверки ограничений, который вы ищете.SHACL, язык ограничения форм, может быть тем, что вам нужно.Различные инструменты и платформы имеют (частичную или полную) поддержку проверки SHACL.Подробнее о поддержке RDF4J SHACL можно прочитать здесь.