NIHVIVO-3712 removed OntClass conversions from smarterListHierarchyRootClasses

This commit is contained in:
brianjlowe 2012-06-15 15:04:00 +00:00
parent 909c2adeee
commit e0b8d9fa08

View file

@ -40,6 +40,7 @@ import com.hp.hpl.jena.rdf.model.Literal;
import com.hp.hpl.jena.rdf.model.Model; import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.Property; import com.hp.hpl.jena.rdf.model.Property;
import com.hp.hpl.jena.rdf.model.RDFNode; import com.hp.hpl.jena.rdf.model.RDFNode;
import com.hp.hpl.jena.rdf.model.ResIterator;
import com.hp.hpl.jena.rdf.model.Resource; import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.rdf.model.ResourceFactory; import com.hp.hpl.jena.rdf.model.ResourceFactory;
import com.hp.hpl.jena.rdf.model.Statement; import com.hp.hpl.jena.rdf.model.Statement;
@ -488,37 +489,35 @@ public class VClassDaoJena extends JenaBaseDao implements VClassDao {
*/ */
private Iterator<OntClass> smarterListHierarchyRootClasses(OntModel ontModel, String ontologyURI) { private Iterator<OntClass> smarterListHierarchyRootClasses(OntModel ontModel, String ontologyURI) {
List<OntClass> rootClassList = new ArrayList<OntClass>(); List<OntClass> rootClassList = new ArrayList<OntClass>();
ClosableIterator<Individual> ci = ontModel.listIndividuals(OWL.Class); ResIterator ci = ontModel.listResourcesWithProperty(RDF.type, OWL.Class);
try { try {
for (ClosableIterator<Individual> i = ci ; i.hasNext(); ) { for (ResIterator i = ci ; i.hasNext(); ) {
try { try {
Individual classInd = i.next(); Resource ontClass = i.nextResource();
// if (!classInd.canAs(OntClass.class)) {
// continue;
// }
OntClass ontClass = (OntClass) classInd.as(OntClass.class);
boolean isRoot = true; boolean isRoot = true;
for (Iterator<RDFNode> j = ontClass.listPropertyValues(RDFS.subClassOf); j.hasNext(); ) { for (StmtIterator j = ontClass.listProperties(RDFS.subClassOf); j.hasNext(); ) {
Resource res = (Resource) j.next(); Statement stmt = j.nextStatement();
if (res.canAs(OntClass.class)) { if (!stmt.getObject().isResource()) {
OntClass superClass = (OntClass) res.as(OntClass.class); continue;
if (!superClass.isAnon() && }
((ontologyURI==null) || (ontologyURI.equals(superClass.getNameSpace()))) && Resource superClass = (Resource) stmt.getObject();
!OWL.Thing.equals(superClass) && if (!superClass.isAnon() &&
!superClass.equals(ontClass) && ((ontologyURI==null) || (ontologyURI.equals(superClass.getNameSpace()))) &&
!( ontModel.contains(ontClass,OWL.equivalentClass,superClass) || !OWL.Thing.equals(superClass) &&
ontModel.contains(superClass,OWL.equivalentClass,ontClass) ) ) { !superClass.equals(ontClass) &&
if ( (superClass.getNameSpace() != null) !( ontModel.contains(ontClass,OWL.equivalentClass,superClass) ||
&& (!(NONUSER_NAMESPACES.contains( ontModel.contains(superClass,OWL.equivalentClass,ontClass) ) ) {
superClass.getNameSpace()))) ) { if ( (superClass.getNameSpace() != null)
isRoot=false; && (!(NONUSER_NAMESPACES.contains(
break; superClass.getNameSpace()))) ) {
} isRoot=false;
break;
} }
} }
} }
if (isRoot) { if (isRoot && ontClass.canAs(OntClass.class)) {
rootClassList.add(ontClass); rootClassList.add(ontClass.as(OntClass.class));
} }
} catch (ClassCastException cce) { } catch (ClassCastException cce) {
log.error(cce, cce); log.error(cce, cce);