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());
+    }
+
 }

Reply via email to