首页 > 解决方案 > 在 SPARQL 中使用正则表达式绑定变量?

问题描述

我正在制作一个 OWL 知识图,以获取有关 Covid 大流行中患者的信息。我一直在使用 SPARQL 将电子表格中的字符串转换为适当的对象和属性值。

我有像Infected by P231 and P456 and P39393我想要的是可以将变量绑定到患者 ID 的字符串。我认为这不应该太难,因为字符串只遵循一些模式。例如,字符串将有一个、两个或三个患者 ID,因此我可以编写一个匹配每个单独案例的查询。

我以为我可以使用正则表达式来做到这一点,但现在我更仔细地查看了正则表达式,我认为它所能做的就是告诉我存在这样的患者 ID,但与诸如这样的函数不同,SUBSTR它实际上会返回我想要的部分字符串,所以我可以将它绑定到一个变量,正则表达式只返回 true 或 false 某些字符串与模式匹配或不匹配。那是对的吗?

如果这是正确的,是否有其他方法可以在 SPARQL 中进行模式匹配,我实际上可以将变量绑定到匹配部分模式的子字符串?还是我需要求助于像 Python 这样的完整编程语言来做到这一点?

标签: regexdata-bindingsparql

解决方案


REPLACE 是应用正则表达式的函数,带有()匹配组,并根据匹配计算返回字符串,$1以获取实际匹配的组。fn:replace它与许多 SPARQL 函数一样基于“XPath 和 XQuery 函数和运算符”。

BIND (REPLACE("123", "(.)..", "$1") AS ?str)

将设置?str为“1”。


推荐阅读