チェンジセット 251 : SPARQLBuilderWWW

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

コスト関数導入

パス:
SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder
ファイル:
5 変更

凡例:

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

    r248 r251  
    1616 */ 
    1717public class EndpointAccess { 
     18    static public boolean checkPath(Path path, String sparqlEndpoint){ 
     19        return checkPath(path.getStartClass(), path.getClassLinks(), sparqlEndpoint); 
     20    } 
     21     
    1822    static public boolean checkPath(String startClass, List<ClassLink> classlinks, String sparqlEndpoint){ 
    1923        // SPARQL Query construction 
     
    4549        String sparqlQuery = queryStr.toString(); 
    4650        Query query = QueryFactory.create(sparqlQuery, Syntax.syntaxARQ); 
    47         /* 
    48         QueryEngineHTTP httpQuery = new QueryEngineHTTP(sparqlEndpoint, query); 
    49         boolean res = httpQuery.execAsk(); 
    50         httpQuery.close(); 
    51                 */ 
    5251        QueryExecution qexec = QueryExecutionFactory.sparqlService(sparqlEndpoint, query); 
    5352        boolean res = qexec.execAsk(); 
     
    104103        queryStr.append("ASK { \n"); 
    105104         
    106         queryStr.append("?n1").append(" rdf:type <").append(ocg.labels.get(node1)).append("> .\n"); 
    107         queryStr.append("?n2").append(" rdf:type <").append(ocg.labels.get(node2)).append("> .\n"); 
    108         queryStr.append("?n3").append(" rdf:type <").append(ocg.labels.get(node3)).append("> .\n"); 
     105        queryStr.append("?n1縲€rdf:type ?c1 .\n"); 
     106        queryStr.append("?n2縲€rdf:type ?c2 .\n"); 
     107        queryStr.append("?n3縲€rdf:type ?c3 .\n"); 
    109108         
    110109        queryStr.append("{{"); 
     
    119118            queryStr.append("?n3").append(" ").append("?p2").append(" ") 
    120119                        .append("?n2").append(" }}\n");             
    121              
     120         
     121        queryStr.append("VALUES (?c1 ?c2 ?c3){ \n");  
     122        queryStr.append("<").append(ocg.labels.get(node1)).append("> \n"); 
     123        queryStr.append("<").append(ocg.labels.get(node2)).append("> \n"); 
     124        queryStr.append("<").append(ocg.labels.get(node3)).append("> \n"); 
     125        queryStr.append("} \n"); 
    122126        queryStr.append("} \n"); 
    123127         
     
    126130        System.out.println(sparqlQuery); 
    127131        Query query = QueryFactory.create(sparqlQuery, Syntax.syntaxARQ); 
    128         /* 
    129         QueryEngineHTTP httpQuery = new QueryEngineHTTP(sparqlEndpoint, query); 
    130         boolean res = httpQuery.execAsk(); 
    131         httpQuery.close(); 
    132                 */ 
    133132        QueryExecution qexec = QueryExecutionFactory.sparqlService(sparqlEndpoint, query); 
    134133        boolean res = qexec.execAsk(); 
  • SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/OWL/OWLClassGraph.java

    r250 r251  
    1717    int limit = 100; 
    1818    int th = 1; 
     19    double cth = 1.0; // 0.0(no path) - 1.0(all paths) 
     20     
    1921    List<String> nodeType; 
    2022    ArrayList<HashSet<Integer>> connectionTable; 
     
    2426    List<Map<Integer, Integer>> edgeweight; 
    2527    List<Integer> nodeweight; 
     28    Map<String, Boolean> checkedpaths; 
    2629     
    2730    public class LinkAndPath{ 
     
    5659    } 
    5760         
    58     public OWLClassGraph(RDFSchemaAnalyzer rdfsa){ // not used 
     61    public OWLClassGraph(RDFSchemaAnalyzer rdfsa){ // for experiment 
    5962        super(); 
    6063        nodeType = new LinkedList<String>(); 
     64        this.askcheck = false; 
     65        setClassGraph(rdfsa); 
    6166    } 
    6267     
     
    124129    private List<List<ClassLink>> searchPaths(String startClass, String endClass){ 
    125130        //int asked = 0; 
    126         Map<String,Boolean> checkedpaths = new HashMap<String, Boolean>(); 
     131        checkedpaths = new HashMap<String, Boolean>(); 
    127132        List<List<ClassLink>> paths = new ArrayList<>(); 
    128133        Integer snode = labelednodes.get(startClass); 
     
    163168                    nextpath.add(nextnode); 
    164169                    // tmp 
    165                     if ( i >= 1 ){ 
     170                    if ( i >= 1  && askcheck == true ){ 
    166171                        int wn = nodeweight.get(crrnode); 
    167172                        int in = edgeweight.get(crrpath.get(crrpath.size()-2)).get(crrnode); 
     
    182187                                } 
    183188                            }else{                       
    184                                 boolean chk = EndpointAccess.check3SimplePathwithJoin(nextnode, crrpath.get(crrpath.size()-1), 
     189                                boolean chk = EndpointAccess.check3SimplePath(nextnode, crrpath.get(crrpath.size()-1), 
    185190                                    crrpath.get(crrpath.size()-2), this, sparqlEndpoint); 
    186191                                checkedpaths.put(key1, chk); 
     
    235240                    addedpath.add(cl); 
    236241                    // check 
    237                     //if ( EndpointAccess.checkPath(startClass, addedpath, sparqlEndpoint) ){ 
     242                    if (checkPath(startClass, addedpath)){ 
    238243                        tmppaths.add(addedpath); 
    239                     //} 
     244                    } 
    240245                } 
    241246            } 
     
    246251    } 
    247252     
    248 /*               
    249    private void setClassGraph(RDFSchemaAnalyzer rdfsa){ 
    250        // setNodes 
    251        SClass[] classes = null; 
    252        try{ 
    253            classes = rdfsa.getOWLClasses(null, null, null, true); 
    254        }catch(Exception e){ 
    255            System.err.println(e); return; 
    256        } 
    257        for (int i = 0 ; i < classes.length; i++){ 
    258            addNode(classes[i].getClassURI()); 
    259            nodeType.add("class"); 
    260        } 
    261        // setEdges 
    262        for (int i = 0 ; i < classes.length; i++ ){ 
    263            try{ 
    264                ClassLink[] classLinks = rdfsa.getNextClass(null, classes[i].getClassURI(), limit, true); 
    265                for (int j = 0 ; j < classLinks.length; j++){ 
    266                    Integer n = labelednodes.get(classLinks[j].getLinkedClassURI()); 
    267                    if ( n != null ){ 
    268                        addEdge(i, n, classLinks[j]); 
    269                    }else{ 
    270                        n = labelednodes.get(classLinks[j].getLinkedLiteralDatatypeURI()); 
    271                        if ( n == null ){ 
     253    private void setClassGraph(RDFSchemaAnalyzer rdfsa){ 
     254        // setNodes 
     255        SClass[] classes = null; 
     256        try{ 
     257            classes = rdfsa.getOWLClasses(null, null, null, true); 
     258        }catch(Exception e){ 
     259            System.err.println(e); return; 
     260        } 
     261        for (int i = 0 ; i < classes.length; i++){ 
     262            addNode(classes[i].getClassURI()); 
     263            nodeType.add("class"); 
     264        } 
     265        // setEdges 
     266        for (int i = 0 ; i < classes.length; i++ ){ 
     267            try{ 
     268                ClassLink[] classLinks = rdfsa.getNextClass(null, classes[i].getClassURI(), limit, true); 
     269                for (int j = 0 ; j < classLinks.length; j++){ 
     270                    Integer n = labelednodes.get(classLinks[j].getLinkedClassURI()); 
     271                    if ( n != null ){ 
     272                        addEdge(i, n, classLinks[j]); 
     273                    }else{ 
     274                        n = labelednodes.get(classLinks[j].getLinkedLiteralDatatypeURI()); 
     275                        if ( n == null ){ 
    272276                           addNode(classLinks[j].getLinkedLiteralDatatypeURI()); 
    273277                           n = nodeType.size(); 
    274278                           nodeType.add("literal"); 
    275                        } 
    276                        addEdge(i, n, classLinks[j]); 
    277                    } 
    278                } 
    279            }catch(Exception e){ 
    280                System.err.println(e); 
    281            } 
    282        }        
    283    }*/ 
     279                        } 
     280                        addEdge(i, n, classLinks[j]); 
     281                    } 
     282                } 
     283            }catch(Exception e){ 
     284                System.err.println(e); 
     285            } 
     286        }        
     287    } 
    284288 
    285289    public void setPartClassGraph(RDFSchemaAnalyzer rdfsa, String sparqlEndpoint, String startClass){ 
     
    332336            visited.addAll(nodes); 
    333337        } 
    334         // cut visited  
     338        // cut visited          
    335339        Iterator<Integer> nit = visited.iterator(); 
    336340        while(nit.hasNext()){ 
     
    405409   } 
    406410    
     411   private boolean checkPath(String startClass, List<ClassLink> paths){ 
     412       // KOKO 
     413       return false; 
     414   } 
    407415   // old codes 
    408416   /* 
  • SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/OWL/Path.java

    r248 r251  
    11package org.biohackathon.SPARQLBuilder.OWL; 
    22 
    3 import java.util.List; 
     3import java.util.*; 
    44 
    55import org.json.JSONArray; 
     
    141141        //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
    142142    } 
     143     
     144    public double computeCost(){ 
     145        int length = classLinks.size(); 
     146        ListIterator<ClassLink> lit = classLinks.listIterator(); 
     147        while( lit.hasNext() ){ 
     148            ClassLink cl = lit.next(); 
     149            // KOKO 
     150             
     151        } 
     152        return 1.0; 
     153    } 
    143154} 
  • SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/OWL/QueryPathGenerator.java

    r248 r251  
    77package org.biohackathon.SPARQLBuilder.OWL; 
    88 
     9import java.io.*; 
     10import java.util.*; 
    911 
    1012/** 
     
    2123     
    2224    private static final String CDIR = "cdata"; 
    23      
    24     /* 
     25         
    2526    public static void main(String[] args){ 
    26         // For Test 
    27         //String sp = "http://data.allie.dbcls.jp/sparql"; 
    28         //String sc = "http://purl.org/allie/ontology/201108#ShortForm"; 
    29         //String ec = "http://purl.org/allie/ontology/201108#LongForm"; 
    30  
    31         String sp = "http://www.ebi.ac.uk/rdf/services/chembl/sparql"; 
    32         String sc = "http://rdf.ebi.ac.uk/terms/chembl#Enzyme"; 
    33         String ec = "http://rdf.ebi.ac.uk/terms/chembl#Activity"; 
    34  
    35         //String sp = "http://www.ebi.ac.uk/rdf/services/biosamples/sparql"; 
    36         //String sc = "http://rdf.ebi.ac.uk/terms/biosd/Sample"; 
    37         //String ec = "http://purl.obolibrary.org/obo/NCBITaxon_7955"; 
    38         //String sp = "http://www.ebi.ac.uk/rdf/services/biosamples/sparql"; 
    39         //String sc = "http://rdf.ebi.ac.uk/terms/biosd/Sample"; 
    40         //String ec = "http://purl.obolibrary.org/obo/NCBITaxon_7955"; 
    41         //String sp = "http://lsd.dbcls.jp/sparql"; 
    42         //String sc = "http://purl.jp/bio/10/lsd/ontology/201209#EnglishCode"; 
    43         //String ec = "http://purl.jp/bio/10/lsd/ontology/201209#JapaneseCode"; 
    44         //QueryPathGenerator qpg = new QueryPathGenerator(sp, "c:\\cdata"); 
    45         QueryPathGenerator qpg1 = new QueryPathGenerator(sp, "cdata/"); 
    46         //qpg1.testOWLClassGraph(); 
    47         //SClass[] cl = qpg.getClasses(null); 
    48     }*/ 
     27        QueryPathGenerator qpg = new QueryPathGenerator(); 
     28        //String[] elist = qpg.getFactory().getEndpointURIList(); 
     29        List<String> elist = new LinkedList<String>(); 
     30        File file0 = new File("eplist.txt"); 
     31        try{ 
     32            BufferedReader br = new BufferedReader(new FileReader(file0)); 
     33            String buf = null; 
     34            while( (buf = br.readLine()) != null){ 
     35                elist.add(buf); 
     36            } 
     37        }catch(IOException e){ 
     38            System.err.println(e); 
     39        } 
     40         
     41        ListIterator<String> eit = elist.listIterator(); 
     42        int i = 0; 
     43        while(eit.hasNext()){ 
     44            String ep = eit.next(); 
     45            qpg.setSPARQLendpoint(ep); 
     46            qpg.graph = new OWLClassGraph(qpg.analyzer); 
     47            SClass[] classes = qpg.getClasses(null); 
     48            File file1 = new File("path".concat(Integer.toString(i)).concat(".txt")); 
     49            File file2 = new File("ptable".concat(Integer.toString(i)).concat(".txt")); 
     50            try{ 
     51                BufferedWriter bw1 = new BufferedWriter(new FileWriter(file1)); 
     52                BufferedWriter bw2 = new BufferedWriter(new FileWriter(file2)); 
     53                String jsonstr = "["; 
     54                int m = 0; 
     55                for ( int j = 0 ; j < classes.length; j ++ ){ 
     56                    SClass start = classes[j]; 
     57                    for ( int k = j + 1 ; k < classes.length; k++ ){ 
     58                        SClass end = classes[k]; 
     59                        Path[] paths = qpg.getPaths(start.getClassURI(), end.getClassURI(), false);                         
     60                        for( int l = 0; l < paths.length; l++ ){ 
     61                            if ( paths[l] == null ){ 
     62                                continue; 
     63                            } 
     64                            if (m > 0 ){ 
     65                                jsonstr += ","; 
     66                            } 
     67                            double cost = paths[l].computeCost();                                                         
     68                            bw2.write(Double.toString(cost)); 
     69                            bw2.write(","); 
     70                            bw2.write(Boolean.toString(EndpointAccess.checkPath(paths[l], ep))); 
     71                            bw2.newLine(); 
     72                            jsonstr += paths[i].toJSONString3(classes); 
     73                            m++; 
     74                        } 
     75                    } 
     76                } 
     77                jsonstr += "]"; 
     78                bw1.write(jsonstr); 
     79                bw1.newLine(); 
     80                 
     81                bw1.close(); 
     82                bw2.close(); 
     83            }catch(IOException e){ 
     84                System.err.println(e); 
     85            } 
     86            i++; 
     87        } 
     88    } 
    4989     
    5090    public QueryPathGenerator(){ 
     
    5898     
    5999    public void setOWLClassGraph(String startClass){ 
    60         graph = new OWLClassGraph(analyzer, sparqlEndpoint, startClass, askcheck); 
     100        //graph = new OWLClassGraph(analyzer, sparqlEndpoint, startClass, askcheck); 
     101        graph = new OWLClassGraph(analyzer, sparqlEndpoint, startClass, true); 
    61102    } 
    62      
    63 /* 
    64     public QueryPathGenerator(String sparqlEndpoint, String crawlFileName){ 
    65         factory = new RDFSchemaAnalyzerFactory(crawlFileName); 
    66         setSPARQLendpoint(sparqlEndpoint); 
    67         setOWLClassGraph(); 
    68     } 
    69     */ 
    70103     
    71104    public SClass[] getClasses(String keyword){ 
     
    86119     
    87120    public Path[] getPaths(String startClass, String endClass, boolean askcheck){ 
    88         this.askcheck = askcheck; 
    89121        if ( graph == null ){ 
    90122            //System.err.println("Class graph is null.");  
    91123            setOWLClassGraph(startClass); 
    92124        } 
     125        graph.askcheck = askcheck; 
    93126        return graph.getPaths(startClass, endClass); 
    94127    } 
     
    139172        return label; 
    140173    } 
    141      
    142     /* 
    143     private void setOWLClassGraph(){ 
    144         //graph = new OWLClassGraph(analyzer); 
    145         graph = new OWLClassGraph(); 
    146     }*/ 
    147      
     174         
    148175    public OWLClassGraph getOWLClassGraph(){ 
    149176        /*if ( graph == null ){ 
  • SPARQLBuilderWWW/src/java/org/biohackathon/SPARQLBuilder/www/PLServlet.java

    r248 r251  
    8383        SClass[] classes = qpg.getClasses(null); 
    8484        Path[] paths = null; 
    85         if ( ask == null ){ 
    86             paths = qpg.getPaths(st, en, false); 
    87         }else if ( ask.equalsIgnoreCase("true")){ 
     85        //if ( ask == null ){ 
     86        //    paths = qpg.getPaths(st, en, false); 
     87        //}else if ( ask.equalsIgnoreCase("true")){ 
    8888            paths = qpg.getPaths(st, en, true);             
    89         }else{ 
    90             paths = qpg.getPaths(st, en, false);             
    91         } 
     89        //}else{ 
     90        //    paths = qpg.getPaths(st, en, false);             
     91        //} 
    9292             
    9393        String jsonstr = "[";