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/16 20:06:43 UTC

svn commit: r1362169 - in /jena/Scratch/AFS/Dev/trunk: src/main/java/projects/riot_reader/ testing/RIOT/Reader/

Author: andy
Date: Mon Jul 16 18:06:42 2012
New Revision: 1362169

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

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/MainWebReader.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/RDFReaderRIOT_ARP.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
    jena/Scratch/AFS/Dev/trunk/testing/RIOT/Reader/D-no-base.ttl

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=1362169&r1=1362168&r2=1362169&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 Mon Jul 16 18:06:42 2012
@@ -268,18 +268,33 @@ public class Langs
     }
     
     /** Attempt to guess the content type string from a language name */   
-    public static String jenaNameToContentType(String jenaShortName)
+    public static String jenaNameToContentTypeStr(String jenaShortName)
     {
-        return jenaNameToContentType(jenaShortName, null) ;
+        return jenaNameToContentTypeStr(jenaShortName, null) ;
     }
 
     /** Attempt to guess the content type string from a language name */   
-    public static String jenaNameToContentType(String jenaShortName, String dft)
+    public static String jenaNameToContentTypeStr(String jenaShortName, String dft)
     {
-        Lang2 lang = jenaName.get(jenaShortName) ;
-        if ( lang == null )
+        ContentType ct = jenaNameToContentType(jenaShortName) ;
+        if ( ct == null )
             return dft ;
-        return lang.getContentType().getContentType() ;
+        return ct.getContentType() ;
+    }
+    
+    /** Attempt to guess the content type string from a language name */   
+    public static ContentType jenaNameToContentType(String jenaShortName)
+    {
+        Lang2 lang = jenaNameToLang(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) ;
     }
 
     static Lang convert(Lang2 language)

Modified: jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/MainWebReader.java
URL: http://svn.apache.org/viewvc/jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/MainWebReader.java?rev=1362169&r1=1362168&r2=1362169&view=diff
==============================================================================
--- jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/MainWebReader.java (original)
+++ jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/MainWebReader.java Mon Jul 16 18:06:42 2012
@@ -28,22 +28,37 @@ public class MainWebReader
 {
     public static void main(String ... argv)
     {
-        
-        
         WebReader2.wireIntoJena() ;
         Log.enable(WebReader2.class) ;
 
-        Model m = ModelFactory.createDefaultModel() ;
-        m.read("file:D.ttl", "RDF/XML") ;
+        dwim("http://people.apache.org/~andy/RIOT-test/D.ttl") ;
+        dwim("http://people.apache.org/~andy/RIOT-test/D.nt") ;
+        dwim("http://people.apache.org/~andy/RIOT-test/D.rdf") ;
+        dwim("http://people.apache.org/~andy/RIOT-test/D.trig") ;
+        dwim("http://people.apache.org/~andy/RIOT-test/elephant") ;
         
-        System.out.println("triples = "+m.size()) ;
         System.out.println("DONE") ;
         System.exit(0) ;
         
+        Model m = ModelFactory.createDefaultModel() ;
         WebReader2.read(m, "http://localhost:3030/ds/data?default", WebContent.contentTypeTurtle, null) ;
         WebReader2.read(m, "file:./D.ttl", null, null) ;
         //SSE.write(m) ;
         System.out.println("triples = "+m.size()) ;
     }
+    
+    public static void dwim(String uri)
+    {
+        System.out.println(uri) ;
+        try {
+            Model m = ModelFactory.createDefaultModel() ;
+            m.read(uri) ;
+        } catch (RuntimeException ex)
+        {
+            System.out.flush() ;
+            ex.printStackTrace(System.err) ;
+        }
+        System.out.println() ;
+    }
 }
 

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=1362169&r1=1362168&r2=1362169&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 Mon Jul 16 18:06:42 2012
@@ -18,6 +18,7 @@
 
 package projects.riot_reader;
 
+
 /** Not a class. */
 
 public class PROCESS
@@ -30,6 +31,12 @@ public class PROCESS
     
     // Quad tests
     
+    // 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.
     

Modified: jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/RDFReaderRIOT_ARP.java
URL: http://svn.apache.org/viewvc/jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/RDFReaderRIOT_ARP.java?rev=1362169&r1=1362168&r2=1362169&view=diff
==============================================================================
--- jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/RDFReaderRIOT_ARP.java (original)
+++ jena/Scratch/AFS/Dev/trunk/src/main/java/projects/riot_reader/RDFReaderRIOT_ARP.java Mon Jul 16 18:06:42 2012
@@ -18,6 +18,7 @@
 
 package projects.riot_reader;
 
