/** Sort out the base URI for RDF/XML parsing. */ private static String baseURI_RDFXML(String baseIRI) { if ( baseIRI == null ) return SysRIOT.chooseBaseIRI() ; else // This normalizes the URI. return SysRIOT.chooseBaseIRI(baseIRI) ; }
/** Choose base IRI, from a given one and a filename. * Prefer the given base ; turn any filename into an IRI. * String will need to be resolved as well. */ public static String chooseBaseIRI(String baseIRI, String fileOrIri) { if ( baseIRI != null ) return baseIRI ; if ( fileOrIri == null || fileOrIri.equals("-") ) return "http://localhost/stdin/" ; return chooseBaseIRI(fileOrIri) ; } }
/** Create a parser for RDF/XML * @deprecated use an RDFDataMgr operation with argument Lang.RDFXML */ @Deprecated public static LangRDFXML createParserRDFXML(InputStream input, String baseIRI, StreamRDF dest) { if ( baseIRI == null ) baseIRI = SysRIOT.chooseBaseIRI() ; LangRDFXML parser = LangRDFXML.create(input, baseIRI, baseIRI, ErrorHandlerFactory.getDefaultErrorHandler(), dest) ; return parser ; }
/** Read RDF data. * @param sink Destination for the RDF read. * @param uri URI to read from (includes file: and a plain file name). * @param base Base URI (defaults to uri). * @param hintLang Hint for the syntax * @param context Content object to control reading process. * @deprecated To be removed. Use {@code RDFParser.source(uri).lang(hintLang).base(base).context(context).parse(sink)} */ @Deprecated public static void parse(StreamRDF sink, String uri, String base, Lang hintLang, Context context) { if ( uri == null ) throw new IllegalArgumentException("URI to read from is null") ; if ( base == null ) base = SysRIOT.chooseBaseIRI(uri) ; if ( hintLang == null ) hintLang = RDFLanguages.filenameToLang(uri) ; parseFromURI(sink, uri, base, hintLang, context); }
private void testChooseBaseIRI(String input, String expected) { String x = SysRIOT.chooseBaseIRI(null, input) ; Assert.assertEquals(expected, x) ; } }
@Test public void chooseBaseIRI_10() { String x = SysRIOT.chooseBaseIRI(null, "foo") ; Assert.assertTrue(x.startsWith("file:///")); }
/** Parse a file, sending output to a StreamRDF sink. * Must be in a triples syntax. * @param filename * @param lang Language, or null for "guess from URL" (e.g. file extension) * @param baseIRI Base IRI, or null for based on input filename * @param dest Where to send the triples from the parser. */ public static void parse(String filename, Lang lang, String baseIRI, StreamRDF dest) { if ( lang == null ) lang = filenameToLang(filename, NTRIPLES) ; InputStream in = IO.openFile(filename) ; String base = SysRIOT.chooseBaseIRI(baseIRI, filename) ; parse(in, lang, base, dest) ; IO.close(in) ; }
/** Read RDF data. * @param sink Destination for the RDF read. * @param uri URI to read from (includes file: and a plain file name). * @param base Base URI (defaults to uri). * @param hintLang Hint for the syntax * @param context Content object to control reading process. */ public static void parse(StreamRDF sink, String uri, String base, Lang hintLang, Context context) { if ( uri == null ) throw new IllegalArgumentException("URI to read from is null") ; if ( base == null ) base = SysRIOT.chooseBaseIRI(uri) ; if ( hintLang == null ) hintLang = RDFLanguages.filenameToLang(uri) ; TypedInputStream in = open(uri, context) ; if ( in == null ) throw new RiotException("Not found: "+uri) ; process(sink, in, base, hintLang, context) ; IO.close(in) ; }
@Override protected Model readModelWorker(Model model, String filenameOrURI, String baseURI, String syntax) { // Doesn't call open() - we want to make the syntax guess // based on the mapped URI. String mappedURI = mapURI(filenameOrURI) ; if ( log.isDebugEnabled() && !mappedURI.equals(filenameOrURI) ) log.debug("Map: " + filenameOrURI + " => " + mappedURI) ; Lang lang = (syntax != null) ? RDFLanguages.nameToLang(syntax) : RDFLanguages.resourceNameToLang(mappedURI, Lang.RDFXML) ; // Not : RDFDataMgr.read(model, mappedURI, baseURI, lang); // Allow model.read to be overridden e.g. by OntModel which does import processing. if ( baseURI == null ) baseURI = SysRIOT.chooseBaseIRI(filenameOrURI) ; try(TypedInputStream in = streamManager.openNoMapOrNull(mappedURI)) { if ( in == null ) { FmtLog.debug(log, "Failed to locate '%s'", mappedURI); throw new NotFoundException("Not found: "+filenameOrURI) ; } Lang lang2 = RDFDataMgr.determineLang(mappedURI, in.getContentType(), lang); // May be overridden by model implementation. model.read(in, baseURI, lang2.getName()) ; } return model ; }
baseURI = SysRIOT.chooseBaseIRI(baseURI, filename) ;