root/BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/OWLClassGraph.java @ 32

リビジョン 32, 4.2 KB (コミッタ: atsuko, 11 年 前)

getPath の引数変更

  • 属性 svn:mime-type の設定値 text/plain
Rev行番号 
[2]1/*
2 * To change this template, choose Tools | Templates
3 * and open the template in the editor.
4 */
5package org.biohackathon.SPARQLBuilder.OWL;
6
7/**
8 *
9 * @author atsuko
10 */
11import java.util.*;
12
13public class OWLClassGraph extends LabeledMultiDigraph{
14    String startClass;
15    String endClass;
16    int nsteps;
17    int limit;
18       
19    public class LinkAndPath{
20        ClassLink classLink;
21        List<ClassLink> path;
22        public LinkAndPath(ClassLink classLink, List<ClassLink> path){
23           this.classLink = classLink;
24           this.path = path;
25        }
26    }
27   
[3]28    public OWLClassGraph(String startClass, String endClass){
[2]29        super();
[3]30        this.startClass = startClass;
31        addNode(startClass);
32        this.endClass = endClass;
33        addNode(endClass);
34        nsteps = 2;
35        limit = 1000;
[2]36    }
37   
[3]38    public void generateGraph(List<List<ClassLink>> paths){
[15]39        ListIterator<List<ClassLink>> pit = paths.listIterator();
40        while( pit.hasNext() ){
[21]41            List<ClassLink> cls = pit.next();
42            String start = startClass;
43            ListIterator<ClassLink> cit = cls.listIterator();
44            while ( cit.hasNext() ){
45                // KOKO
46            }
[15]47        }
[2]48    }
49   
[29]50    public Path[] getPaths(OWLQueryBuilderImpl qb, int mode, boolean countLink){
51        List<List<ClassLink>> paths = searchPaths(qb, mode, countLink);
[2]52        Path[] patharray = new Path[paths.size()];
53        ListIterator<List<ClassLink>> pit = paths.listIterator();
54        int i = 0;
55        while ( pit.hasNext() ){
[3]56            patharray[i] = new Path();
[2]57            patharray[i].setStartClass(startClass);
58            List<ClassLink> path = pit.next();
59            patharray[i].setClassLinks(path);
[8]60            ListIterator<ClassLink> cit = path.listIterator();
61            int min = Integer.MAX_VALUE;
62            while ( cit.hasNext() ){
63                ClassLink cl = cit.next();
64                if ( cl.getNumOfLinks() < min ){
65                    min = cl.getNumOfLinks();
66                }
67            }
68            patharray[i].setWidth(min);
[2]69            i++;
70        }
71        return patharray;
72    }
73   
[15]74    /*
[2]75    private List<List<ClassLink>> searchPathsFromOWL(OWLQueryBuilderImpl qb){
[3]76        return searchPathsEngine(qb, 0);
77    }
78   
79    private List<List<ClassLink>> searchPathsFromInstances(OWLQueryBuilderImpl qb){
80        return searchPathsEngine(qb, 1);
81    }
[15]82    */
[3]83   
[32]84    private List<List<ClassLink>> searchPaths(OWLQueryBuilderImpl qb, int mode, boolean countLinks){
[15]85        List<List<ClassLink>> paths = new ArrayList<>();
[8]86        ClassLink crrLink = new ClassLink(null,startClass,Direction.both,0);
[15]87        List<LinkAndPath> lp = new LinkedList<>();
[2]88        lp.add(new LinkAndPath(crrLink, new LinkedList<ClassLink>()));
89        try{
90          for ( int i = 0; i < nsteps; i++ ){
91              ListIterator<LinkAndPath> lit = lp.listIterator();
[15]92              List<LinkAndPath> nextlp = new LinkedList<>();
[2]93              while ( lit.hasNext() ){
94                  LinkAndPath crrlp = lit.next();
95                  if ( crrlp.classLink.getLinkedClassURI().equals(endClass) ){ continue; }
[3]96                  ClassLink[] classLinks = null;
97                  // Mode
98                  if ( mode == 0 ){
[32]99                      classLinks = qb.getNextClass(null, crrlp.classLink.getLinkedClassURI(), limit, countLinks);
[3]100                  }else if ( mode == 1 ){
101                      classLinks = qb.getNextClassViaInstanceLink(null, crrlp.classLink.getLinkedClassURI(), limit);                     
102                  }else{ System.err.println("Mode is not correct."); }
[2]103                  for ( int j = 0 ; j < classLinks.length; j++ ){
[15]104                      List<ClassLink> crrpath = new LinkedList<>(crrlp.path);
[2]105                      crrpath.add(classLinks[j]);
106                      if ( classLinks[j].getLinkedClassURI().equals(endClass) ){
[15]107                          paths.add(new LinkedList<>(crrpath));
[2]108                      }
109                      nextlp.add(new LinkAndPath(classLinks[j],crrpath));
110                  }
111              }
[3]112              lp = nextlp;
[2]113          }
[15]114        }catch(Exception e){
115            System.err.println(e);
116        }
[21]117        return paths; 
[2]118    }
119}
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。