+import java.io.File ;
 import java.io.InputStream ;
 import java.io.Reader ;
 
@@ -26,6 +27,7 @@ import com.hp.hpl.jena.rdf.model.Model ;
 import com.hp.hpl.jena.rdf.model.RDFErrorHandler ;
 import com.hp.hpl.jena.rdf.model.RDFReader ;
 import com.hp.hpl.jena.util.FileManager ;
+import com.hp.hpl.jena.util.FileUtils ;
 
 /** Adapter from Jena2 original style adapter for ARP - adds the file: */
 
@@ -38,7 +40,7 @@ public class RDFReaderRIOT_ARP implement
         fileMgr.addLocatorURL() ;
     }
     
-    RDFReader reader = new JenaReader() ;
+    JenaReader reader = new JenaReader() ;
     
     public RDFReaderRIOT_ARP() {}
 
@@ -53,7 +55,42 @@ public class RDFReaderRIOT_ARP implement
     @Override
     public void read(Model model, String url)
     {
-        fileMgr.readModel(model, url) ;
+        String base = chooseBaseURI(url) ;
+        reader.read(model, base) ;
+    }
+
+    private static String chooseBaseURI(String baseURI)
+    {
+        String scheme = FileUtils.getScheme(baseURI) ;
+
+        if ( scheme != null )
+        {
+            if ( scheme.equals("file") )
+            {
+                if ( ! baseURI.startsWith("file:///") )
+                {
+                    try {
+                        // Fix up file URIs.  Yuk.
+                        String tmp = baseURI.substring("file:".length()) ;
+                        File f = new File(tmp) ;
+                        baseURI = "file:///"+f.getCanonicalPath() ;
+                        baseURI = baseURI.replace('\\','/') ;
+
+//                            baseURI = baseURI.replace(" ","%20");
+//                            baseURI = baseURI.replace("~","%7E");
+                        // Convert to URI.  Except that it removes ///
+                        // Could do that and fix up (again)
+                        //java.net.URL u = new java.net.URL(baseURI) ;
+                        //baseURI = u.toExternalForm() ;
+                    } catch (Exception ex) {}
+                }
+            }
+            return baseURI ;
+        }
+
+        if ( baseURI.startsWith("/") )
+            return "file://"+baseURI ;
+        return "file:"+baseURI ;
     }
 
     @Override

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=1362169&r1=1362168&r2=1362169&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 Mon Jul 16 18:06:42 2012
@@ -49,18 +49,17 @@ public class TestJenaReaderRIOT extends 
         // Unwire?
     }
 
-//    @Test public void read_01() { jenaread("D.nt") ; }
-//    @Test public void read_02() { jenaread("D.ttl") ; }
-//    @Test public void read_03() { jenaread("D.rdf") ; }
-//    @Test public void read_04() { jenaread("D.rdf") ; }
-//    @Test public void read_05() { jenaread("D.json") ; }
-//
-//    
-//    @Test public void read_11() { jenaread("D.nt", "N-TRIPLES") ; }
-//    @Test public void read_12() { jenaread("D.ttl", "TTL") ; }
-//    @Test public void read_13() { jenaread("D.rdf", "RDF/XML") ; }
-//    @Test public void read_14() { jenaread("D.rdf", "RDF/XML-ABBREV") ; }
-//    @Test public void read_15() { jenaread("D.json", "RDF/JSON") ; }
+    @Test public void read_01() { jenaread("D.nt") ; }
+    @Test public void read_02() { jenaread("D.ttl") ; }
+    @Test public void read_03() { jenaread("D.rdf") ; }
+    @Test public void read_04() { jenaread("D.rdf") ; }
+    @Test public void read_05() { jenaread("D.json") ; }
+
+    @Test public void read_11() { jenaread("D.nt", "N-TRIPLES") ; }
+    @Test public void read_12() { jenaread("D.ttl", "TTL") ; }
+    @Test public void read_13() { jenaread("D.rdf", "RDF/XML") ; }
+    @Test public void read_14() { jenaread("D.rdf", "RDF/XML-ABBREV") ; }
+    @Test public void read_15() { jenaread("D.json", "RDF/JSON") ; }
 
     @Test public void read_21a() { jenaread("D-nt",  "N-TRIPLES") ; }
     @Test public void read_21b() { jenaread("D-nt",  "NTRIPLES") ; }
