Я ищу способ, которым запрос может быть подготовлен и запущен на удаленном сервере. Я знаю, что это возможно в Stardog и GraphDB с использованием rdf4j в Java. Но как это сделать с помощью Python для Blazegraph? Я пробовал посмотреть Sparqlwrapper и rdflib. rdflib поддерживает подготовленный оператор, но его можно использовать только для синтаксического анализа файлов, и я не нашел много документации о том же, что и драйвер, как в случае rdf4j. SparqlWrapper позволяет использовать запросы к удаленному репозиторию, но у него нет примеров подготовленных операторов, и мне нужны оба.
Я просмотрел этот запрос SPARQL на удаленной удаленной конечной точке RDFLib / Redland, но кажется устаревшим (8 лет)
Требуется создать микросервис поверх blazegraph для выполнения пользовательского ввода во время выполнения. Если подготовленные операторы не используются, конкатенация строк сделает их уязвимыми для угроз безопасности и шаблонных кодов.
setQuery()
не выполняет никаких преобразований алгебры и т.п., поэтому вы можете использовать простую строку Python в качестве шаблона и изменять ее посредством модификации строки. - person UninformedUser   schedule 31.05.2019var queryTemplate = "select * where {?s a {}}"
, а затем позвоните, например,queryTemplate.format("ex:Class")
или что-то еще - person UninformedUser   schedule 31.05.2019rdflib
имеет некоторую реализацию хранилища вокруг службы SPARQL, называемуюSPARQLStore
, но она не работает с подготовленными запросами. Более того, если вы проверяете исходный код варианта в памяти, подготовленные запросы позволяют предоставлять привязки, которые просто обрабатываются с помощью поиска по словарю в контексте запроса во время оценки запроса SPARQL. Тебе никакой другой проверки не делалось. Удаленные привязки вводятся в запрос через функцию SPARQL 1.1VALUES
, см. Соответствующий код здесь. - person UninformedUser   schedule 03.06.2019rdflib
. - person UninformedUser   schedule 03.06.2019str
, который на самом деле это не так после синтаксического анализа объектаQuery
- person UninformedUser   schedule 03.06.2019