in commons-rdf-rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/RDF4J.java [539:571]
public Value asValue(final RDFTerm term) {
if (term == null) {
return null;
}
if (term instanceof RDF4JTerm) {
// One of our own - avoid converting again.
// (This is crucial to avoid double-escaping in BlankNode)
return ((RDF4JTerm) term).asValue();
}
if (term instanceof org.apache.commons.rdf.api.IRI) {
final org.apache.commons.rdf.api.IRI iri = (org.apache.commons.rdf.api.IRI) term;
return getValueFactory().createIRI(iri.getIRIString());
}
if (term instanceof org.apache.commons.rdf.api.Literal) {
final org.apache.commons.rdf.api.Literal literal = (org.apache.commons.rdf.api.Literal) term;
final String label = literal.getLexicalForm();
if (literal.getLanguageTag().isPresent()) {
final String lang = literal.getLanguageTag().get();
return getValueFactory().createLiteral(label, lang);
}
final org.eclipse.rdf4j.model.IRI dataType = (org.eclipse.rdf4j.model.IRI) asValue(literal.getDatatype());
return getValueFactory().createLiteral(label, dataType);
}
if (term instanceof BlankNode) {
// This is where it gets tricky to support round trips!
final BlankNode blankNode = (BlankNode) term;
// FIXME: The uniqueReference might not be a valid BlankNode
// identifier.
// does it have to be in RDF4J?
return getValueFactory().createBNode(blankNode.uniqueReference());
}
throw new IllegalArgumentException("RDFTerm was not an IRI, Literal or BlankNode: " + term.getClass());
}