@@ -73,8 +72,18 @@ public class TestJenaReaderRIOT extends 
     @Test public void read_23b()  { jenaread("D-rdf", "RDFXML") ; }
     @Test public void read_24()   { jenaread("D-json", "RDF/JSON") ; }
     
-    @Test public void read_30() { jenaread("D-not-TTL.ttl", "RDF/XML") ; } // Override extension
+    //@Test public void read_30() { jenaread("D-not-TTL.ttl", "RDF/XML") ; }
+    @Test public void read_30()
+    {
+        TypedInputStream2 in = WebReader2.open(filename("D-not-TTL.ttl") );
+        Model m0 = ModelFactory.createDefaultModel() ;
+        WebReader2.read(m0, in.getInput(), "RDF/XML") ;
+        Model m1 = ModelFactory.createDefaultModel() ;
+        // Fails until integration with jena-core as hintlang gets lost.
+        m1.read(in.getInput(), null, "RDF/XML") ;
+    }
     
+    // Stream opening is hardwired into jena!
     @Test public void read_base_1() { jenaread("D-no-base.ttl", "http://baseuri/", "TTL") ; }
     
     @Test public void read_input_1() throws IOException
@@ -83,9 +92,11 @@ public class TestJenaReaderRIOT extends 
     @Test public void read_input_2() throws IOException
     { jenaread_stream("D.rdf", "RDF/XML") ; }
     
