1 /*
2 * Copyright (c) 2007, James Leigh All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are met:
6 *
7 * - Redistributions of source code must retain the above copyright notice, this
8 * list of conditions and the following disclaimer.
9 * - Redistributions in binary form must reproduce the above copyright notice,
10 * this list of conditions and the following disclaimer in the documentation
11 * and/or other materials provided with the distribution.
12 * - Neither the name of the openrdf.org nor the names of its contributors may
13 * be used to endorse or promote products derived from this software without
14 * specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26 * POSSIBILITY OF SUCH DAMAGE.
27 *
28 */
29 package org.openrdf.elmo;
30
31 import java.io.Closeable;
32 import java.util.Iterator;
33 import java.util.List;
34 import java.util.Locale;
35
36 /**
37 * Interface used to bind and evaluate a query
38 *
39 * @author James Leigh
40 */
41 public interface ElmoQuery extends Closeable {
42
43 /**
44 * Closes any open results from this query.
45 */
46 public abstract void close();
47
48 /**
49 * Evaluates the query and returns an iterator over the result.
50 *
51 * @return Iterator over the result of the query.
52 */
53 public abstract Iterator<?> evaluate();
54
55 /**
56 * Evaluates the query and return the first result.
57 *
58 * @return The first result from the query.
59 */
60 public abstract Object getSingleResult();
61
62 /**
63 * Evaluates the query and returns the results disconnected from the query.
64 *
65 * @return The results from the query.
66 */
67 public abstract List getResultList();
68
69 /**
70 * Skips to the <code>startPosition</code> of the results.
71 *
72 * @param startPosition
73 */
74 public abstract ElmoQuery setFirstResult(int startPosition);
75
76 /**
77 * Terminates the result list after reading <code>maxResult</code>
78 *
79 * @param maxResult
80 */
81 public abstract ElmoQuery setMaxResults(int maxResult);
82
83 /**
84 * Binds a literal with no type and a language of <code>locale</code>.
85 *
86 * @param name
87 * Name of the variable to bind to.
88 * @param label
89 * @param locale
90 */
91 public abstract ElmoQuery setParameter(String name, String label,
92 Locale locale);
93
94 /**
95 * Assigns an entity or literal to the given name.
96 *
97 * @param name
98 * Name of the variable to bind to.
99 * @param value
100 * managed entity or literal.
101 */
102 public abstract ElmoQuery setParameter(String name, Object value);
103 }