在 SPARQL 中使用正则表达式绑定变量?

Using regex in SPARQL to bind variables?

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

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

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

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

REPLACE is the function to apply a regular expression, with () match groups, and calculate a return string based on the match using </code> to get the group actually matched. It is based on <a href="https://www.w3.org/TR/xpath-functions/#func-replace" rel="nofollow noreferrer"><code>fn:replace 来自“XPath 和 XQuery 函数和运算符”以及许多 SPARQL 函数。

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

会将 ?str 设置为“1”。