差分発生行の前後
無視リスト:
更新日時:
2016/03/15 18:40:34 (9 年 前)
更新者:
atsuko
ログメッセージ:

新クローラに対応

ファイル:
1 変更

凡例:

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

    r271 r273  
    1717    List<String> nodeType; 
    1818    String sparqlEndpoint; 
    19     Map<String, Boolean> checkedpaths; 
    2019     
    21     /* 
    22     public class LinkAndPath{ 
    23         String originalClassURI; // originalClasssURI -classLink.propertyURI-> classLink.linkedClassURL 
    24         ClassLink classLink; 
    25         List<ClassLink> path; 
    26         Set<String> classURIs; // apearing class URIs in the path 
    27          
    28          
    29         public LinkAndPath(ClassLink classLink, List<ClassLink> path){ 
    30            this.classLink = classLink; 
    31            this.path = path; 
    32         } 
    33          
    34         public LinkAndPath(ClassLink classLink, List<ClassLink> path, String originalClassURI){ 
    35            this.classLink = classLink; 
    36            this.path = path; 
    37            this.originalClassURI = originalClassURI; 
    38         } 
    39  
    40         public LinkAndPath(ClassLink classLink, List<ClassLink> path, String originalClassURI, Set<String> classURIs){ 
    41            this.classLink = classLink; 
    42            this.path = path; 
    43            this.originalClassURI = originalClassURI; 
    44            this.classURIs = classURIs; 
    45         } 
    46     }*/ 
    47  
    4820    public OWLClassGraph(){ // not used 
    4921        super(); 
     
    5729    } 
    5830     
    59     /* 
    60     public OWLClassGraph(RDFSchemaAnalyzer rdfsa, String sparqlEndpoint, String startClass){ // used 
     31    public OWLClassGraph(RDFSchemaAnalyzerFactory rdfsaf){  
    6132        super(); 
    6233        nodeType = new LinkedList<String>(); 
    63         setPartClassGraph(rdfsa, sparqlEndpoint, startClass); 
     34        //setClassGraph(rdfsaf); 
    6435    } 
    65     */ 
    66  
    67     public int getNumberOfEdge(String url){ 
    68         Integer node = labelednodes.get(url); 
    69         if (node == null){ 
    70             return 0; 
    71         } 
    72         return adjlist.get(node).size(); 
    73     } 
    74          
     36     
    7537    public Path[] getPaths(String startClass, String endClass){ 
    7638        List<List<ClassLink>> paths = searchPaths(startClass, endClass); 
     
    9355            } 
    9456            // using length of path 
    95             //int rankwidth = (int) ( ( min * nsteps )/ crrpath.size() ); 
    9657            path.setWidth(500000 - crrpath.size()*100000 + min); 
    9758            sortedpaths.add(path); 
     
    11071     
    11172    private List<List<ClassLink>> searchPaths(String startClass, String endClass){ 
    112         //int asked = 0; 
    113         checkedpaths = new HashMap<String, Boolean>(); 
    11473        List<List<ClassLink>> paths = new ArrayList<>(); 
    11574        Integer snode = labelednodes.get(startClass); 
     
    11877         
    11978        ListIterator<List<Integer>> pit = simplePaths.listIterator(); 
    120         //System.out.println("SPATH:"); 
    121         //System.out.println(simplePaths.size()); 
    12279        while( pit.hasNext()){ 
    12380            List<Integer> spath = pit.next(); 
     
    14299                List<Integer> crrpath = lit.next(); 
    143100                Integer crrnode = crrpath.get(crrpath.size()-1); 
    144                 Set<Integer> nexts = gadjlist.get(crrnode).keySet(); 
     101                Set<Integer> nexts = labelededges.get(crrnode).keySet(); 
    145102                Iterator<Integer> nit = nexts.iterator(); 
    146103                while( nit.hasNext() ){ 
     
    157114            } 
    158115            lp = nextlp; 
    159         }         
     116        } 
    160117        return simplePaths; 
    161118    } 
     
    168125        String startClass = this.labels.get(start); 
    169126        Integer end = spit.next(); 
    170         List<LabeledEdge> edges = gadjlist.get(start).get(end); 
     127        List<LabeledEdge> edges = labelededges.get(start).get(end); 
    171128        ListIterator<LabeledEdge> eit = edges.listIterator(); 
    172129        while ( eit.hasNext() ){ 
     
    179136            end = spit.next(); 
    180137            // start-end 
    181             edges = gadjlist.get(start).get(end); 
     138            edges = labelededges.get(start).get(end); 
    182139            List<List<ClassLink>> tmppaths = new LinkedList<List<ClassLink>>();             
    183140            // current path 
     
    195152            paths = tmppaths; 
    196153            start = end; 
    197         }         
     154        } 
    198155        return paths; 
    199156    } 
     
    233190            } 
    234191        }        
    235     } 
    236  
    237     /* 
    238     public void setPartClassGraph(RDFSchemaAnalyzer rdfsa, String sparqlEndpoint, String startClass){ 
    239         // set endpoint 
    240         this.sparqlEndpoint = sparqlEndpoint; 
    241         visited = new HashSet<Integer>(); 
    242         edgeweight = new LinkedList<Map<Integer,Integer>>(); 
    243         nodeweight = new LinkedList<Integer>(); 
    244         // setNodes for all classes 
    245         SClass[] classes = null; 
    246         try{ 
    247            classes = rdfsa.getOWLClasses(null, null, null, true); 
    248         }catch(Exception e){ 
    249            System.err.println(e); return; 
    250         } 
    251         for (int i = 0 ; i < classes.length; i++){ 
    252            addNode(classes[i].getClassURI()); 
    253            nodeType.add("class"); 
    254            edgeweight.add(new HashMap<Integer,Integer>()); 
    255            nodeweight.add(classes[i].getNumOfInstances()); 
    256         } 
    257         // setEdges 
    258         Integer snode = labelednodes.get(startClass); 
    259         Set<Integer> nodes = new HashSet<Integer>(); 
    260         nodes.add(snode); 
    261         visited.add(snode); 
    262         for (int i = 0 ; i < nsteps; i++ ){ 
    263             Iterator<Integer> nit = nodes.iterator(); 
    264             Set<Integer> nextnodes = new HashSet<Integer>(); 
    265             while ( nit.hasNext() ){ 
    266                 Integer crr = nit.next(); 
    267                 try{ 
    268                     ClassLink[] classLinks = rdfsa.getNextClass(null, labels.get(crr), limit, true); 
    269                     for (int j = 0 ; j < classLinks.length; j++){ 
    270                         Integer nn = labelednodes.get(classLinks[j].getLinkedClassURI()); 
    271                         if ( nn == null ){ 
    272                             continue; 
    273                         } 
    274                         if ( !visited.contains(nn) ){ 
    275                             nextnodes.add(nn); 
    276                         } 
    277                         addEdge(crr, nn, classLinks[j]); 
    278                         updateWeight(crr, nn, classLinks[j]); 
    279                     } 
    280                 }catch(Exception e){ 
    281                     e.printStackTrace(); 
    282                 } 
    283             } 
    284             nodes = nextnodes; 
    285             visited.addAll(nodes); 
    286         } 
    287         // cut visited 
    288         Iterator<Integer> nit = visited.iterator(); 
    289         while(nit.hasNext()){ 
    290             Integer node = nit.next(); 
    291             if ( ! node.equals(snode) ){ 
    292                 List<List<Integer>> paths = searchSimplePaths(snode, node); 
    293                 if ( paths.isEmpty()){ 
    294                     nit.remove(); 
    295                 } 
    296             } 
    297         } 
    298     }        
    299     */ 
    300     /* 
    301     private void updateWeight(Integer node1, Integer node2, ClassLink edge){ 
    302         Map<Integer, Integer> weight = edgeweight.get(node1); 
    303         Integer crr = weight.get(node2); 
    304         if (crr == null ){ 
    305             crr = edge.getNumOfLinkedClassInstances(); 
    306             weight.put(node2, crr);            
    307         } 
    308         if ( crr < edge.getNumOfLinkedClassInstances() ){ 
    309             crr = edge.getNumOfLinkedClassInstances(); 
    310             weight.put(node2, crr); 
    311         } 
    312         weight = edgeweight.get(node2); 
    313         crr = weight.get(node1); 
    314         if (crr == null ){ 
    315             crr = edge.getNumOfOriginClassInstances(); 
    316             weight.put(node1, crr); 
    317         } 
    318         if ( crr < edge.getNumOfOriginClassInstances() ){ 
    319             crr = edge.getNumOfOriginInstances(); 
    320             weight.put(node1, crr); 
    321         } 
    322     } 
    323      
    324     public List<String> getReachableClasses(){ 
    325         List<String> clURIs = new LinkedList<String>(); 
    326         if ( visited == null ){ 
    327             return null; 
    328         } 
    329         Iterator<Integer> vit = visited.iterator(); 
    330         while( vit.hasNext() ){ 
    331             Integer vn = vit.next(); 
    332             clURIs.add(labels.get(vn)); 
    333         } 
    334         return clURIs; 
    335     } 
    336     */ 
     192    }     
    337193}