Regex sparql正则表达式文件扩展名

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正则表达式的特殊字符转义存在

我试图开发一个SPARQL查询来捕获RDF对象中的文件扩展名

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