package au.com.langdale.kena;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class LocalNameIndex extends SearchIndex {
private Set spaces = new HashSet();
/**
* Index resources
* @param model: the model containing the resources
*/
@Override
public void scan(OntModel model) {
ResIterator it = model.listSubjects();
while(it.hasNext()) {
OntResource res = it.nextResource();
if( res.isURIResource() ) {
addWord(res.getLocalName());
spaces.add(res.getNameSpace());
}
}
}
/**
* Find resources by local name.
* @param name: the local name
* @param model: the model containing the resources
* @return a set of <code>Resource</code>
*/
@Override
public Set locate(String name, OntModel model) {
Set result = Collections.EMPTY_SET;
for (Iterator it = spaces.iterator(); it.hasNext();) {
String space = (String) it.next();
OntResource res = model.createResource(space + name);
if(res.hasRDFType()) {
if( result.size() == 0)
result = Collections.singleton(res);
else {
if( result.size() == 1)
result = new HashSet(result);
result.add(res);
}
}
}
return result;
}
}