All Downloads are FREE. Search and download functionalities are using the official Maven repository.
Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
org.swrlapi.factory.DefaultOWLLiteralFactory Maven / Gradle / Ivy
package org.swrlapi.factory;
import org.checkerframework.checker.nullness.qual.NonNull;
import org.semanticweb.owlapi.model.OWLDatatype;
import org.semanticweb.owlapi.model.OWLLiteral;
import org.semanticweb.owlapi.vocab.XSDVocabulary;
import org.swrlapi.literal.OWLLiteralValidator;
import org.swrlapi.literal.XSDDate;
import org.swrlapi.literal.XSDDateTime;
import org.swrlapi.literal.XSDDuration;
import org.swrlapi.literal.XSDTime;
import uk.ac.manchester.cs.owl.owlapi.OWLLiteralImpl;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.net.URI;
import java.util.List;
class DefaultOWLLiteralFactory implements OWLLiteralFactory
{
@NonNull private final OWLDatatypeFactory datatypeFactory;
public DefaultOWLLiteralFactory()
{
this.datatypeFactory = SWRLAPIInternalFactory.createOWLDatatypeFactory();
}
@NonNull @Override public OWLLiteral getOWLLiteral(byte b)
{
return new OWLLiteralImpl("" + b, "", getOWLDatatypeFactory().getByteDatatype());
}
@NonNull @Override public OWLLiteral getOWLLiteral(short s)
{
return new OWLLiteralImpl("" + s, "", getOWLDatatypeFactory().getShortDatatype());
}
@NonNull @Override public OWLLiteral getOWLLiteral(int i)
{
return new OWLLiteralImpl("" + i, "", getOWLDatatypeFactory().getIntDatatype());
}
@NonNull @Override public OWLLiteral getOWLLiteral(long l)
{
return new OWLLiteralImpl("" + l, "", getOWLDatatypeFactory().getLongDatatype());
}
@NonNull @Override public OWLLiteral getOWLLiteral(float f)
{
return new OWLLiteralImpl("" + f, "", getOWLDatatypeFactory().getFloatDatatype());
}
@NonNull @Override public OWLLiteral getOWLLiteral(double d)
{
return new OWLLiteralImpl("" + d, "", getOWLDatatypeFactory().getDoubleDatatype());
}
@NonNull @Override public OWLLiteral getOWLLiteral(@NonNull BigDecimal d)
{
return new OWLLiteralImpl("" + d, "", getOWLDatatypeFactory().getDecimalDatatype());
}
@NonNull @Override public OWLLiteral getOWLLiteral(@NonNull BigInteger i)
{
return new OWLLiteralImpl("" + i, "", getOWLDatatypeFactory().getIntegerDatatype());
}
@NonNull @Override public OWLLiteral getOWLLiteral(@NonNull String s)
{
return new OWLLiteralImpl(s, "", getOWLDatatypeFactory().getStringDatatype());
}
@NonNull @Override public OWLLiteral getOWLLiteral(boolean b)
{
return new OWLLiteralImpl("" + b, "", getOWLDatatypeFactory().getBooleanDatatype());
}
@NonNull @Override public OWLLiteral getOWLLiteral(URI uri)
{
return new OWLLiteralImpl("" + uri, "", getOWLDatatypeFactory().getURIDatatype());
}
@NonNull @Override public OWLLiteral getOWLLiteral(@NonNull XSDDate date)
{
return new OWLLiteralImpl(date.getContent(), "", getOWLDatatypeFactory().getDateDatatype());
}
@NonNull @Override public OWLLiteral getOWLLiteral(@NonNull XSDTime time)
{
return new OWLLiteralImpl(time.getContent(), "", getOWLDatatypeFactory().getTimeDatatype());
}
@NonNull @Override public OWLLiteral getOWLLiteral(@NonNull XSDDateTime datetime)
{
return new OWLLiteralImpl(datetime.getContent(), "", getOWLDatatypeFactory().getDateTimeDatatype());
}
@NonNull @Override public OWLLiteral getOWLLiteral(@NonNull XSDDuration duration)
{
return new OWLLiteralImpl(duration.getContent(), "", getOWLDatatypeFactory().getDurationDatatype());
}
@NonNull @Override public OWLLiteral getOWLLiteral(@NonNull String literal, @NonNull OWLDatatype datatype)
{
validateOWLLiteral(literal, datatype);
return new OWLLiteralImpl(literal, "", datatype);
}
@NonNull @Override public OWLLiteral createLeastNarrowNumericOWLLiteral(double value,
@NonNull List<@NonNull OWLLiteral> inputLiterals)
{
if (isWidestNumericLiteralAByte(inputLiterals))
return getOWLLiteral((byte)value);
else if (isWidestNumericLiteralAShort(inputLiterals))
return getOWLLiteral((short)value);
else if (isWidestNumericLiteralAnInt(inputLiterals))
return getOWLLiteral((int)value);
else if (isWidestNumericLiteralALong(inputLiterals))
return getOWLLiteral((long)value);
else if (isWidestNumericLiteralAFloat(inputLiterals))
return getOWLLiteral((float)value);
else
return getOWLLiteral(value);
}
private boolean isWidestNumericLiteralAByte(@NonNull List<@NonNull OWLLiteral> literals)
{
for (OWLLiteral literal : literals)
if (isShort(literal) || isInt(literal) || isLong(literal) || isFloat(literal) || isDouble(literal))
return false;
return true;
}
private boolean isWidestNumericLiteralAShort(@NonNull List<@NonNull OWLLiteral> literals)
{
for (OWLLiteral literal : literals)
if (isInt(literal) || isLong(literal) || isFloat(literal) || isDouble(literal))
return false;
return true;
}
private boolean isWidestNumericLiteralAnInt(@NonNull List<@NonNull OWLLiteral> literals)
{
for (OWLLiteral literal : literals)
if (isLong(literal) || isFloat(literal) || isDouble(literal))
return false;
return true;
}
private boolean isWidestNumericLiteralALong(@NonNull List<@NonNull OWLLiteral> literals)
{
for (OWLLiteral literal : literals)
if (isFloat(literal) || isDouble(literal))
return false;
return true;
}
private boolean isWidestNumericLiteralAFloat(@NonNull List<@NonNull OWLLiteral> literals)
{
for (OWLLiteral literal : literals)
if (isDouble(literal))
return false;
return true;
}
private boolean isShort(@NonNull OWLLiteral literal)
{
return literal.getDatatype().getIRI().equals(XSDVocabulary.SHORT.getIRI());
}
private boolean isInt(@NonNull OWLLiteral literal)
{
return literal.getDatatype().getIRI().equals(XSDVocabulary.INT.getIRI());
}
private boolean isLong(@NonNull OWLLiteral literal)
{
return literal.getDatatype().getIRI().equals(XSDVocabulary.LONG.getIRI());
}
private boolean isFloat(@NonNull OWLLiteral literal)
{
return literal.getDatatype().isFloat();
}
private boolean isDouble(@NonNull OWLLiteral literal)
{
return literal.getDatatype().isDouble();
}
private void validateOWLLiteral(@NonNull String literal, @NonNull OWLDatatype datatype)
{
if (!OWLLiteralValidator.isValid(literal, datatype))
throw new RuntimeException("literal value '" + literal + "' is not a valid " + datatype.getIRI());
}
@NonNull private OWLDatatypeFactory getOWLDatatypeFactory()
{
return this.datatypeFactory;
}
}