如何解决在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”。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。