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> .