1
2
3
4
5
6 package org.openrdf.repository.augur.helpers;
7
8 import info.aduna.iteration.ConvertingIteration;
9 import info.aduna.iteration.Iteration;
10
11 import org.openrdf.model.BNode;
12 import org.openrdf.model.URI;
13 import org.openrdf.model.Value;
14 import org.openrdf.query.Binding;
15 import org.openrdf.query.BindingSet;
16 import org.openrdf.query.impl.BindingImpl;
17 import org.openrdf.query.impl.MapBindingSet;
18 import org.openrdf.repository.augur.model.ABNode;
19 import org.openrdf.repository.augur.model.AURI;
20 import org.openrdf.repository.augur.model.AugurNode;
21
22
23
24
25
26
27 public class ASolutionIterator<X extends Exception> extends ConvertingIteration<BindingSet, BindingSet, X> {
28
29 private AugurNode node;
30
31 public ASolutionIterator(Iteration<? extends BindingSet, X> iter, AugurNode node) {
32 super(iter);
33 this.node = node;
34 }
35
36 @Override
37 protected BindingSet convert(BindingSet bindingSet)
38 {
39 MapBindingSet result = new MapBindingSet(bindingSet.size());
40 for (Binding binding : bindingSet) {
41 String name = binding.getName();
42 Value value = binding.getValue();
43 if (value instanceof URI) {
44 value = new AURI(name, (URI)value, node);
45 }
46 else if (value instanceof BNode) {
47 value = new ABNode(name, (BNode)value, node);
48 }
49 binding = new BindingImpl(name, value);
50 result.addBinding(binding);
51 }
52 return result;
53 }
54 }