| | 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 | |