Как скриптовать разрешения SPARQL в Virtuoso

#permissions #sparql #grant #virtuoso

#разрешения #sparql #sql-грант #виртуоз

Вопрос:

Мне нужно предоставить разрешения, загрузить данные RDF и вставить, изменить и удалить некоторые из троек в скрипте (не в интерактивном режиме через Virtuoso Conductor).

Я предоставляю разрешения для Virtuoso версии 7.1.0.3207, и это сработало нормально:

 isql VERBOSE=$VERB ERRORS=stdout ECHO=$VERB "exec=grant execute on DB.DBA.SPARQL_MODIFY_BY_DICT_CONTENTS to "SPARQL";"

isql VERBOSE=$VERB ERRORS=stdout ECHO=$VERB "exec=grant execute on DB.DBA.SPARQL_MODIFY_BY_DICT_CONTENTS to "SPARQL_UPDATE";"

isql VERBOSE=$VERB ERRORS=stdout ECHO=$VERB "exec=grant execute on DB.DBA.SPARQL_DELETE_DICT_CONTENT to "SPARQL";"

isql VERBOSE=$VERB ERRORS=stdout ECHO=$VERB "exec=grant execute on DB.DBA.SPARQL_DELETE_DICT_CONTENT to "SPARQL_UPDATE";"

isql VERBOSE=$VERB ERRORS=stdout ECHO=$VERB "exec=grant execute on DB.DBA.SPARQL_INSERT_DICT_CONTENT to "SPARQL";"

isql VERBOSE=$VERB ERRORS=stdout ECHO=$VERB "exec=grant execute on DB.DBA.SPARQL_INSERT_DICT_CONTENT to "SPARQL_UPDATE";"

isql VERBOSE=$VERB ERRORS=stdout ECHO=$VERB "exec=grant execute on DB.DBA.L_O_LOOK to "SPARQL";"

isql VERBOSE=$VERB ERRORS=stdout ECHO=$VERB "exec=grant execute on DB.DBA.L_O_LOOK to "SPARQL_UPDATE";"
  

Но, похоже, это не работает для версии 7.2.4.2.3217
Я получил сообщение об ошибке, удалив тройки.

Virtuoso 42000 Error CL...:SECURITY: No SPARQL_UPDATE permission to use RDF loader

Как я могу решить эту проблему? пожалуйста, помогите.

Спасибо, Ян

Ответ №1:

Учитывая ограниченную информацию здесь, я думаю, это может решить вашу проблему —

  isql VERBOSE=$VERB ERRORS=stdout ECHO=$VERB "exec=grant SPARQL_UPDATE to "SPARQL";"
  

В противном случае вы можете получить более быстрый ответ (для версии с открытым исходным кодом) через список рассылки Virtuoso Users или (для коммерческой версии и / или контракта на поддержку VOS) через обращение в службу поддержки OpenLink.

(ObDisclaimer: программное обеспечение OpenLink производит Virtuoso и нанимает меня.)

Ответ №2:

Решение проблемы заключается в предоставлении привилегий при удалении также:

 grant execute on DB.DBA.SPARQL_DELETE_DICT_CONTENT to "SPARQL";
  

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

1. В другом случае grant "SPARQL_UPDATE" to "SPARQL" было решение.