You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2012/11/02 18:46:37 UTC

svn commit: r1405072 - in /jena: Experimental/riot-reader/src/main/java/dev/ Experimental/riot-reader/testing/RIOT/Lang/Turtle/ trunk/jena-arq/ trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/ trunk/jena-arq/src/main/java/org/openjen...

Author: andy
Date: Fri Nov  2 17:46:36 2012
New Revision: 1405072

URL: http://svn.apache.org/viewvc?rev=1405072&view=rev
Log:
Final adjustments for correct Turtle token handling.

Modified:
    jena/Experimental/riot-reader/src/main/java/dev/PROJECT_RiotReader.java
    jena/Experimental/riot-reader/testing/RIOT/Lang/Turtle/eval-struct-02.ttl
    jena/Experimental/riot-reader/testing/RIOT/Lang/Turtle/master
    jena/Experimental/riot-reader/testing/RIOT/Lang/Turtle/syn-pname-esc-03.ttl
    jena/trunk/jena-arq/ReleaseNotes.txt
    jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java
    jena/trunk/jena-arq/src/main/java/org/openjena/atlas/lib/Chars.java
    jena/trunk/jena-arq/src/main/java/org/openjena/riot/tokens/TokenizerText.java
    jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestNodeValueOps.java
    jena/trunk/jena-arq/src/test/java/org/openjena/riot/lang/TestTurtleTerms.java
    jena/trunk/jena-arq/src/test/java/org/openjena/riot/tokens/TestTokenizer.java

Modified: jena/Experimental/riot-reader/src/main/java/dev/PROJECT_RiotReader.java
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-reader/src/main/java/dev/PROJECT_RiotReader.java?rev=1405072&r1=1405071&r2=1405072&view=diff
==============================================================================
--- jena/Experimental/riot-reader/src/main/java/dev/PROJECT_RiotReader.java (original)
+++ jena/Experimental/riot-reader/src/main/java/dev/PROJECT_RiotReader.java Fri Nov  2 17:46:36 2012
@@ -35,10 +35,6 @@ public class PROJECT_RiotReader
     // (eventual) Integration into Jena:
     // Remove: RDFReaderF etc.
     
-    // tests
-    // Is HTTP and 303's sufficiently covered?
-    // tests files on jena.apache.org, gated by can contact jena.apache.org/  
-    
     // Update documentation
     //  http://jena.apache.org/documentation/io/index.html
     //  http://jena.apache.org/documentation/io/iohowto.html
@@ -48,6 +44,7 @@ public class PROJECT_RiotReader
     // if the universal Jena reader used in the old model.read.
     // (currently coded around by creating per language reader factories). 
     
+    // --------
     // If universal reader:
     // 6 errors need changes to ModelCom to fix.
     //    read_base_1 -

Modified: jena/Experimental/riot-reader/testing/RIOT/Lang/Turtle/eval-struct-02.ttl
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-reader/testing/RIOT/Lang/Turtle/eval-struct-02.ttl?rev=1405072&r1=1405071&r2=1405072&view=diff
==============================================================================
--- jena/Experimental/riot-reader/testing/RIOT/Lang/Turtle/eval-struct-02.ttl (original)
+++ jena/Experimental/riot-reader/testing/RIOT/Lang/Turtle/eval-struct-02.ttl Fri Nov  2 17:46:36 2012
@@ -1,3 +1,4 @@
 <http://example/s> 
       <http://example/p1> <http://example/o1> ;
-      <http://example/p2> <http://example/o2> ;
+      <http://example/p2> <http://example/o2> ; 
+      .

Modified: jena/Experimental/riot-reader/testing/RIOT/Lang/Turtle/master
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-reader/testing/RIOT/Lang/Turtle/master?rev=1405072&r1=1405071&r2=1405072&view=diff
==============================================================================
--- jena/Experimental/riot-reader/testing/RIOT/Lang/Turtle/master (original)
+++ jena/Experimental/riot-reader/testing/RIOT/Lang/Turtle/master Fri Nov  2 17:46:36 2012
@@ -194,7 +194,7 @@ ROOT=syn-pname-esc
 
 --Syntax--
 @prefix : <http://example/> .
-:xyz\~ :abc\.:  :
+:xyz\~ :abc\.:  : .
 --End--
 
 # BNodes
@@ -290,7 +290,7 @@ ROOT=syn-number
 --End--
 
 --Syntax--
-# This is a integer
+# This is an integer
 <s> <p> 123.
 --End--
 
@@ -697,7 +697,8 @@ ROOT=eval-struct
 --Eval--
 <http://example/s> 
       <http://example/p1> <http://example/o1> ;
