001: /*
002: * (c) Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Hewlett-Packard Development Company, LP
003: * All rights reserved.
004: *
005: * Redistribution and use in source and binary forms, with or without
006: * modification, are permitted provided that the following conditions
007: * are met:
008: * 1. Redistributions of source code must retain the above copyright
009: * notice, this list of conditions and the following disclaimer.
010: * 2. Redistributions in binary form must reproduce the above copyright
011: * notice, this list of conditions and the following disclaimer in the
012: * documentation and/or other materials provided with the distribution.
013: * 3. The name of the author may not be used to endorse or promote products
014: * derived from this software without specific prior written permission.
015:
016: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
017: * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
018: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
019: * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
020: * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
021: * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
022: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
023: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
024: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
025: * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
026: *
027: * $Id: RDFReader.java,v 1.12 2008/01/02 12:05:48 andy_seaborne Exp $
028: */
029:
030: package com.hp.hpl.jena.rdf.model;
031:
032: import java.io.Reader;
033: import java.io.InputStream;
034:
035: /** An <code>RDFReader</code> reads a serialized represenation of RDF,
036: * e.g. RDF/XML, n-triple or n3 and adds the statements to a model.
037: *
038: * @author bwm
039: * @version $Revision: 1.12 $
040: */
041: public interface RDFReader {
042:
043: /**
044: * It is usually a mistake to use this method.
045: * Read serialized RDF from a <code>Reader</code> and add the statements to a
046: * <code>Model</code>. It is generally better to use an InputStream if
047: * possible. {@link #read(Model,InputStream,String)}, otherwise there is a
048: * danger of a mismatch between the character encoding of say the FileReader
049: * and the character encoding of the data in the file.
050: * @param model The model to which statements are added.
051: * @param r the reader from which to read
052: * @param base The base to use when converting relative to absolute URI's.
053: * The base URI may be null if there are no relative URIs to convert.
054: * A base URI of "" may permit relative URIs to be used in the
055: * model unconverted.
056: */
057: public void read(Model model, Reader r, String base);
058:
059: /** Read serialized RDF from an <code>InputStream</code> and add the statements
060: * to a <code>Model</code>.
061: * @param model The model to which statements are added.
062: * @param r The InputStream from which to read
063: * @param base The base to use when converting relative to absolute URI's.
064: * The base URI may be null if there are no relative URIs to convert.
065: * A base URI of "" may permit relative URIs to be used in the
066: * model unconverted.
067: */
068: public void read(Model model, InputStream r, String base);
069:
070: /** Read serialized RDF from a url and add the statements to a model.
071: * @param model the model to which statements should be added
072: * @param url the url, as a string, from which the serialized RDF
073: * should be read.
074: */
075: public void read(Model model, String url);
076:
077: /** Set the value of a reader property.
078: *
079: * <p>The behaviour of a reader may be influenced by setting property values.
080: * The properties and there effects may depend on the individual reader
081: * implementation.</p>
082: * <p>An RDFReader's behaviour can be influenced by defining property values
083: * interpreted by that particular reader class. The values for such
084: * properties can be changed by calling this method. </p>
085: *
086: * <p>No standard properties are defined. For the properties recognised
087: * by any particular reader implementation, see the the documentation for
088: * that implementation. </p>
089: * <p> The built-in RDFReaders have properties as defined by:
090: * <dl>
091: * <dt>N3</dt><dt>N-TRIPLE</dt>
092: * <dd>No properties.</dd>
093: * <dt>RDF/XML</dt><dt>RDF/XML-ABBREV</dt>
094: * <dd>See {@link com.hp.hpl.jena.rdf.arp.JenaReader#setProperty(String,Object)}
095: * </dl>
096: * @param propName the name of the property
097: * @param propValue the value of the property
098: * @return the previous value of the property, or <code>null</code>
099: * if there wasn't one
100: */
101: public Object setProperty(String propName, Object propValue);
102:
103: /** Set an error handler for the reader
104: * @param errHandler the new error handler
105: * @return the previous error handler
106: */
107: public RDFErrorHandler setErrorHandler(RDFErrorHandler errHandler);
108:
109: }
|