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.algorithms.pattern;
020
021import org.semanticweb.owlapi.model.OWLDataFactory;
022import org.semanticweb.owlapi.model.OWLDatatype;
023import org.semanticweb.owlapi.model.OWLLiteral;
024import org.semanticweb.owlapi.vocab.OWL2Datatype;
025
026public class OWLLiteralRenamer {
027        
028        private OWLDataFactory dataFactory;
029
030        public OWLLiteralRenamer(OWLDataFactory dataFactory) {
031                this.dataFactory = dataFactory;
032        }
033
034        public OWLLiteral rename(OWLLiteral literal){
035                OWLLiteral renamedLiteral = literal;
036                OWLDatatype datatype = literal.getDatatype();
037                if(datatype.isRDFPlainLiteral()){
038                        if(literal.hasLang()){
039                                renamedLiteral = dataFactory.getOWLLiteral("plain", literal.getLang());
040                        } else {
041                                renamedLiteral = dataFactory.getOWLLiteral("plain");
042                        }
043                } else {
044                        if(datatype.getIRI().equals(OWL2Datatype.XSD_STRING.getIRI())){
045                                renamedLiteral = dataFactory.getOWLLiteral("string", datatype);
046                        } else if(datatype.getIRI().equals(OWL2Datatype.XSD_DOUBLE.getIRI()) ||
047                                        datatype.getIRI().equals(OWL2Datatype.XSD_DECIMAL.getIRI()) || 
048                                        datatype.getIRI().equals(OWL2Datatype.XSD_FLOAT.getIRI())){
049                                renamedLiteral = dataFactory.getOWLLiteral("1.0", datatype);
050                        } else if(datatype.getIRI().equals(OWL2Datatype.XSD_INT.getIRI()) ||
051                                        datatype.getIRI().equals(OWL2Datatype.XSD_INTEGER.getIRI()) ||
052                                        datatype.getIRI().equals(OWL2Datatype.XSD_LONG.getIRI()) ||
053                                        datatype.getIRI().equals(OWL2Datatype.XSD_BYTE.getIRI()) ||
054                                        datatype.getIRI().equals(OWL2Datatype.XSD_SHORT.getIRI())){
055                                renamedLiteral = dataFactory.getOWLLiteral("1", datatype);
056                        }
057                }
058                renamedLiteral = dataFactory.getOWLLiteral("", OWL2Datatype.RDF_PLAIN_LITERAL);
059                return renamedLiteral;
060        }
061
062}