-      <http://example/p2> <http://example/o2> ;
+      <http://example/p2> <http://example/o2> ; 
+      .
 --Results--
 <http://example/s> <http://example/p1> <http://example/o1> .
 <http://example/s> <http://example/p2> <http://example/o2> .

Modified: jena/Experimental/riot-reader/testing/RIOT/Lang/Turtle/syn-pname-esc-03.ttl
URL: http://svn.apache.org/viewvc/jena/Experimental/riot-reader/testing/RIOT/Lang/Turtle/syn-pname-esc-03.ttl?rev=1405072&r1=1405071&r2=1405072&view=diff
==============================================================================
--- jena/Experimental/riot-reader/testing/RIOT/Lang/Turtle/syn-pname-esc-03.ttl (original)
+++ jena/Experimental/riot-reader/testing/RIOT/Lang/Turtle/syn-pname-esc-03.ttl Fri Nov  2 17:46:36 2012
@@ -1,2 +1,2 @@
 @prefix : <http://example/> .
-:xyz\~ :abc\.:  :
+:xyz\~ :abc\.:  : .

Modified: jena/trunk/jena-arq/ReleaseNotes.txt
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/ReleaseNotes.txt?rev=1405072&r1=1405071&r2=1405072&view=diff
==============================================================================
--- jena/trunk/jena-arq/ReleaseNotes.txt (original)
+++ jena/trunk/jena-arq/ReleaseNotes.txt Fri Nov  2 17:46:36 2012
@@ -10,6 +10,7 @@ ChangeLog for ARQ
 + Remove the partial migration support for old-style SPARQL submission update forms.
 + Update Turtle/Trig parsers for prefixed name details in RDF 1.1
   Add %-sequences, \char sequences and ':' to local part of prefixed names.
+  NB.  The characters 123. are now an integer 123 and a DOT; they were a decimal, and no DOT.  
 
 ==== ARQ 2.9.4
 

Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java?rev=1405072&r1=1405071&r2=1405072&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java Fri Nov  2 17:46:36 2012
@@ -187,8 +187,8 @@ public class XSDFuncOp
         // Has a DOT.
         
         int i = x.length()-1;
-        // i+1 at least leave ".0" 
-        while ( i+1 > dotIdx && x.charAt(i) == '0' )
+        // dotIdx+1 to leave at least ".0" 
+        while ( ( i > dotIdx+1) && x.charAt(i) == '0' )
             i -- ;
         if ( i < x.length()-1)
             // And trailing zeros.

Modified: jena/trunk/jena-arq/src/main/java/org/openjena/atlas/lib/Chars.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/openjena/atlas/lib/Chars.java?rev=1405072&r1=1405071&r2=1405072&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/openjena/atlas/lib/Chars.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/openjena/atlas/lib/Chars.java Fri Nov  2 17:46:36 2012
@@ -217,6 +217,7 @@ public class Chars
     public static final char CH_DASH         = '-' ; // Alt name
     public static final char CH_SLASH        = '/' ;
     public static final char CH_RSLASH       = '\\' ;
+    public static final char CH_PERCENT      = '%' ;
     
     // Byte versions of the above
     public static final byte B_NL            = NL ;
@@ -253,6 +254,7 @@ public class Chars
     public static final byte B_DASH          = '-' ; // Alt name
     public static final byte B_SLASH         = '/' ;
     public static final byte B_RSLASH        = '\\' ;
+    public static final byte B_PERCENT       = '%' ;
     
 
 }

Modified: jena/trunk/jena-arq/src/main/java/org/openjena/riot/tokens/TokenizerText.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/org/openjena/riot/tokens/TokenizerText.java?rev=1405072&r1=1405071&r2=1405072&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/org/openjena/riot/tokens/TokenizerText.java (original)
+++ jena/trunk/jena-arq/src/main/java/org/openjena/riot/tokens/TokenizerText.java Fri Nov  2 17:46:36 2012
@@ -18,7 +18,7 @@
 
 package org.openjena.riot.tokens;
 
-import static org.openjena.atlas.lib.Chars.CH_AT ;
+import static org.openjena.atlas.lib.Chars.* ;
 import static org.openjena.atlas.lib.Chars.CH_COLON ;
 import static org.openjena.atlas.lib.Chars.CH_COMMA ;
 import static org.openjena.atlas.lib.Chars.CH_DOT ;
