差分発生行の前後
無視リスト:
更新日時:
2014/01/30 15:15:33 (11 年 前)
更新者:
nori
ログメッセージ:

getNextClassでcountLinksパラメータを追加した

ファイル:
1 変更

凡例:

変更なし
追加
削除
  • BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/OWLQueryBuilderImpl.java

    r19 r20  
    6161 
    6262                System.out.println("CLS"); 
    63                 ClassLink[] cls = builder.getNextClass(null, clz[0].getClassURI(), 0); 
     63                ClassLink[] cls = builder.getNextClass(null, clz[0].getClassURI(), 0, false); 
    6464                if( cls != null ){ 
    6565                        for( ClassLink cl: cls){ 
     
    272272         */ 
    273273        public ClassLink[] getNextClass(String[] graphURIs, String originClass, 
    274                         int limit) throws Exception { 
     274                        int limit, boolean countLinks) throws Exception { 
    275275                StringBuffer queryStr = new StringBuffer(); 
    276276                queryStr.append("PREFIX owl: <http://www.w3.org/2002/07/owl#>\n"); 
    277277                queryStr.append("PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n"); 
    278278                queryStr.append("PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n"); 
    279 //              queryStr.append("SELECT DISTINCT ?p ?pDirection ?c (COUNT(?s) AS ?numOfLinks) \n"); 
    280                 queryStr.append("SELECT DISTINCT ?p ?pDirection ?c \n"); 
     279 
     280                // SELECT 
     281                if( countLinks ){ 
     282                                queryStr.append("SELECT DISTINCT ?p ?pDirection ?c (COUNT(?s) AS ?numOfLinks) \n"); 
     283                } 
     284                else{ 
     285                        queryStr.append("SELECT DISTINCT ?p ?pDirection ?c \n"); 
     286                } 
     287                 
    281288                if (graphURIs != null) { 
    282289                        for (String graphURI : graphURIs) { 
     
    291298                queryStr.append(originClass); 
    292299                queryStr.append(">.\n    ?p rdfs:range ?c.\n"); 
    293 //              queryStr.append("    ?o ?p ?s."); 
     300 
     301                if( countLinks ){ 
     302                                queryStr.append("    ?o ?p ?s."); 
     303                } 
     304                 
    294305                queryStr.append("}\n  UNION\n"); 
    295306                queryStr.append("  { ?p rdfs:range <"); 
     
    297308                queryStr.append(">.\n"); 
    298309                queryStr.append("    ?p rdfs:domain ?c.\n"); 
    299 //              queryStr.append("    ?s ?p ?o."); 
     310 
     311                if( countLinks ){ 
     312                                queryStr.append("    ?s ?p ?o."); 
     313                } 
     314                 
    300315                queryStr.append("}\n"); 
    301316 
     
    304319                 
    305320                queryStr.append("  ?s rdf:type ?c.\n"); 
    306 //              queryStr.append("  ?o rdf:type <"); 
    307 //              queryStr.append(originClass); 
    308 //              queryStr.append(">.\n"); 
    309                 queryStr.append("}\n"); 
    310 //              queryStr.append("GROUP BY ?p ?pDirection ?c\n"); 
     321 
     322                if( countLinks){ 
     323                        queryStr.append("  ?o rdf:type <"); 
     324                        queryStr.append(originClass); 
     325                        queryStr.append(">.\n"); 
     326                        queryStr.append("}\nGROUP BY ?p ?pDirection ?c\n"); 
     327                } 
     328                else{ 
     329                        queryStr.append("}\n"); 
     330                } 
    311331                if (limit > 0) { 
    312332                        queryStr.append("limit "); 
     
    602622                ResultSet results = qexec.execSelect(); 
    603623                HashMap<String, LabelMap> lMap = new HashMap<String, LabelMap>(); 
    604                 HashMap<String, InstanceLink> insLinkMap = new HashMap<String, InstanceLink>(); 
    605624                for (; results.hasNext();) { 
    606625                        QuerySolution sol = results.next(); 
     
    623642                } 
    624643                return lMap.values().toArray(new LabelMap[0]); 
    625                  
    626                  
    627644        } 
    628645