Regex sparql正则表达式文件扩展名
我试图开发一个SPARQL查询来捕获RDF对象中的文件扩展名Regex sparql正则表达式文件扩展名,regex,xpath,sparql,Regex,Xpath,Sparql,我试图开发一个SPARQL查询来捕获RDF对象中的文件扩展名 SELECT DISTINCT * WHERE { ?s <http://URI/identifier> ?o . BIND(REPLACE(?o,".*\.(\w+)", "$1") AS ?filetype) } LIMIT 10 然而,我的表达在我的生活中起作用 我需要转义哪些字符以及如何转义?从错误消息中,我猜您正在使用RDF4J控制台或工作台。这些工具中SPARQL正则表达式的特殊字符转义存在
SELECT DISTINCT
*
WHERE {
?s <http://URI/identifier> ?o .
BIND(REPLACE(?o,".*\.(\w+)", "$1") AS ?filetype)
} LIMIT 10
然而,我的表达在我的生活中起作用
我需要转义哪些字符以及如何转义?从错误消息中,我猜您正在使用RDF4J控制台或工作台。这些工具中SPARQL正则表达式的特殊字符转义存在一个公开问题。看 有一个解决办法,就是不只是像蒂姆在回答中建议的那样加倍反斜杠,而是对每个特殊角色使用4个反斜杠。您还需要在
REPLACE
中添加第三个参数以使其合法(可能您只想保留扩展名):
选择DISTINCT
*
何处{
?s?o。
绑定(将(?o、.\\\.(\\\\w+)、“$1”)替换为?文件类型)
}限制10
无可否认,这很难看。正在进行修复 您的
REPLACE
缺少参数。你不是说模式匹配应该被什么取代。
SELECT DISTINCT
*
WHERE {
?s <http://URI/identifier> ?o .
BIND(REPLACE(?o,".*\\\\.(\\\\w+)", "$1") AS ?filetype)
} LIMIT 10