001    /**
002     * Copyright (C) 2007-2011, 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     */
019    
020    package org.dllearner.core.owl;
021    
022    import java.util.Map;
023    
024    /**
025     * Examples for datatype value restrictions:
026     * Male AND hasAge HASVALUE 18
027     * Male AND hasDriverLicense HASVALUE true
028     * 
029     * @author Jens Lehmann
030     *
031     */
032    public abstract class DatatypeValueRestriction extends ValueRestriction {
033    
034            /**
035             * 
036             */
037            private static final long serialVersionUID = 3263813180892609631L;
038    
039            public DatatypeValueRestriction(DatatypeProperty restrictedPropertyExpression, Constant value) {
040                    super(restrictedPropertyExpression, value);
041            }
042            
043            /* (non-Javadoc)
044             * @see org.dllearner.core.owl.Description#toManchesterSyntaxString()
045             */
046            @Override
047            public String toManchesterSyntaxString(String baseURI, Map<String,String> prefixes) {
048                    return restrictedPropertyExpression.toString(baseURI, prefixes) + " value " + value.toManchesterSyntaxString(baseURI, prefixes);
049            }
050    
051            /* (non-Javadoc)
052             * @see org.dllearner.core.owl.Description#getArity()
053             */
054            @Override
055            public int getArity() {
056                    return 2;
057            }
058    
059            /* (non-Javadoc)
060             * @see org.dllearner.core.owl.KBElement#getLength()
061             */
062            // we do not add the + 1 here because e.g. for boolean values we
063            // probably do not want to add it while for double value we may
064            // add it (because "<=" ">=" are possible while boolean has only "=") 
065    //      public int getLength() {
066    //              return 1 + restrictedPropertyExpression.getLength() + value.getLength();
067    //      }
068    
069            /* (non-Javadoc)
070             * @see org.dllearner.core.owl.KBElement#toString(java.lang.String, java.util.Map)
071             */
072            public String toString(String baseURI, Map<String, String> prefixes) {
073                    return restrictedPropertyExpression.toString(baseURI, prefixes) + " value " + value.toString(baseURI, prefixes);
074            }
075            
076            public String toKBSyntaxString(String baseURI, Map<String, String> prefixes) {
077                    return restrictedPropertyExpression.toKBSyntaxString(baseURI, prefixes) + " = " + value.toKBSyntaxString(baseURI, prefixes);
078            }
079    
080            @Override
081            public DatatypeProperty getRestrictedPropertyExpression() {
082                    return (DatatypeProperty) restrictedPropertyExpression;
083            }
084            
085            @Override
086            public Constant getValue() {
087                    return (Constant) value;
088            }       
089            
090            @Override
091            public void accept(DescriptionVisitor visitor) {
092                    visitor.visit(this);
093            }       
094            
095            public void accept(KBElementVisitor visitor) {
096                    visitor.visit(this);
097            }       
098    }