我是SPARQL和Jena中的新成員。在這裏,我使用耶拿版本2.13。我想從REGEX邊界(\b)
的Java web應用程序執行SPARQL查詢。我正在使用REGEX邊界來匹配並找到確切的單詞。SPARQL查詢在Java中的REGEX邊界返回空
我對protege也運行同樣的SPARQL查詢。
這裏我SPARQL查詢在Java:
"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
是字符串variabel存儲用戶輸入,它接受作爲參數。
當我執行查詢時,Jena返回一個空集(甚至不是空指針異常),而Protégé返回/找到正確的結果。 我不知道如果問題是與REGEX代碼或什麼。
我想知道爲什麼我的REGEX工作不正常?任何人都可以幫我嗎?
謝謝。
謝謝。我試過你的建議,但結果是錯誤的。 com.hp.hpl.jena.query.QueryParseException:第1行第608列出現詞法錯誤。遇到:「W」(87),在:「\」(^ | \\。任何想法? – Jeje
我沒有知道,'\ W' *是*支持。也許是一個轉義問題?嘗試使用不同的引號('''而不是'\「')。 –
我也試過,'+」FILTER正則表達式(str(?FoodAndBeverages) ,'(^ | \\ w)「+ Spertanyaan2fix +」(\\ w | $)')}「',結果仍然是錯誤:第1行,第608列出現詞法錯誤。遇到:」W「(87),之後:「\'(^ | \\」,另一個建議? – Jeje