差分発生行の前後
無視リスト:
更新日時:
2014/12/30 22:36:45 (10 年 前)
更新者:
atsuko
ログメッセージ:

データ増加に伴い効率性を多少向上

ファイル:
1 変更

凡例:

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

    r221 r228  
    1414    //String startClass; 
    1515    //String endClass; 
    16     int nsteps = 5; 
     16    int nsteps = 4; 
    1717    int limit = 100; 
    1818    int th = 1; 
     
    7777*/     
    7878 
     79    public OWLClassGraph(){ 
     80        super(); 
     81        nodeType = new LinkedList<String>(); 
     82        //setClassGraph(rdfsa); 
     83        //connectionTable = createConnectionTable(); 
     84    } 
     85     
     86     
    7987    public OWLClassGraph(RDFSchemaAnalyzer rdfsa){ 
    8088        super(); 
    8189        nodeType = new LinkedList<String>(); 
    82         setClassGraph(rdfsa); 
    83         connectionTable = createConnectionTable(); 
     90        //setClassGraph(rdfsa); 
     91        //connectionTable = createConnectionTable(); 
    8492    } 
    8593     
     
    376384       }        
    377385   } 
     386 
     387    public void setPartClassGraph(RDFSchemaAnalyzer rdfsa, String startClass){ 
     388        // setNodes 
     389        SClass[] classes = null; 
     390        try{ 
     391           classes = rdfsa.getOWLClasses(null, null, null, true); 
     392        }catch(Exception e){ 
     393           System.err.println(e); return; 
     394        } 
     395        for (int i = 0 ; i < classes.length; i++){ 
     396           addNode(classes[i].getClassURI()); 
     397           nodeType.add("class"); 
     398        } 
     399        int nedge = 0; 
     400        Integer snode = labelednodes.get(startClass); 
     401        Set<Integer> nodes = new HashSet<Integer>(); 
     402        nodes.add(snode); 
     403        Set<Integer> visited = new HashSet<Integer>(); 
     404        for (int i = 0 ; i < nsteps; i++ ){ 
     405            Iterator<Integer> nit = nodes.iterator(); 
     406            Set<Integer> nextnodes = new HashSet<Integer>(); 
     407            while ( nit.hasNext() ){ 
     408                Integer crr = nit.next(); 
     409                visited.add(crr); 
     410                try{ 
     411                    ClassLink[] classLinks = rdfsa.getNextClass(null, labels.get(crr), limit, true); 
     412                    for (int j = 0 ; j < classLinks.length; j++){ 
     413                        Integer nn = labelednodes.get(classLinks[j].getLinkedClassURI()); 
     414                        if ( !visited.contains(nn) ){ 
     415                            nextnodes.add(nn); 
     416                        } 
     417                        if ( nn != null ){ 
     418                            addEdge(crr, nn, classLinks[j]); 
     419                        /* 
     420                        }else{ 
     421                            nn = labelednodes.get(classLinks[j].getLinkedLiteralDatatypeURI()); 
     422                            if ( nn == null ){ 
     423                                addNode(classLinks[j].getLinkedLiteralDatatypeURI()); 
     424                                n = nodeType.size(); 
     425                                nodeType.add("literal"); 
     426                            } 
     427                            addEdge(i, n, classLinks[j]); 
     428                            /* 
     429                            ClassLink rev = new ClassLink( classLinks[j].getPropertyURI(), 
     430                               //classLinks[j].getLinkedClassURI(), 
     431                               classes[i].getClassURI(), 
     432                               classLinks[j].getLinkedLiteralDatatypeURI(), 
     433                               classLinks[j].getDirection(), classLinks[j].getNumOfLinks(),  
     434                               classLinks[j].getNumOfOriginInstances(), classLinks[j].getNumOfLinkedInstances(), 
     435                               classLinks[j].getNumOfOriginClassInstances(), classLinks[j].getNumOfLinkedClassInstances(), 
     436                               classLinks[j].isDomainClassLimitedQ(), classLinks[j].isRangeClassLimitedQ() ); 
     437                            rev.setDirection(Direction.reverse); 
     438                            addEdge(n, i, rev); 
     439                        */      
     440                        } 
     441                    } 
     442                }catch(Exception e){ 
     443                    e.printStackTrace(); 
     444                } 
     445            } 
     446            nodes = nextnodes; 
     447        } 
     448    } 
    378449    
    379450   private ArrayList<HashSet<Integer>> createConnectionTable(){