package net.enilink.komma.internal.rdf4j; import org.eclipse.rdf4j.model.Literal; import net.enilink.komma.core.ILiteral; import net.enilink.komma.core.Literals; import net.enilink.komma.core.URI; import net.enilink.komma.core.URIs; public class RDF4JLiteral implements ILiteral { protected URI datatype; protected Literal literal; public RDF4JLiteral(Literal literal) { this.literal = literal; } @Override public URI getDatatype() { if (datatype == null) { if (literal.getDatatype() != null) { datatype = URIs.createURI(literal.getDatatype().toString()); } else { datatype = literal.getLanguage() == null ? net.enilink.komma.core.Literal.TYPE_STRING : net.enilink.komma.core.Literal.TYPE_LANGSTRING; } } return datatype; } @Override public String getLabel() { return literal.getLabel(); } @Override public String getLanguage() { return literal.getLanguage().orElse(null); } public Literal getRDF4JLiteral() { return literal; } @Override public boolean equals(Object obj) { return Literals.equals(this, obj); } @Override public int hashCode() { return Literals.hashCode(this); } @Override public String toString() { return Literals.toString(this); } }