Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex SPARQL过滤器表达式中特殊字符的处理_Regex_Sparql_Dbpedia - Fatal编程技术网

Regex SPARQL过滤器表达式中特殊字符的处理

Regex SPARQL过滤器表达式中特殊字符的处理,regex,sparql,dbpedia,Regex,Sparql,Dbpedia,我访问dbpedia[1]的SPARQL端点以获取给定城市的URI。我使用以下查询来实现这一点: PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX dbpedia: <http://dbpedia.org/ontology/> select distinct * where {?uri rdfs:label ?label. FILTER (REGEX(STR(?label), "^Köln

我访问dbpedia[1]的SPARQL端点以获取给定城市的URI。我使用以下查询来实现这一点:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbpedia: <http://dbpedia.org/ontology/> 
select distinct * where 
  {?uri rdfs:label ?label. 
  FILTER (REGEX(STR(?label), "^Köln$", "i")). 
  ?uri a dbpedia:PopulatedPlace.
}
前缀rdfs:
前缀dbpedia:
选择distinct*where
{?uri rdfs:label?label。
过滤器(REGEX(STR(?label),“^Köln$”,“i”))。
?uri a dbpedia:填充的位置。
}

如果我查询一个没有德国umlaut的城市,一切正常,但如果有umlaut,我什么也得不到。当通过代码执行此查询时,我甚至收到一个406错误(不可接受)

你知道如何在针对dbpedia的SPARQL查询中处理umlauts吗

提前感谢,
坦率的


[1]

在处理您的角色时,可能在传输或其他方面存在错误。当你把它写下来时,它确实起作用,就像这样:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbpedia: <http://dbpedia.org/ontology/> 
select distinct * where 
  {?uri rdfs:label ?label. 
  FILTER (REGEX(STR(?label), "^K\u00F6ln$")). 
  ?uri a dbpedia:PopulatedPlace.
}
前缀rdfs:
前缀dbpedia:
选择distinct*where
{?uri rdfs:label?label。
过滤器(REGEX(STR(?label),“^K\u00F6ln$”)。
?uri a dbpedia:填充的位置。
}

编辑:我现在看到这不适用于“I”标志。文档表明“u”标志适用于此处。

您是否尝试过使用
^K.ln$
?“当通过代码执行此查询时,我甚至收到一个406错误(不可接受)”这听起来可能是客户机编码查询而不是查询本身的问题。此外,没有真正的理由进行
筛选(REGEX(STR(?label),“^Köln$”,“i”)。
如果您想不敏感地匹配整个字符串的大小写,只需小写或大写两个字符串并比较相等。当然,在这种情况下,您不太可能真的需要大小写不敏感,您最好只要求
?uri rdfs:label“Köln”@de
(如果这是正确的语言标记)。@Fede:这会起作用,但也会导致像窑这样不必要的点击。@JoshuaTaylor:在这种情况下,客户端编码可能会有问题,但我仍然无法通过他们的Web界面从终结点获得任何结果。使用?uri rdfs:标签“Köln”@de我得到了预期的结果,但我不能确定给定的城市名称实际上是哪种语言,所以我想使用“语言不敏感”的表示法。@Aaginor好吧,你可以搜索东西,然后过滤那些有字符串为“Köln”的标签的东西(或包含它)。当然,问题是现在有很多结果需要考虑和筛选。这可能不是问题,因为
a PopulatedPlace
模式将缩小一些结果的范围。+1用于解决编码问题。我仍然要指出,如果目的是匹配准确的字符串,则可能是les只规范化两个字符串的大小写并比较是否相等是很昂贵的。我只得到没有任何标志的结果,但我认为这是最好的解决方案。谢谢你的回答!