001/**
002 * Copyright (C) 2007 - 2016, Jens Lehmann
003 *
004 * This file is part of DL-Learner.
005 *
006 * DL-Learner is free software; you can redistribute it and/or modify
007 * it under the terms of the GNU General Public License as published by
008 * the Free Software Foundation; either version 3 of the License, or
009 * (at your option) any later version.
010 *
011 * DL-Learner is distributed in the hope that it will be useful,
012 * but WITHOUT ANY WARRANTY; without even the implied warranty of
013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
014 * GNU General Public License for more details.
015 *
016 * You should have received a copy of the GNU General Public License
017 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
018 */
019package org.dllearner.prolog;
020
021/**
022 * 
023 * @author Sebastian Bader
024 * 
025 */
026public class Variable extends Term {
027        private String name;
028
029        public Variable(String name) {
030                this.name = name;
031        }
032
033        public String getName() {
034                return name;
035        }
036
037        public void setName(String name) {
038                this.name = name;
039        }
040
041        @Override
042        public boolean isGround() {
043                return false;
044        }
045
046        @Override
047        public String toString() {
048                return "V[" + name + "]";
049        }
050
051        @Override
052        public String toPLString() {
053                return name;
054        }
055
056        @Override
057        public Term getInstance(Variable variable, Term term) {
058                if (this.equals(variable)) {
059                        return term;
060                }
061                return this;
062        }
063
064        @Override
065        public boolean equals(Object obj) {
066                if (obj == null)
067                        return false;
068
069                Variable v;
070                try {
071                        v = (Variable) obj;
072                } catch (ClassCastException cce) {
073                        return false;
074                }
075
076                return name.equals(v.name);
077        }
078
079        @Override
080        public int hashCode() {
081                return name.hashCode();
082        }
083
084        @Override
085        public Object clone() {
086                return new Variable(name);
087        }
088}