SPARQL регулярное выражение не соответствует персидским символам с флагом "i" - PullRequest
0 голосов
/ 30 ноября 2018

Я ожидаю, что флаг игнорирования регистра "i" только увеличит количество совпадений, но не уменьшит их, но следующий запрос SPARQL (конечная точка http://www.snik.eu/sparql) приведет к одному совпадению без флага, но не совпадет сэто:

select * { ?s rdfs:label ?l. filter(regex(str(?l),"قانون بیمارستان")) }

-> 1 совпадение

select * { ?s rdfs:label ?l. filter(regex(str(?l),"قانون بیمارستان","i")) }

-> нет совпадения

с неперсидскимбуквы работают как положено:

select count(*) { ?s rdfs:label ?l.filter(regex(str(?l),"Information"))}

-> 319 совпадений

select count(*) { ?s rdfs:label ?l.filter(regex(str(?l),"Information","i"))}

-> 363 совпадений

В чем причина такого поведения и как я могу изменить его поведение так, как ожидается?

Virtuoso версия 07.20.3217 для Linux (x86_64-unknown-linux-gnu), Single Server Edition

PS: проблема по-прежнему сохраняется после обновления до 07.20.3229.

Проблема также возникает в DBpedia, которая сейчас имеет ту же версию:

select *
{
  <http://dbpedia.org/resource/Persian_language> dbo:abstract ?l.    
  filter(regex(str(?l),"فارسی","i")).
}

1 Ответ

0 голосов
/ 03 декабря 2018

Я обнаружил открытую проблему в репозитории Virtuoso GitHub, касающуюся этой проблемы, в https://github.com/openlink/virtuoso-opensource/issues/705,, похоже, она находится в стадии расследования.

Спасибо всем комментаторам за помощь в расследовании и за выдающиесяобходные пути и альтернативы.

...