@@ -559,14 +559,14 @@ public final class TokenizerText impleme
             return "" ;
         if ( isLocalPart )
         {
-            if ( ch == ':' )
+            if ( ch == CH_COLON )
             {
                 reader.readChar() ;
                 stringBuilder.append((char)ch) ;
             }
             
             // processPLX
-            else if ( ch == '%' || ch == '\\' )
+            else if ( ch == CH_PERCENT|| ch == CH_RSLASH )
             {
                 reader.readChar() ;
                 processPLX(ch) ;
@@ -593,7 +593,7 @@ public final class TokenizerText impleme
             ch = reader.peekChar() ;
             boolean valid = false ;
 
-            if ( isLocalPart && ( ch == '%' || ch == '\\' ) )
+            if ( isLocalPart && (  ch == CH_PERCENT|| ch == CH_RSLASH ) )
             {
                 reader.readChar() ;
                 if ( chDot != 0 )
@@ -604,7 +604,7 @@ public final class TokenizerText impleme
             }       
             
             // Single valid characters
-            if ( isLocalPart && ch == ':' )
+            if ( isLocalPart && ch == CH_COLON )
                 valid = true ;
             else if ( isPNChars(ch) )
                 valid = true ;
@@ -643,7 +643,7 @@ public final class TokenizerText impleme
     // Process PLX (percent or character escape for a prefixed name)
     private void processPLX(int ch)
     {
-        if ( ch == '%' )
+        if ( ch == CH_PERCENT )
         {
             stringBuilder.append((char)ch) ;
 
@@ -659,9 +659,8 @@ public final class TokenizerText impleme
             stringBuilder.append((char)ch) ;
             reader.readChar() ;
         }
-        else if ( ch == '\\' )
+        else if ( ch == CH_RSLASH )
         {
-            reader.readChar() ;
             ch = readCharEscape() ;
             stringBuilder.append((char)ch) ;
         }
@@ -693,7 +692,7 @@ public final class TokenizerText impleme
                 exception("Broken token: "+stringBuilder.toString(), y, x) ;
             }
 
-            if ( ch == '\n' )
+            if ( ch == NL )
                 exception("Broken token (newline): "+stringBuilder.toString(), y, x) ;
 
             if ( ch == endCh )
@@ -702,7 +701,7 @@ public final class TokenizerText impleme
                 return stringBuilder.toString() ;
             }
 
-            if ( ch == '\\' )
+            if ( ch == CH_RSLASH )
             {
                 ch = strEscapes ? readLiteralEscape() : readUnicodeEscape() ;
                 // Drop through.
@@ -729,7 +728,7 @@ public final class TokenizerText impleme
                     return stringBuilder.toString() ;
             }
             
-            if ( ch == '\\' )
+            if ( ch == CH_RSLASH )
                 ch = readLiteralEscape() ;
             insertCodepoint(stringBuilder, ch) ;
         }
@@ -845,19 +844,17 @@ public final class TokenizerText impleme
     }
 
     // Make better!
