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/07/18 17:37:41 UTC

svn commit: r1362983 - in /jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader: Langs.java PROCESS.java RDFReaderFactoryRIOT.java TS_ReaderRIOT.java TestJenaReaderRIOT.java TestReadDataset.java WebReader2.java

Author: andy
Date: Wed Jul 18 15:37:40 2012
New Revision: 1362983

URL: http://svn.apache.org/viewvc?rev=1362983&view=rev
Log: (empty)

Added:
    jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/TestReadDataset.java
Modified:
    jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/Langs.java
    jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/PROCESS.java
    jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/RDFReaderFactoryRIOT.java
    jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/TS_ReaderRIOT.java
    jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/TestJenaReaderRIOT.java
    jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/WebReader2.java

Modified: jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/Langs.java
URL: http://svn.apache.org/viewvc/jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/Langs.java?rev=1362983&r1=1362982&r2=1362983&view=diff
==============================================================================
--- jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/Langs.java (original)
+++ jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/Langs.java Wed Jul 18 15:37:40 2012
@@ -19,6 +19,7 @@
 package projects.riot_reader;
 
 import java.io.InputStream ;
+import java.util.Locale ;
 import java.util.Map ;
 
 import org.openjena.atlas.lib.DS ;
@@ -58,7 +59,7 @@ public class Langs
     private static Map<String, Lang2> mapContentTypeToLang              = DS.map() ;
     private static MultiMap<Lang2, String> langToExt                    = MultiMap.createMapList() ;
     private static Map<String, Lang2> extToLang                         = DS.map() ;
-    private static Map<String, Lang2> jenaName                          = DS.map() ;
+    private static Map<String, Lang2> shortNameToLang                   = DS.map() ;
    
     // This code understands different types of things it can read:
     //   triples, quads, result sets, unknown
@@ -125,11 +126,18 @@ public class Langs
         return langToQuads.get(language) ;
     }
 
-    private static void jenaName(String name, Lang2 lang)
+    private static void registerShortNameForLang(String name, Lang2 lang)
     {
-        jenaName.put(name, lang) ;
+        shortNameToLang.put(lowerCase(name), lang) ;
     }
 
+    public static Lang2 shortNameToLang(String name)
+    {
+        return shortNameToLang.get(lowerCase(name)) ;
+    }
+
+    private static String lowerCase(String x) { return x.toLowerCase(Locale.US) ; }
+    
     static void addTripleSyntax$(Lang2 language, String contentType, ReaderRIOTFactory<Triple> factory, String ... fileExt)
     {
         addTripleSyntax$(language, ContentType.parse(contentType), factory, fileExt) ;
@@ -193,27 +201,27 @@ public class Langs
         addContentTypeLang$(WebContent.contentTypeNQuadsAlt, langNQuads) ;
         
         // Reader name and variations to lang (compatibility)
-        jenaName("RDF/XML",         langRDFXML) ;
-        jenaName("RDFXML",          langRDFXML) ;
-        jenaName("RDF/XML-ABBREV",  langRDFXML) ;
+        registerShortNameForLang("RDF/XML",         langRDFXML) ;
+        registerShortNameForLang("RDFXML",          langRDFXML) ;
+        registerShortNameForLang("RDF/XML-ABBREV",  langRDFXML) ;
         
-        jenaName("N-TRIPLE",        langNTriples) ;
-        jenaName("N-TRIPLES",       langNTriples) ;
-        jenaName("NTRIPLE",         langNTriples) ;
-        jenaName("NTRIPLES",        langNTriples) ;
-        jenaName("NT",              langNTriples) ;
+        registerShortNameForLang("N-TRIPLE",        langNTriples) ;
+        registerShortNameForLang("N-TRIPLES",       langNTriples) ;
+        registerShortNameForLang("NTRIPLE",         langNTriples) ;
+        registerShortNameForLang("NTRIPLES",        langNTriples) ;
+        registerShortNameForLang("NT",              langNTriples) ;
             
-        jenaName("TURTLE",          langTurtle) ;
-        jenaName("TTL",             langTurtle) ;
+        registerShortNameForLang("TURTLE",          langTurtle) ;
+        registerShortNameForLang("TTL",             langTurtle) ;
 
-        jenaName("N-QUADS",         langNQuads) ;
-        jenaName("NQUADS",          langNQuads) ;
-        jenaName("NQ",              langNQuads) ;
+        registerShortNameForLang("N-QUADS",         langNQuads) ;
+        registerShortNameForLang("NQUADS",          langNQuads) ;
+        registerShortNameForLang("NQ",              langNQuads) ;
             
-        jenaName("RDF/JSON",        langRDFJSON) ;
-        jenaName("RDFJSON",         langRDFJSON) ;
+        registerShortNameForLang("RDF/JSON",        langRDFJSON) ;
+        registerShortNameForLang("RDFJSON",         langRDFJSON) ;
         
-        jenaName("TRIG",            langTriG) ;
+        registerShortNameForLang("TRIG",            langTriG) ;
     }
     
     
