
org.aksw.jena_sparql_api.utils.NodeUtils Maven / Gradle / Ivy
package org.aksw.jena_sparql_api.utils;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import com.google.common.collect.Iterables;
import org.apache.jena.datatypes.RDFDatatype;
import org.apache.jena.datatypes.TypeMapper;
import org.apache.jena.graph.Node;
import org.apache.jena.graph.NodeFactory;
import org.apache.jena.sparql.core.Var;
public class NodeUtils {
public static Node asNullableNode(String uri) {
Node result = uri == null ? null : NodeFactory.createURI(uri);
return result;
}
public static List fromUris(Iterable uris) {
List result = new ArrayList(Iterables.size(uris));
for(String uri : uris) {
Node node = NodeFactory.createURI(uri);
result.add(node);
}
return result;
}
public static Node createTypedLiteral(TypeMapper typeMapper, Object o) {
Class> clazz = o.getClass();
RDFDatatype dtype = typeMapper.getTypeByClass(clazz);
String lex = dtype.unparse(o);
Node result = NodeFactory.createLiteral(lex, dtype);
return result;
}
public static Set getBnodesMentioned(Iterable nodes) {
Set result = new HashSet();
for (Node node : nodes) {
if (node.isBlank()) {
result.add(node);
}
}
return result;
}
public static Set getVarsMentioned(Iterable nodes)
{
Set result = new HashSet();
for (Node node : nodes) {
if (node.isVariable()) {
result.add((Var)node);
}
}
return result;
}
public static String toNTriplesString(Node node) {
String result;
if(node.isURI()) {
result = "<" + node.getURI() + ">";
}
else if(node.isLiteral()) {
String lex = node.getLiteralLexicalForm();
String lang = node.getLiteralLanguage();
String dt = node.getLiteralDatatypeURI();
String tmp = lex;
// \\ \" \n \t \r
tmp = tmp.replace("\\", "\\\\");
tmp = tmp.replace("\"", "\\\"");
tmp = tmp.replace("\n", "\\n");
tmp = tmp.replace("\t", "\\t");
tmp = tmp.replace("\r", "\\r");
String encoded = tmp;
// If fields contain new lines, escape them with triple quotes
// String quote = encoded.contains("\n")
// ? "\"\"\""
// : "\"";
String quote = "\"";
result = quote + encoded + quote;
if(dt != null && !dt.isEmpty()) {
result = result + "^^<" + dt+ ">";
} else {
if(!lang.isEmpty()) {
result = result + "@" + lang;
}
}
}
else if(node.isBlank()) {
result = node.getBlankNodeLabel();
} else if(node.isVariable()) {
result = "?" + ((Var)node).getVarName();
} else {
throw new RuntimeException("Cannot serialize [" + node + "] as N-Triples");
}
return result;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy