gpt4 book ai didi

java - 使用 Jena、FILTER 和 REGEX 编写 SPARQL 查询

转载 作者:行者123 更新时间:2023-11-30 04:06:35 25 4
gpt4 key购买 nike

我用JENAREGEX编写了SPARQL查询:/^name$/i(实际上name 是一个字符串变量,可以是任何值(带空格与否),它作为方法的参数接收。

这是字符串查询:

String authorquery = "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> " +
"PREFIX dc: <http://purl.org/dc/elements/1.1/> " +
"PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT " +
"?URIAutor WHERE { " +
"?URIAutor foaf:name ?Autor." +
"FILTER (regex(?Autor, \"" + "/^" + name + "$/" + "\", 'i' ) ).}";

这并没有给我一个异常(exception),但是当我写入一个我确定在数据库中的名称时,并没有返回结果。这就是我想要的查询:数据库中有我的名字“Agatha Christie”。如果 name=Agatha 我希望查询不返回任何内容。如果 name="Agatha Christie"(可以不区分大小写),我只想返回名为“Agatha Christie”的作者的 URI。对于名称“Bill Clinton”和“Bill Gates”也是如此,如果 name=Bill 我不想找到这两个 URI,但查询不应返回任何结果。仅当 name="Bill Clinton" 时,结果才应为“Bill Clinton”。

我不知道问题是否出在 REGEX 上,或者是否将 REGEX 转换为中间有变量的字符串。

你能帮我吗?

最佳答案

不要将 /.../ 放在正则表达式字符串周围。 ^name$ 就可以了。

关于java - 使用 Jena、FILTER 和 REGEX 编写 SPARQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20594946/

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