1 /* 2 wsmo4j - a WSMO API and Reference Implementation 3 4 Copyright (c) 2005, University of Innsbruck, Austria 5 6 This library is free software; you can redistribute it and/or modify it under 7 the terms of the GNU Lesser General Public License as published by the Free 8 Software Foundation; either version 2.1 of the License, or (at your option) 9 any later version. 10 This library is distributed in the hope that it will be useful, but WITHOUT 11 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 12 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 13 details. 14 You should have received a copy of the GNU Lesser General Public License along 15 with this library; if not, write to the Free Software Foundation, Inc., 16 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 */ 18 package org.omwg.logicalexpression.terms; 19 20 21 import org.omwg.ontology.*; 22 import org.wsmo.common.*; 23 24 25 /** 26 * <p>This interface represents a visitor for the terms of a logical expression 27 * tree structure.</p> 28 * <p>The visitor design pattern is a way of separating an algorithm from an object 29 * structure. A practical result of this separation is the ability to add new 30 * operations to existing object structures without modifying those structures.</p> 31 * <p>The idea is to use a structure of element classes, each of which has an accept 32 * method that takes a visitor object as an argument. The visitor is an interface 33 * that has a different visit() method for each element class. The accept() method 34 * of an element class calls back the visit() method for its class. Separate 35 * concrete visitor classes can then be written that perform some particular 36 * operations.</p> 37 * @author DERI Innsbruck, reto.krummenacher@deri.org 38 * @version $Revision: 1030 $ $Date: 2005-09-21 11:15:39 +0300 (Wed, 21 Sep 2005) $ 39 * @see <a href "http://en.wikipedia.org/wiki/Visitor_pattern">Visitor Pattern</a> 40 */ 41 public interface Visitor { 42 43 /** 44 * @param t ConstructedTerm 45 */ 46 void visitConstructedTerm(ConstructedTerm t); 47 48 /** 49 * @param t Variable 50 */ 51 void visitVariable(Variable t); 52 53 /** 54 * @param t DataValue 55 */ 56 void visitSimpleDataValue(SimpleDataValue t); 57 58 /** 59 * @param t DataValue 60 */ 61 void visitComplexDataValue(ComplexDataValue t); 62 63 /** 64 * @param t UnNbAnonymousID 65 */ 66 void visitUnnumberedID(UnnumberedAnonymousID t); 67 68 /** 69 * @param t NbAnonymousID 70 */ 71 void visitNumberedID(NumberedAnonymousID t); 72 73 /** 74 * @param t IRI 75 */ 76 void visitIRI(IRI t); 77 78 }