チェンジセット 45

差分発生行の前後
無視リスト:
更新日時:
2014/02/17 15:40:07 (11 年 前)
更新者:
atsuko
ログメッセージ:

searchPathsWithCut 追加

ファイル:
1 変更

凡例:

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

    r41 r45  
    1717    int limit; 
    1818    int th; 
     19    double cut; 
    1920         
    2021    public class LinkAndPath{ 
    2122        ClassLink classLink; 
    2223        List<ClassLink> path; 
     24        boolean converge; 
    2325        public LinkAndPath(ClassLink classLink, List<ClassLink> path){ 
    2426           this.classLink = classLink; 
    2527           this.path = path; 
     28           this.converge = false; 
     29        } 
     30         
     31        public LinkAndPath(ClassLink classLink, List<ClassLink> path, boolean converge){ 
     32           this.classLink = classLink; 
     33           this.path = path; 
     34           this.converge = converge; 
    2635        } 
    2736    } 
     
    3645        limit = 1000; 
    3746        th = 0; 
     47        cut = 2.0; 
    3848    } 
    3949     
     
    7383        return patharray; 
    7484    } 
    75      
    76     /* 
    77     private List<List<ClassLink>> searchPathsFromOWL(OWLQueryBuilderImpl qb){ 
    78         return searchPathsEngine(qb, 0); 
    79     } 
    80      
    81     private List<List<ClassLink>> searchPathsFromInstances(OWLQueryBuilderImpl qb){ 
    82         return searchPathsEngine(qb, 1); 
    83     } 
    84     */ 
    85      
     85         
    8686    private List<List<ClassLink>> searchPaths(OWLQueryBuilderImpl qb, int mode, boolean countLinks){ 
    8787        List<List<ClassLink>> paths = new ArrayList<>(); 
     
    122122        return paths;   
    123123    } 
     124     
     125    private List<List<ClassLink>> searchPathsWithCut(OWLQueryBuilderImpl qb){ 
     126        List<List<ClassLink>> paths = new ArrayList<>(); 
     127        ClassLink crrLink = new ClassLink(null,startClass,Direction.both,0); 
     128        List<LinkAndPath> lp = new LinkedList<>(); 
     129        lp.add(new LinkAndPath(crrLink, new LinkedList<ClassLink>())); 
     130        try{ 
     131          for ( int i = 0; i < nsteps; i++ ){ 
     132              ListIterator<LinkAndPath> lit = lp.listIterator(); 
     133              List<LinkAndPath> nextlp = new LinkedList<>(); 
     134              while ( lit.hasNext() ){ 
     135                  LinkAndPath crrlp = lit.next(); 
     136                  ClassLink[] classLinks = null; 
     137                  classLinks = qb.getNextClassViaInstanceLink(null, crrlp.classLink.getLinkedClassURI(), limit);  
     138                  for ( int j = 0 ; j < classLinks.length; j++ ){ 
     139                      List<ClassLink> crrpath = new LinkedList<>(crrlp.path); 
     140                      crrpath.add(classLinks[j]); 
     141                      if ( classLinks[j].getLinkedClassURI().equals(endClass) ){ 
     142                          paths.add(new LinkedList<>(crrpath)); 
     143                          continue; 
     144                      } 
     145                      boolean con = false; 
     146                      double cont = 1.0; 
     147                      if ( cont > th ){ // shrink 
     148                          con = true; 
     149                      } 
     150                      if ( crrlp.converge == true && con == false ){ // converge & 縲€diverge 
     151                          continue; // cut 
     152                      } 
     153                      nextlp.add(new LinkAndPath(classLinks[j], crrpath, con)); 
     154                  } 
     155              } 
     156              lp = nextlp; 
     157          } 
     158        }catch(Exception e){  
     159            System.err.println(e); 
     160        } 
     161        return paths;   
     162    } 
     163 
    124164}