+    private static String filename(String filename) { return directory+"/"+filename ; }
+    
     private static void jenaread_stream(String filename, String lang) throws IOException
     {
-        filename = directory+"/"+filename ;
+        filename = filename(filename) ;
         
         // Read with a base
         FileInputStream in0 = new FileInputStream(filename) ;
@@ -122,7 +133,7 @@ public class TestJenaReaderRIOT extends 
     
     private static void jenaread(String dataurl)
     {
-        dataurl = directory+"/"+dataurl ; 
+        dataurl = filename(dataurl) ; 
         Model m = ModelFactory.createDefaultModel() ;
         m.read(dataurl) ;
         assertTrue(m.size() != 0 ) ;
@@ -133,7 +144,7 @@ public class TestJenaReaderRIOT extends 
     private static void jenaread(String dataurl, String lang)
     {
         // read via WebReader to make sure the test setup is right.
-        dataurl = directory+"/"+dataurl ;
+        dataurl = filename(dataurl) ;
         
         Model m0 = ModelFactory.createDefaultModel() ;
         WebReader2.read(m0, dataurl, lang) ;
@@ -151,7 +162,7 @@ public class TestJenaReaderRIOT extends 
 
     private static void jenaread(String dataurl, String lang, String base)
     {
-        dataurl = directory+"/"+dataurl ;
+        dataurl = filename(dataurl) ;
         
         // TODO
         // new RDFReaderFactoryRIOT().getReader(lang) ;

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=1362169&r1=1362168&r2=1362169&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 Mon Jul 16 18:06:42 2012
@@ -251,27 +251,18 @@ public class WebReader2
     // We could have had two step design - ReaderFactory-ReaderInstance
     // no - put the bruden on complicated readers, not everyone. 
     
-    private static void processTriples(Sink<Triple> sink, String base, TypedInputStream2 in, String hintLang, Context context)
+    private static void processTriples(Sink<Triple> sink, String uri, TypedInputStream2 in, String hintLang, Context context)
     {
-        boolean isTextPlain = WebContent.contentTypeTextPlain.equals(in.getContentType()) ;
+        ContentType ct = determineCT(uri, in.getContentType(), hintLang ) ;
         
-        String _ct = null ;
-        if ( in.getMediaType() != null )
-            _ct = WebContent.contentTypeCanonical(in.getContentType()) ;
-        if ( ( _ct == null || isTextPlain ) && hintLang != null )
-            _ct = Langs.jenaNameToContentType(hintLang, _ct) ;
-
-        if ( _ct == null )
-            throw new RiotException("Failed to find the content type") ;
-        
-        ContentType ct = ContentType.parse(_ct) ;
         if ( ct == null )
-            throw new RiotException("Failed to parse content type: "+_ct) ;
+            throw new RiotException("Failed to determine the triples content type: (URI="+uri+" : stream="+in.getContentType()+" : hint="+hintLang+")") ;
+
         ReaderRIOT<Triple> reader = getReaderTriples(ct) ;
         if ( reader == null )
-            throw new RiotException("No reader for content type: "+_ct) ;
+            throw new RiotException("No triples reader for content type: "+ct.getContentType()) ;
         
-        reader.read(in.getInput(), base, ct, sink, context) ;
+        reader.read(in.getInput(), uri, ct, sink, context) ;
     }
 
     private static ReaderRIOT<Triple> getReaderTriples(ContentType ct)
@@ -287,8 +278,7 @@ public class WebReader2
     private static void processTriples(Sink<Triple> sink, String base, Reader in, String hintLang, Context context)
     {
         Tokenizer tokenizer = TokenizerFactory.makeTokenizer(in) ;
-        String ct = Langs.jenaNameToContentType(hintLang) ;
-        Lang2 lang2 = Langs.contentTypeToLang(ct) ;
+        Lang2 lang2 = Langs.jenaNameToLang(hintLang) ;
         Lang lang = Langs.convert(lang2) ;
         LangRIOT parser = RiotReader.createParserTriples(tokenizer, lang, base, sink) ;
         parser.parse() ;
@@ -296,21 +286,12 @@ public class WebReader2
     
     private static void processQuads(Sink<Quad> sink, String uri, TypedInputStream2 in, String hintLang, Context context)
     {
-        String _ct = null ;
-        if ( in.getMediaType() != null )
-            _ct = WebContent.contentTypeCanonical(in.getContentType()) ;
-        if ( _ct == null && hintLang != null )
-            _ct = Langs.jenaNameToContentType(_ct, _ct) ;
-
-        if ( _ct == null )
-            throw new RiotException("Failed to find the content type") ;
-
-        ContentType ct = ContentType.parse(_ct) ;
+        ContentType ct = determineCT(uri, in.getContentType(), hintLang ) ;
         if ( ct == null )
-            throw new RiotException("Failed to parse content type: "+_ct) ;
+            throw new RiotException("Failed to determine the quads content type: (URI="+uri+" : stream="+in.getContentType()+" : hint="+hintLang+")") ;
         ReaderRIOT<Quad> reader = getReaderQuads(ct) ;
         if ( reader == null )
-            throw new RiotException("No reader for content type: "+_ct) ;
+            throw new RiotException("No quads reader for content type: "+ct) ;
         
         reader.read(in.getInput(), uri, ct, sink, context) ;
     }
@@ -328,11 +309,28 @@ public class WebReader2
     private static void processQuads(Sink<Quad> sink, String base, Reader in, String hintLang, Context context)
     {
         Tokenizer tokenizer = TokenizerFactory.makeTokenizer(in) ;
-        String ct = Langs.jenaNameToContentType(hintLang) ;
-        Lang2 lang2 = Langs.contentTypeToLang(ct) ;
+        Lang2 lang2 = Langs.jenaNameToLang(hintLang) ;
         Lang lang = Langs.convert(lang2) ;
         LangRIOT parser = RiotReader.createParserQuads(tokenizer, lang, base, sink) ;
         parser.parse() ;
     }
+
+    private static ContentType determineCT(String target, String ctStr, String hintLang)
+    {
+        if ( ctStr != null )
+            ctStr = WebContent.contentTypeCanonical(ctStr) ;
+        boolean isTextPlain = WebContent.contentTypeTextPlain.equals(ctStr) ;
+        
+        ContentType ct = (ctStr==null) ? null : ContentType.parse(ctStr) ;
+        
+        if ( ct == null || isTextPlain )
+        {
+            if ( hintLang == null )
+                ct = Langs.guessContentType(target) ;
+            else
+                ct = Langs.jenaNameToContentType(hintLang) ;
+        }
+        return ct ;
+    }
 }
 

Modified: jena/Scratch/AFS/Dev/trunk/testing/RIOT/Reader/D-no-base.ttl
URL: http://svn.apache.org/viewvc/jena/Scratch/AFS/Dev/trunk/testing/RIOT/Reader/D-no-base.ttl?rev=1362169&r1=1362168&r2=1362169&view=diff
==============================================================================
--- jena/Scratch/AFS/Dev/trunk/testing/RIOT/Reader/D-no-base.ttl (original)
+++ jena/Scratch/AFS/Dev/trunk/testing/RIOT/Reader/D-no-base.ttl Mon Jul 16 18:06:42 2012
@@ -1,3 +1 @@
-@base <http://example/> .
-
 <s> <p> <o> .