Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
Jena 3.16.0, Jena 3.17.0
-
None
-
None
-
> java -version
openjdk version "1.8.0_232"
OpenJDK Runtime Environment (build 1.8.0_232-BellSoft-b10)
OpenJDK 64-Bit Server VM (build 25.232-b10, mixed mode)Windows 8.1
Description
I have some Jena rules and I need to test a string literal in them:
@prefix my: <http://test/expressions#> . # Rule including string "(" [(?a my:text "(") -> ] # fails for '(' is single quotes too
And a call to
List<Rule> rules = Rule.rulesFromURL(my_rules_path)
throws:
Exception in thread "main" org.apache.jena.reasoner.rulesys.Rule$ParserException: Expected ')' at end of clause, found ] At '[ ( ?a my:text " ( " ) -> ] ' at org.apache.jena.reasoner.rulesys.Rule$Parser.parseNodeList(Rule.java:987) at org.apache.jena.reasoner.rulesys.Rule$Parser.parseNode(Rule.java:906) at org.apache.jena.reasoner.rulesys.Rule$Parser.parseNodeList(Rule.java:983) at org.apache.jena.reasoner.rulesys.Rule$Parser.parseClause(Rule.java:998) at org.apache.jena.reasoner.rulesys.Rule$Parser.doParseRule(Rule.java:1057) at org.apache.jena.reasoner.rulesys.Rule$Parser.parseRule(Rule.java:1030) at org.apache.jena.reasoner.rulesys.Rule.parseRules(Rule.java:666) at org.apache.jena.reasoner.rulesys.Rule.rulesFromURL(Rule.java:515) at org.apache.jena.reasoner.rulesys.Rule.rulesFromURL(Rule.java:526) at ru.vstu.Main.runReasoning(Main.java:64)
This crash happens if the string is exactly equal to "(" (the use of double quotes or single quotes does not matter). Escaping also with backslash "\ (" does not help.
Changing the original string from "(" to "()" , "((" , "-(" or ")" eliminates the exception (but this is not what i want).