gpt4 book ai didi

regex - 使用 SPARQL 提取包含特定子串的三元组

转载 作者:行者123 更新时间:2023-12-03 23:33:51 26 4
gpt4 key购买 nike

我想提取一个包含单词“alice”的三元组。我使用的查询是:

SELECT ?s ?p ?o  WHERE { ?s ?p ?o .FILTER regex(?s, \"alice\") .}

尽管有满足此约束的三元组,但这并没有给我任何结果。

另一方面,当我使用相同的查询来提取在其对象中包含一个单词 brillant 的三元组时,它仅返回 2 个可能匹配项中的一个。

使用的查询是:
SELECT ?s ?p ?o  WHERE { ?s ?p ?o .FILTER regex(?o, \"brillant\") .}

请让我知道我哪里出错了以及这种行为的原因是什么。

最佳答案

我假设引号周围的转义只是复制和粘贴的残余。 regex 的第一个参数必须是文字,但文字不能是 RDF 中三元组的主题,因此您的数据不应该与此模式匹配。但是,您可能拥有的是其 URI 包含字符串“alice”的主题,您可以使用 str 获取 URI 的字符串表示形式。功能。例如。,

SELECT ?s ?p ?o  WHERE { ?s ?p ?o .FILTER regex(str(?s), "alice") .}

为了说明,让我们使用两个值 <http://example.org>"string containing example"并像您在原始查询中所做的那样进行过滤:

select ?x where {
values ?x { <http://example.org> "string containing example" }
filter( regex(?x, "exam" ))
}

-------------------------------
| x |
===============================
| "string containing example" |
-------------------------------

我们只有 "string containing example"因为另一个值不是字符串,所以不是 regex 的合适参数.但是,如果我们将调用添加到 str ,那么它是正则表达式将考虑的 URI 的字符串表示形式:

select ?x where {
values ?x { <http://example.org> "string containing example" }
filter( regex(str(?x), "exam" ))
}

-------------------------------
| x |
===============================
| <http://example.org> |
| "string containing example" |
-------------------------------

关于regex - 使用 SPARQL 提取包含特定子串的三元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21701832/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com