微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?