|  | 66 | System.out.println("CLS"); | 
                          |  | 67 | ClassLink[] cls = builder.getNextClass(null, clz[1].getClassURI(), 100, | 
                          |  | 68 | false); | 
                          |  | 69 | if (cls != null) { | 
                          |  | 70 | for (ClassLink cl : cls) { | 
                          |  | 71 | System.out.println(cl.toString()); | 
                          |  | 72 | } | 
                          |  | 73 | cls = builder.countLinks(null, clz[1].getClassURI(), cls); | 
                          |  | 74 | for (ClassLink cl : cls) { | 
                          |  | 75 | System.out.println(cl.toString()); | 
                          |  | 76 | } | 
                          |  | 77 | } | 
                          |  | 78 |  | 
                          |  | 79 |  | 
            
                  
                          |  | 651 | public ClassLink[] countLinks(String[] graphURIs, String startClassURI, | 
                          |  | 652 | ClassLink[] classLinks) throws Exception { | 
                          |  | 653 | if (classLinks == null || classLinks.length == 0) { | 
                          |  | 654 | return new ClassLink[0]; | 
                          |  | 655 | } | 
                          |  | 656 | for (ClassLink classLink : classLinks) { | 
                          |  | 657 | StringBuffer queryStr = new StringBuffer(); | 
                          |  | 658 | queryStr.append("PREFIX owl: <http://www.w3.org/2002/07/owl#>\n"); | 
                          |  | 659 | queryStr.append("PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n"); | 
                          |  | 660 | queryStr.append("PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n"); | 
                          |  | 661 |  | 
                          |  | 662 | queryStr.append("SELECT (COUNT(?os) AS ?numOfLinks) \n"); | 
                          |  | 663 | if (graphURIs != null) { | 
                          |  | 664 | for (String graphURI : graphURIs) { | 
                          |  | 665 | queryStr.append("FROM <"); | 
                          |  | 666 | queryStr.append(graphURI); | 
                          |  | 667 | queryStr.append(">\n"); | 
                          |  | 668 | } | 
                          |  | 669 | } | 
                          |  | 670 |  | 
                          |  | 671 | queryStr.append("WHERE{\n"); | 
                          |  | 672 | if (classLink.getDirection() == Direction.forward) { | 
                          |  | 673 | queryStr.append("?is rdf:type  <"); | 
                          |  | 674 | queryStr.append(startClassURI); | 
                          |  | 675 | queryStr.append(">.\n"); | 
                          |  | 676 | queryStr.append("?os rdf:type  <"); | 
                          |  | 677 | queryStr.append(classLink.getLinkedClassURI()); | 
                          |  | 678 | queryStr.append(">.\n"); | 
                          |  | 679 | queryStr.append("?is ?p ?os.\n"); | 
                          |  | 680 | queryStr.append("}"); | 
                          |  | 681 | } else { | 
                          |  | 682 | if (classLink.getDirection() == Direction.forward) { | 
                          |  | 683 | queryStr.append("?os rdf:type  <"); | 
                          |  | 684 | queryStr.append(startClassURI); | 
                          |  | 685 | queryStr.append(">.\n"); | 
                          |  | 686 | queryStr.append("?is rdf:type  <"); | 
                          |  | 687 | queryStr.append(classLink.getLinkedClassURI()); | 
                          |  | 688 | queryStr.append(">.\n"); | 
                          |  | 689 | queryStr.append("?is ?p ?os.\n"); | 
                          |  | 690 | queryStr.append("}"); | 
                          |  | 691 | } else { | 
                          |  | 692 | queryStr.append("?os rdf:type  <"); | 
                          |  | 693 | queryStr.append(startClassURI); | 
                          |  | 694 | queryStr.append(">.\n"); | 
                          |  | 695 | queryStr.append("?is rdf:type  <"); | 
                          |  | 696 | queryStr.append(classLink.getLinkedClassURI()); | 
                          |  | 697 | queryStr.append(">.\n"); | 
                          |  | 698 | queryStr.append("{?is ?p ?os.}\n"); | 
                          |  | 699 | queryStr.append("UNION\n"); | 
                          |  | 700 | queryStr.append("{?os ?p ?is.}\n"); | 
                          |  | 701 | queryStr.append("}"); | 
                          |  | 702 | } | 
                          |  | 703 | } | 
                          |  | 704 | System.out.println(queryStr.toString()); | 
                          |  | 705 |  | 
                          |  | 706 | Query query = QueryFactory.create(queryStr.toString()); | 
                          |  | 707 | QueryExecution qexec = QueryExecutionFactory.sparqlService( | 
                          |  | 708 | endpointURI, query); | 
                          |  | 709 |  | 
                          |  | 710 | ResultSet results = qexec.execSelect(); | 
                          |  | 711 | if (results.hasNext()) { | 
                          |  | 712 | QuerySolution sol = results.next(); | 
                          |  | 713 | Literal lit = sol.getLiteral("numOfLinks"); | 
                          |  | 714 | if (lit != null) { | 
                          |  | 715 | int numOfLinks = lit.getInt(); | 
                          |  | 716 | classLink.setNumOfLinks(numOfLinks); | 
                          |  | 717 | } | 
                          |  | 718 | } | 
                          |  | 719 | qexec.close(); | 
                          |  | 720 | } | 
                          |  | 721 | return classLinks; | 
                          |  | 722 | } | 
                          |  | 723 |  |