package org.aksw.jena_sparql_api.batch.functions;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import org.aksw.commons.util.Pair;
import com.google.common.base.Function;
import org.apache.jena.graph.Graph;
import org.apache.jena.graph.Node;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.ModelFactory;
import org.apache.jena.rdf.model.RDFNode;
import org.apache.jena.rdf.model.Resource;
import org.apache.jena.sparql.util.ModelUtils;
public class F_ToModel
implements Function<Entry<Node, Graph>, Entry<Resource, Model>>
{
@Override
public Entry<Resource, Model> apply(Entry<Node, Graph> input) {
Node n = input.getKey();
Graph g = input.getValue();
Model m = ModelFactory.createModelForGraph(g);
RDFNode tmp = ModelUtils.convertGraphNodeToRDFNode(n, m);
Resource r = (Resource)tmp;
Entry<Resource, Model> result = Pair.create(r, m);
return result;
}
public static final F_ToModel fn = new F_ToModel();
public static <IK, IV, OK, OV> Map<OK, OV> transform(Map<IK, IV> map, Function<Entry<IK, IV>, Entry<OK, OV>> fn) {
Map<OK, OV> result = new HashMap<OK, OV>();
transform(result, map, fn);
return result;
}
public static <IK, IV, OK, OV> Map<OK, OV> transform(Map<OK, OV> result, Map<IK, IV> map, Function<Entry<IK, IV>, Entry<OK, OV>> fn) {
for(Entry<IK, IV> entry : map.entrySet()) {
Entry<OK, OV> e = fn.apply(entry);
result.put(e.getKey(), e.getValue());
}
return result;
}
}