【问题标题】:Using regex in SPARQL to bind variables?在 SPARQL 中使用正则表达式绑定变量?
【发布时间】:2020-12-04 17:03:55
【问题描述】:

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

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

我认为我可以使用正则表达式来执行此操作,但现在我更仔细地查看了正则表达式,我认为它所能做的就是告诉我存在这样的患者 ID,但不像 SUBSTR 这样的函数实际上会返回部分我想要的字符串,所以我可以将它绑定到一个变量,正则表达式只返回真或假,某些字符串与模式匹配或不匹配。对吗?

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

【问题讨论】:

    标签: regex data-binding sparql


    【解决方案1】:

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

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

    ?str 设置为“1”。

    【讨论】:

    • 如果它解决了您的问题,您能否标记为已接受?它可以帮助其他人浏览问题。
    • 抱歉,我昨天试过这样做,但不知道该怎么做。我终于看到了复选图标,我想我现在已经完成了。再次感谢,如果我需要做其他事情,请告诉我。这是我的第一个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2020-04-05
    • 2017-10-11
    • 2013-06-27
    相关资源
    最近更新 更多