Hello, I have a application that will initialize a reasoner and then let me modify rules and apply them back to the reasoner. This has been working perfectly.
I have started to pull back some more advanced reasoner rules and when I try to use them I am getting an error. For example: When I load up the RDFS reasoner at the FULL RDFS level and read back the rules I get some rules that look like this: [ -> (xsd:byte rb:xsdRange 'xsd(xsd:integer '1'^^http://www.w3.org/2001/XMLSchema#int '8'^^http://www.w3.org/2001/XMLSchema#int)'^^urn:x-hp-jena:Functor) ] If I try to parse these rules using my rulesFromString method which calls the Jena Rule methods for parsing: /** * Answer the list of rules parsed from the given string. * * @throws RulesetNotFoundException */ public static List<Rule> rulesFromString(String ruleInput) { BufferedReader br = null; try { StringReader sr = new StringReader(ruleInput); br = new BufferedReader(sr); return Rule.parseRules(Rule.rulesParserFromReader(br)); } finally { if (br != null) try { br.close(); } catch (IOException e2) { } } I get a parser error on the ^^http part. Exception in thread "AWT-EventQueue-0" org.apache.jena.reasoner.rulesys.Rule$ParserException: Unrecognized qname prefix (1'^^http) in rule At 'xsd:dateTime ) ] [ -> ( xsd:duration rb:xsdBase xsd:duration ) ] [ -> ( xsd:byte rb:xsdRange ' xsd(xsd:integer ' 1'^^http://www.w3.org/2001/XMLSchema#int ' at org.apache.jena.reasoner.rulesys.Rule$Parser.parseNode(Rule.java:857) at org.apache.jena.reasoner.rulesys.Rule$Parser.parseNodeList(Rule.java:939) at org.apache.jena.reasoner.rulesys.Rule$Parser.parseClause(Rule.java:954) at org.apache.jena.reasoner.rulesys.Rule$Parser.doParseRule(Rule.java:1021) at org.apache.jena.reasoner.rulesys.Rule$Parser.parseRule(Rule.java:986) at org.apache.jena.reasoner.rulesys.Rule.parseRules(Rule.java:636) at net.mind_tap.kbswt.GUI.JenaRulePanel.rulesFromString(JenaRulePanel.java:313) at net.mind_tap.kbswt.GUI.JenaRulePanel$5.actionPerformed(JenaRulePanel.java:270) …. at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) It looks like this should be working as the initial construction of the reasoner appears to go through the same process to setup the initial rules. Any ideas as to what I am missing here? Thanks, Chris P.S. I hope everyone has a Happy New Year.
