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

问题描述

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

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

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

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

解决方法

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

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

?str设置为“ 1”。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...