Как написать SPARQL-запрос, который эффективно сопоставляет строковые литералы, игнорируя регистр
=================================================================================================

 Я использую Jena ARQ для написания SPARQL-запроса к большой онтологии, читаемой из Jena TDB, чтобы найти типы, связанные с концепциями на основе метки rdfs:

 Это работает довольно хорошо и на самом деле довольно быстро (<1 секунды). К сожалению, для некоторых терминов мне нужно выполнить этот запрос без учета регистра. Например, потому что метка`"Tylenol"` в онтологии, но не`"tylenol"`, следующий запрос будет пустым:

 Я могу написать регистронезависимую версию этого запроса, используя синтаксис FILTER, например:

 Но теперь запрос занимает больше минуты! Есть ли способ написать запрос без учета регистра более эффективным способом?

 по которой запрос с запросом FILTER выполняется медленнее, заключается в том, что? Term не связан, поэтому требуется сканирование индекса PSO или POS, чтобы найти все операторы с предикатом rdfs: label и отфильтровать их по регулярному выражению. Когда он был привязан к конкретному ресурсу (в вашем первом примере), он мог использовать индекс OPS или POS для сканирования только операторов с предикатом rdfs: label и указанным ресурсом объекта, который имел бы гораздо меньшую мощность.

 Распространенным решением проблемы текстового поиска такого типа является использование внешнего текстового индекса. В этом случае Jena предоставляет свободный текстовый индекс под названием [LARQ](https://jena.apache.org/documentation/larq/), который использует Lucene для выполнения поиска и объединяет результаты с остальной частью запроса.



 которые вы можете использовать в SPARQL,`regex`, наверное, самый дорогой. Ваш запрос может выполняться быстрее, если вы избегаете`regex` и вы используете`UCASE` или`LCASE` на обеих сторонах теста. Что-то типа

 Это может быть быстрее, но в целом не ожидайте отличной производительности для текстового поиска в любом тройном хранилище. Тройные магазины очень хороши в сопоставлении графиков и не очень хороши в сопоставлении строк.