package esl.cuenet.query; import com.hp.hpl.jena.ontology.Individual; import com.hp.hpl.jena.ontology.OntClass; import com.hp.hpl.jena.ontology.OntModel; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class ResultIterator implements IResultIterator { private OntModel model = null; public ResultIterator(OntModel model) { this.model = model; } private int pointer = 0; private List<List<Individual>> results = new ArrayList<List<Individual>>(); public void add(List<Individual> result) { results.add(result); } @Override public boolean hasNext() { return (pointer < results.size()); } @Override public Map<String, List<Individual>> next(List<String> projectVarTypes) { List<Individual> allResults = results.get(pointer); Map<String, List<Individual>> resultMap = new HashMap<String, List<Individual>>(); for (String projectVarType: projectVarTypes) resultMap.put(projectVarType, new ArrayList<Individual>()); for (Individual result: allResults) { OntClass ontClass = result.getOntClass(); for (String projectVarURI: projectVarTypes) { if (ontClass.getURI().equals(projectVarURI) || ontClass.hasSuperClass(model.getOntClass(projectVarURI))) { resultMap.get(projectVarURI).add(result); } } } pointer++; return resultMap; } }