チェンジセット 10 : BH13SPARQLBuilder/src/org

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

getOWLClassesの返り値をSClassのリストに変更

パス:
BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL
ファイル:
1 追加
3 変更

凡例:

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

    r2 r10  
    3232        } 
    3333 
    34  
     34        public String toString(){ 
     35                StringBuffer sb = new StringBuffer(); 
     36                sb.append("\""); 
     37                if( label != null ){ 
     38                        sb.append(label); 
     39                } 
     40                sb.append("\""); 
     41                if( language != null ){ 
     42                        sb.append("@"); 
     43                        sb.append(language); 
     44                } 
     45                return sb.toString(); 
     46        } 
    3547 
    3648} 
  • BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/OWLQueryBuilder.java

    r2 r10  
    2424         * @since 28.01.2014 
    2525         */ 
    26         public String[] getOWLClasses(String[] graphURIs, String keyword) throws Exception; 
     26        public SClass[] getOWLClasses(String[] graphURIs, String keyword) throws Exception; 
    2727 
    2828        /** 
     
    3737         * @param graphURIs縲€讀懃エ「蟇セ雎。縺ョgraph縺ョURI驟榊� (null繧�聞縺�縺ョ驟榊�繧ょ庄) 
    3838         * @param keyword ��ull繧�ゥコ譁�ュ励�荳榊庄�� 
    39          * @return 繧ッ繝ゥ繧ケURI縺ョ驟榊� 
     39         * @return 繧ッ繝ゥ繧ケ縺ョ驟榊� 
    4040         * @throws Exception 
    4141         * @since 28.01.2014 
  • BH13SPARQLBuilder/src/org/biohackathon/SPARQLBuilder/OWL/OWLQueryBuilderImpl.java

    r5 r10  
    2525import com.hp.hpl.jena.query.QuerySolution; 
    2626import com.hp.hpl.jena.query.ResultSet; 
     27import com.hp.hpl.jena.rdf.model.Literal; 
    2728import com.hp.hpl.jena.rdf.model.Resource; 
    2829 
     
    6566 
    6667                OWLQueryBuilder builder = new OWLQueryBuilderImpl(sparqlEndpoint); 
    67                 String[] clsURIs = builder.getOWLClasses(graphURIs, keyword); 
    68                 for(String cls: clsURIs){ 
     68                SClass[] clz = builder.getOWLClasses(graphURIs, keyword); 
     69                for(SClass cls: clz){ 
    6970                        System.out.println(cls); 
    7071                } 
    7172 
    7273                System.out.println("CLS"); 
    73                 ClassLink[] cls = builder.getNextClass(null, clsURIs[0], 0); 
     74                ClassLink[] cls = builder.getNextClass(null, clz[0].getClassURI(), 0); 
    7475                if( cls != null ){ 
    7576                        for( ClassLink cl: cls){ 
     
    7980 
    8081                System.out.println("CLS-INS"); 
    81                 cls = builder.getNextClassViaInstanceLink(null, clsURIs[0], 100); 
     82                cls = builder.getNextClassViaInstanceLink(null, clz[0].getClassURI(), 100); 
    8283                if( cls != null ){ 
    8384                        for( ClassLink cl: cls){ 
     
    124125         * @since 28.01.2014 
    125126         */ 
    126         public String[] getOWLClasses(String[] graphURIs, String keyword) 
     127        public SClass[] getOWLClasses(String[] graphURIs, String keyword) 
    127128                        throws Exception { 
    128129                StringBuffer queryStr = new StringBuffer(); 
     
    130131                queryStr.append("PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n"); 
    131132                queryStr.append("PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n"); 
    132                 queryStr.append("SELECT DISTINCT ?c \n"); 
     133                queryStr.append("SELECT DISTINCT ?c ?pLabel (COUNT(?i) AS ?numOfInstances)\n"); 
    133134                if (graphURIs != null) { 
    134135                        for (String graphURI : graphURIs) { 
     
    143144 
    144145                queryStr.append("      ?c rdfs:label ?label.\n"); 
     146                queryStr.append("      ?c rdfs:label ?pLabel.\n"); 
     147                queryStr.append("      ?i rdf:type ?c.\n"); 
    145148 
    146149//              queryStr.append("      ?c rdfs:label "); 
     
    153156                queryStr.append("\" , \"i\" )\n"); 
    154157                queryStr.append("  )");  
    155                 queryStr.append("\n}"); 
     158                queryStr.append("\n}  GROUP BY ?c ?pLabel"); 
    156159 
    157160 System.out.println(queryStr.toString()); 
     
    162165 
    163166                ResultSet results = qexec.execSelect(); 
    164                 ArrayList<String> solStrings = new ArrayList<String>(); 
     167                HashMap<String,SClass> classMap = new HashMap<String,SClass>(); 
    165168                for (; results.hasNext();) { 
    166169                        QuerySolution sol = results.next(); 
    167170                        Resource res = sol.getResource("c"); 
    168171                        String uri = res.getURI(); 
    169                         solStrings.add(uri); 
     172                        int numOfInstances = sol.getLiteral("numOfInstances").getInt(); 
     173//System.out.println(numOfInstances); 
     174                        Literal labelLiteral = sol.getLiteral("pLabel"); 
     175                        SClass sClass = null; 
     176                        if( classMap.containsKey(uri)){ 
     177                                sClass = classMap.get(uri); 
     178                        } 
     179                        else{ 
     180                                        sClass = new SClass(uri, null, numOfInstances); 
     181                                        classMap.put(uri, sClass); 
     182                        } 
     183                                if( labelLiteral != null ){ 
     184                                        String label = labelLiteral.getString(); 
     185                                        String lang = labelLiteral.getLanguage(); 
     186                                        sClass.addLabel(new Label(label, lang)); 
     187                                } 
    170188                } 
    171189                qexec.close(); 
    172                 return solStrings.toArray(new String[0]); 
     190                return classMap.values().toArray(new SClass[0]); 
    173191        } 
    174192