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



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

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

我原以为我可以使用regex来实现这一点,但现在我更仔细地研究了regex,我认为它所能做的就是告诉我存在这样的患者ID,但与SUBSTR等函数不同,后者实际上会返回我想要的字符串的一部分,以便将其绑定到变量,regex只会返回true或false,即某些字符串匹配模式或不匹配模式。这是正确的吗?

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

REPLACE是应用正则表达式的函数,其中()匹配组,并使用$1根据匹配计算返回字符串以获得实际匹配的组。它基于CCD_ 6;XPath和XQuery函数和运算符";许多SPARQL函数也是如此。

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

将CCD_ 7设置为"0";1〃;。

最新更新