Вы не можете комбинировать обновление и запрос таким способом. Разделенные точкой с запятой последовательности операций SPARQL могут только содержать операции обновления.
Кроме того, операция CREATE GRAPH
сама по себе выдаст ошибку, если график уже существует. Просто выполните:
CREATE GRAPH <http://www.example.com/ont#books>
Если граф уже существует, операция выдаст ошибку.
Наконец: большинство реализаций базы данных RDF4J не записывают пустые графы. Это означает, что операция CREATE GRAPH
по большей части является операцией без операции: она выдает ошибку, если граф, который вы пытаетесь создать, уже существует (то есть существуют операторы, использующие этот названный граф), ив противном случае он просто возвращает ОК и фактически ничего не делает.
Чтобы фактически создать именованный граф в RDF4J, вы должны добавить в него операторы, например:
INSERT DATA { GRAPH <http://www.example.com/ont#books> { <ex:s1> <ex:p1> <ex:o1> } }
Если вы хотите проверить, что граф не существует, прежде чем вставить(чтобы он случайно не добавился к существующему графику), вы можете использовать последовательность обновления, например, так:
CREATE GRAPH <http://www.example.com/ont#books> ;
INSERT DATA { GRAPH <http://www.example.com/ont#books> { <ex:s1> <ex:p1> <ex:o1> } }
Если график уже существует, CREATE
завершится ошибкой, а остальныепоследовательность будет прервана.