All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.aksw.jena_sparql_api.utils.BindingUtils Maven / Gradle / Ivy

There is a newer version: 3.17.0-1
Show newest version
package org.aksw.jena_sparql_api.utils;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.jena.graph.Node;
import org.apache.jena.sparql.core.Var;
import org.apache.jena.sparql.engine.binding.Binding;
import org.apache.jena.sparql.engine.binding.BindingHashMap;
import org.apache.jena.sparql.expr.NodeValue;
import org.apache.jena.sparql.graph.NodeTransform;

public class BindingUtils {

//    public static Binding clone(Binding binding) {
//        Binding result = new BindingHashMap();
//    }

    public static Binding transformKeys(Binding binding, NodeTransform transform) {
        Iterator it = binding.vars();

        BindingHashMap result = new BindingHashMap();
        while(it.hasNext()) {
            Var o = it.next();
            Node node = binding.get(o);

            Var n = (Var)transform.apply(o);

            result.add(n, node);
        }

        return result;
    }

    public static Map toMap(Binding binding) {
        Map result = new HashMap();
        Iterator it = binding.vars();
        while(it.hasNext()) {
            Var v = it.next();
            Node n = binding.get(v);
            result.put(v, n);
        }

        return result;
    }

    public static List addRowIds(Collection bindings, Var rowId) {
        List result = new ArrayList(bindings.size());
        long i = 0;
        for(Binding parent : bindings) {
            BindingHashMap b = new BindingHashMap(parent);
            Node node = NodeValue.makeInteger(i).asNode();
            b.add(rowId, node);
            ++i;
        }

        return result;
    }

    public static Binding rename(Binding binding, Map varMap) {
        BindingHashMap result = new BindingHashMap();

        Iterator itVars = binding.vars();
        while(itVars.hasNext()) {
            Var sourceVar = itVars.next();

            Node node = binding.get(sourceVar);

            Var targetVar = varMap.get(sourceVar);
            if(targetVar == null) {
                targetVar = sourceVar;
            }

            result.add(targetVar, node);
        }

        return result;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy