Refine search
/** Get the incoming {@link Lang} based on Content-Type of an action. * @param action * @param dft Default if no "Content-Type:" found. * @return ContentType */ public static Lang getLangFromAction(HttpAction action, Lang dft) { String contentTypeHeader = action.request.getContentType() ; if ( contentTypeHeader == null ) return dft ; return RDFLanguages.contentTypeToLang(contentTypeHeader) ; }
private void processFile(String filename, StreamRDF sink) { Lang lang = filename.equals("-") ? RDFLanguages.NQUADS : RDFLanguages.filenameToLang(filename, RDFLanguages.NQUADS) ; if ( filename.equals("-") ) RDFDataMgr.parse(sink, System.in, null, RDFLanguages.NQUADS) ; else RDFDataMgr.parse(sink, filename) ; }
@Override protected RecordWriter<TKey, QuadWritable> getRecordWriter(Writer writer, Configuration config, Path outputPath) throws IOException { Lang lang = RDFLanguages.filenameToLang(outputPath.getName()); if (lang == null) throw new IOException("There is no registered RDF language for the output file " + outputPath.toString()); if (!RDFLanguages.isQuads(lang)) throw new IOException( lang.getName() + " is not a RDF quads format, perhaps you wanted TriplesOutputFormat or TriplesOrQuadsOutputFormat instead?"); // This will throw an appropriate error if the language does not support // writing quads return HadoopRdfIORegistry.<TKey> createQuadWriter(lang, writer, config); }
/** Turn a name for a language into a {@link Lang} object. * The name can be a label, or a content type. */ public static Lang nameToLang(String langName) { if ( langName == null ) return null ; Lang lang = shortnameToLang(langName) ; if ( lang != null ) return lang ; lang = contentTypeToLang(langName) ; return lang ; }
public void setDatasetContentType(String contentType) { // Check that this is a valid setting Lang lang = RDFLanguages.contentTypeToLang(contentType); if (lang == null) throw new IllegalArgumentException("Given Content Type '" + contentType + "' is not supported by RIOT"); if (!RDFLanguages.isQuads(lang)) throw new IllegalArgumentException("Given Content Type '" + contentType + "' is not a RDF Dataset format"); datasetContentType = contentType; }
@Override protected RecordWriter<TKey, TripleWritable> getRecordWriter(Writer writer, Configuration config, Path outputPath) throws IOException { Lang lang = RDFLanguages.filenameToLang(outputPath.getName()); if (lang == null) throw new IOException("There is no registered RDF language for the output file " + outputPath.toString()); if (!RDFLanguages.isTriples(lang)) throw new IOException( lang.getName() + " is not a RDF triples format, perhaps you wanted QuadsOutputFormat or TriplesOrQuadsOutputFormat instead?"); // This will throw an appropriate error if the language does not support writing triples return HadoopRdfIORegistry.<TKey>createTripleWriter(lang, writer, config); }
protected static void read(Model model, String in, String langStr, String base) { Lang lang = null ; if ( langStr != null ) lang = RDFLanguages.nameToLang(langStr) ; RDFDataMgr.read(model, in, base, lang) ; } }
@Override public Dataset fetchDataset() { if ( destination == null ) throw new ARQException("Dataset operations not available - no dataset URL provided"); Dataset ds = DatasetFactory.createTxnMem(); Txn.executeWrite(ds, ()->{ TypedInputStream s = exec(()->HttpOp.execHttpGet(destination, acceptDataset, this.httpClient, this.httpContext)); Lang lang = RDFLanguages.contentTypeToLang(s.getContentType()); RDFDataMgr.read(ds, s, lang); }); return ds; }
@Override public void doWrite( final NamedList response, final Writer writer, final String contentType) { RDFDataMgr.write( new WriterOutputStream(writer, CharacterSet.UTF_8), (Model) response.get(Names.QUERY_RESULT), RDFLanguages.contentTypeToLang(contentType)); } };
@Override final public void handle(String baseIRI, HttpResponse response) { try { Graph g = GraphFactory.createDefaultGraph() ; HttpEntity entity = response.getEntity() ; // org.apache.http.entity.ContentType ; String ct = contentType(response) ; Lang lang = RDFLanguages.contentTypeToLang(ct) ; StreamRDF dest = StreamRDFLib.graph(g) ; try(InputStream in = entity.getContent()) { RDFParser.source(in).lang(lang).base(baseIRI).parse(dest); } this.graph = g ; } catch (IOException ex) { IO.exception(ex) ; } }
Lang lang = RDFLanguages.contentTypeToLang(ct.getContentType()) ; if ( lang == null ) { ServletOps.errorBadRequest("Unknown content type for triples: " + ct) ; catch (IOException ex) { IO.exception(ex) ; } UploadDetails details = new UploadDetails(countingDest.count(), countingDest.countTriples(),countingDest.countQuads()) ; action.log.info(format("[%d] Body: Content-Length=%d, Content-Type=%s, Charset=%s => %s : %s", action.id, len, ct.getContentType(), ct.getCharset(), lang.getName(), details.detailsStr())) ; return details ; } catch (RiotParseException ex) { action.log.info(format("[%d] Body: Content-Length=%d, Content-Type=%s, Charset=%s => %s : %s", action.id, len, ct.getContentType(), ct.getCharset(), lang.getName(), ex.getMessage())) ; throw ex ;
@Override final public void handle(String baseIRI, HttpResponse response) { try { Graph g = GraphFactory.createDefaultGraph() ; HttpEntity entity = response.getEntity() ; // org.apache.http.entity.ContentType ; String ct = contentType(response) ; Lang lang = RDFLanguages.contentTypeToLang(ct) ; StreamRDF dest = StreamRDFLib.graph(g) ; InputStream in = entity.getContent() ; RDFDataMgr.parse(dest, in, baseIRI, lang) ; in.close() ; this.graph = g ; } catch (IOException ex) { IO.exception(ex) ; } }
/** * Normal constructor * * @param rdfStream the rdf stream * @param namespaces a namespace mapping * @param mediaType the media type */ public RdfStreamStreamingOutput(final RdfStream rdfStream, final Map<String, String> namespaces, final MediaType mediaType) { super(); if (LOGGER.isDebugEnabled()) { getRegisteredLanguages().forEach(format -> { LOGGER.debug("Discovered RDF writer writeableFormats: {} with mimeTypes: {}", format.getName(), String.join(" ", format.getAltContentTypes())); }); } final Lang format = contentTypeToLang(mediaType.getType() + "/" + mediaType.getSubtype()); if (format != null) { this.format = format; this.mediaType = mediaType; LOGGER.debug("Setting up to serialize to: {}", format); } else { throw new WebApplicationException(NOT_ACCEPTABLE); } this.rdfStream = rdfStream; this.namespaces = namespaces; }
/** 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) ; }
/** Write the source to the file. * <p> * If neither {@code Lang} nor {@code RDFFormat} are set, an attempt to * guess an RDF Syntax is made from the file extension. * <p>Output to "-" goes to stdout. * @param filename */ public void output(String filename) { Objects.requireNonNull(filename, "Null filename"); RDFFormat fmt = format; if ( fmt == null ) { ContentType ct = RDFLanguages.guessContentType(filename); if ( ct == null ) throw new RiotException("Lang and RDFformat unset and can't determine syntax from '"+filename+"'"); Lang lang = RDFLanguages.contentTypeToLang(ct); if ( lang == null ) throw new RiotException("No syntax registered for '"+ct.getContentType()+"'"); fmt = RDFWriterRegistry.defaultSerialization(lang); } if ( filename.equals("-") ) { output(System.out, fmt); return; } Path p = Paths.get(filename); try ( OutputStream out1 = Files.newOutputStream(p); OutputStream out = new BufferedOutputStream(out1, BUF_SIZE)){ output(out, fmt); } catch (IOException ex) { IO.exception(ex); } }
@Override protected Lang selectLang(String filename, ContentType contentType, Lang dftLang) { if ( modLangParse.getLang() != null ) return modLangParse.getLang() ; if ( contentType != null && ! WebContent.matchContentType(WebContent.ctTextPlain, contentType) ) return RDFLanguages.contentTypeToLang(contentType) ; Lang lang = RDFLanguages.filenameToLang(filename) ; if ( lang == null ) lang = dftLang ; return lang ; }
/** 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) ; }
/** Send a file to named graph (or "default" or null for the default graph). * <p> * The Content-Type is inferred from the file extension. * <p> * "Replace" means overwrite existing data, othewise the date is added to the target. */ protected void upload(String graph, String file, boolean replace) { // if triples Lang lang = RDFLanguages.filenameToLang(file); if ( RDFLanguages.isQuads(lang) ) throw new ARQException("Can't load quads into a graph"); if ( ! RDFLanguages.isTriples(lang) ) throw new ARQException("Not an RDF format: "+file+" (lang="+lang+")"); String url = LibRDFConn.urlForGraph(svcGraphStore, graph); doPutPost(url, file, lang, replace); }
public static ContentType guessContentType(String resourceName) { if ( resourceName == null ) return null ; Lang lang = filenameToLang(resourceName) ; if ( lang == null ) return null ; return lang.getContentType() ; }
/** Try to map a file name to a {@link Lang}; return the given default where there is no registered mapping */ public static Lang filenameToLang(String filename, Lang dftLang) { Lang lang = filenameToLang(filename) ; return (lang == null) ? dftLang : lang ; }