SPARQL正则表达式与带有“ i”标志的波斯字符不匹配

时间:2018-11-30 15:34:40

标签: regex sparql virtuoso persian

我希望忽略大小写“ 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个匹配项

此行为的原因是什么,如何更改其行为以达到预期效果?

Linux(x86_64-unknown-linux-gnu),单服务器版上的Virtuoso版本07.20.3217

P.S .: 升级到07.20.3229后,问题仍然存在。

在现在具有相同版本的DBpedia上也会发生此问题:

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

1 个答案:

答案 0 :(得分:0)

我在https://github.com/openlink/virtuoso-opensource/issues/705的Virtuoso GitHub存储库中发现了一个有关此问题的未解决问题,似乎正在调查中。

感谢所有评论者为调查提供帮助,并提供了很好的解决方法和替代方法。