Uploaded image for project: 'Apache Jena'
  1. Apache Jena
  2. JENA-2019

Rule$ParserException in Jena rules when string literal equals to open parenthesis

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • Jena 3.16.0, Jena 3.17.0
    • None
    • Jena
    • 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).

      Attachments

        Activity

          People

            andy Andy Seaborne
            rdfman rdfman
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Time Tracking

                Estimated:
                Original Estimate - 3h
                3h
                Remaining:
                Time Spent - 40m Remaining Estimate - 2h 20m
                2h 20m
                Logged:
                Time Spent - 40m Remaining Estimate - 2h 20m
                40m