差分発生行の前後
無視リスト:
更新日時:
2014/10/09 18:42:33 (10 年 前)
更新者:
wu
ログメッセージ:

rewrite sparal more humanbeing friendly

ファイル:
1 変更

凡例:

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

    r165 r193  
    163163                                 0,  0, 
    164164                                false, false); 
    165              
     165            System.out.println(classLink.getDirection().toString());  
    166166           list.add(classLink); 
    167167    } 
    168168           String startClass = object.getString("startClassURI"); 
    169169          Path path = new Path(startClass,  list,  0); 
     170          
    170171          return path; 
    171172    } 
    172173     
    173174    private String convertPath2SPARQL(Path path) throws Exception{ 
     175         
     176         ArrayList<String> classname =new ArrayList<String>() ; 
     177                 
    174178        if( path == null ){ 
    175179                        throw new Exception("Path is null."); 
     
    204208                         
    205209                        if (i==0) 
    206                     subjectClasses = startClass; 
    207                          
     210                             subjectClasses = startClass; 
     211                        
     212                        classname.add(subjectClasses); 
    208213                        selStr.append("?c").append(i).append(" "); 
    209214                        selStr.append("?l").append(i).append(" "); 
     
    252257                        append(".\n"); 
    253258                whereStr.append("OPTIONAL{\n?c"+i+" rdfs:label ?l"+i+".}\n"); 
     259                classname.add(subjectClasses); 
    254260         
    255261                                         
     
    258264                queryStr.append("}"); 
    259265                //OPTIONAL 
    260                 queryStr.append("LIMIT 100\n");; 
    261                  
    262                 //System.out.println(queryStr); 
    263                 return queryStr.toString(); 
     266                queryStr.append("LIMIT 100\n"); 
     267                 
     268               System.out.println(queryStr);  
     269                
     270              //rewrite Sparql                 
     271                          
     272      ArrayList<String> classname2 = new ArrayList<String>(); 
     273               for(int index=0;index<classname.size();index++){ 
     274                 String  tmp=classname.get(index); 
     275                 
     276                 int mark; 
     277                 if((mark=tmp.indexOf("#"))!=-1) 
     278                     classname2.add(tmp.substring(mark+1)); 
     279                  else classname2.add(tmp.substring(tmp.indexOf("/")+1)); 
     280                    
     281               } 
     282               String query=queryStr.toString(); 
     283                for(int index=0;index<classname2.size();index++){ 
     284                  String  original="c"+index;  
     285                 query= query.replaceAll(original, classname2.get(index)); 
     286                } 
     287                query= query.replaceAll("\\?l","\\?label"); 
     288                System.out.println(query);   
     289                return query; 
    264290         
    265291     
     292    } 
     293    private static String rewriteSparql(String query){ 
     294        StringBuffer tmp=new StringBuffer(query); 
     295       int index= tmp.indexOf("WHERE"); 
     296       int begin=0,cnt=0; 
     297       while(begin<index) 
     298       {            
     299          begin= tmp.indexOf("?c", begin); 
     300          cnt++;        
     301      
     302       } 
     303        return null; 
    266304    } 
    267305        private static List<String> convertJ2Path2(String jpath) throws JSONException{