繁体   English   中英

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

[英]SPARQL regex doesn't match Persian characters with the “i” flag

我希望忽略大小写的“ 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,单服务器版

PS:升级到07.20.3229后,问题仍然存在。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM