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

試験のために、getNextClassesのSPARQLクエリを簡素なものに一時変更、
TODO: オプション設定できるようにする

ファイル:
1 変更

凡例:

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

    r18 r19  
    11package org.biohackathon.SPARQLBuilder.OWL; 
    22 
    3 import java.nio.charset.Charset; 
    43import java.util.ArrayList; 
    54import java.util.Collection; 
    65import java.util.HashMap; 
    76import java.util.HashSet; 
    8 import java.util.List; 
    97import java.util.Set; 
    108 
    11 import org.apache.http.HttpEntity; 
    12 import org.apache.http.HttpResponse; 
    13 import org.apache.http.NameValuePair; 
    14 import org.apache.http.client.HttpClient; 
    15 import org.apache.http.client.entity.UrlEncodedFormEntity; 
    16 import org.apache.http.client.methods.HttpPost; 
    17 //import org.apache.http.impl.client.HttpClientBuilder; 
    18 import org.apache.http.message.BasicNameValuePair; 
    19 import org.apache.http.util.EntityUtils; 
    209 
    2110import com.hp.hpl.jena.query.Query; 
     
    288277                queryStr.append("PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n"); 
    289278                queryStr.append("PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n"); 
    290                 queryStr.append("SELECT DISTINCT ?p ?pDirection ?c (COUNT(?s) AS ?numOfLinks) \n"); 
     279//              queryStr.append("SELECT DISTINCT ?p ?pDirection ?c (COUNT(?s) AS ?numOfLinks) \n"); 
     280                queryStr.append("SELECT DISTINCT ?p ?pDirection ?c \n"); 
    291281                if (graphURIs != null) { 
    292282                        for (String graphURI : graphURIs) { 
     
    300290                queryStr.append("  { ?p rdfs:domain <"); 
    301291                queryStr.append(originClass); 
    302                 queryStr.append(">.\n    ?p rdfs:range ?c.\n    ?o ?p ?s.}\n  UNION\n"); 
     292                queryStr.append(">.\n    ?p rdfs:range ?c.\n"); 
     293//              queryStr.append("    ?o ?p ?s."); 
     294                queryStr.append("}\n  UNION\n"); 
    303295                queryStr.append("  { ?p rdfs:range <"); 
    304296                queryStr.append(originClass); 
    305297                queryStr.append(">.\n"); 
    306298                queryStr.append("    ?p rdfs:domain ?c.\n"); 
    307                 queryStr.append("    ?s ?p ?o.}\n"); 
     299//              queryStr.append("    ?s ?p ?o."); 
     300                queryStr.append("}\n"); 
    308301 
    309302                queryStr.append("    ?p ?pDirection ?c.\n"); 
     
    311304                 
    312305                queryStr.append("  ?s rdf:type ?c.\n"); 
    313                 queryStr.append("  ?o rdf:type <"); 
    314                 queryStr.append(originClass); 
    315                 queryStr.append(">.\n"); 
    316                 queryStr.append("}\nGROUP BY ?p ?pDirection ?c\n"); 
     306//              queryStr.append("  ?o rdf:type <"); 
     307//              queryStr.append(originClass); 
     308//              queryStr.append(">.\n"); 
     309                queryStr.append("}\n"); 
     310//              queryStr.append("GROUP BY ?p ?pDirection ?c\n"); 
    317311                if (limit > 0) { 
    318312                        queryStr.append("limit "); 
     
    567561        } 
    568562 
     563         
     564        public LabelMap[] getLabels(String[] graphURIs, String[] resourceURIs, String language) throws Exception{ 
     565                if( resourceURIs == null || resourceURIs.length == 0 ){ 
     566                        return new LabelMap[0]; 
     567                } 
     568                StringBuffer queryStr = new StringBuffer(); 
     569                queryStr.append("PREFIX owl: <http://www.w3.org/2002/07/owl#>\n"); 
     570                queryStr.append("PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n"); 
     571                queryStr.append("PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n"); 
     572                queryStr.append("SELECT DISTINCT ?res ?label \n"); 
     573                if (graphURIs != null) { 
     574                        for (String graphURI : graphURIs) { 
     575                                queryStr.append("FROM <"); 
     576                                queryStr.append(graphURI); 
     577                                queryStr.append(">\n"); 
     578                        } 
     579                } 
     580                queryStr.append("WHERE{\n"); 
     581                queryStr.append("  ?res rdfs:label ?label.\n"); 
     582                queryStr.append("  FILTER(?res IN ("); 
     583                boolean f = false; 
     584                for( String resourceURI: resourceURIs ){ 
     585                        if(f){ 
     586                                queryStr.append(", "); 
     587                        } 
     588                        f = true; 
     589                        queryStr.append("<"); 
     590                        queryStr.append(resourceURI); 
     591                        queryStr.append(">"); 
     592                } 
     593                queryStr.append("))\n"); 
     594                queryStr.append("}"); 
     595                 
     596                System.out.println(queryStr.toString());         
     597         
     598                Query query = QueryFactory.create(queryStr.toString()); 
     599                QueryExecution qexec = QueryExecutionFactory.sparqlService(endpointURI, 
     600                                query); 
     601 
     602                ResultSet results = qexec.execSelect(); 
     603                HashMap<String, LabelMap> lMap = new HashMap<String, LabelMap>(); 
     604                HashMap<String, InstanceLink> insLinkMap = new HashMap<String, InstanceLink>(); 
     605                for (; results.hasNext();) { 
     606                        QuerySolution sol = results.next(); 
     607                        String uri = sol.getResource("res").getURI(); 
     608                        Literal literal = sol.getLiteral("label"); 
     609                        if( literal != null ){ 
     610                                String label = literal.getString(); 
     611                                String lang = literal.getLanguage(); 
     612                                if( language != null && language.equals(lang)){ 
     613                                        Label lbl = new Label(label, lang); 
     614                                        if( lMap.containsKey(uri)){ 
     615                                                LabelMap lm = lMap.get(uri); 
     616                                                lm.addLabel(lbl); 
     617                                        }else{ 
     618                                                LabelMap lm = new LabelMap(uri, new Label[]{lbl}); 
     619                                                lMap.put(uri, lm); 
     620                                        } 
     621                                } 
     622                        } 
     623                } 
     624                return lMap.values().toArray(new LabelMap[0]); 
     625                 
     626                 
     627        } 
     628         
    569629}