Я могу заметить две разницы.
Использование графика IRI по умолчанию: Сначала форма запроса на http://dbpedia.org/sparql устанавливает график IRI по умолчаниюдо http://dbpedia.org
.Ваш код этого не делает.Таким образом, ваш код будет работать со всеми графами в базе данных, а не только с графом DBpedia.Чтобы добавить тот же график по умолчанию к вашему запросу, это должно сработать:
objectToExec.addDefaultGraph("http://dbpedia.org");
(я не знаю, какие еще графики есть у конечной точки, поэтому я не знаю, насколько это на самом деле имеет значение.)
Различные таймауты: Во-вторых, ваш код устанавливает тайм-аут на 3000, а форма запроса устанавливает его на 30000. Эта конкретная конечная точка настроена на возврат независимо от того, что онадо сих пор находил, когда истекает время ожидания, поэтому, если он не нашел ничего через 3 секунды, он вернется без результатов.Форма запроса позволяет выполнить запрос в течение 30 секунд.
При этом полнотекстовый поиск можно сделать намного эффективнее, используя bif:contains
:
FILTER bif:contains(?label1, 'ketolide')
При этом используется полнотекстовый индекс, который намного быстрее, чем сканирование всех строк в базе данных.
И, наконец, вам следует рассмотреть исправление уязвимости кода вSPARQL впрыск .