You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jena.apache.org by Martynas Jusevičius <ma...@graphity.org> on 2016/09/03 22:11:30 UTC
JENA-1030 fix incomplete
Hey,
I think https://issues.apache.org/jira/browse/JENA-1030 fix does not
work for List<Rule>.
I tried roundtripping
Rule.parseRules(GenericRuleReasoner.getRules().toString()) and what I
get is:
org.apache.jena.reasoner.rulesys.Rule$ParserException: Malformed rule
At '[ rdfs9: ( ?x rdfs:subClassOf ?y ) ( ?a rdf:type ?x ) -> ( ?a
rdf:type ?y ) ] ] '
Not sure exactly what the cause is, but I have a RulePrinter that
roundtrips successfully:
https://github.com/AtomGraph/Processor/blob/master/src/main/java/com/atomgraph/processor/util/RulePrinter.java
Martynas
atomgraph.com
Re: JENA-1030 fix incomplete
Posted by Martynas Jusevičius <ma...@graphity.org>.
You're right, sorry. Shouldn't send emails too late.
On Sun, 4 Sep 2016 at 11:42, Andy Seaborne <an...@apache.org> wrote:
>
>
> On 03/09/16 23:11, Martynas Jusevičius wrote:
> > Hey,
> >
> > I think https://issues.apache.org/jira/browse/JENA-1030 fix does not
> > work for List<Rule>.
> >
> > I tried roundtripping
> > Rule.parseRules(GenericRuleReasoner.getRules().toString()) and what I
> > get is:
>
> A java parse error?
>
> >
> > org.apache.jena.reasoner.rulesys.Rule$ParserException: Malformed rule
> > At '[ rdfs9: ( ?x rdfs:subClassOf ?y ) ( ?a rdf:type ?x ) -> ( ?a
> > rdf:type ?y ) ] ] '
> >
>
> ?? JENA-1030 was about bare URIs and I don't see a bare URI here.
>
> The problem is "[]" added by Java's List<>.toString() returned by
> getRules().toString().
>
> That is nothing to do with Jena rule syntax.
>
> Strip the out list-introduced [] and it will work.
>
> Test case:
>
> public static void main(String ...args) {
> String s = "[one: (?a rdf:type ?y) <- (?a rdf:type ?y) ]" ;
> rule(s) ;
> String s2 = Arrays.asList(s).toString() ;
> rule(s2) ;
> System.out.println("DONE") ;
> System.exit(0);
> }
>
> private static void rule(String string) {
> System.out.println("Input: "+string) ;
> try {
> List<Rule> rules2 = Rule.parseRules(string) ;
> System.out.println("Output: "+rules2) ;
> } catch (Exception ex) {
> System.out.println(ex.getMessage());
> }
> System.out.println() ;
> }
>
>
> > Not sure exactly what the cause is, but I have a RulePrinter that
> > roundtrips successfully:
> >
> https://github.com/AtomGraph/Processor/blob/master/src/main/java/com/atomgraph/processor/util/RulePrinter.java
> >
>
> A shorter one perhaps:
>
> List<Rule> rules = ...
> String s = rules.stream()
> .map((r)->r.toString())
> .collect(Collectors.joining("\n"));
>
> Andy
>
> >
> > Martynas
> > atomgraph.com
> >
>
Re: JENA-1030 fix incomplete
Posted by Andy Seaborne <an...@apache.org>.
On 03/09/16 23:11, Martynas Jusevi\u010dius wrote:
> Hey,
>
> I think https://issues.apache.org/jira/browse/JENA-1030 fix does not
> work for List<Rule>.
>
> I tried roundtripping
> Rule.parseRules(GenericRuleReasoner.getRules().toString()) and what I
> get is:
A java parse error?
>
> org.apache.jena.reasoner.rulesys.Rule$ParserException: Malformed rule
> At '[ rdfs9: ( ?x rdfs:subClassOf ?y ) ( ?a rdf:type ?x ) -> ( ?a
> rdf:type ?y ) ] ] '
>
?? JENA-1030 was about bare URIs and I don't see a bare URI here.
The problem is "[]" added by Java's List<>.toString() returned by
getRules().toString().
That is nothing to do with Jena rule syntax.
Strip the out list-introduced [] and it will work.
Test case:
public static void main(String ...args) {
String s = "[one: (?a rdf:type ?y) <- (?a rdf:type ?y) ]" ;
rule(s) ;
String s2 = Arrays.asList(s).toString() ;
rule(s2) ;
System.out.println("DONE") ;
System.exit(0);
}
private static void rule(String string) {
System.out.println("Input: "+string) ;
try {
List<Rule> rules2 = Rule.parseRules(string) ;
System.out.println("Output: "+rules2) ;
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
System.out.println() ;
}
> Not sure exactly what the cause is, but I have a RulePrinter that
> roundtrips successfully:
> https://github.com/AtomGraph/Processor/blob/master/src/main/java/com/atomgraph/processor/util/RulePrinter.java
>
A shorter one perhaps:
List<Rule> rules = ...
String s = rules.stream()
.map((r)->r.toString())
.collect(Collectors.joining("\n"));
Andy
>
> Martynas
> atomgraph.com
>