チェンジセット 67

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

様々な枝刈り手法を入れたSearchPathsWithCutを実装(getPaths の mode=2 で起動)

ファイル:
1 変更

凡例:

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

    r53 r67  
    99 * @author atsuko 
    1010 */ 
    11 import java.util.*; 
     11import java.util.ArrayList; 
     12import java.util.LinkedList; 
     13import java.util.List; 
     14import java.util.ListIterator; 
    1215 
    1316public class OWLClassGraph extends LabeledMultiDigraph{ 
     
    2124         
    2225    public class LinkAndPath{ 
     26        String originalClassURI; // originalClasssURI -classLink.propertyURI-> classLink.linkedClassURL 
    2327        ClassLink classLink; 
    2428        List<ClassLink> path; 
    2529        boolean converge; 
     30         
    2631        public LinkAndPath(ClassLink classLink, List<ClassLink> path){ 
    2732           this.classLink = classLink; 
     
    3035        } 
    3136         
    32         public LinkAndPath(ClassLink classLink, List<ClassLink> path, boolean converge){ 
     37        public LinkAndPath(ClassLink classLink, List<ClassLink> path, String orinalClassURI, boolean converge){ 
    3338           this.classLink = classLink; 
    3439           this.path = path; 
     40           this.originalClassURI = originalClassURI; 
    3541           this.converge = converge; 
    3642        } 
     
    5056    } 
    5157     
     58    /* 
    5259    public void generateGraph(List<List<ClassLink>> paths){ 
    5360        ListIterator<List<ClassLink>> pit = paths.listIterator(); 
     
    6168        } 
    6269    } 
     70   */ 
    6371     
    6472    public Path[] getPaths(OWLQueryBuilderImpl qb, int mode, boolean countLink){ 
     
    6775            paths = searchPaths(qb, mode, countLink); 
    6876        }else if ( mode == 2 ){ 
    69             paths = searchPathsWithCut(qb);             
     77            paths = searchPathsWithCut(qb);         
    7078        }else{ 
    7179            System.err.println("Mode is not correct"); 
     
    154162                          continue; 
    155163                      } 
     164                      if (classLinks[j].getNumOfLinks() <= th ){ 
     165                          continue; //cut by the number of instances 
     166                      } 
     167                      // Divergence & Convergence Decision 
    156168                      boolean con = false; 
    157169                      boolean div = false; 
     
    163175                      } 
    164176                      if ( crrlp.converge == true && div == true ){ // converge & 縲€diverge 
    165                           continue; // cut 
    166                       } 
    167                       nextlp.add(new LinkAndPath(classLinks[j], crrpath, con)); 
     177                          continue; // cut by the differences of entropies 
     178                      } 
     179                      // crr & next are the same arcs 
     180                      if ( crrlp.classLink.getPropertyURI().equals(classLinks[j].getPropertyURI()) && 
     181                           crrlp.classLink.getDirection() != classLinks[j].getDirection() && 
     182                           crrlp.originalClassURI.equals( classLinks[j].getLinkedClassURI()) ){ 
     183                          continue; 
     184                      } 
     185                       
     186                      nextlp.add(new LinkAndPath(classLinks[j], crrpath, crrlp.classLink.getLinkedClassURI(), con)); 
    168187                  } 
    169188              }