[英]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.