package org.aksw.jena_sparql_api.utils;
import java.util.Map;
import org.apache.jena.graph.Node;
import org.apache.jena.sparql.graph.NodeTransform;
public class NodeTransformSignaturize
implements NodeTransform
{
protected NodeTransform baseTransform;
protected Node placeholder;
public NodeTransformSignaturize() {
this((node) -> null);
}
public NodeTransformSignaturize(NodeTransform baseTransform) {
this(baseTransform, Vars.signaturePlaceholder);
}
public NodeTransformSignaturize(NodeTransform baseTransform,
Node placeholder) {
super();
this.baseTransform = baseTransform;
this.placeholder = placeholder;
}
//public static NodeTransform createSignaturizeTransform(Expr expr, Map<? extends Node, ? extends Node> nodeMap) {
@Override
public Node apply(Node node) {
Node remap = baseTransform.apply(node);
Node result = remap == null// || remap == node
? (node.isVariable() ? placeholder : node)
: remap
;
return result;
}
public static NodeTransform create(Map<? extends Node, ? extends Node> nodeMap) {
NodeTransform baseTransform = (node) -> nodeMap.get(node);//new NodeTransformRenameMap(nodeMap);
NodeTransform result = new NodeTransformSignaturize(baseTransform);
return result;
}
}