-/*
-        [16]    integer         ::=     ('-' | '+') ? [0-9]+
-        [17]    double          ::=     ('-' | '+') ? ( [0-9]+ '.' [0-9]* exponent | '.' ([0-9])+ exponent | ([0-9])+ exponent )
-                                        0.e0, .0e0, 0e0
-        [18]    decimal         ::=     ('-' | '+')? ( [0-9]+ '.' [0-9]* | '.' ([0-9])+ | ([0-9])+ )
-                                        0.0 .0
-        [19]    exponent        ::=     [eE] ('-' | '+')? [0-9]+
-        []      hex             ::=     0x0123456789ABCDEFG
+    /*
+     * [146]  INTEGER  ::=  [0-9]+
+     * [147]  DECIMAL  ::=  [0-9]* '.' [0-9]+
+     * [148]  DOUBLE  ::=  [0-9]+ '.' [0-9]* EXPONENT | '.' ([0-9])+ EXPONENT | ([0-9])+ EXPONENT
+     * []     hex             ::=     0x0123456789ABCDEFG
 
  */
     private void readNumber()
     {
         // One entry, definitely a number.
+        // 
         // Beware of '.' as a (non) decimal.
         /*
         maybeSign()
@@ -871,7 +868,6 @@ public final class TokenizerText impleme
         boolean isDecimal = false ;
         stringBuilder.setLength(0) ;
         
-        
         /*
         readPossibleSign(stringBuilder) ;
         readDigits may be hex
@@ -904,7 +900,6 @@ public final class TokenizerText impleme
             readPossibleSign(stringBuilder) ;
         }
         
-        
         x += readDigits(stringBuilder) ;
 //        if ( x == 0 )
 //        {
@@ -929,6 +924,21 @@ public final class TokenizerText impleme
             isDecimal = false ;
             
         }
+
+        //****
+        // Final part - "decimal" 123. is an integer 123 and a DOT.
+        if ( isDecimal )
+        {
+            int len = stringBuilder.length() ;
+            if ( stringBuilder.charAt(len-1) == CH_DOT )
+            {
+                stringBuilder.setLength(len-1) ;
+                reader.pushbackChar(CH_DOT) ;
+                isDecimal = false ;
+            }
+            
+        }
+        
         
         token.setImage(stringBuilder.toString()) ;
         if ( isDouble )

Modified: jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestNodeValueOps.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestNodeValueOps.java?rev=1405072&r1=1405071&r2=1405072&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestNodeValueOps.java (original)
+++ jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestNodeValueOps.java Fri Nov  2 17:46:36 2012
@@ -136,7 +136,7 @@ public class TestNodeValueOps extends Ba
     @Test public void nv_mult_3() { testMult("'PT1H2M'^^xsd:duration", "2", "'PT2H4M'^^xsd:dayTimeDuration") ; }
     
     // ** Division
-    @Test public void nv_div_1() { testDiv("12", "2", "6." ) ; }
+    @Test public void nv_div_1() { testDiv("12", "2", "6.0" ) ; }
     @Test public void nv_div_2() { testDiv("12", "2e0", "6.0e0" ) ; }
     
     // == Workers

Modified: jena/trunk/jena-arq/src/test/java/org/openjena/riot/lang/TestTurtleTerms.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/org/openjena/riot/lang/TestTurtleTerms.java?rev=1405072&r1=1405071&r2=1405072&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/org/openjena/riot/lang/TestTurtleTerms.java (original)
+++ jena/trunk/jena-arq/src/test/java/org/openjena/riot/lang/TestTurtleTerms.java Fri Nov  2 17:46:36 2012
@@ -65,8 +65,8 @@ public class TestTurtleTerms extends Bas
 	@Test public void turtle_020() { parse("a:subj a:prop 'string1'^^<uriref>.") ; }
 	        
 	        // Literals: numbers.
-	@Test public void turtle_021() { parse("a: :p 2. .") ; }
-	@Test public void turtle_022() { parse("a: :p +2. .") ; }
+	@Test public void turtle_021() { parse("a: :p 2.") ; }
+	@Test public void turtle_022() { parse("a: :p +2.") ; }
 	@Test public void turtle_023() { parse("a: :p -2 .") ; }
 	@Test public void turtle_024() { parse("a: :p 2e6.") ; }
 	@Test public void turtle_025() { parse("a: :p 2e-6.") ; }

Modified: jena/trunk/jena-arq/src/test/java/org/openjena/riot/tokens/TestTokenizer.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/org/openjena/riot/tokens/TestTokenizer.java?rev=1405072&r1=1405071&r2=1405072&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/org/openjena/riot/tokens/TestTokenizer.java (original)
+++ jena/trunk/jena-arq/src/test/java/org/openjena/riot/tokens/TestTokenizer.java Fri Nov  2 17:46:36 2012
@@ -476,23 +476,30 @@ public class TestTokenizer extends BaseT
         tokenizeAndTestExact("a:xe\u0301y", TokenType.PREFIXED_NAME, "a", "xe\u0301y") ;
     }
     
-//    @Test
-//    public void tokenUnit_pname10()
-//    {
-//        Tokenizer tokenizer = tokenizer("a:b#c") ;
-//        assertTrue(tokenizer.hasNext()) ;
-//        Token token = tokenizer.next() ;
-//        pnameToken(token, "a", "b#c") ;
-//    }
-//
-//    @Test
-//    public void tokenUnit_pname11()
-//    {
-//        Tokenizer tokenizer = tokenizer("a:b/c") ;
-//        assertTrue(tokenizer.hasNext()) ;
-//        Token token = tokenizer.next() ;
-//        pnameToken(token, "a", "b/c") ;
-//    }
+    @Test
+    public void tokenUnit_pname16()
+    {
+        tokenizeAndTestExact("a:b\\#c", TokenType.PREFIXED_NAME, "a", "b#c") ;
+    }
+
+    @Test
+    public void tokenUnit_pname17()
+    {
+        tokenizeAndTestExact("a:b\\/c", TokenType.PREFIXED_NAME, "a", "b/c") ;
+    }
+
+    @Test
+    public void tokenUnit_pname18()
+    {
+        tokenizeAndTestExact("a:b:c", TokenType.PREFIXED_NAME, "a", "b:c") ;
+    }
+
+    @Test
+    public void tokenUnit_pname19()
+    {
+        tokenizeAndTestExact("a:b%AAc", TokenType.PREFIXED_NAME, "a", "b%AAc") ;
+    }
+
 
     @Test
     public void tokenUnit_25()
@@ -511,7 +518,8 @@ public class TestTokenizer extends BaseT
     
     @Test public void tokenUnit_num2()
     {
-		tokenizeAndTestExact("123.", TokenType.DECIMAL, "123.") ;
+        // This is a chnage in Turtle (and SPARQL 1.1) 
+        tokenizeAndTestFirst("123.", TokenType.INTEGER, "123") ;
     }
 
     @Test public void tokenUnit_num3()