Repository: marmotta Updated Branches: refs/heads/MARMOTTA-625 [created] 7fdc700c2
MARMOTTA-625: applied patch provided by Alan Robson Project: http://git-wip-us.apache.org/repos/asf/marmotta/repo Commit: http://git-wip-us.apache.org/repos/asf/marmotta/commit/7e0c567d Tree: http://git-wip-us.apache.org/repos/asf/marmotta/tree/7e0c567d Diff: http://git-wip-us.apache.org/repos/asf/marmotta/diff/7e0c567d Branch: refs/heads/MARMOTTA-625 Commit: 7e0c567d34c6ca2442744e3145dc0a68deba09d5 Parents: ea28ddb Author: Sergio Fernández <[email protected]> Authored: Sun Jan 31 09:40:42 2016 +0100 Committer: Sergio Fernández <[email protected]> Committed: Sun Jan 31 09:40:42 2016 +0100 ---------------------------------------------------------------------- .../kiwi/reasoner/parser/KWRLProgramParser.jj | 26 +++++++++++++------- .../test/parser/KWRLRuleParserTest.java | 24 ++++++++++++++++++ 2 files changed, 41 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/marmotta/blob/7e0c567d/libraries/kiwi/kiwi-reasoner/src/main/javacc/org/apache/marmotta/kiwi/reasoner/parser/KWRLProgramParser.jj ---------------------------------------------------------------------- diff --git a/libraries/kiwi/kiwi-reasoner/src/main/javacc/org/apache/marmotta/kiwi/reasoner/parser/KWRLProgramParser.jj b/libraries/kiwi/kiwi-reasoner/src/main/javacc/org/apache/marmotta/kiwi/reasoner/parser/KWRLProgramParser.jj index 67e502f..6044558 100644 --- a/libraries/kiwi/kiwi-reasoner/src/main/javacc/org/apache/marmotta/kiwi/reasoner/parser/KWRLProgramParser.jj +++ b/libraries/kiwi/kiwi-reasoner/src/main/javacc/org/apache/marmotta/kiwi/reasoner/parser/KWRLProgramParser.jj @@ -148,6 +148,12 @@ TOKEN : /* OPERATORS */ < TYPE: "^^" > } + +TOKEN : /* JIRA MARMOTTA-625 */ +{ + < LANG: "@"["a"-"z"]["a"-"z"] > +} + TOKEN : { < LEFTP: "(" > | @@ -351,19 +357,21 @@ VariableField Variable() : {Token t;} } } -//TODO language tags -LiteralField Literal() : {Token literal = null; Token type = null;} + +// Modified for MARMOTTA-625 +LiteralField Literal() : {Token literal = null; Token type = null; Token language = null;} { ( - literal = <STRLIT> (<TYPE> type = <URI>)? | "\"\"" -){ //have to remove the leading " character first + literal = <STRLIT> (language = <LANG>)? (<TYPE> type = <URI>)? | "\"\"" +){ // have to remove the surrounding quotes ane leading @ characters + if (language != null) { + return new LiteralField(resolveLiteral(literal.image.substring(1, literal.image.length()-1), + new Locale(language.image.substring(1)), null)); + } if (type != null) { - return new LiteralField(resolveLiteral(literal.image.substring(1, literal.image.length()-1), Locale.getDefault(), type.image)); + return new LiteralField(resolveLiteral(literal.image.substring(1, literal.image.length()-1), null , type.image)); } - return new LiteralField(resolveLiteral(literal.image.substring(1, literal.image.length()-1), Locale.getDefault(), null)); + return new LiteralField(resolveLiteral(literal.image.substring(1, literal.image.length()-1), null, null)); } - } - - http://git-wip-us.apache.org/repos/asf/marmotta/blob/7e0c567d/libraries/kiwi/kiwi-reasoner/src/test/java/org/apache/marmotta/kiwi/reasoner/test/parser/KWRLRuleParserTest.java ---------------------------------------------------------------------- diff --git a/libraries/kiwi/kiwi-reasoner/src/test/java/org/apache/marmotta/kiwi/reasoner/test/parser/KWRLRuleParserTest.java b/libraries/kiwi/kiwi-reasoner/src/test/java/org/apache/marmotta/kiwi/reasoner/test/parser/KWRLRuleParserTest.java index 187021e..2583c7b 100644 --- a/libraries/kiwi/kiwi-reasoner/src/test/java/org/apache/marmotta/kiwi/reasoner/test/parser/KWRLRuleParserTest.java +++ b/libraries/kiwi/kiwi-reasoner/src/test/java/org/apache/marmotta/kiwi/reasoner/test/parser/KWRLRuleParserTest.java @@ -92,4 +92,28 @@ public class KWRLRuleParserTest { Assert.assertTrue(r.getHead().getObject().isVariableField()); } + @Test + public void testRule3() throws Exception { + String rule = "($1 $2 $3) -> ($1 $2 \"Hello\"@en)"; + Rule r = KWRLProgramParser.parseRule(rule, ImmutableMap.of("rdfs", "http://www.w3.org/2000/01/rdf-schema#"), repository.getValueFactory()); + + Assert.assertNotNull(r); + Assert.assertEquals(2, r.getBody().size()); + Assert.assertTrue(r.getHead().getSubject().isVariableField()); + Assert.assertTrue(r.getHead().getProperty().isResourceField()); + Assert.assertTrue(r.getHead().getObject().isVariableField()); + } + + @Test + public void testRule4() throws Exception { + String rule = "($1 $2 $3) -> ($1 $2 \"Bonjour\"@fr)"; + Rule r = KWRLProgramParser.parseRule(rule, ImmutableMap.of("rdfs", "http://www.w3.org/2000/01/rdf-schema#"), repository.getValueFactory()); + + Assert.assertNotNull(r); + Assert.assertEquals(2, r.getBody().size()); + Assert.assertTrue(r.getHead().getSubject().isVariableField()); + Assert.assertTrue(r.getHead().getProperty().isResourceField()); + Assert.assertTrue(r.getHead().getObject().isVariableField()); + } + }
