package org.aksw.jena_sparql_api.lookup; import java.util.Map; import org.aksw.jena_sparql_api.concepts.Concept; import org.aksw.jena_sparql_api.utils.Vars; import com.google.common.base.Functions; import org.apache.jena.graph.Node; import org.apache.jena.sparql.expr.E_OneOf; import org.apache.jena.sparql.expr.Expr; import org.apache.jena.sparql.expr.ExprList; import org.apache.jena.sparql.expr.ExprVar; import org.apache.jena.sparql.expr.NodeValue; import org.apache.jena.sparql.syntax.Element; import org.apache.jena.sparql.syntax.ElementFilter; public class LookupServiceListService<V> implements LookupService<Node, V> { private ListService<Concept, Node, V> listService; public LookupServiceListService(ListService<Concept, Node, V> listService) { super(); this.listService = listService; } @Override public Map<Node, V> apply(Iterable<Node> nodes) { ExprList args = new ExprList(); for(Node node : nodes) { Expr expr = NodeValue.makeNode(node); args.add(expr); } Expr e = new E_OneOf(new ExprVar(Vars.s), args); Element filter = new ElementFilter(e); Concept concept = new Concept(filter, Vars.s); Map<Node, V> result = listService.fetchData(concept, null, null); return result; } public static <V> LookupServiceListService<V> create(ListService<Concept, Node, V> listService) { LookupServiceListService<V> result = new LookupServiceListService<>(listService); return result; } }