001: /*
002: (c) Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008 Hewlett-Packard Development Company, LP
003: [See end of file]
004: $Id: QueryHandler.java,v 1.19 2008/01/02 12:07:58 andy_seaborne Exp $
005: */
006:
007: package com.hp.hpl.jena.graph.query;
008:
009: import com.hp.hpl.jena.graph.*;
010: import com.hp.hpl.jena.util.iterator.*;
011:
012: /**
013: a QueryHandler handles queries on behalf of a graph. It's primary purpose
014: is to isolate changes to the query interface away from the Graph; multiple
015: different Graph implementations can use the same QueryHandler class, such
016: as the built-in SimpleQueryHandler.
017:
018: @author kers
019: */
020:
021: public interface QueryHandler {
022: /**
023: prepare a plan for generating bindings given the query _q_ and the result
024: variables _variables_.
025: */
026: public BindingQueryPlan prepareBindings(Query q, Node[] variables);
027:
028: /**
029: produce a single Stage which will probe the underlying graph for triples
030: matching p and inject all the resulting bindings into the processing stream
031: (see Stage for details)
032: <p>
033: _map_ is the variable binding map to use and update. _constraints_ is
034: the current constraint expression: if this Stage can absorb some of the
035: ANDed constraints, it may do so, and remove them from the ExpressionSet.
036: */
037: public Stage patternStage(Mapping map, ExpressionSet constraints,
038: Triple[] p);
039:
040: /**
041: deliver a plan for executing the tree-match query defined by _pattern_.
042: */
043: public TreeQueryPlan prepareTree(Graph pattern);
044:
045: /**
046: deliver an iterator over all the objects _o_ such that _(s, p, o)_ is in the
047: underlying graph; nulls count as wildcards. .remove() is not defined
048: on this iterator.
049: */
050: public ExtendedIterator objectsFor(Node s, Node p);
051:
052: /**
053: deliver an iterator over all the subjects _s_ such that _(s, p, o)_ is in the
054: underlying graph; nulls count as wildcards. .remove() is not defined
055: on this iterator.
056: */
057: public ExtendedIterator subjectsFor(Node p, Node o);
058:
059: /**
060: Answer an iterator over all the predicates <code>p</code> such that
061: <code>(s, p, o)</code> is in the underlying graph. .remove() is not
062: defined on this iterator.
063: */
064: public ExtendedIterator predicatesFor(Node s, Node o);
065:
066: /**
067: true iff the graph contains a triple in which n appears somewhere.
068: if n is a fluid node, it is not defined whether true or false is returned,
069: so don't do that.
070: */
071: public boolean containsNode(Node n);
072:
073: }
074:
075: /*
076: (c) Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008 Hewlett-Packard Development Company, LP
077: All rights reserved.
078:
079: Redistribution and use in source and binary forms, with or without
080: modification, are permitted provided that the following conditions
081: are met:
082:
083: 1. Redistributions of source code must retain the above copyright
084: notice, this list of conditions and the following disclaimer.
085:
086: 2. Redistributions in binary form must reproduce the above copyright
087: notice, this list of conditions and the following disclaimer in the
088: documentation and/or other materials provided with the distribution.
089:
090: 3. The name of the author may not be used to endorse or promote products
091: derived from this software without specific prior written permission.
092:
093: THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
094: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
095: OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
096: IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
097: INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
098: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
099: DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
100: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
101: (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
102: THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
103: */
|