チェンジセット 46 : BH13SPARQLBuilder

差分発生行の前後
無視リスト:
更新日時:
2014/02/17 16:11:59 (11 年 前)
更新者:
nori
ログメッセージ:

getNextClassで、トリプルの起点となるインスタンス数と終点となるインスタンス数をそれぞれ求められるようにした。

パス:
BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL
ファイル:
2 変更

凡例:

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

    r26 r46  
    1313        private Direction direction = null; 
    1414        private int numOfLinks = 0; 
    15  
     15        private int numOfLinkedInstances = 0; 
     16        private int numOfOriginInstances = 0; 
     17         
    1618        /** 
    1719         * 繝励Ο繝代ユ繧」URI縲√Μ繝ウ繧ッ蜈茨シ亥��峨け繝ゥ繧ケ縲√Μ繝ウ繧ッ縺ョ蜷代″繧剃ク弱∴繧区ァ区�蟄� 
     
    2426         * @since 28.01.2014 
    2527         */ 
    26         public ClassLink(String propertyURI, String linkedClassURI, Direction direction, int numLinks){ 
     28        public ClassLink(String propertyURI, String linkedClassURI, Direction direction, int numLinks, int numofOriginInstances, int numOfLinkedInstances){ 
    2729                this.propertyURI = propertyURI; 
    2830                this.linkedClassURI = linkedClassURI; 
    2931                this.direction = direction; 
    3032                this.numOfLinks = numLinks; 
     33                this.numOfLinkedInstances = numOfLinkedInstances; 
     34                this.numOfOriginInstances = numOfOriginInstances; 
    3135        } 
    3236         
     
    8892                this.direction = direction; 
    8993        } 
     94 
     95        public final int getNumOfLinkedInstances() { 
     96                return numOfLinkedInstances; 
     97        } 
     98 
     99        public final void setNumOfLinkedInstances(int numOfLinkedInstances) { 
     100                this.numOfLinkedInstances = numOfLinkedInstances; 
     101        } 
     102 
     103 
     104        public final int getNumOfOriginInstances() { 
     105                return numOfOriginInstances; 
     106        } 
     107 
     108 
     109        public final void setNumOfOriginInstances(int numOfOriginInstances) { 
     110                this.numOfOriginInstances = numOfOriginInstances; 
     111        } 
    90112                 
     113 
     114         
    91115        // private String[] propertyDomainClassURIs = null; 
    92116        // private String[] propertyRangeClassURIs = null; 
    93  
    94                  
     117         
     118         
     119         
    95120} 
  • BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/OWLQueryBuilderImpl.java

    r42 r46  
    7272                } 
    7373*/ 
     74 
    7475                System.out.println("CLS"); 
    7576 
    7677                String uri = "http://purl.jp/bio/10/lsd/ontology/201209#EnglishEntry"; 
    7778                 
    78                 ClassLink[] cls = builder.getNextClass(null, uri, 100, false); 
    79  
     79                ClassLink[] cls = null; 
     80                try{ 
     81                        cls = builder.getNextClass(null, uri, 100, false); 
     82                }catch(Exception ex) { 
     83                        ex.printStackTrace(); 
     84                } 
     85 
     86                System.out.println("Solutions: "); 
    8087                if (cls != null) { 
    8188                        for (ClassLink cl : cls) { 
     
    8794                        } 
    8895                } 
     96 
     97                 
     98                 
     99                 
    89100/* 
     101                uri = "http://purl.jp/bio/10/lsd/ontology/201209#EnglishEntry"; 
     102 
    90103                System.out.println("CLS-INS"); 
    91                 cls = builder.getNextClassViaInstanceLink(null, clz[0].getClassURI(), 
    92                                 100); 
     104                cls = null; 
     105                try{  
     106                        cls = builder.getNextClassViaInstanceLink(null, uri, 100); 
     107                }catch(Exception ex){ 
     108                        ex.printStackTrace(); 
     109                } 
    93110                if (cls != null) { 
    94111                        for (ClassLink cl : cls) { 
     
    96113                        } 
    97114                } 
    98  
     115*/ 
     116                /* 
    99117                System.out.println("Instances"); 
    100118                Instance[] ins = builder.getInstances(null, "\"A.C. Reed\"@en"); 
     
    184202 
    185203                Query query = QueryFactory.create(queryStr.toString()); 
    186                 QueryExecution qexec = QueryExecutionFactory.sparqlService(endpointURI, 
    187                                 query); 
     204 
     205                 
     206                QueryExecution qexec = null; 
     207                try{ 
     208                        long start = System.currentTimeMillis(); 
     209                        qexec = QueryExecutionFactory.sparqlService(endpointURI, 
     210                                        query); 
     211                        long end = System.currentTimeMillis(); 
     212                        System.out.println("EXEC TIME: " + (end-start)); 
     213                }catch(Exception ex){ 
     214                        ex.printStackTrace(); 
     215                        throw ex; 
     216                } 
    188217 
    189218                ResultSet results = qexec.execSelect(); 
     
    327356                // SELECT 
    328357                if (countLinks) { 
    329                         queryStr.append("SELECT DISTINCT ?p ?pDirection ?c (COUNT(?s) AS ?numOfLinks) \n"); 
     358                        queryStr.append("SELECT DISTINCT ?p ?pDirection ?c (COUNT(?s) AS ?numOfLinks) (COUNT(DISTINCT(?s)) AS ?numOfLinkedInstances) \n"); 
    330359                } else { 
    331360                        queryStr.append("SELECT DISTINCT ?p ?pDirection ?c \n"); 
     
    390419                } 
    391420 
     421                System.out.println("getNextClasses SPARQL Query: "); 
    392422                System.out.println(queryStr.toString()); 
    393423 
    394424                Query query = QueryFactory.create(queryStr.toString()); 
    395                 QueryExecution qexec = QueryExecutionFactory.sparqlService(endpointURI, 
     425                QueryExecution qexec = null; 
     426                try{ 
     427                        qexec = QueryExecutionFactory.sparqlService(endpointURI, 
    396428                                query); 
    397  
    398                 ResultSet results = qexec.execSelect(); 
     429                }catch(Exception ex){ 
     430                        ex.printStackTrace(); 
     431                        throw ex; 
     432                } 
     433                         
     434                ResultSet results = null; 
     435                try{ 
     436                        long start = System.currentTimeMillis(); 
     437                        results = qexec.execSelect(); 
     438                        long end = System.currentTimeMillis(); 
     439                        System.out.println("EXEC TIME: " + (end-start)); 
     440                }catch(Exception ex){ 
     441                        ex.printStackTrace(); 
     442                        throw ex; 
     443                } 
     444                         
    399445                ArrayList<ClassLink> solCLs = new ArrayList<ClassLink>(); 
    400446                for (; results.hasNext();) { 
     
    431477                                } 
    432478                                ClassLink cl = new ClassLink(proURI, clsURI, direction, 
    433                                                 numOfLinks); 
     479                                                numOfLinks, 0, 0 ); 
    434480                                solCLs.add(cl); 
    435481                        } 
     
    484530                } 
    485531 
    486                 // System.out.println(queryStr.toString()); 
     532System.out.println(queryStr.toString()); 
    487533 
    488534                Query query = QueryFactory.create(queryStr.toString()); 
     
    513559                        // System.out.println(propURI + " " + clsURI + " " + direction); 
    514560 
    515                         ClassLink cl = new ClassLink(propURI, clsURI, direction, 0); 
     561                        ClassLink cl = new ClassLink(propURI, clsURI, direction, 0, 0, 0); 
    516562                        solCLs.add(cl); 
    517563                } 
     
    714760                        queryStr.append("PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n"); 
    715761 
    716                         queryStr.append("SELECT (COUNT(?os) AS ?numOfLinks) \n"); 
     762                        queryStr.append("SELECT (COUNT(?os) AS ?numOfLinks) (COUNT(DISTINCT(?is)) AS ?numOfOriginInstances) (COUNT(DISTINCT(?os)) AS ?numOfLinkedInstances) \n"); 
    717763                        if (graphURIs != null) { 
    718764                                for (String graphURI : graphURIs) { 
     
    778824                                        classLink.setNumOfLinks(numOfLinks); 
    779825                                } 
     826                                lit = sol.getLiteral("numOfLinkedInstances"); 
     827                                if (lit != null) { 
     828                                        int numOfLinkedInstances = lit.getInt(); 
     829                                        classLink.setNumOfLinkedInstances(numOfLinkedInstances); 
     830                                } 
     831                                lit = sol.getLiteral("numOfOriginInstances"); 
     832                                if (lit != null) { 
     833                                        int numOfOriginInstances = lit.getInt(); 
     834                                        classLink.setNumOfOriginInstances(numOfOriginInstances); 
     835                                } 
    780836                        } 
    781837                        qexec.close();