@@ -268,35 +276,35 @@ public class Langs
     }
     
     /** Attempt to guess the content type string from a language name */   
-    public static String jenaNameToContentTypeStr(String jenaShortName)
+    public static String shortNameToContentTypeStr(String jenaShortName)
     {
-        return jenaNameToContentTypeStr(jenaShortName, null) ;
+        return shortNameToContentTypeStr(jenaShortName, null) ;
     }
 
     /** Attempt to guess the content type string from a language name */   
-    public static String jenaNameToContentTypeStr(String jenaShortName, String dft)
+    public static String shortNameToContentTypeStr(String jenaShortName, String dft)
     {
-        ContentType ct = jenaNameToContentType(jenaShortName) ;
+        ContentType ct = shortNameToContentType(jenaShortName) ;
         if ( ct == null )
             return dft ;
         return ct.getContentType() ;
     }
     
     /** Attempt to guess the content type string from a language name */   
-    public static ContentType jenaNameToContentType(String jenaShortName)
+    public static ContentType shortNameToContentType(String jenaShortName)
     {
-        Lang2 lang = jenaNameToLang(jenaShortName) ;
+        Lang2 lang = shortNameToLang(jenaShortName) ;
         if ( lang == null )
             return null ;
         return lang.getContentType() ;
     }
 
