public Iterator subclasses()

in core/src/main/java/org/apache/sdap/mudrod/ontology/process/LocalOntology.java [187:222]


  public Iterator<String> subclasses(String entitySearchTerm) {
    Map<OntResource, String> classMap = retrieve(entitySearchTerm);
    Map<String, String> subclasses = new HashMap<>();

    for (OntResource resource : classMap.keySet()) {
      if (resource instanceof OntClass) {
        //get subclasses N.B. we only get direct sub-classes e.g. direct children
        //it is possible for us to navigate the entire class tree if we wish, we simply
        //need to pass the .listSubClasses(true) boolean parameter.
        for (Iterator<?> i = ((OntClass) resource).listSubClasses(); i.hasNext();) {
          OntResource subclass = (OntResource) i.next();
          for (Iterator<?> j = subclass.listLabels(null); j.hasNext();) {
            Literal l = (Literal) j.next();
            subclasses.put(l.toString(), "1");
          }
        }
        //get individuals
        for (Iterator<?> i = ((OntClass) resource).listInstances(); i.hasNext(); ) {
          OntResource subclass = (OntResource) i.next();
          for (Iterator<?> j = subclass.listLabels(null); j.hasNext();) {
            Literal l = (Literal) j.next();
            subclasses.put(l.toString(), "1");
          }
        }
      } else if (resource instanceof Individual) {
        for (Iterator<?> i = resource.listSameAs(); i.hasNext();) {
          OntResource subclass = (OntResource) i.next();
          for (Iterator<?> j = subclass.listLabels(null); j.hasNext();) {
            Literal l = (Literal) j.next();
            subclasses.put(l.toString(), "1");
          }
        }
      }
    }
    return subclasses.keySet().iterator();
  }