001: /*
002: (c) Copyright 2003, Plugged In Software
003: (c) Copyright 2003, 2004, 2005, 2006, 2007, 2008 Hewlett-Packard Development Company, LP
004: [See end of file]
005: $Id: ExtendedHandler.java,v 1.11 2008/01/02 12:06:46 andy_seaborne Exp $
006: */
007: package com.hp.hpl.jena.rdf.arp;
008:
009: /**Extended callbacks from a reader to an RDF application.
010: * This reports:
011: * <ul>
012: * <li> when a blank node goes out of scope, allowing its anonymous
013: * ID to be freed by external applications.
014: * <li> when a rdf:RDF start and end tag is seen
015: * @author Simon Raboczi, Jeremy Carroll
016: *
017: *
018: */
019: public interface ExtendedHandler {
020: /** After this call, no more triples will be reported
021: * which use <code>bnode</code>.
022: * This is called exactly once for each blank nodes.
023: * Whether this includes nodes with an <code>rdf:nodeID</code>
024: * is controlled by {@link #discardNodesWithNodeID}.
025: *
026: *<p>
027: *The contract is robust against syntax errors in input,
028: *and exceptions being thrown by the StatementHandler.
029: * @param bnode A blank node going out of scope.
030: */
031: public void endBNodeScope(AResource bnode);
032:
033: /**
034: * This method is used to modify the behaviour
035: * of ARP concerning its reporting of bnode scope
036: * {@link #endBNodeScope}.
037: * <p>
038: * If this returns true then blank nodes with an <code>rdf:nodeID</code>
039: * are not reported as they go out of scope at the end
040: * of file. This eliminates the unbounded memory cost
041: * of remembering such nodes.
042: * <p>
043: * If this returns false then the contract of
044: * {@link #endBNodeScope} is honoured uniformly
045: * independent of whether a blank node has a nodeID or not.
046: * <p>
047: * If this method returns different values during the parsing
048: * of a single file, then the behaviour is undefined.
049: * @return Desired behaviour of endBNodeScope.
050: */
051: public boolean discardNodesWithNodeID();
052:
053: /**
054: * Called when the <rdf:RDF> tag is seen.
055: * (Also called when there is an implicit start of RDF content
056: * when the file consists only of RDF but omits the rdf:RDF tag).
057: */
058: public void startRDF();
059:
060: /**
061: * Called when the </rdf:RDF> tag is seen.
062: * (Also called when there is an implicit end of RDF content
063: * e.g. when the file consists only of RDF but omits the rdf:RDF tag,
064: * or if there is an unrecoverable syntax error mid-file).
065: *<p>
066: *Robust against syntax errors in input,
067: *and exceptions being thrown by the StatementHandler.
068: */
069: public void endRDF();
070:
071: }
072:
073: /*
074: (c) Copyright 2003, 2004, 2005, 2006, 2007, 2008 Hewlett-Packard Development Company, LP
075: All rights reserved.
076:
077: Redistribution and use in source and binary forms, with or without
078: modification, are permitted provided that the following conditions
079: are met:
080:
081: 1. Redistributions of source code must retain the above copyright
082: notice, this list of conditions and the following disclaimer.
083:
084: 2. Redistributions in binary form must reproduce the above copyright
085: notice, this list of conditions and the following disclaimer in the
086: documentation and/or other materials provided with the distribution.
087:
088: 3. The name of the author may not be used to endorse or promote products
089: derived from this software without specific prior written permission.
090:
091: THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
092: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
093: OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
094: IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
095: INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
096: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
097: DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
098: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
099: (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
100: THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
101: */
|