-    /** Attempt to guess the content type string from a language name */   
-    public static Lang2 jenaNameToLang(String jenaShortName)
-    {
-        return jenaName.get(jenaShortName) ;
-    }
-
+//    /** Attempt to guess the content type string from a language name */   
+//    public static Lang2 jenaNameToLang(String jenaShortName)
+//    {
+//        return shortNameToLang.get(jenaShortName) ;
+//    }
+//
     static Lang convert(Lang2 language)
     {
         if ( language.equals(langRDFXML))     return Lang.RDFXML ;

Modified: jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/PROCESS.java
URL: http://svn.apache.org/viewvc/jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/PROCESS.java?rev=1362983&r1=1362982&r2=1362983&view=diff
==============================================================================
--- jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/PROCESS.java (original)
+++ jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/PROCESS.java Wed Jul 18 15:37:40 2012
@@ -19,33 +19,34 @@
 package projects.riot_reader;
 
 
+
 /** Not a class. */
 
 public class PROCESS
 {
     // ****
     // Testing
-    // 1 - Does not override readerfactory (fixed in ModelCom as a static!)
-    //   => does not use hint lang because hint lang not passed down to .read.
-    // 2 - Webreader2 - does not have base override operations.
+    /* read-30
+     * "D-not-TTL.ttl"
+     * m1.read(in.getInput(), null, "RDF/XML") ;
+     * ModelCom.read: readerFactory .getReader(lang) .read(this, reader, base);
+     *   => generic reader
+     *   but hint does not go to .read(this,reader,base)
+     *   ==> generic reader .getHint?
+     */
     
-    // Quad tests
+    /* read_base_1
+     * Test is jenaread("D-no-base.ttl", "http://baseuri/", "TTL") ;
+     * ModelCom read(url, base, lang )
+     *   Immediately opnes connection in a hardwired fashion, needs protocol.
+     */
     
     // File extension and HTTP
     // 303's
     
-    // test failures:
-    //   read-30 (hardwrided ModelCom), read_base-1 (ditto)
-    
     // Lang/Lang2
     // Use of Lang as an enum in switch statements.
     
-    // webreader2.processTriples - 
-    // if hint is different from extensions file type?
-    //   Currently, extension wins.  Opps.
-    
-    // java.io.Reader as input.
-    
     // Update documentation
     //  http://jena.apache.org/documentation/io/index.html
     //  http://jena.apache.org/documentation/io/iohowto.html

Modified: jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/RDFReaderFactoryRIOT.java
URL: http://svn.apache.org/viewvc/jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/RDFReaderFactoryRIOT.java?rev=1362983&r1=1362982&r2=1362983&view=diff
==============================================================================
--- jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/RDFReaderFactoryRIOT.java (original)
+++ jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/RDFReaderFactoryRIOT.java Wed Jul 18 15:37:40 2012
@@ -39,7 +39,7 @@ public class RDFReaderFactoryRIOT implem
     public RDFReader getReader(String lang)
     {
         // If RDF/XML, then return an ARP 
-        if (WebContent.contentTypeRDFXML.equals(Langs.jenaNameToContentType(lang)) )
+        if (WebContent.contentTypeRDFXML.equals(Langs.shortNameToContentType(lang)) )
             return new RDFReaderRIOT_ARP() ;
         
         return new RDFReaderRIOT(lang) ; 

Modified: jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/TS_ReaderRIOT.java
URL: http://svn.apache.org/viewvc/jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/TS_ReaderRIOT.java?rev=1362983&r1=1362982&r2=1362983&view=diff
==============================================================================
--- jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/TS_ReaderRIOT.java (original)
+++ jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/TS_ReaderRIOT.java Wed Jul 18 15:37:40 2012
@@ -25,8 +25,9 @@ import org.junit.runners.Suite.SuiteClas
 @RunWith(Suite.class)
 @SuiteClasses(
 { 
-    TestFileManagerRIOT.class 
-    , TestJenaReaderRIOT.class
+    TestJenaReaderRIOT.class
+    , TestFileManagerRIOT.class 
+    , TestReadDataset.class
     
 })
 

Modified: jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/TestJenaReaderRIOT.java
URL: http://svn.apache.org/viewvc/jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/TestJenaReaderRIOT.java?rev=1362983&r1=1362982&r2=1362983&view=diff
==============================================================================
--- jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/TestJenaReaderRIOT.java (original)
+++ jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/TestJenaReaderRIOT.java Wed Jul 18 15:37:40 2012
@@ -114,8 +114,6 @@ public class TestJenaReaderRIOT extends 
         // 1/ Fix Jena - remove RDFReaderF
         // 2/ Change RDFReaderF to pass in the language name. 
         
-        if ( true ) return ;
-        
         // Read via Jena API.
         Model m2 = ModelFactory.createDefaultModel() ;
         FileInputStream in2 = new FileInputStream(filename) ;

Added: jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/TestReadDataset.java
URL: http://svn.apache.org/viewvc/jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/TestReadDataset.java?rev=1362983&view=auto
==============================================================================
--- jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/TestReadDataset.java (added)
+++ jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/TestReadDataset.java Wed Jul 18 15:37:40 2012
@@ -0,0 +1,99 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package projects.riot_reader;
+
+import java.io.FileInputStream ;
+import java.io.IOException ;
+
+import org.junit.AfterClass ;
+import org.junit.BeforeClass ;
+import org.junit.Test ;
+import org.openjena.atlas.junit.BaseTest ;
+
+import com.hp.hpl.jena.query.Dataset ;
+import com.hp.hpl.jena.query.DatasetFactory ;
+import com.hp.hpl.jena.sparql.util.Context ;
+
+public class TestReadDataset extends BaseTest
+{
+    private static final String directory = "testing/RIOT/Reader" ;
+
+    private static Context context = new Context() ;
+    
+    @BeforeClass static public void beforeClass()
+    { 
+        WebReader2.wireIntoJena() ;
+    }
+    
+    @AfterClass static public void afterClass()
+    { 
+        // Unwire?
+    }
+
+    @Test public void read_01() { read("D.nq") ; }
+    @Test public void read_02() { read("D.trig") ; }
+
+    @Test public void read_11() { read("D.nq", "N-Quads") ; }
+    @Test public void read_12() { read("D.nq", "NQuads") ; }
+    @Test public void read_13() { read("D.nq", "NQ") ; }
+    @Test public void read_14() { read("D.trig", "TriG") ; }
+    @Test public void read_15() { read("D.trig", "trig") ; } 
+
+    @Test public void read_21() { read("D-nq",  "NQuads") ; }
+    @Test public void read_22() { read("D-trig", "TRIG") ; }
+
+    @Test public void read_input_1() throws IOException
+    { read_stream("D.nq", "NQ") ; }
+        
+    @Test public void read_input_2() throws IOException
+    { read_stream("D.trig", "trig") ; }
+    
+    private static String filename(String filename) { return directory+"/"+filename ; }
+
+    // Base.
+    
+    private static void read(String dataurl) { read(dataurl, null) ; }
+    
+    private static void read(String dataurl, String lang)
+    {
+        dataurl = filename(dataurl) ;
+        Dataset ds = DatasetFactory.createMem() ;
+        WebReader2.read(ds, dataurl, lang) ;
+    }
+
+    
+    private static void read_stream(String filename, String lang) throws IOException
+    {
+        filename = filename(filename) ;
+        
+        // Read with a base
+        Dataset ds0 = DatasetFactory.createMem() ;
+        FileInputStream in0 = new FileInputStream(filename) ;
+        WebReader2.read(ds0, in0, "http://example/base2", lang) ;
+        in0.close() ;
+
+        // Read again, but without base
+        Dataset ds1 = DatasetFactory.createMem() ;
+        FileInputStream in1 = new FileInputStream(filename) ;
+        WebReader2.read(ds1, in1, null, lang) ;
+        in1.close() ;
+    }
+
+}
+

Modified: jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/WebReader2.java
URL: http://svn.apache.org/viewvc/jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/WebReader2.java?rev=1362983&r1=1362982&r2=1362983&view=diff
==============================================================================
--- jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/WebReader2.java (original)
+++ jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/WebReader2.java Wed Jul 18 15:37:40 2012
@@ -158,6 +158,15 @@ public class WebReader2
      *  Throws {@link RiotNotFoundException} if the location is not found - the model is unchanged.
      *  Throws parse errors depending on the language and reader; the Model modelaybe partially updated. 
      */
+    public static void read(Dataset dataset, String uri, String hintLang)
+    {
+        read(dataset, uri, hintLang, null) ;
+    }
+
+    /** Read quads into a Dataset from the given location, with hint of langauge and the with some parameters for the reader 
+     *  Throws {@link RiotNotFoundException} if the location is not found - the model is unchanged.
+     *  Throws parse errors depending on the language and reader; the Model modelaybe partially updated. 
+     */
     public static void read(Dataset dataset, String uri, String hintLang, Context context)
     {
         DatasetGraph dsg = dataset.asDatasetGraph() ;
@@ -165,7 +174,16 @@ public class WebReader2
         readQuads(sink, uri, hintLang, context) ;
     }
 
-    /** Read triples into a model with chars from an Reader.
+    /** Read quads into a dataset with bytes from an input stream.
+     */
+    public static void read(Dataset dataset, InputStream in, String base, String hintlang)
+    {
+        DatasetGraph dsg = dataset.asDatasetGraph() ;
+        Sink<Quad> sink = new SinkQuadsToDataset(dsg) ;
+        processQuads(sink, base, new TypedInputStream2(in), hintlang, null) ;
+    }
+    
+    /** Read quads into a dataset with chars from an Reader.
      * Use java.io.Readers is not encouraged - use with a StringReader is the primary use case.
      * For files, open a {@link java.io.FileInputStream} to ensure correct character set handling.
      */
@@ -176,7 +194,6 @@ public class WebReader2
         processQuads(sink, base, in, hintlang, null) ;
     }
 
-    
     public static void addTripleSyntax(Lang2 language, ContentType contentType, ReaderRIOTFactory<Triple> factory, String ... fileExt )
     { 
         Langs.addTripleSyntax$(language, contentType, factory, fileExt) ;
@@ -278,7 +295,7 @@ public class WebReader2
     private static void processTriples(Sink<Triple> sink, String base, Reader in, String hintLang, Context context)
     {
         Tokenizer tokenizer = TokenizerFactory.makeTokenizer(in) ;
-        Lang2 lang2 = Langs.jenaNameToLang(hintLang) ;
+        Lang2 lang2 = Langs.shortNameToLang(hintLang) ;
         Lang lang = Langs.convert(lang2) ;
         LangRIOT parser = RiotReader.createParserTriples(tokenizer, lang, base, sink) ;
         parser.parse() ;
@@ -309,7 +326,7 @@ public class WebReader2
     private static void processQuads(Sink<Quad> sink, String base, Reader in, String hintLang, Context context)
     {
         Tokenizer tokenizer = TokenizerFactory.makeTokenizer(in) ;
-        Lang2 lang2 = Langs.jenaNameToLang(hintLang) ;
+        Lang2 lang2 = Langs.shortNameToLang(hintLang) ;
         Lang lang = Langs.convert(lang2) ;
         LangRIOT parser = RiotReader.createParserQuads(tokenizer, lang, base, sink) ;
         parser.parse() ;
@@ -328,7 +345,7 @@ public class WebReader2
             if ( hintLang == null )
                 ct = Langs.guessContentType(target) ;
             else
-                ct = Langs.jenaNameToContentType(hintLang) ;
+                ct = Langs.shortNameToContentType(hintLang) ;
         }
         return ct ;
     }