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 }