View Javadoc

1   /*
2    wsmo4j - a WSMO API and Reference Implementation
3    Copyright (c) 2005 University of Innsbruck, Austria
4                  2005 National University of Ireland, Galway
5    This library is free software; you can redistribute it and/or modify it under
6    the terms of the GNU Lesser General Public License as published by the Free
7    Software Foundation; either version 2.1 of the License, or (at your option)
8    any later version.
9    This library is distributed in the hope that it will be useful, but WITHOUT
10   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11   FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12   details.
13   You should have received a copy of the GNU Lesser General Public License along
14   with this library; if not, write to the Free Software Foundation, Inc.,
15   59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16   */
17  
18  package org.deri.wsmo4j.logicalexpression;
19  
20  
21  import java.util.*;
22  
23  import org.deri.wsmo4j.logicalexpression.util.*;
24  import org.omwg.logicalexpression.*;
25  import org.omwg.ontology.*;
26  
27  
28  /**
29   * @author DERI Innsbruck, reto.krummenacher@deri.org
30   * @author DERI Innsbruck, thomas.haselwanter@deri.org
31   */
32  public class ExistentialQuantificationImpl
33          extends QuantifiedImpl
34          implements ExistentialQuantification {
35  
36      public ExistentialQuantificationImpl(Variable variable, LogicalExpression expr)
37              throws IllegalArgumentException {
38          this(SetUtil.createSet(variable), expr);
39      }
40  
41      public ExistentialQuantificationImpl(Set <Variable> variables, LogicalExpression expr)
42              throws IllegalArgumentException {
43          super(variables, expr);
44      }
45  
46      public void accept(Visitor v) {
47          v.visitExistentialQuantification(this);
48      }
49  
50      /**
51       * <p>
52       * The <code>equals</code> method implements an equivalence relation
53       * on non-null object references. Quantified expressions are equal if their operator,
54       * their logical expresssion and their set of variables are equal.
55       * </p>
56       * <p>
57       * It is generally necessary to override the <code>hashCode</code> method whenever this method
58       * is overridden.
59       * </p>
60       * @param o the reference object with which to compare.
61       * @return <code>true</code> if this object is the same as the obj
62       *          argument; <code>false</code> otherwise.
63       * @see java.lang.Object#equals(java.lang.Object)
64       * @see java.lang.Object#hashCode()
65       */
66      public boolean equals(Object o) {
67          if (o instanceof ExistentialQuantification) {
68              ExistentialQuantification q = (ExistentialQuantification)o;
69              if (!variables.equals(q.listVariables())) {
70                  return false;
71              }
72              return expr.equals(q.getOperand());
73          }
74          return false;
75      }
76  
77      /**
78       * <p>
79       * If two objects are equal according to the <code>equals(Object)</code> method, then calling
80       * the <code>hashCode</code> method on each of the two objects must produce the same integer
81       * result. However, it is not required that if two objects are unequal according to
82       * the <code>equals(Object)</code> method, then calling the <code>hashCode</code> method on each of the two
83       * objects must produce distinct integer results.
84       * </p>
85       * <p>
86       * This method should be overriden, when the <code>equals(Object)</code> method is overriden.
87       * </p>
88       * @return A hash code value for this Object.
89       * @see java.lang.Object#hashCode()
90       * @see java.lang.Object#equals(Object)
91       * @see com.ontotext.wsmo4j.ontology.LogicalExpressionImpl#hashCode()
92       * @see java.util.Set#hashCode()
93       */
94  
95  }