Я хочу понять, как работает интерфейс кунжута в отношении операторов обновления SPARQL (ADD, COPY,...) и как это распространяется на фактические реализации этого интерфейса.
Например, правильно ли, что оператор SPARQL ADD реализован методом executeAdd в классе SailUpdateExecutor? См. https://bitbucket.org/openrdf/sesame/src/aa0dd3b04738e707c582e4dda14a0a0c5a77ab51/core/repository/sail/src/main/java/org/openrdf/repository/sail/helpers/SailUpdateExecutor.java?at=master&fileviewer=file-view-default .
Если это правильно, правильно ли я интерпретирую, что слой SAIL представляет собой тройное извлечение из исходного графа и вставку его в целевой граф?
Если да, то можно ли изменить это поведение для реализации SAIL? Например, я думаю, что эта операция может быть эффективно реализована в хранилище nativeRDF с помощью собственных операций массового индексирования? Универсальная реализация не может использовать преимущества внутренних структур данных и, следовательно, выполнение не будет оптимальным.
Если это не было предусмотрено в интерфейсе паруса, существует ли какой-либо из интерфейсов запросов SESAME, который применяет эту стратегию: как можно больше протолкнуть запрос в хранилище? Или стратегия обратная: когда запрос можно исследовать, он выполняется немедленно.
Наконец, можно ли настроить стратегию выполнения запросов? Я нахожу в исходном коде ссылку на оптимизаторы выполнения запросов, но не могу найти, можно ли их настроить для каждого экземпляра хранилища?
обратная связь приветствуется