Sparql Transaction - PullRequest
       86

Sparql Transaction

0 голосов
/ 07 февраля 2019

Я хочу вставить несколько объектов в триплет, например, Jena fuseki или виртуоз.

В моем случае объект равен первичному ключу.Это похоже на реляционную базу данных.Как я могу убедиться, что объект присутствует только один раз или уже используется?Можно ли комбинировать ASK со вставкой в ​​Sparql?Или можно сгенерировать ключ?

Пока вы используете экземпляр бэкэнда, вы можете быть уверены, что субъект существует только один раз, но с большим количеством экземпляров запрос и вставка должны выполняться одновременно для сохранения транзакции.

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Обновление может иметь форму INSERT .. WHERE, а часть WHERE может включать проверку того, обновляться или нет.

Протокол SPARQL для обновления требует, чтобы действия были атомарными.

0 голосов
/ 08 февраля 2019

Сами стандарты 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 можно прочитать здесь.

...