private static void addIntersections(Model result, Model schema, Statement s) {
   Resource type = s.getSubject();
   List<RDFNode> types = asJavaList(AssemblerHelp.getResource(s));
   Set<Resource> candidates = subjectSet(result, ANY, RDF.type, types.get(0));
   for (int i = 1; i < types.size(); i += 1)
     removeElementsWithoutType(candidates, (Resource) types.get(i));
   addTypeToAll(type, candidates);
 }
 protected static void addSupertypes(Model result) {
   Model temp = ModelFactory.createDefaultModel();
   for (StmtIterator it = result.listStatements(ANY, RDF.type, ANY); it.hasNext(); ) {
     Statement s = it.nextStatement();
     Resource c = AssemblerHelp.getResource(s);
     for (StmtIterator subclasses = result.listStatements(c, RDFS.subClassOf, ANY);
         subclasses.hasNext(); ) {
       RDFNode type = subclasses.nextStatement().getObject();
       // System.err.println( ">> adding super type: subject " + s.getSubject() + ", type " + type
       // );
       temp.add(s.getSubject(), RDF.type, type);
     }
   }
   result.add(temp);
 }