【问题标题】:sparql - regex doesn't work as case insensitivesparql - 正则表达式不区分大小写
【发布时间】:2012-05-25 14:13:43
【问题描述】:

我在 C# 中使用 SemWeb.Sparql.dll 通过 C# 在 sparql 中执行一些查询 我需要将给定的字符串变量与我的本体(rdfs:label)中的字符串进行比较,但我需要这个比较不区分大小写,所以我使用了正则表达式函数。我使用了这个查询:

disease = "'^" + disease + "'";
string query = prefixes + @"
               Select ?a ?name Where{
               ?a ?c owl:Class .
               ?a rdfs:label ?name.
               FILTER (Regex(?name," + @disease + ",'i'))}";

在某些情况下可以正常工作,而在其他情况下则不能。任何人都可以帮助我。

【问题讨论】:

  • 您使用 SemWeb 有什么特别的原因吗? SemWeb 在 2010 年停止了积极的开发,并且不支持任何更新的 SPARQL 1.1 标准。您是否考虑过 dotNetRDF (dotnetrdf.org) 作为替代方案? (免责声明 - 我开发了这个

标签: sparql


【解决方案1】:

您可以尝试以下方法吗:

FILTER (regex(str(?name), ...

即将?name 包裹在str() 中。这将确保第一个参数是一个字符串。

【讨论】:

  • 我用过,结果是一样的。在某些情况下它并不区分大小写
  • 好的,当您说“某些病例”时,您的意思是“某些疾病不匹配”,还是“对于给定的疾病,某些应该匹配的标签不匹配”?
  • 我的意思是:“对于给定的疾病,一些应该匹配的标签不匹配”
猜你喜欢
  • 2011-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-08
  • 1970-01-01
  • 2013-11-12
相关资源
最近更新 更多