java - java中的SPARQL查询REGEX边界返回空

标签 java regex web sparql jena

我是 SPARQL 和 Jena 的新手。我在这里使用 Jena 2.13 版。我想从具有 REGEX 边界 (\b) 的 Java Web 应用程序执行 SPARQL 查询。我正在使用 REGEX 边界来匹配和查找确切的单词。

我也在 protege 上运行相同的 SPARQL 查询。

这是我在 java 中的 SPARQL 查询:

                "PREFIX foaf: <http://xmlns.com/foaf/0.1/> "
                + "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> "
                + "PREFIX owl: <http://www.w3.org/2002/07/owl#> "
                + "PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> "
                + "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> "
                + "PREFIX : <" + CROSS_NS + "> "
                + "SELECT ((?FoodAndBeveragesRecipes) AS ?Resep)((?FoodAndBeverages) AS ?a) "
                + "WHERE{ ?FoodAndBeveragesRecipes :IngR ?_IngR."
                + " ?_IngR :HasIngredients ?FoodAndBeverages;"
                + ":UnitValue ?Value;"
                + " :MeasurementUnit ?Measurements;"
                + " :Ing_Type ?IngType." 
                + "FILTER regex(str(?FoodAndBeverages), \"\\b" + recipe + "\\b\")}"
                + " ORDER BY ?FoodAndBeveragesRecipes";

recipe 是存储用户输入的字符串变量,它作为参数接收。

当我执行查询时,Jena 返回一个空集(甚至没有空指针异常),而 Protégé 返回/找到正确的结果。 我不知道问题是出在 REGEX 代码上还是什么。

我想知道为什么我的 REGEX 不能正常工作?谁能帮帮我?

谢谢。

最佳答案

您需要 \\\\W - 是的,4 。一级用于 Java 将 \\W 放入 SPARQL,下一级是 SPARQL 字符串完全保留 \W

关于java - java中的SPARQL查询REGEX边界返回空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38601796/

相关文章:

java - 错误的代码风格被 Jenkins/checkstyle 视为失败

java - 如何知道客户端是否关闭了连接

python - 拆分句点而不删除句点标点符号 - Python

Facebook 分享链接 "facebook URL requested a HTTP redirect, but it could not be followed."

html - 背景不在屏幕区域之外

java - 使用Spring SpEL表达式获取Annotation中引用的动态参数

java - 如何更改 TabLayout 选定选项卡的图标颜色?

html - URL中的 '#?'组合是什么意思

javascript - 使用 RegEx 在 Javascript 中匹配重复数字(相同的数字)两次

javascript - 字符串替换js/GAS中的正则表达式无效量词