View Javadoc

1   /*
2    * ModeShape (http://www.modeshape.org)
3    * See the COPYRIGHT.txt file distributed with this work for information
4    * regarding copyright ownership.  Some portions may be licensed
5    * to Red Hat, Inc. under one or more contributor license agreements.
6    * See the AUTHORS.txt file in the distribution for a full listing of 
7    * individual contributors.
8    *
9    * ModeShape is free software. Unless otherwise indicated, all code in ModeShape
10   * is licensed to you under the terms of the GNU Lesser General Public License as
11   * published by the Free Software Foundation; either version 2.1 of
12   * the License, or (at your option) any later version.
13   * 
14   * ModeShape is distributed in the hope that it will be useful,
15   * but WITHOUT ANY WARRANTY; without even the implied warranty of
16   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17   * Lesser General Public License for more details.
18   *
19   * You should have received a copy of the GNU Lesser General Public
20   * License along with this software; if not, write to the Free
21   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
22   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
23   */
24  package org.modeshape.jcr.api.query.qom;
25  
26  import javax.jcr.query.Query;
27  import javax.jcr.query.qom.QueryObjectModel;
28  import javax.jcr.query.qom.QueryObjectModelFactory;
29  
30  /**
31   * A set query extension to the JCR query object model.
32   * <p>
33   * The JCR query object model describes the queries that can be evaluated by a JCR repository independent of any particular query
34   * language, such as SQL. JCR defines the {@link QueryObjectModel} interface as the primary representatino of this query object
35   * model, but this interface is not sufficient for certain queries, such as unions or intersections of other queries. This
36   * interface is an extension to the JCR API that mirrors the QueryObjectModel interface for set queries.
37   * </p>
38   * <p>
39   * A query consists of:
40   * <ul>
41   * <li>a source. When the query is evaluated, the source evaluates its selectors and the joins between them to produce a (possibly
42   * empty) set of node-tuples. This is a set of 1-tuples if the query has one selector (and therefore no joins), a set of 2-tuples
43   * if the query has two selectors (and therefore one join), a set of 3-tuples if the query has three selectors (two joins), and so
44   * forth.</li>
45   * <li>an optional constraint. When the query is evaluated, the constraint filters the set of node-tuples.</li>
46   * <li>a list of zero or more orderings. The orderings specify the order in which the node-tuples appear in the query results. The
47   * relative order of two node-tuples is determined by evaluating the specified orderings, in list order, until encountering an
48   * ordering for which one node-tuple precedes the other. If no orderings are specified, or if for none of the specified orderings
49   * does one node-tuple precede the other, then the relative order of the node-tuples is implementation determined (and may be
50   * arbitrary).</li>
51   * <li>a list of zero or more columns to include in the tabular view of the query results. If no columns are specified, the
52   * columns available in the tabular view are implementation determined, but minimally include, for each selector, a column for
53   * each single-valued non-residual property of the selector's node type.</li>
54   * </ul>
55   * <p>
56   * The query object model representation of a query is created by factory methods in the {@link QueryObjectModelFactory}.
57   * 
58   * @see QueryObjectModel
59   */
60  public interface SetQueryObjectModel extends SetQuery, Query {
61  }